diff --git a/404.html b/404.html index cd70b4a..9ccfa9a 100644 --- a/404.html +++ b/404.html @@ -28,13 +28,13 @@ document.documentElement.setAttribute("data-theme", "dark"); } - 模拟殖民地 中文Wiki - - - + 模拟殖民地 中文Wiki + + + -
跳至主要內容

404

页面不存在

我们是怎么来到这儿的?

- +
跳至主要內容

404

页面不存在

这里什么也没有

+ diff --git a/Buildings/index.html b/Buildings/index.html new file mode 100644 index 0000000..d681f24 --- /dev/null +++ b/Buildings/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + 建筑 | 模拟殖民地 中文Wiki + + + + + +
跳至主要內容

建筑

约 9 字小于 1 分钟

目录

上次编辑于:
贡献者: ddaodan
+ + + diff --git a/Buildings/townhall.html b/Buildings/townhall.html new file mode 100644 index 0000000..c76b11b --- /dev/null +++ b/Buildings/townhall.html @@ -0,0 +1,40 @@ + + + + + + + + + + 市政厅 | 模拟殖民地 中文Wiki + + + + + +
跳至主要內容

市政厅

约 2221 字大约 7 分钟

市政厅

市政厅是殖民地的中心部分。

市政厅方块不能在已经放置了通过补给营地/船获得的市政厅之前在工作台制作。如果有需要,它也可以像其他方块一样在创造模式下获得,或通过命令获取。

创建新的殖民地

勘察区域

在决定放置市政厅的位置之前,请确保仔细勘察您的区域。您的殖民地将以市政厅方块为中心的4块半径(每个方向4块)开始。确保这是您想要建立殖民地的地方。

放置您的市政厅

在仔细决定放置市政厅的位置后(请记住,您放置市政厅方块的位置将是您殖民地受保护区域的中心。一旦放置,该区域将被确定,无法更改),使用您的建筑工具将市政厅方块放置在地面上。

右键单击您希望放置市政厅的区域。建筑的GUI将显示,显示建筑的3D预览。您可以使用箭头按钮将建筑移动到所需的位置。

确保在GUI中使用+-选项,以确保小屋的地面水平位于您希望的位置。并非所有的小屋方块都位于地面上。

一旦您确认放置市政厅(绿色对勾),市政厅方块将被放置。

创建您的殖民地

一旦您放置了市政厅方块,您需要右键点击它并选择“创建新殖民地”。


Creating New Colony

一个新的殖民地将被创建,您的殖民地的范围将被确定,并且整个区域将被保护。

保护区域

当您开始一个殖民地时,最初设置的区域还具有附加的保护。保护系统包括阻止任何玩家放置/破坏或与任何类型的方块交互,放置熔岩或水以及放置/点燃TNT。一旦建立,它还将显示在信息屏幕中。

殖民地的受保护区域(一旦放置了市政厅)将取决于配置,但默认情况下将是以您首次放置市政厅方块的位置为中心的4块半径。因此,请仔细规划您想要放置市政厅的位置。您受保护的殖民地区域包括从基岩到天际限制的山脉、丘陵、湖泊、海洋、洞穴、世界生成的结构等。

由于每个殖民地的受保护区域,您必须仔细勘察周围环境,确保您周围没有其他殖民地,以防止您放置市政厅或在该方向上限制您的殖民地区域。

一旦放置市政厅方块,这将是您城镇受保护半径的中心。如果您决定希望实际的市政厅建筑建在不同的位置(在当前设置的受保护半径内),您可以使用建筑工具打破方块,然后再次放置它。删除并替换市政厅方块不会移除您城镇的受保护区域。唯一的方法是通过拥有OP或管理员权限的人通过命令删除您的殖民地。

如果有另一个殖民地离您当前位置太近,您将无法放置市政厅。

如果您尝试在受保护区域之外放置另一个市政厅,您将收到一条消息:

Placing a Second Town Hall

Deleting a Colony

To delete your colony, place a Town Hall outside your current colony border (either by mining or deconstructing your old Town Hall or by crafting a new one). Interacting with the newly placed Town Hall outside of the current borders will prompt you to delete your colony.
Alternatively, if you have the proper permissions, you can use commands.

{% building %} GUI

Information: This is the overall information section of the Town Hall GUI.

{% building_gui_content_block_custom image_key="th_information" image_alt="Townhall information" cols=6 %}
Page 1: Here you will see some statistics on your citizens, like the number of citizens you have out of your max. Green is less than 90% of your max, orange is above 90%, and red is full. If it's red, hovering over the numbers will show what you need to do to get more citizens. The page also shows how many of each type of worker you have.

Page 2: Here you will see the overall happiness of the colony's citizens and any events that happened within the colony (the newest events are at the bottom). You can click the button to switch to a permission log, which will show any illegal actions that happened in the colony (like if a player tried to break a block when they aren't allowed to). Clicking the plus next to an illegal action will change it to a legal action if the player tries to do it again. For more information, see the Protection system and the Permission tab of the {% building townhall %} GUI.
{% endbuilding_gui_content_block_custom %}

Actions: This is the most important section.

{% building_gui_content_block_custom image_key="th_actions" image_alt="Townhall actions" cols=6 %}
Page 1: Here you will see the name of your colony as well as the building level of the {% building townhall %}. And the buttons:

  • Build Options: Lets you create a build, upgrade, reposition, or repair build order for the {% building townhall %}. To learn more about the building system, please visit the {% building_link builder %} page.
  • Rename Colony: To change the name of your colony (from Your Username's Colony, which is the default) to anything you want.
  • Hire Mercenaries: Here you can hire mercenaries to help defend your colony. Be warned, they're mean and will steal from citizens!

Page 2: This is only enabled if PVP is turned on in the config file. Here you have:

  • Allies: Other colonies that you have added as allies and that have confirmed your colony as an ally as well.
  • Feuds: Other colonies that you have added as a feud and that have confirmed your colony as a feud as well.
    {% endbuilding_gui_content_block_custom %}

Permissions: Here you can invite other players to your colony to collaborate.

{% building_gui_content_block_custom image_key="th_permissions1" image_alt="Townhall permissions" cols=6 %}
Page 1: Here you type the name of the player you want to add.

Page 2: Shows the list of players that have ben added as well as their current rank. You can click on the "-" or "+" to give them a higher rank or lower rank.
{% endbuilding_gui_content_block_custom %}

{% building_gui_content_block_custom image_key="th_permissions2" image_alt="Townhall permissions" cols=6 %}
Page 3: Here you can select the rank that you would like to manage.

Page 4: Here are the individual permissions (for the rank you have selected on the previous page) that you can toggle ON or OFF, giving each rank the permission you want. Note: the Fight Guards permission causes Guards to treat the player as an enemy and attack them. It is only recommended for Hostile players.
{% endbuilding_gui_content_block_custom %}

{% building_gui_content_block_custom image_key="th_permissions3" image_alt="Townhall permissions" cols=6 %}
Page 5: Where you enter the position (X, Y, Z) of the block that you want to make free for interaction.

Page 6: Here you will see the list of block positions that you have added as free for interaction and can remove them.
{% endbuilding_gui_content_block_custom %}

Citizens: This section displays the names and skill levels of the citizens in your colony.

{% building_gui_content_block_custom image_key="th_citizens" image_alt="Townhall citizens" cols=6 %}
Page 1: When you select a citizen, their stats and job will appear here. You can also recall them to the Town Hall block on this page.

Page 2: Here you will see a list of the citizens in your colony. Select a citizen to see their skills.
{% endbuilding_gui_content_block_custom %}

Settings: This section is where you can control how your citizens will be hired and assigned housing in your colony, among other things.

{% building_gui_content_block_custom image_key="th_settings" image_alt="Townhall settings" cols=6 %}
Page 1: There are four buttons here:

  • Worker hiring mode: Clicking on this button lets you switch between automatic or manual. If it's in automatic mode, you can't fire or hire any citizen from any worker hut and the best unemployed citizen will be hired for you. In manual mode you will be able to hire and fire whichever citizen you want at any time.
  • Housing assignment mode: Clicking on this button lets you switch between automatic or manual. If it's in automatic mode, citizens will be assigned a house as soon as they spawn (if housing is available). In manual mode, you can select which citizens will be housed in each House or Tavern. This is better if you have a large colony and many workers spread out in a large area so you can house your citizens as close as possible to their workplace.
  • Print help messages: Clicking on this button lets you choose whether MineColonies help messages will appear in the chat. It is recommended that this be turned on for first-time players.
  • Kids will be born: Clicking on this button lets you choose whether new kids will be born in your colony.

Page 2: There are three buttons here:

  • Pick Team Color: Whatever color you pick from here, your Guards will have a glow of this color around them when you put them in follow mode at their {% building_link guardtower %} or {% building_link barrackstower %}. This is for the PVP system, so you know which Guards are yours when you are fighting. Your citizens' names will also be in this color.
  • Edit Colony Flag: Clicking this button will open up a banner designer where you can design your colony banner. Your {% worker_link knight %} will wear the finished design on their shields, and it is also used in some schematics.
    Town hall GUI banner designer
  • Switch Colony Pack: This option controls the default selected style pack when opening the build tool.
  • Pick Citizen Style: The option controls how the citizens look. This feature is exclusive for donators.
    {% endbuilding_gui_content_block_custom %}

Work Orders: Here you will see the work orders your

{% building_gui_content_block_custom image_key="th_workorders" image_alt="Townhall work orders" cols=6 %}
All the work orders in the order they have been assigned. {% worker_link builder plural=true %} will not start another order until they have successfully completed the top one.

Page 1: Blank page except for the header.

Page 2: Here are all the build orders for this colony (including decorations and your own schematics as well as huts). Your {% worker_link builder plural=true %} will complete the builds from top to bottom, and you can change the priority of the builds by moving them up or down in the list. You can also delete work orders. When you delete a work order that is currently being built, the Builder will stop building and will continue where they left off if you create the work order again."
{% endbuilding_gui_content_block_custom %}

Statistics: This is the section for the global happiness of your colony so you can see what area needs more attention to raise the happiness level.

{% building_gui_content_block_custom image_key="th_statistics" image_alt="Townhall happiness" cols=6 %}
Page 1: The happiness indices. You can keep track of the areas that will lower or raise the happiness of your citizens here. The colors, in order from best to worst, are:

  • Green (positive)
  • Blue (neutral)
  • Yellow (slightly negative)
  • Red (negative)

There's also black, which will show up if something went wrong.

Page 2: Blank page.
{% endbuilding_gui_content_block_custom %}

上次编辑于:
贡献者: ddaodan
+ + + diff --git a/Installation/gdlauncher.html b/Installation/gdlauncher.html index 061bdf2..a88e111 100644 --- a/Installation/gdlauncher.html +++ b/Installation/gdlauncher.html @@ -28,13 +28,13 @@ document.documentElement.setAttribute("data-theme", "dark"); } - GDLauncher 安装 | 模拟殖民地 中文Wiki - - - + GDLauncher 安装 | 模拟殖民地 中文Wiki + + + -
跳至主要內容

GDLauncher 安装

约 455 字大约 2 分钟

GDLauncher 安装

Installing MineColonies via GDLauncher, a custom Minecraft launcher, is the recommended method.

GDLauncher Installation
Getting GDLauncher
Setting Up GDLauncher
Account
Create an Instance
Installing MineColonies Mod Only
Installing MineColonies Official Modpacks
Getting the Modpack
Installing the Modpack
Getting GDLauncher
GDLauncher can be downloaded here. Simply choose the version for your operating system and run the file.

GDLauncher Download

Setting Up GDLauncher
Once you’ve installed GDLauncher, setting it up is simple.

Account
When you first open GDLauncher, it’ll ask you to log in to your Minecraft account. Enter your account information and click Sign In.

Log In

Create an Instance
Once you’re logged in, you’ll be able to create an “instance.” Instances are GDLauncher’s way of separating each version of Minecraft and each different set of mods you wish to install.

To create an instance, click the + button in the bottom left.

Instance Button

The steps past this point differ, depending on whether you’re installing the mod or the modpack.

Installing MineColonies Mod Only
Change the dropdowns to select the latest Forge version for the latest version of Minecraft. (At the time of this writing, the latest Minecraft version is 1.16.5.)

Changing Dropdowns

Next, click the white arrow in the bottom right. It’ll prompt you to enter a name for your instance; enter whatever you’d like.

Instance Name

Once you’re done choosing a name, click the bottom-right arrow again. Wait for GDLauncher to finish installing Forge. Once it’s done, you should see the instance in the main menu (along with any other instances). Right-click it and click Manage.

Manage Button

Once you’re in the Manage Instance menu, go to the Mods tab and click the Add Mod button at the top.

Mods Tab

Search for “MineColonies” at the top, then click Install. (You can click elsewhere on the mod’s icon to read the description.) GDLauncher will automatically install Structurize, a dependency of MineColonies.

MineColonies Search

You’re ready to play! To launch Minecraft, close out of the instance manager and left-click on the instance icon (in the main menu).

Installing MineColonies Official Modpack
When creating an instance, change from Vanilla to Twitch at the top. Search for “MineColonies Official”.

Searching in Twitch Tab

Hover over the top result and click Download Latest (or Explore / Versions to read the description). It’ll prompt you to choose a name for your instance.

Instance Name

When you’re done, click the white arrow in the bottom left. GDLauncher will start installing the modpack.

Once GDLauncher is finished, you’re done! Just click on the instance icon to launch Minecraft. Have fun!

上次编辑于:
贡献者: ddaodan
- +
跳至主要內容

GDLauncher 安装

约 455 字大约 2 分钟

GDLauncher 安装

Installing MineColonies via GDLauncher, a custom Minecraft launcher, is the recommended method.

GDLauncher Installation
Getting GDLauncher
Setting Up GDLauncher
Account
Create an Instance
Installing MineColonies Mod Only
Installing MineColonies Official Modpacks
Getting the Modpack
Installing the Modpack
Getting GDLauncher
GDLauncher can be downloaded here. Simply choose the version for your operating system and run the file.

GDLauncher Download

Setting Up GDLauncher
Once you’ve installed GDLauncher, setting it up is simple.

Account
When you first open GDLauncher, it’ll ask you to log in to your Minecraft account. Enter your account information and click Sign In.

Log In

Create an Instance
Once you’re logged in, you’ll be able to create an “instance.” Instances are GDLauncher’s way of separating each version of Minecraft and each different set of mods you wish to install.

To create an instance, click the + button in the bottom left.

Instance Button

The steps past this point differ, depending on whether you’re installing the mod or the modpack.

Installing MineColonies Mod Only
Change the dropdowns to select the latest Forge version for the latest version of Minecraft. (At the time of this writing, the latest Minecraft version is 1.16.5.)

Changing Dropdowns

Next, click the white arrow in the bottom right. It’ll prompt you to enter a name for your instance; enter whatever you’d like.

Instance Name

Once you’re done choosing a name, click the bottom-right arrow again. Wait for GDLauncher to finish installing Forge. Once it’s done, you should see the instance in the main menu (along with any other instances). Right-click it and click Manage.

Manage Button

Once you’re in the Manage Instance menu, go to the Mods tab and click the Add Mod button at the top.

Mods Tab

Search for “MineColonies” at the top, then click Install. (You can click elsewhere on the mod’s icon to read the description.) GDLauncher will automatically install Structurize, a dependency of MineColonies.

MineColonies Search

You’re ready to play! To launch Minecraft, close out of the instance manager and left-click on the instance icon (in the main menu).

Installing MineColonies Official Modpack
When creating an instance, change from Vanilla to Twitch at the top. Search for “MineColonies Official”.

Searching in Twitch Tab

Hover over the top result and click Download Latest (or Explore / Versions to read the description). It’ll prompt you to choose a name for your instance.

Instance Name

When you’re done, click the white arrow in the bottom left. GDLauncher will start installing the modpack.

Once GDLauncher is finished, you’re done! Just click on the instance icon to launch Minecraft. Have fun!

上次编辑于:
贡献者: ddaodan
+ diff --git a/Installation/hmcl.html b/Installation/hmcl.html index 5d14112..308a3f7 100644 --- a/Installation/hmcl.html +++ b/Installation/hmcl.html @@ -28,13 +28,13 @@ document.documentElement.setAttribute("data-theme", "dark"); } - HMCL 启动器 | 模拟殖民地 中文Wiki - - - + HMCL 启动器 | 模拟殖民地 中文Wiki + + + -
跳至主要內容

HMCL 启动器

约 19 字小于 1 分钟

HMCL 启动器

提示

本文为中文Wiki原创
[[toc]]

上次编辑于:
贡献者: ddaodan
- +
跳至主要內容

HMCL 启动器

约 349 字大约 1 分钟

HMCL 启动器

本教程将通过使用Hello Minecraft! Launcheropen in new window下载并安装模拟殖民地。

下载Hello Minecraft! Launcher

点击这里open in new window前往官方下载页面

安装Minecraft 1.20.1

打开启动器,在左侧选择游戏-下载->新游戏-游戏,游戏版本选择1.20.1正式版,安装最新版本的Forge。

提示

你可以重命名这个版本,例如模拟殖民地,以便于识别。

警告

不要安装Optifine!这可能会导致出现一些莫名其妙的问题!

安装模拟殖民地

返回主页,在左侧选择游戏-下载->游戏内容-模组,在名称处输入Minecolonies,选择游戏版本为1.20.1,点击搜索。

提示

你也可以搜索模拟殖民地,正常情况下也是可以搜索到的。

搜索结果出现后,选择对应的结果,下拉找到1.20.1,点击展开后选择最新的版本(日期最接近现在的),确认安装。

安装前置

下载完成后,点击上方对应的前置模组,重复上述步骤,安装全部的前置模组。

警告

所有的前置模组缺一不可,缺少任何一个都无法启动游戏!

启动游戏

当以上步骤完成后就可以启动游戏了!不过在这之前记得添加一个游戏账户哦!

上次编辑于:
贡献者: ddaodan
+ diff --git a/Installation/index.html b/Installation/index.html index d34cf4b..4fed70b 100644 --- a/Installation/index.html +++ b/Installation/index.html @@ -28,13 +28,13 @@ document.documentElement.setAttribute("data-theme", "dark"); } - Installation | 模拟殖民地 中文Wiki - - - + 安装 | 模拟殖民地 中文Wiki + + + -
跳至主要內容

Installation

约 1 字小于 1 分钟

- +
跳至主要內容

安装

约 9 字小于 1 分钟

上次编辑于:
贡献者: ddaodan
+ diff --git a/Installation/java.html b/Installation/java.html index d07d775..de3c76c 100644 --- a/Installation/java.html +++ b/Installation/java.html @@ -28,13 +28,13 @@ document.documentElement.setAttribute("data-theme", "dark"); } - Minecraft Java版 | 模拟殖民地 中文Wiki - - - + Minecraft Java版 | 模拟殖民地 中文Wiki + + + -
跳至主要內容

Minecraft Java版

约 664 字大约 2 分钟

Minecraft Java版

Installing MineColonies Mod on your original Minecraft Launcher

  • This process is for installing only the MineColonies mod in your original Minecraft launcher. You will not be able to connect to the MineColonies Official Servers due to the servers having a balanced variety of other mods as well.

  • For connecting to the official server, install GDLauncher or the Curseforge Launcher. You can visit the CurseForgeopen in new window site for a zip file containing all mods (with the correct versions) we are currently using on the official server, as well as all the appropriate configs, scripts, and the server.dat file for our modpack official server. If all these additional mods, configs, scripts, and the server.dat are downloaded and installed manually, you will be able to connect to our official server.

  • Installation of the MineColonies mod is very simple. It does require Minecraft Forge to be able to integrate mods into the Minecraft game, though.

We cannot offer support on the installation of Minecraft Forge, however, there are many excellent (and more in-depth) tutorials online. Just Google 'how to install minecraft forge' to find some.


Download Forge

Go to the Minecraft Forge Download pageopen in new window and download the latest version's installer (not the recommended version).

Run Forge Installer

Run the downloaded version and make sure it's on Install Client (or Server if you plan to run a Minecraft server). The installation path is preset according to Minecraft's standard installation path. If you have it installed in a different directory, change the installation directory. When it's done installing, you will see a complete message.

Forge installer Forge installed

Download MineColonies

Go to the MineColonies CurseForge Download pageopen in new window site and download the latest 1.16.5 alpha version of MineColonies.

On your computer, go to the .minecraft/mods folder. To be able to find this folder, just click on the start button and in the search box type: %appdata% and hit "search". It will open the folder where you can find the .minecraft folder. Open this folder and inside you will find the mods folder.

Copy MineColonies to Mods

Once you are in the .minecraft/mods folder, copy the downloaded MineColonies file you downloaded in the Download MineColonies step and paste it here. Note: DO NOT extract the file if the option appears. Just put the .jar file in here without extracting its contents.

Do the Same Thing for Structurize

Follow the last three steps, except for Structurize (which MineColonies needs to work). Find the download page for Structurize hereopen in new window.

MineColonies doesn't always accept the latest version of Structurize. To ensure you have the required version, first, click on the MineColonies file name (on the Curseforge website). You'll be taken to the changelog, where it should say the accepted Structurize version at the top. Download that exact version.

Cannot Add Modpack Without External Installer

If you are adding the entire modpack to be able to play on the official server, you will require an external launcher to download the pack. The Curseforge launcher works on Windows or macOS. Other options include GDlauncher or MultiMCopen in new window, both offering Windows, macOS and Linux support. Finally, if you can not or do not wish to 'install' a launcher you can use CMPDLopen in new window that will run a small Java program to download the required modpack.

Unfortunately, manually 'installing' modpacks is no longer an option as Curseforge no longer distributes mods in the downloaded zip files for modpacks due to licensing issues.

Run Minecraft and Select Profile

Run your original Minecraft launcher. Make sure you have the Forge profile loaded and hit play. (You might need to go to Installations and create a new installation first.)

Minecraft Launcher

That's it. If you followed these steps, you are ready to play MineColonies!

上次编辑于:
贡献者: ddaodan
- +
跳至主要內容

Minecraft Java版

约 664 字大约 2 分钟

Minecraft Java版

Installing MineColonies Mod on your original Minecraft Launcher

  • This process is for installing only the MineColonies mod in your original Minecraft launcher. You will not be able to connect to the MineColonies Official Servers due to the servers having a balanced variety of other mods as well.

  • For connecting to the official server, install GDLauncher or the Curseforge Launcher. You can visit the CurseForgeopen in new window site for a zip file containing all mods (with the correct versions) we are currently using on the official server, as well as all the appropriate configs, scripts, and the server.dat file for our modpack official server. If all these additional mods, configs, scripts, and the server.dat are downloaded and installed manually, you will be able to connect to our official server.

  • Installation of the MineColonies mod is very simple. It does require Minecraft Forge to be able to integrate mods into the Minecraft game, though.

We cannot offer support on the installation of Minecraft Forge, however, there are many excellent (and more in-depth) tutorials online. Just Google 'how to install minecraft forge' to find some.


Download Forge

Go to the Minecraft Forge Download pageopen in new window and download the latest version's installer (not the recommended version).

Run Forge Installer

Run the downloaded version and make sure it's on Install Client (or Server if you plan to run a Minecraft server). The installation path is preset according to Minecraft's standard installation path. If you have it installed in a different directory, change the installation directory. When it's done installing, you will see a complete message.

Forge installer Forge installed

Download MineColonies

Go to the MineColonies CurseForge Download pageopen in new window site and download the latest 1.16.5 alpha version of MineColonies.

On your computer, go to the .minecraft/mods folder. To be able to find this folder, just click on the start button and in the search box type: %appdata% and hit "search". It will open the folder where you can find the .minecraft folder. Open this folder and inside you will find the mods folder.

Copy MineColonies to Mods

Once you are in the .minecraft/mods folder, copy the downloaded MineColonies file you downloaded in the Download MineColonies step and paste it here. Note: DO NOT extract the file if the option appears. Just put the .jar file in here without extracting its contents.

Do the Same Thing for Structurize

Follow the last three steps, except for Structurize (which MineColonies needs to work). Find the download page for Structurize hereopen in new window.

MineColonies doesn't always accept the latest version of Structurize. To ensure you have the required version, first, click on the MineColonies file name (on the Curseforge website). You'll be taken to the changelog, where it should say the accepted Structurize version at the top. Download that exact version.

Cannot Add Modpack Without External Installer

If you are adding the entire modpack to be able to play on the official server, you will require an external launcher to download the pack. The Curseforge launcher works on Windows or macOS. Other options include GDlauncher or MultiMCopen in new window, both offering Windows, macOS and Linux support. Finally, if you can not or do not wish to 'install' a launcher you can use CMPDLopen in new window that will run a small Java program to download the required modpack.

Unfortunately, manually 'installing' modpacks is no longer an option as Curseforge no longer distributes mods in the downloaded zip files for modpacks due to licensing issues.

Run Minecraft and Select Profile

Run your original Minecraft launcher. Make sure you have the Forge profile loaded and hit play. (You might need to go to Installations and create a new installation first.)

Minecraft Launcher

That's it. If you followed these steps, you are ready to play MineColonies!

上次编辑于:
贡献者: ddaodan
+ diff --git a/Tutorials/datapacks.html b/Tutorials/datapacks.html index 44bacfc..9dc9132 100644 --- a/Tutorials/datapacks.html +++ b/Tutorials/datapacks.html @@ -28,13 +28,13 @@ document.documentElement.setAttribute("data-theme", "dark"); } - 数据包 | 模拟殖民地 中文Wiki - - - + 数据包 | 模拟殖民地 中文Wiki + + + -
跳至主要內容

数据包

约 6023 字大约 20 分钟

跳至主要內容

数据包

约 6023 字大约 20 分钟

上次编辑于:
贡献者: ddaodan
- +-->
+ diff --git a/Tutorials/getting-started.html b/Tutorials/getting-started.html index 9318d23..2ffe5c6 100644 --- a/Tutorials/getting-started.html +++ b/Tutorials/getting-started.html @@ -28,13 +28,13 @@ document.documentElement.setAttribute("data-theme", "dark"); } - 入门 | 模拟殖民地 中文Wiki - - - + 入门 | 模拟殖民地 中文Wiki + + + -
跳至主要內容

入门

约 2786 字大约 9 分钟

入门

本教程假设你已经安装了mod。如果你想了解如何安装官方整合包open in new window, 你可以在Java (Forge)GDLauncher以及Curseforge Launcher上找到相应的安装说明。

快速指南

在开始新的殖民地之前,你应该找到一个理想的位置。你需要足够大的空间来建设一个完整的城市,至少8x8区块大小,并且地形较为平坦。

你还应该尽可能多的收集资源,包括木材、石头、煤炭、铁矿石、花朵、线、皮革、羊毛、树苗和食物等。

第1步:补给营地/补给船

一旦你选择了殖民地的位置,你必须放置一个补给船或者补给营地。在同一个世界中你只能放置其中一个。补给营地/船提供了你正式启动殖民地所需的市政厅方块。它们还提供了在建设殖民地过程中可能需要的一些其他物资。一旦你获得了市政厅方块和建筑工具,剩下的营地/船就只是个装饰物了。你可以选择保留或拆除它。

第2步:市政厅

市政厅方块实际上是创建殖民地的核心。它还充当殖民地的中心。这是你开始使用建筑工具放置建筑的地方。使用建筑工具可以确保你能够清楚地看到建筑将在哪里,朝向哪个方向,以及它是否位于正确的Y层级(一些建筑需要抬升到正确的Y层级)。

一旦放置了市政厅方块,你将开始获得最初的4名居民。

第3步:建筑工

在开始建设殖民地之前,你需要一个建筑工。建筑工必须先建造他们自己的建筑工小屋,然后才能建造其他小屋,而且他们不能将小屋建造或升级到高于他们自己小屋的等级。

第4步:酒馆

你的市民需要一个居住和睡觉的地方,因此建议接下来建造一个酒馆。酒馆还允许游客来到你的殖民地,你可以招募他们留下成为居民。

第5步:食物

你的殖民地需要的下一个重要物资是食物。获得食物的最快方式是建造一个渔夫小屋。你也可以建造农场或其中一种牲畜饲养工,但是建造一个渔夫小屋更快。如果你不想亲自为殖民者喂食(或烹饪食物),建造一个餐厅也是明智的选择。

第6步:林业师

如果您更青睐木材,建议接下来建造一个护林员小屋。这样,您的新护林员就可以开始为您的下一个建筑和工具等项目采集木材。

第7步:矿工

石材和矿石是殖民地的另一个主要需求,因此建造一个矿井是下一个合乎逻辑的步骤。

第8步:仓库和信使

在这一点上,您可能已经厌倦了将所有资源交给建筑师,然后再从渔夫、林业师、矿工等处取回。您可能还想将物品存放在一个地方。好吧,{% building_link warehouse %} 和 {% building_link courier %} 就是您正在寻找的解决方案!{% worker_link courier %} 在仓库和所有工作场所之间传送物品。剪贴板资源卷轴可能会有帮助!

第9步: 其余的殖民地

在这一步,您需要根据您的游戏方式和殖民地的需求来决定下一步做什么。但是您有几个方向可供选择。一旦获得七名居民,您可能会受到袭击,因此可能想要建造一个卫兵塔,或者可能有一名生病的居民,想要建造一个医院,或者可能决定建造一个锯木厂来为工人制作所需的物品。或者您可能只是想拥有一个特定的工人,或者找到了一个适合建造特定小屋的好地方。您决定您的殖民地将如何发展!

详细步骤

如果您已经到达这里,恭喜你! 您已经安装了模拟殖民地,并准备好踏上一场探险之旅,探索、征服并建立自己的殖民地。努力工作,将其打造成一个繁荣的城镇。磨练您的领导技能,不断壮大成为一个城市!最后,您能成为一位宏伟的领导者,最终实现大都市的目标吗?(查看游戏中的模拟殖民地成就。)

Achievements

为了避免错误和挫折,在开始游戏之前,请仔细阅读整个指南。

放置补给船或补给营地

要放置补给船,您需要拥有足够大的水域(至少32x20)。
要放置补给营地 ,您需要拥有足够大、平坦、清晰的土地(至少16x17方块)。

当您放置供给船/营地时,它将生成一个包含市政厅方块和建筑工具的箱子。 一旦放置了补给船/营地,就不能在同一个世界中放置另一个了。

通过直接右键单击水域/地面上的物品来放置供给船/营地 - 如果您已经有一个建筑工具,请不要在此时使用它(您预计从营地/船中获取工具,而不是已经拥有一个)。

提示

如果您无法放置供给营地/船,请逐块尝试:向右、向左、更近或更远离您清理的区域。该区域不能包含任何洞穴,也不能有花朵、草、蕨类、海藻、珊瑚等。

市政厅

一旦放置了市政厅,您殖民地的受保护区域将成为以您第一次放置市政厅方块的区块为中心的半径为4个区块的正方形(使用默认配置)。因此,请仔细规划您想要放置市政厅的位置。从该区块向每个方向延伸64个方块(4x4区块)将是您受保护的城镇区域,包括山脉、丘陵、湖泊、海洋、洞穴、世界生成的结构等,从基岩到天际限制。

提示

您在整个模组中最需要的工具是建筑工具(请查看我们的建筑工具页面)。从补给船/营地获取一个,或者制作另一个,以便您可以将所有小屋(包括市政厅)放置在完美的位置。

建筑工具的教学视频(过时)

Due to the protected area of each colony, you have to carefully scout your surrounding to make sure you are clear of any other colonies nearby preventing you from placing your {% building townhall %} or limiting your colony area in that direction (in multiplayer, etc.). If there is another colony too close to your current position, you won't be able to place a {% building townhall %}.

Location info of the next closest colony exists in the debug screen (displayed when you press F3). If there is a colony close to your current position, it will also show you the required distance away to place your {% building townhall %}.

Next Colony

Player's Colony

No Colony

For example, in the official MineColonies server it will be the default 4 chunk radius (4 + 4 + 1 {center Chunk where {% building townhall %} was placed} = 9 chunks or 144 total blocks required). It therefore, will tell you: "Next colony is XXX blocks away. (272 required to place a colony)."

Now, after you have explored, thought carefully, planned, and found the perfect spot to start your colony, let's take a look at the steps to get your colony running!

Setting Up Your Colony

Step 1

Get enough materials and craft your Supply Ship/Camp, then place it by right-clicking a block with it (do not use the build tool, if you happen to already have one). There will be a chest (or rack) inside the placed Ship/Camp with a {% building townhall %} block and a build tool.

Hint: Gather as many materials as possible to give to your {% worker_link builder %} when they start building. They will ask you for all kinds of materials for each building or upgrade, depending on the style of building you have chosen. The materials needed for most styles will be mainly wood, cobblestone, and torches for the lower levels. Further upgrades will require more elaborate materials.

Step 2

After you have carefully decided where you want to place your 市政厅 (remember, the position where you placed the {% building townhall %} block at first will be the center of your colony's protected area. Once placed, the area will be set and cannot be changed), use your build tool to place the {% building townhall %}. Once you commit to the placement of the {% building townhall %} (the green checkmark), the {% building townhall %} block will be placed. To officially start a colony, you need to right-click on the block, then select Create New Colony. Once you've done this, your initial four citizens will start appearing!

You can now right-click the {% building townhall %} block again to look what else you can configure in your colony, like your colony name!

You can see the full layout of the GUI here.

Step 3

Before any other building can be built, you must craft the {% building_link builder %} block and use your build tool to place it. Once you commit to the placement of the Builder's Hut (the green checkmark), the block will be placed and a Builder will be automatically assigned (or you can manually assign one with the best traits for a Builder if you changed this in the setting tab in the {% building townhall %} its GUI).

You now officially have a {% worker_link builder %}! CONGRATULATIONS!

When accessing the {% building builder %} block by right-clicking on it, you will see a GUI with different options:

Builder's hut GUI

You will have to click Build Options on the {% building builder %}, then click Build Building. This will give your new {% worker builder %} the build assignment so they can build their own hut first. If the {% building builder %} is not built, the {% worker builder %} cannot build any other buildings.

The {% worker builder %} will ask for the materials they need. Right-click on them when they have a red icon above their head to see the materials they currently need.

Hint: If you see that the Builder hasn't finished a build order and you don't see them asking for any materials, go to the Builder's Hut, recall the Builder, and wait a bit to see what they need. Also, check page 2 of the Builder's Hut GUI and see what resources are in red (those are missing resources).

Step 4

Once the Builder has finished their hut, you're ready to start building any other building you want! Just craft the desired block and use your build tool to place the building. Once it's placed, go into the GUI for the new block, click Build Options, and then click Build Building. It's that simple!

Hint: Consider upgrading the Builder's Hut to level 2 as soon as you can so the Builder can upgrade other buildings.

Final Notes

You have now completed the most important steps to start and create your colony!

Your question now is probably, "What to build next?" The 市政厅, {% building_link mine %}, {% building_link lumberjack %}, {% building_link farm %}, {% building_link fisher %}, {% building_link guardtower %}, {% building_link courier %}, {% building_link bakery %}, {% building_link restaurant %}, and more are probably good places to start.

But you start with only 4 citizens! Now what? Well, the next step after your 4 citizens are employed and are working hard is to plan and place the {% building_link house %}. This will give you additional citizens for each level of a House you build in your colony (after your inital four citizens are housed)! Now, what do you do with so many citizens? You cannot assign more than 1 worker per hut. Therefore, consider building additional huts for more Miners, Foresters, Builders, Farmers, Fishers, and many more! If you struggle with keeping track of what everyone needs, consider making a Clipboard and Resource Scroll. Though you only need one Clipboard, you can make a Resource Scroll for each Builder to keep track of their needs!

Hint: Upgrade your huts to the highest level possible (level 5 for all of them except the {% building_link tavern %}) to get achievements (and increase the speed at which the worker levels).

上次编辑于:
贡献者: ddaodan
- +
跳至主要內容

入门

约 3299 字大约 11 分钟

入门

本教程假设你已经安装了mod。如果你想了解如何安装官方整合包open in new window, 你可以在Java (Forge)GDLauncher以及Curseforge Launcher上找到相应的安装说明。

快速指南

在开始新的殖民地之前,你应该找到一个理想的位置。你需要足够大的空间来建设一个完整的城市,至少8x8区块大小,并且地形较为平坦。

你还应该尽可能多的收集资源,包括木材、石头、煤炭、铁矿石、花朵、线、皮革、羊毛、树苗和食物等。

第1步:补给营地/补给船

一旦你选择了殖民地的位置,你必须放置一个补给船或者补给营地。在同一个世界中你只能放置其中一个。补给营地/船提供了你正式启动殖民地所需的市政厅方块。它们还提供了在建设殖民地过程中可能需要的一些其他物资。一旦你获得了市政厅方块和建筑工具,剩下的营地/船就只是个装饰物了。你可以选择保留或拆除它。

第2步:市政厅

市政厅方块实际上是创建殖民地的核心。它还充当殖民地的中心。这是你开始使用建筑工具放置建筑的地方。使用建筑工具可以确保你能够清楚地看到建筑将在哪里,朝向哪个方向,以及它是否位于正确的Y层级(一些建筑需要抬升到正确的Y层级)。

一旦放置了市政厅方块,你将开始获得最初的4名居民。

第3步:建筑工

在开始建设殖民地之前,你需要一个建筑工。建筑工必须先建造他们自己的建筑工小屋,然后才能建造其他小屋,而且他们不能将小屋建造或升级到高于他们自己小屋的等级。

第4步:酒馆

你的市民需要一个居住和睡觉的地方,因此建议接下来建造一个酒馆。酒馆还允许游客来到你的殖民地,你可以招募他们留下成为居民。

第5步:食物

你的殖民地需要的下一个重要物资是食物。获得食物的最快方式是建造一个渔夫小屋。你也可以建造农场或其中一种牲畜饲养工,但是建造一个渔夫小屋更快。如果你不想亲自为殖民者喂食(或烹饪食物),建造一个餐厅也是明智的选择。

第6步:护林员

如果你更青睐木材,建议接下来建造一个护林员小屋。这样,你的新护林员就可以开始为你的下一个建筑和工具等项目采集木材。

第7步:矿工

石材和矿石是殖民地的另一个主要需求,因此建造一个矿井是下一个合乎逻辑的步骤。

第8步:仓库和快递员

在这一点上,你可能已经厌倦了将所有资源交给建筑师,然后再从渔夫、林业师、矿工等处取回。你可能还想将物品存放在一个地方。好吧,{% building_link warehouse %} 和 {% building_link courier %} 就是你正在寻找的解决方案!{% worker_link courier %} 在仓库和所有工作场所之间传送物品。剪贴板资源卷轴可能会有帮助!

第9步:其余的殖民地

在这一步,你需要根据你的游戏方式和殖民地的需求来决定下一步做什么。但是你有几个方向可供选择。一旦获得七名居民,你可能会受到袭击,因此可能想要建造一个卫兵塔,或者可能有一名生病的居民,想要建造一个医院,或者可能决定建造一个锯木厂来为工人制作所需的物品。或者你可能只是想拥有一个特定的工人,或者找到了一个适合建造特定小屋的好地方。你决定你的殖民地将如何发展!

详细步骤

如果你已经到达这里,恭喜你! 你已经安装了模拟殖民地,并准备好踏上一场探险之旅,探索、征服并建立自己的殖民地。努力工作,将其打造成一个繁荣的城镇。磨练你的领导技能,不断壮大成为一个城市!最后,你能成为一位宏伟的领导者,最终实现大都市的目标吗?(查看游戏中的模拟殖民地成就。)

Achievements

为了避免错误和挫折,在开始游戏之前,请仔细阅读整个指南。

放置补给船或补给营地

要放置补给船,你需要拥有足够大的水域(至少32x20)。
要放置补给营地,你需要拥有足够大、平坦、清晰的土地(至少16x17方块)。

当你放置供给船/营地时,它将生成一个包含市政厅方块和建筑工具的箱子。 一旦放置了补给船/营地,就不能在同一个世界中放置另一个了。

通过直接右键单击水域/地面上的物品来放置供给船/营地 - 如果你已经有一个建筑工具,请不要在此时使用它(你预计从营地/船中获取工具,而不是已经拥有一个)。

提示

如果你无法放置供给营地/船,请逐块尝试:向右、向左、更近或更远离你清理的区域。该区域不能包含任何洞穴,也不能有花朵、草、蕨类、海藻、珊瑚等。

市政厅

一旦放置了市政厅,你殖民地的受保护区域将成为以你第一次放置市政厅方块的区块为中心的半径为4个区块的正方形(使用默认配置)。因此,请仔细规划你想要放置市政厅的位置。从该区块向每个方向延伸64个方块(4x4区块)将是你受保护的城镇区域,包括山脉、丘陵、湖泊、海洋、洞穴、世界生成的结构等,从基岩到天际限制。

提示

你在整个模组中最需要的工具是建筑工具(请查看我们的建筑工具页面)。从补给船/营地获取一个,或者制作另一个,以便你可以将所有小屋(包括市政厅)放置在完美的位置。

建筑工具的教学视频(过时)

由于每个殖民地的受保护区域,你必须仔细勘察周围环境,确保你周围没有其他殖民地,以防止你放置市政厅或在该方向上限制你的殖民地区域(在多人游戏等情况下)。如果另一个殖民地离你当前位置太近,你将无法放置市政厅。

关于下一个最近殖民地的位置信息存在于调试屏幕中(按下F3键时显示)。如果有一个殖民地靠近你当前的位置,它还会显示你需要远离的距离以放置市政厅。

Next Colony

Player's Colony

No Colony

例如,在官方MineColonies服务器上,它将是默认的4块半径(4 + 4 + 1 {放置市政厅的中心区块} = 9块或144总共所需的方块)。因此,它会告诉你:下一个殖民地距离为XXX方块。 (放置殖民地所需的方块为272)。

现在,在你已经探索、深思熟虑、规划并找到了开始殖民地的完美地点之后,让我们看一下让你的殖民地运行起来的步骤!

设置你的殖民地

第1步

获得足够的材料并制作你的供给船/营地,然后通过右键单击一个方块将其放置(如果你已经拥有建筑工具,请不要使用建筑工具)。放置的船/营地内将有一个箱子(或架子),其中包含一个市政厅方块和一个建筑工具。

提示

尽可能多地收集材料,以便在建筑工小屋开始建造时提供给他们。他们会根据你选择的建筑风格,为每个建筑或升级向你索要各种材料。大多数风格所需的材料主要是木材、石头和火把,用于较低级别。进一步的升级将需要更复杂的材料。

第2步

在你仔细决定放置市政厅的位置后(记住,你首次放置市政厅方块的位置将是你殖民地受保护区域的中心。一旦放置,该区域将被确定,无法更改),使用你的建筑工具来放置市政厅。一旦你确认放置市政厅(绿色的对勾),市政厅方块将被放置。要正式启动殖民地,你需要右键单击该方块,然后选择“创建新殖民地”。一旦你完成了这个步骤,你的最初的四名居民将开始出现!

你现在可以再次右键单击市政厅方块,查看你在殖民地中可以配置的其他内容,比如你的殖民地名称!

你可以在这里查看GUI的完整布局。

第3步

在建造任何其他建筑之前,你必须制作[建筑工小屋]方块并使用你的建筑工具将其放置。一旦你确认放置建筑师小屋(绿色的对勾),方块将被放置,并且将自动分配一个建筑师((或者你可以在市政厅GUI的设置选项卡中手动分配一个拥有最佳特质的建筑师,如果你在其中更改了此设置)。

你现在正式拥有一个[建筑工小屋]!恭喜!

通过右键单击[建筑工小屋]方块访问它时,你将看到一个具有不同选项的GUI:

建筑工小屋GUI

你将点击[建筑工小屋]上的“建造选项”,然后点击“建造建筑”。这将为你的新建筑工提供建造任务,以便他们首先建造自己的小屋。如果[建筑工小屋]没有建造,建筑工将无法建造任何其他建筑。

建筑工将询问他们需要的材料。当他们头顶上方有红色图标时,右键单击他们以查看他们当前所需的材料。

提示

如果你发现建筑师没有完成建造任务并且你看不到他们正在请求任何材料,请前往建筑师小屋,召回建筑师,并等待一段时间以查看他们需要什么。此外,检查建筑师小屋 GUI 的第二页,查看哪些资源是红色的(这些是缺少的资源)。

第4步

一旦建筑师完成了他们的小屋,你就可以开始建造任何其他你想要的建筑了!只需制作所需的方块,并使用你的建筑工具将其放置。一旦放置,进入新方块的GUI,点击“建造选项”,然后点击“建造建筑”。就是这么简单!

提示

考虑尽早将建筑师小屋升级到第2级,这样建筑师就可以升级其他建筑物。

最后说明

你现在已经完成了开始和创建殖民地的最重要步骤!

你现在可能的问题是,接下来要建造什么?市政厅、[矿场]、[伐木工]、农场、渔夫、卫兵塔、{% building_link courier %}、面包房、餐厅等可能是一个不错的开始。

但是你只有4名居民!现在怎么办呢?嗯,在你的4名居民就业并努力工作之后,下一个步骤是计划并放置[住宅]。这将为你的殖民地每建造一个房屋的每个级别(在你的最初四名居民得到住宿后)提供额外的居民!那么,对于这么多居民,你该怎么办呢?你不能为每个小屋分配超过1名工人。因此,考虑建造更多的小屋,以获取更多的矿工、林业师、建筑师、农民、渔夫等!如果你难以跟踪每个人的需求,请考虑制作一个剪贴板资源卷轴。尽管你只需要一个剪贴板,但你可以为每位建筑师制作一个资源卷轴,以跟踪他们的需求!

提示

将你的小屋升级到最高可能的级别(除了[酒馆],它的最高级别为5)以获得成就,并提高工人等级的升级速度。

上次编辑于:
贡献者: ddaodan
+ diff --git a/Tutorials/index.html b/Tutorials/index.html index 29d0b14..e23855d 100644 --- a/Tutorials/index.html +++ b/Tutorials/index.html @@ -28,13 +28,13 @@ document.documentElement.setAttribute("data-theme", "dark"); } - Tutorials | 模拟殖民地 中文Wiki - - - + 教程 | 模拟殖民地 中文Wiki + + + -
跳至主要內容

Tutorials

约 1 字小于 1 分钟

- +
跳至主要內容

教程

约 9 字小于 1 分钟

上次编辑于:
贡献者: ddaodan
+ diff --git a/Tutorials/schematics.html b/Tutorials/schematics.html index b5dc890..b5210fb 100644 --- a/Tutorials/schematics.html +++ b/Tutorials/schematics.html @@ -28,13 +28,13 @@ document.documentElement.setAttribute("data-theme", "dark"); } - 原理图 | 模拟殖民地 中文Wiki - - - + 原理图 | 模拟殖民地 中文Wiki + + + -
跳至主要內容

原理图

约 6219 字大约 21 分钟

Schematics

Schematics are files containing block and entity information of a certain area a player scanned with the Scan Tool in-game. You can use the scan tool and scan ANY building or structure you like in singleplayer or multiplayer and then have your {% worker_link builder %} build it for you (provided that you give them all the materials needed, of course).

Scanning a New Structure

Once you have a structure or area you want to scan to have your Builder build, you need to determine the exact area that needs to be scanned.

TestBuilding

Take your Scan Tool and left-click the lowest left block of the area and then place a block (it can be a placeholder block in the top right corner and right-click on it.

ScanPoint1

ScanPoint2

Then click in the air to see the entire structure.

ScanFull

Once you have the full area set, you can press Escape and the white outline of the scan area will stay in place. Go around it to double-check that everything you want is in the scan area. If the area contains multiple eligible anchor blocks (hut blocks, tag anchors or decoration controllers), you need to shift+left click the correct anchor block (e.g. the barracks hut block in a barracks schematic). When you are ready, you can right-click in the air again to get the GUI to display where you can enter your scan name. Then press the green checkmark to save the scan.

SPECIAL NOTE: Do not rename the file after scanning. It MUST be scanned with the correct name.

{% version "1.18.2" before=true %}
Scans are saved in ../minecolonies/scan/new/....


Once the scans are saved, they need to be moved to the ../structurize/schematics/(folder)/file if they are a custom hut.
{% endversion %}

{% version "1.19" after=true %}
Scans are saved in */blueprints/<yourplayername>/scans.


Once the scans are saved, they need to be placed in a style pack, preferably in the correct folder. See the style packs chapter for more details.
{% endversion %}

Placing a Schematic.

{% version "1.18.2" before=true %}
Once you have scanned a structure, you can use the build tool to have your {% worker_link farmer %} build it for you. Once you right-click with the build tool, you will have to select "My Schematics" (in the left dropdown menu) and on the right dropdown menu you will see the scans that you have made. There is also a Rename button where you can change the name of the scan. You can also delete any of your saved scans.
{% endversion %}

Schematic

{% version "1.19" after=true %}
The scanned structure can be found in the build tool under the style pack with your own name. Click "Switch Pack" -> "<yourplayername>" (icon looks like the scan tool) -> "scans".
{% endversion %}

{% version "1.19" after=true %}

Style packs

Styles are now structured in so-called style packs. This is similar to a resource pack or data pack, in that it has a file with some metadata about the style (the name, a description, optionally a link to an image, etc.), and a folder structure with the actual files.

Stylepacks live in the blueprints folder, within your Minecraft folder. This folder already contains one style pack: One with your player's name. This style pack will contain your scanned files, and can be used to test schematics. In order to make a new style, you need to make a new schematic pack.

The pack.json

This json file contains metadata describing the style:

Key NameTypeDescription
"version"numberPack version, start at 1, increase it whenever you make a new version of the pack
"pack-format"numberDescriptor for the pack format, needs to be 1 at the moment
"desc"stringDescription of the style. This will be visible in the build tool to explain what your style is about
"authors"array of stringsNames of the authors, in order to credit them. This is visible in the build tool
"mods"array of stringsNames of used mods (ids). The style is not visible if one of those mods is not installed, to prevent broken schematics
"name"stringThe name of the style pack
"icon"stringThe name of the file with an icon which is showed in the style packs selection screen

You have to increase the version number whenever you release your pack for others to use, or whenever you install a new version onto a server. You don't need to increase it when testing changes purely in single-player.

The folder structure

There are several folders, separating the buildings and decorations in categories.
Each of the folders at the highest level can have a couple of icons, named icon.png and icon_disabled.png. Those are shown in the button bar right above the hot bar.

You can download a template folder structure from githubopen in new window (template.zip), which contains the icons used for the official styles already.
That github page also contains examples how different styles are structured.
An overview with which buildings go into which folders can also be found hereopen in new window.

With a few specific exceptions, you don't have to strictly follow the standard folder structure -- but it's recommended to stick to it when possible to make it easier for others to find specific buildings and decorations. But you're free to make extra folders to help group separate but related sets together, especially if you don't want them to appear directly as alternate buildings. E.g. if you have two styles of roads, one for early game and one for later game, you could put them in infrastructure/roads/simple/ and infrastructure/roads/nice/.

Note: It's strongly recommended to have each folder only contain files or subfolders, but not both. While it is possible to mix them, the build tool doesn't display it as nicely.
{% endversion %}

FAQ

This is a FAQ section to answer common questions regarding schematics in MineColonies.

How do I install custom schematics I just downloaded?

{% version "1.18.2" before=true %}
Those custom schematics go in */structurize/schematics. Unzip the zip you downloaded, and put all subfolders in the schematics folder. That folder should contain folders like <stylename>, decorations, walls, supplycamps etc. (depending on which style you installed)
{% endversion %}

{% version "1.19" after=true %}
The style pack goes in the "blueprints" folder. Unzip the zip, and find the folder containing the pack.json (either the unzipped folder, or a folder directly in it, depending on how the zip was made). This folder needs to be placed in */blueprints directly, not any subfolder thereof.
{% endversion %}

What and where is the scans folder?

The scans folder is where the schematics are saved after performing a scan using the scan tool in MineColonies.
{% version "1.18.2" before=true %}
This is a client-side-only directory which is located in Minecraft's folder under: */structurize/scans/. Freshly scanned schematics can be found in */structurize/scans/new/ unless they have been renamed in-game. (If they aren't there, look in */minecolonies/scans/new.) This directory is shared between all your singleplayer games and multiplayer games.
{% endversion %}

{% version "1.19" after=true %}
This is located in your own style pack in Minecraft's folder under: */blueprints/<yourplayername>/scans/. This folder is shared between all your singleylayer and multiplayer games.
{% endversion %}

Where is the schematic folder?

{% version "1.18.2" before=true %}
Custom schematics need to be copied inside the schematic folder. For both singleplayer and multiplayer games, the folder is under */structurize/schematics/.
{% endversion %}

{% version "1.19" after=true %}
Custom schematics need to be placed in a (custom) style pack. For more information about that, look there.
{% endversion %}

I have a "*/minecolonies/01e6a291-8a01-4763-bcae-f3a8797b1d52/cache/" folder, what is that for?

{% version "1.18.2" before=true %}
When playing on a server, the server needs to send the schematics to the players so that the build tool's preview works. Those schematics are saved in Minecraft's directory under */structurize/{ServerUUID}/cache/, where ServerUUID is the unique identifier of the server. Those directories can be safely removed as they are automatically created by the server when needed.
{% endversion %}

{% version "1.19.2" after=true %}
This was previously used to save schematics from a server and was automatically created as needed. However, this is no longer needed in 1.19.2 and later, so this folder can be removed safely.
{% endversion %}

{% version "1.19.2" after=true %}

I have a "/blueprints/clients/" folder, what is that for?

On a server, this folder holds a cached copy of the decorations and shapes used by your players -- possibly even including entire style packs that they've installed themselves (though note that for game balance purposes they won't be able to make functional buildings this way; these must be installed "properly" on the server to be usable).

You can delete these folders at any time (though preferably when the player is not logged in); they will be re-created as needed.
{% endversion %}

Can I just build my own buildings and then get the colonists to "move in"?

No. Functional buildings must be constructed by the Builder. You have to either use one of the prefabs provided by existing style packs (either included in the mod or via various addons installed separately), or design your own custom huts as an explicitly separate step (typically in a special creative designing world), before getting the builder to place them in your real colony. MineColonies is more like an RTS than it is like classic Minecraft building.

How to create custom huts?

To create new schematics, there are some guidelines that you must follow: the scans MUST have the same footprint for each level of the hut; the scans must contain the hut's block, for example the Builder's Hut block for the {% building_link builder %}; the hut block need to be exactly at the same place and have the same rotation for each level.

Ensure you are building your custom hut outside of any colony borders. When placing the hut block inside the custom hut, shift+right click to place it without activating it. Then you can scan and save the schematic.

{% version "1.18.2" before=true %}
The scans' filenames need to follow the naming convention: {StyleName}/{HutName}{HutLevel}.blueprint. For example, for the Builder's Huts with the MyOwn style, we would have:

myown/builder1.blueprint
myown/builder2.blueprint
myown/builder3.blueprint
myown/builder4.blueprint
myown/builder5.blueprint

  • Note: In the build tool, the extension is hidden. HutName can be any of the listed huts below. The maximum level is 5 (except for the Tavern; its max level is 3).

Alternative designs can be placed under a style name like "myownalternative", or a subfolder like myown/alt/*.
{% endversion %}

Once ready, move the myown folder into the blueprints folder and start your game. You should be able to see it with the the build tool.

Note: Remember that you need the appropriate hut in your inventory to be able to see the schematics in the build tool.

{% version "1.19" after=true %}
The naming for the buildings is not strict anymore. The only things that are important are that they are named consistently, that their names end with the hut level, and that you only use lowercase letters in the hut names (avoid capitals, spaces, or other punctuation).
Alternate designs can just have a different name than the primary one. E.g. if you named the level 1 builder's hut "builder1", an alternative version could be called "altbuilder1" or "builderalt1" or even something completely different ("constructionworker1").
Don't use numbers anywhere in the name except right at the end for the level. E.g. "alt1builder1" won't work as expected.

Once ready, you need to make a style pack out of them.
The schematics are visible in the build tool without the hut block, but you can't view them in survival mode (their button is greyed out, with an error message that you need to have the hut block).
{% endversion %}

[1.18] Custom Hut Filenames

Here is a full list, up-to-date as of 14 October 2022, of the building names. Please note do not use capital letters in hut names.

Level 1Level 2Level 3Level 4Level 5
archery1archery2archery3archery4archery5
alchemist1alchemist2alchemist3alchemist4alchemist5
baker1baker2baker3baker4baker5
barracks1barracks2barracks3barracks4barracks5
barrackstower1barrackstower2barrackstower3barrackstower4barrackstower5
beekeeper1beekeeper2beekeeper3beekeeper4beekeeper5
blacksmith1blacksmith2blacksmith3blacksmith4blacksmith5
builder1builder2builder3builder4builder5
chickenherder1chickenherder2chickenherder3chickenherder4chickenherder5
citizen1citizen2citizen3citizen4citizen5
combatacademy1combatacademy2combatacademy3combatacademy4combatacademy5
composter1composter2composter3composter4composter5
concretemixer1concretemixer2concretemixer3concretemixer4concretemixer5
cook1cook2cook3cook4cook5
cowboy1cowboy2cowboy3cowboy4cowboy5
crusher1crusher2crusher3crusher4crusher5
deliveryman1deliveryman2deliveryman3deliveryman4deliveryman5
dyer1dyer2dyer3dyer4dyer5
enchanter1enchanter2enchanter3enchanter4enchanter5
farmer1farmer2farmer3farmer4farmer5
fisherman1fisherman2fisherman3fisherman4fisherman5
fletcher1fletcher2fletcher3fletcher4fletcher5
florist1florist2florist3florist4florist5
glassblower1glassblower2glassblower3glassblower4glassblower5
graveyard1graveyard2graveyard3graveyard4graveyard5
guardtower1guardtower2guardtower3guardtower4guardtower5
hospital1hospital2hospital3hospital4hospital5
library1library2library3library4library5
lumberjack1lumberjack2lumberjack3lumberjack4lumberjack5
mechanic1mechanic2mechanic3mechanic4mechanic5
miner1miner2miner3miner4miner5
mysticalsite1mysticalsite2mysticalsite3mysticalsite4mysticalsite5
netherworker1netherworker2netherworker3netherworker4netherworker5
plantation1plantation2plantation3plantation4plantation5
rabbithutch1rabbithutch2rabbithutch3rabbithutch4rabbithutch5
sawmill1sawmill2sawmill3sawmill4sawmill5
school1school2school3school4school5
shepherd1shepherd2shepherd3shepherd4shepherd5
sifter1sifter2sifter3sifter4sifter5
smeltery1smeltery2smeltery3smeltery4smeltery5
stonemason1stonemason2stonemason3stonemason4stonemason5
stonesmeltery1stonesmeltery2stonesmeltery3stonesmeltery4stonesmeltery5
swineherder1swineherder2swineherder3swineherder4swineherder5
tavern1tavern2tavern3N/AN/A
townhall1townhall2townhall3townhall4townhall5
university1university2university3university4university5
warehouse1warehouse2warehouse3warehouse4warehouse5

Custom Supply Ships and Camps

The process for custom supply ships and camps is slightly different:

{% version "1.18.2" before=true %}

Camp or ShipFile Name and Path
Campstructurize/schematics/supplycamp/myownsupplycamp
Shipstructurize/schematics/supplyship/myownsupplyship

So, for example, the path would be structurize/schematics/wildwest/builder1 for the Builder's Hut level 1 and structurize/schematics/supplycamp/wildwestsupplycamp for the supply camp.
{% endversion %}

{% version "1.19" after=true %}

Camp or ShipFile Name and Path
Campblueprints/<myownstyle>/decorations/supplies/supplycamp
Shipblueprints/<myownstyle>/decorations/supplies/supplyship
Nether Shipblueprints/<myownstyle>/decorations/supplies/nethership

So, for example, the path would be blueprints/wildwest/fundamentals/builder1 for the Builder's Hut level 1 and blueprints/wildwest/decorations/supplies/supplycamp for the supply camp.
{% endversion %}

You should always apply a groundlevel tag when making a supply camp/ship. The rules for guessing where the ground level is without the tag change depending whether they're placed by the build tool or the supply item, for legacy reasons.

Hut Requirements

BuildingRequirementsSuggested
{% building_link archery %}1 archery dummy (a hay bale with a button on it); 1 bed per levelat least 1 standing position per level (a glowstone block, or any block tagged with work)
{% building_link alchemist %}1 brewing stand per level; 2 soul sand per level starting at level 2 (with 4 soul sand); leaves next to logs, i.e. "trees"
{% building_link bakery %}1 furnace
{% building_link barracks %}1 Barracks Tower per level (up to level 4)
{% building_link barrackstower %}1 bed per level
{% building_link builder %}1 rack per level
{% building_link combatacademy %}1 combat dummy per level (a pumpkin on top of a bale of hay); 1 bed per level
{% building_link composter %}1 compost barrel per level
{% building_link concretemixer %}3 blocks of flowing water with solid blocks below and air blocks above
{% building_link dyer %}1 furnace
{% building_link fisher %}Hut block placed on a block at water levelAt least 6x5x1 unobstructed body of water if integrating fishing location in the schematic
{% building_link flowershop %}4 compost blocks per level
{% building_link glassblower %}1 furnace per level
{% building_link graveyard %}Named Graves, with the amount increasing per level14 named graves at level 1, 18 named graves at level 2, 27 named graves at level 3, 36 named graves at level 4, 50 named graves at level 5
{% building_link guardtower %}1 bed for aesthetics
{% building_link hospital %}1 bed per level
{% building_link house %}1 bed per level
{% building_link library %}Bookshelves
{% building_link mine %}A few starting ladders where the shaft's ladders will go with the tags [cobble] and [ladder]
{% building_link nethermine %}A nether portal, and an enclosed 1x1x2 room
{% building_link plantation %}12 per level, 4 for each of sugar cane, cactus and bamboo
{% building_link restaurant %}1 furnace per level
{% building_link school %}2 carpets per level4 carpets per level
{% building_link smeltery %}1 furnace per level
{% building_link stonesmeltery %}1 furnace per level
{% building_link tavern %}4 beds and a dining roomHorizontal barrels and/or vertical barrels
{% building_link university %}Bookshelves
{% building_link warehouse %}Racks (more each level)

Some buildings may also require tags to be set on certain blocks using the tag tool.

Level Requirements for Overworld Styles

LevelRequirements
Level 1Very Easy - Wooden
Level 2Easy - Iron
Level 3Medium - Nether
Level 4Difficult - Ocean
Level 5Very Difficult - End

Level Requirements for Nether Styles

LevelRequirements
Level 1Very Easy - Nether
Level 2Easy - Rarer Nether
Level 3Medium - Overworld
Level 4Difficult - Ocean
Level 5Very Difficult - End

{% version "1.19.2" after=true %}

Plantation Fields

In 1.19.2 and beyond, the plantation has been changed to include fields, just like the {% worker_link farmer %}. However, unlike the {% worker_link farmer %}, these fields can be completely free-form and created by the style designers. Each field has certain requirements for the {% worker_link planter %} to do their work successfully.

Each plant has 2 separate tags: a field tag and a work tag.
The field tags are given to the plantation field block to define what plants this field handles. The work tag is given based on the implementation of the field.

A field can have as many field tags as you want, but not 2 of the same.

PlantField tagWork tagMaximum work tags
Sugar canesugar_fieldsugar20
Cactuscactus_fieldcactus20
Bamboobamboo_fieldbamboo20
Cocoacocoa_fieldcocoa5 (totalling 20 positions; details below)
Vinevine_fieldvine20
Kelpkelp_fieldkelp20
Seagrassseagrass_fieldseagrass121 (11 x 11 area)
Sea Picklesseapickle_fieldseapickle10
Glow Berriesglowb_fieldglowb_vine20
Weeping Vinesweepv_fieldweepv_vine20
Twisting Vinestwistv_fieldtwistv_vine20
Crimson Plantscrimsonp_fieldcrimsonp_ground121 (11 x 11 area)
Warped Plantswarpedp_fieldwarpedp_ground121 (11 x 11 area)

The {% worker_link planter %} will always attempt to walk to any adjacent air block around the planting position. If none of the adjacent positions are air, the planter will attempt to walk to the block itself. This prevents the {% worker_link planter %} from standing on the block itself whilst, for example, placing a block down like cactus, after which the {% worker_link planter %} would be standing inside of the plant.
Note: Make sure that the {% worker_link planter %} can always get within about 4 blocks of the desired position. If not, they will teleport around to reach the position, which may not always work.

X
XPX
X

X = walking position

P = planting position

Note: Kelp is an exception to this behaviour. To prevent planters from diving into the water, the planter will walk to the first air block above the work tagged block and look up 26 blocks from the work tagged block. If this is not possible, they will not be able to harvest this plant, so ensure there is air above the water above the work tagged block.

Kelp field movement explanation

  • The red X is the position where the planter will walk to in the example image.
  • The blue X is the position where the work tag of the block is.

For downwards-growing plants, the planter will attempt to stand above the work tagged block and harvest below them. Make sure the planter can reach the top of the stem.

Vertically Growing Plants (Upwards and Downwards)

A "vertically growing plant" is a plant that grows in a single line, either upwards or downwards; for example, Sugar Cane is a vertically growing plant that grows upwards. These plants always break fully when their root blocks are broken. The planter will break these at the second block from the root.

Each of these plants have a minimum and sometimes a maximum growth height.
The planter can only harvest them when they reach the minimum. If plants have a maximum height, the planter will have an increasingly higher chance to harvest the plant the taller it gets. Plants are only required to grow to the minimum height within the bounds of the schematic.

PlantMinimum heightMaximum height
Sugar cane3N/A
Cactus3N/A
Bamboo616
Kelp225
Glowberries3N/A
Weeping vines225
Twisting vines225

Treeside Plants

Treeside plants grow directly on the sides of trees. For these plants, you only need to tag the tree's stem; the working positions will automatically be set to every horizontally adjacent block of the tagged stem. Currently this is only used for Cocoa beans.

Note that this means that the amount of tags you can actually place is the amount of working positions divided by 4!

Bonemealed Fields

Bonemealed fields will tell the planter to use bonemeal somewhere on the ground to grow plants as if the player had used bonemeal.

The amount of planting positions on these fields are usually unlimited because bonemealing the ground has a set area of effect. However, it is suggested not to make the fields too big; an area around 7x7 is lightly suggested.

Every bonemealed plant works slightly differently.

PlantWork tag location
SeagrassThe block directly below the water should tagged; the planter will bonemeal the tagged block itself. Red Xs are where the planter will attempt to walk. Blue Xs are the blocks that are tagged with the work tag.Seagrass explanation
Sea picklesThe block directly below the water should tagged. The planter will initially place the pickles, then bonemeal the pickles to let them grow. Red Xs are where the planter will attempt to walk. Blue Xs are the blocks that are tagged with the work tag.Sea Pickle explanation
Crimson plantsTag all the nylium ground blocks where the plants are supposed to grow.
Warped plantsTag all the nylium ground blocks where the plants are supposed to grow.

Percentage-based Harvesting

Percentage based harvesting fields will attempt to place a minimum percentage of plants down on given spots. These plants — such as vines — should then naturally spread to their surroundings without the player's help. The planter has no involvement in this process.

PlantTag location
VineTag all the positions where the vines themselves can spread to, NOT the blocks where the vines are attached to.

{% endversion %}

Tips on Building

Do

  • Make all levels of a hut have the same footprint for x, y, and z
  • Place the hut block in the same location with the same rotation
  • Make sure all racks and furnaces are in the same location through all levels (to prevent the contents spilling out when they're getting moved)
  • Use placeholders where you want to keep any existing block (including from level to level), like the Barracks Towers in the Barracks schematic
  • Use solid placeholders at or below ground level
  • Place a groundlevel tag at ground level if your hut isn't sitting directly on the ground.
  • Use only vanilla blocks or Structurize blocks (for official styles)
  • Use Books and Quills instead of blank books, or written books on a lectern. (Keep a copy of the original book and quill somewhere, if it turns out you made a mistake!)

Don't

  • Use unobtainable items in builds (no command blocks, petrified wood, infested blocks, or mob heads (including player heads))
  • Change someone else's style (officially) unless specifically asked to do so
  • Rename schematics after scanning

Additional Information

How to override some built-in schematics?

{% version "1.18.2" before=true %}
Simply create a schematic file with the same style/name. For instance, to override the {% building_link builder %} wooden level 1, create a schematic file name called wooden/builder1.blueprint.
{% endversion %}

{% version "1.19" after=true %}
Unfortunately, this is not possible, unless you override the entire style (make a style pack with the same name as an existing style pack, in that case).
{% endversion %}

How to use custom huts?

{% version "1.18.2" before=true %}
The custom huts need to be copied in the schematics folder.
{% endversion %}

{% version "1.19" after=true %}
The custom huts need to be copied into a style pack.
{% endversion %}

Once copied, you can start your singleplayer or multiplayer game as usual. You should see them in the build tool (if you have the hut block in your inventory).

How to allow my players to use their own huts' schematics on my server?

You will have to copy them yourself in the blueprints folder on the server and restart it.

How to allow my players to use their scanned decoration schematics on my server?

Edit the Structurize configuration file at minecraft/config/structurize-common.toml and set allowPlayerSchematics to true. This allows the player to use their own decorations. It is not possible for the player to use their own huts' schematics. You can also limit the number of players' schematics at any given time by editing maxCachedSchematics (default is 100). When the limit is reached, the server will start deleting unused schematics.

How to disable built-in schematics completely?

Edit the Structurize configuration file at minecraft/config/structurize-common.toml and set ignoreSchematicsFromJar to true. Be aware: things will break if some huts' schematics are missing.

How to create upgradable decoration schematics?

{% version "1.18.2" before=true %}
Add the deco controller somewhere in the schematic with the name of the schematic, where you'll put it in the file directory, and its level. Make sure to actually put the decoration in that file path, but only after scanning - don't include the path in the scan name.
{% endversion %}

{% version "1.19" after=true %}
Put the deco controller somewhere in the schematic, and make sure the name of the schematic ends with a number while scanning. The decoration controller will automatically find the decoration in the same folder with the next number.
{% endversion %}

Upgradable Decos

How to use custom mineshafts in style packs?

The size must be 9 x 4 x 9 blocks. They must be named and oriented exactly the same (i.e. do not rotate at all) as in the default style pack (careful: the names aren't entirely consistent with the layout, so make careful note which is which!) Use an existing style pack as a template along with the scan tool to create the blueprints.

{% version "1.18.2" before=true %}
The custom mineshafts need to be at schematics/yourstyle/miner/*.
{% endversion %}

{% version "1.19" after=true %}
The custom mineshafts need to be at `blueprints/yourstyle/infrastructure/mineshafts/*.

It's recommended that you use the tag tool and Tag Anchor to make the mineshafts invisible. Take care that the anchor is in the same position as in the original mineshafts -- the very center bottom block.
{% endversion %}

How to make custom quarries in style packs?

The {% building_link quarry %} is split into a "top part" and a "bottom part". Both parts only have one level each.

The top part is constructed by the Builder and is the part outside of the quarry pit -- decorative walls, fences, cranes, racks, etc. This contains the actual quarry hut block itself, which should pretty much always be on the second y level up from the bottom (i.e. the bottom layer is the ground level, then the hut is on the next layer up), although with some caveats this is not absolutely required.

The bottom part is constructed by the Quarrier and is the actual quarry pit itself, consisting mostly of placeholders, air blocks, and decorative elements. While you can also set the anchor manually, it's recommended to use a Tag Anchor. The anchor should normally be at the very top layer, although with some caveats it can be elsewhere.

{% version "1.18.2" before=true %}
The top parts must be named simplequarry1 and mediumquarry1, and the corresponding bottom parts are simplequarryshaft1 and mediumquarryshaft1.
{% endversion %}

{% version "1.19" after=true %}
The top part can be in any folder and name that you like (and you can have more than one alternate), but the canonical names are infrastructure/mineshafts/simplequarry1 and infrastructure/mineshafts/mediumquarry1. (For reasons, it's currently best to avoid using different names.)

The bottom part can only be infrastructure/mineshafts/simplequarryshaft1 and infrastructure/mineshafts/mediumquarryshaft1, regardless of what or where the top part was. As such, you can only make one of each per style pack.
{% endversion %}

Importantly: when built, the two schematics are aligned such that the anchor of the bottom part is exactly two blocks below the anchor of the top part. You should carefully align them when designing.

It is permitted for the quarry to be a slightly different size from the default versions, but it's strongly encouraged (for game balance reasons) to make each one approximately the same size as the originals, and in particular to have the same amount of air blocks in the bottom part, since this affects the final yield of cobble or other stone.

How to create parent/child buildings or decorations?

The Barracks and Barracks Tower always have a parent/child relationship (i.e. the towers are embedded within the barracks, not directly built separately with the build tool). It's also possible to do the same with other buildings -- either putting one or more buildings into a containing decoration (e.g. a "district" of related buildings) or even embedding buildings within other buildings.

Some popular combinations are to embed couriers within the warehouse, and fields within the farmer. Others combinations are possible, depending on your goals for the style -- but don't go too overboard! Some players like combination buildings since they fit nicely together, but others don't like them since they can take away flexibility and creativity when building a colony.

When designing parent/child schematics, the key is the light placeholder. The parent schematic needs to contain the child hut block in the correct position and rotation, along with light placeholders wherever there should be a block from the child, and the parent's own blocks. Similarly, the child schematic needs its own hut block and other blocks, and light placeholders wherever there should be a block from the parent. It can be helpful to make a temporary scan of either the parent or child and overlay them over the other to help line things up, or to build both together and then duplicate it and split apart the designs.

While strictly speaking it's only mandatory to include the child hut at the level that it's introduced into the parent and you could put only a placeholder at higher levels, it's strongly recommended to always include the child hut in every higher level of the parent. This works better when someone moves or repairs the parent, or skips levels and pastes it directly at a higher level.

Also remember that the child building can't be upgraded to a higher level than the parent building. This limit doesn't apply if the parent is a non-upgradeable decoration.

Be careful of "research loops" -- if the player needs to build a child before they can unlock a parent, that's a problem (unless you also have an alternate standalone of the child).

Since the parent will contain multiple hut blocks, you will always need to explicitly specify the anchor block (the main parent hut block if a building, or a deco controller or tag anchor if it's a decoration) when you scan, otherwise you'll get an error that the anchor was ambiguous and it will not work correctly.

{% version "1.18.2" before=true %}
Since you can only have one version of each building in each folder, combinations should be used very sparingly. The parent and child need to be in the same folder.

To place the child hut in the parent, you can simply shift-click it, just like when placing it in the child itself. Be sure to get the location and rotation correct -- the child hut will be built with the matching orientation relative to that.
{% endversion %}

{% version "1.19" after=true %}
The parent and child need to be in the same folder. This doesn't mean that you can't combine buildings that are normally in different folders -- just that the version that's intended to be the child must be in the same folder as the parent. You may still have another version of the child (to be used by itself, not as a child) in the original folder if you like.

It's not supported to have a child contain additional children of its own -- you're limited to just the two layers (though the parent can contain multiple children of either the same or different types).

Regardless of which method you use to build, be sure to get the location and rotation of the child hut correct when placing it in the parent -- the building will be built with the matching orientation relative to that.

If you've used the default folder and filenames for your child, then you can simply shift-click the child hut to place it into the parent, similar to older versions. However this is not the most recommended way to do things any more.

The preferred method is to make another level of your child containing only the hut block, giving it the same folder and name as your actual child, but level 0 (e.g. craftsmanship/storage/mycourier0). You can make it the same size as your real child (surrounded by placeholders) if you wish, but scanning a 1x1x1 is fine too. After scanning, you need to move this to its final location in your actual style pack, and then paste it from there (not from your scans!) into your parent. It doesn't matter whether you use schematic or constructed paste. Paste the same level 0 into all levels of the parent. After it's pasted, you can delete the level 0 blueprint -- it should not be included in your final released style pack. (Note that when you go to paste it, the build tool labels it as "level 1" of 6. You can confirm you have the right one by checking the tooltip name.)

Another option is called "auto-levelling". This is where instead of making and pasting a level 0 into each level of the parent, you instead paste the actual matching child level (i.e. level 1 child in the level 1 parent, level 2 child in the level 2 parent, etc). Again it doesn't matter whether you use schematic or constructed paste, but either way you'll probably have to fix up some of the overlapping blocks afterward. You do still need to include the child hut's blueprints in your released style pack, and you do still have to paste it from your actual style pack and not your scans folder.

With auto-levelling, the builder will upgrade the child at the same time as upgrading the parent, instead of the player needing to explicitly build or upgrade one after the other. While this may sound simpler, there are some downsides: the biggest is that won't work well for child buildings that have required functional blocks (such as beds, furnaces, racks, etc), although purely decorative ones are fine. You also should not use this where the child is locked behind research, unless you can be absolutely certain that it's already unlocked (e.g. if the parent is unlocked after the child -- though still be careful of loops). The "level 0" method doesn't have these issues.

Since you can have multiple alternates of buildings (in the same or separate folders), it's possible to make a particular building type have both a standalone version as well as a version embedded as a child. It's strongly recommended to use the tag tool to mark any blueprint intended for use only as a child (in the child schematic itself) as invisible so that it doesn't show up for building standalone -- especially as child versions are often simpler or cheaper and may be missing walls or other things intended to be provided by the parent, so won't look good on their own or might break game balance. It's also possible to have each child of a parent be its own unique blueprint -- but that requires even more scans and more care when pasting to use the right alternate.
{% endversion %}

What if I have another question?

There's a channel in the Discord serveropen in new window specifically for asking questions about designing your own schematics.

上次编辑于:
贡献者: ddaodan
- +
跳至主要內容

原理图

约 6219 字大约 21 分钟

Schematics

Schematics are files containing block and entity information of a certain area a player scanned with the Scan Tool in-game. You can use the scan tool and scan ANY building or structure you like in singleplayer or multiplayer and then have your {% worker_link builder %} build it for you (provided that you give them all the materials needed, of course).

Scanning a New Structure

Once you have a structure or area you want to scan to have your Builder build, you need to determine the exact area that needs to be scanned.

TestBuilding

Take your Scan Tool and left-click the lowest left block of the area and then place a block (it can be a placeholder block in the top right corner and right-click on it.

ScanPoint1

ScanPoint2

Then click in the air to see the entire structure.

ScanFull

Once you have the full area set, you can press Escape and the white outline of the scan area will stay in place. Go around it to double-check that everything you want is in the scan area. If the area contains multiple eligible anchor blocks (hut blocks, tag anchors or decoration controllers), you need to shift+left click the correct anchor block (e.g. the barracks hut block in a barracks schematic). When you are ready, you can right-click in the air again to get the GUI to display where you can enter your scan name. Then press the green checkmark to save the scan.

SPECIAL NOTE: Do not rename the file after scanning. It MUST be scanned with the correct name.

{% version "1.18.2" before=true %}
Scans are saved in ../minecolonies/scan/new/....


Once the scans are saved, they need to be moved to the ../structurize/schematics/(folder)/file if they are a custom hut.
{% endversion %}

{% version "1.19" after=true %}
Scans are saved in */blueprints/<yourplayername>/scans.


Once the scans are saved, they need to be placed in a style pack, preferably in the correct folder. See the style packs chapter for more details.
{% endversion %}

Placing a Schematic.

{% version "1.18.2" before=true %}
Once you have scanned a structure, you can use the build tool to have your {% worker_link farmer %} build it for you. Once you right-click with the build tool, you will have to select "My Schematics" (in the left dropdown menu) and on the right dropdown menu you will see the scans that you have made. There is also a Rename button where you can change the name of the scan. You can also delete any of your saved scans.
{% endversion %}

Schematic

{% version "1.19" after=true %}
The scanned structure can be found in the build tool under the style pack with your own name. Click "Switch Pack" -> "<yourplayername>" (icon looks like the scan tool) -> "scans".
{% endversion %}

{% version "1.19" after=true %}

Style packs

Styles are now structured in so-called style packs. This is similar to a resource pack or data pack, in that it has a file with some metadata about the style (the name, a description, optionally a link to an image, etc.), and a folder structure with the actual files.

Stylepacks live in the blueprints folder, within your Minecraft folder. This folder already contains one style pack: One with your player's name. This style pack will contain your scanned files, and can be used to test schematics. In order to make a new style, you need to make a new schematic pack.

The pack.json

This json file contains metadata describing the style:

Key NameTypeDescription
"version"numberPack version, start at 1, increase it whenever you make a new version of the pack
"pack-format"numberDescriptor for the pack format, needs to be 1 at the moment
"desc"stringDescription of the style. This will be visible in the build tool to explain what your style is about
"authors"array of stringsNames of the authors, in order to credit them. This is visible in the build tool
"mods"array of stringsNames of used mods (ids). The style is not visible if one of those mods is not installed, to prevent broken schematics
"name"stringThe name of the style pack
"icon"stringThe name of the file with an icon which is showed in the style packs selection screen

You have to increase the version number whenever you release your pack for others to use, or whenever you install a new version onto a server. You don't need to increase it when testing changes purely in single-player.

The folder structure

There are several folders, separating the buildings and decorations in categories.
Each of the folders at the highest level can have a couple of icons, named icon.png and icon_disabled.png. Those are shown in the button bar right above the hot bar.

You can download a template folder structure from githubopen in new window (template.zip), which contains the icons used for the official styles already.
That github page also contains examples how different styles are structured.
An overview with which buildings go into which folders can also be found hereopen in new window.

With a few specific exceptions, you don't have to strictly follow the standard folder structure -- but it's recommended to stick to it when possible to make it easier for others to find specific buildings and decorations. But you're free to make extra folders to help group separate but related sets together, especially if you don't want them to appear directly as alternate buildings. E.g. if you have two styles of roads, one for early game and one for later game, you could put them in infrastructure/roads/simple/ and infrastructure/roads/nice/.

Note: It's strongly recommended to have each folder only contain files or subfolders, but not both. While it is possible to mix them, the build tool doesn't display it as nicely.
{% endversion %}

FAQ

This is a FAQ section to answer common questions regarding schematics in MineColonies.

How do I install custom schematics I just downloaded?

{% version "1.18.2" before=true %}
Those custom schematics go in */structurize/schematics. Unzip the zip you downloaded, and put all subfolders in the schematics folder. That folder should contain folders like <stylename>, decorations, walls, supplycamps etc. (depending on which style you installed)
{% endversion %}

{% version "1.19" after=true %}
The style pack goes in the "blueprints" folder. Unzip the zip, and find the folder containing the pack.json (either the unzipped folder, or a folder directly in it, depending on how the zip was made). This folder needs to be placed in */blueprints directly, not any subfolder thereof.
{% endversion %}

What and where is the scans folder?

The scans folder is where the schematics are saved after performing a scan using the scan tool in MineColonies.
{% version "1.18.2" before=true %}
This is a client-side-only directory which is located in Minecraft's folder under: */structurize/scans/. Freshly scanned schematics can be found in */structurize/scans/new/ unless they have been renamed in-game. (If they aren't there, look in */minecolonies/scans/new.) This directory is shared between all your singleplayer games and multiplayer games.
{% endversion %}

{% version "1.19" after=true %}
This is located in your own style pack in Minecraft's folder under: */blueprints/<yourplayername>/scans/. This folder is shared between all your singleylayer and multiplayer games.
{% endversion %}

Where is the schematic folder?

{% version "1.18.2" before=true %}
Custom schematics need to be copied inside the schematic folder. For both singleplayer and multiplayer games, the folder is under */structurize/schematics/.
{% endversion %}

{% version "1.19" after=true %}
Custom schematics need to be placed in a (custom) style pack. For more information about that, look there.
{% endversion %}

I have a "*/minecolonies/01e6a291-8a01-4763-bcae-f3a8797b1d52/cache/" folder, what is that for?

{% version "1.18.2" before=true %}
When playing on a server, the server needs to send the schematics to the players so that the build tool's preview works. Those schematics are saved in Minecraft's directory under */structurize/{ServerUUID}/cache/, where ServerUUID is the unique identifier of the server. Those directories can be safely removed as they are automatically created by the server when needed.
{% endversion %}

{% version "1.19.2" after=true %}
This was previously used to save schematics from a server and was automatically created as needed. However, this is no longer needed in 1.19.2 and later, so this folder can be removed safely.
{% endversion %}

{% version "1.19.2" after=true %}

I have a "/blueprints/clients/" folder, what is that for?

On a server, this folder holds a cached copy of the decorations and shapes used by your players -- possibly even including entire style packs that they've installed themselves (though note that for game balance purposes they won't be able to make functional buildings this way; these must be installed "properly" on the server to be usable).

You can delete these folders at any time (though preferably when the player is not logged in); they will be re-created as needed.
{% endversion %}

Can I just build my own buildings and then get the colonists to "move in"?

No. Functional buildings must be constructed by the Builder. You have to either use one of the prefabs provided by existing style packs (either included in the mod or via various addons installed separately), or design your own custom huts as an explicitly separate step (typically in a special creative designing world), before getting the builder to place them in your real colony. MineColonies is more like an RTS than it is like classic Minecraft building.

How to create custom huts?

To create new schematics, there are some guidelines that you must follow: the scans MUST have the same footprint for each level of the hut; the scans must contain the hut's block, for example the Builder's Hut block for the {% building_link builder %}; the hut block need to be exactly at the same place and have the same rotation for each level.

Ensure you are building your custom hut outside of any colony borders. When placing the hut block inside the custom hut, shift+right click to place it without activating it. Then you can scan and save the schematic.

{% version "1.18.2" before=true %}
The scans' filenames need to follow the naming convention: {StyleName}/{HutName}{HutLevel}.blueprint. For example, for the Builder's Huts with the MyOwn style, we would have:

myown/builder1.blueprint
myown/builder2.blueprint
myown/builder3.blueprint
myown/builder4.blueprint
myown/builder5.blueprint

  • Note: In the build tool, the extension is hidden. HutName can be any of the listed huts below. The maximum level is 5 (except for the Tavern; its max level is 3).

Alternative designs can be placed under a style name like "myownalternative", or a subfolder like myown/alt/*.
{% endversion %}

Once ready, move the myown folder into the blueprints folder and start your game. You should be able to see it with the the build tool.

Note: Remember that you need the appropriate hut in your inventory to be able to see the schematics in the build tool.

{% version "1.19" after=true %}
The naming for the buildings is not strict anymore. The only things that are important are that they are named consistently, that their names end with the hut level, and that you only use lowercase letters in the hut names (avoid capitals, spaces, or other punctuation).
Alternate designs can just have a different name than the primary one. E.g. if you named the level 1 builder's hut "builder1", an alternative version could be called "altbuilder1" or "builderalt1" or even something completely different ("constructionworker1").
Don't use numbers anywhere in the name except right at the end for the level. E.g. "alt1builder1" won't work as expected.

Once ready, you need to make a style pack out of them.
The schematics are visible in the build tool without the hut block, but you can't view them in survival mode (their button is greyed out, with an error message that you need to have the hut block).
{% endversion %}

[1.18] Custom Hut Filenames

Here is a full list, up-to-date as of 14 October 2022, of the building names. Please note do not use capital letters in hut names.

Level 1Level 2Level 3Level 4Level 5
archery1archery2archery3archery4archery5
alchemist1alchemist2alchemist3alchemist4alchemist5
baker1baker2baker3baker4baker5
barracks1barracks2barracks3barracks4barracks5
barrackstower1barrackstower2barrackstower3barrackstower4barrackstower5
beekeeper1beekeeper2beekeeper3beekeeper4beekeeper5
blacksmith1blacksmith2blacksmith3blacksmith4blacksmith5
builder1builder2builder3builder4builder5
chickenherder1chickenherder2chickenherder3chickenherder4chickenherder5
citizen1citizen2citizen3citizen4citizen5
combatacademy1combatacademy2combatacademy3combatacademy4combatacademy5
composter1composter2composter3composter4composter5
concretemixer1concretemixer2concretemixer3concretemixer4concretemixer5
cook1cook2cook3cook4cook5
cowboy1cowboy2cowboy3cowboy4cowboy5
crusher1crusher2crusher3crusher4crusher5
deliveryman1deliveryman2deliveryman3deliveryman4deliveryman5
dyer1dyer2dyer3dyer4dyer5
enchanter1enchanter2enchanter3enchanter4enchanter5
farmer1farmer2farmer3farmer4farmer5
fisherman1fisherman2fisherman3fisherman4fisherman5
fletcher1fletcher2fletcher3fletcher4fletcher5
florist1florist2florist3florist4florist5
glassblower1glassblower2glassblower3glassblower4glassblower5
graveyard1graveyard2graveyard3graveyard4graveyard5
guardtower1guardtower2guardtower3guardtower4guardtower5
hospital1hospital2hospital3hospital4hospital5
library1library2library3library4library5
lumberjack1lumberjack2lumberjack3lumberjack4lumberjack5
mechanic1mechanic2mechanic3mechanic4mechanic5
miner1miner2miner3miner4miner5
mysticalsite1mysticalsite2mysticalsite3mysticalsite4mysticalsite5
netherworker1netherworker2netherworker3netherworker4netherworker5
plantation1plantation2plantation3plantation4plantation5
rabbithutch1rabbithutch2rabbithutch3rabbithutch4rabbithutch5
sawmill1sawmill2sawmill3sawmill4sawmill5
school1school2school3school4school5
shepherd1shepherd2shepherd3shepherd4shepherd5
sifter1sifter2sifter3sifter4sifter5
smeltery1smeltery2smeltery3smeltery4smeltery5
stonemason1stonemason2stonemason3stonemason4stonemason5
stonesmeltery1stonesmeltery2stonesmeltery3stonesmeltery4stonesmeltery5
swineherder1swineherder2swineherder3swineherder4swineherder5
tavern1tavern2tavern3N/AN/A
townhall1townhall2townhall3townhall4townhall5
university1university2university3university4university5
warehouse1warehouse2warehouse3warehouse4warehouse5

Custom Supply Ships and Camps

The process for custom supply ships and camps is slightly different:

{% version "1.18.2" before=true %}

Camp or ShipFile Name and Path
Campstructurize/schematics/supplycamp/myownsupplycamp
Shipstructurize/schematics/supplyship/myownsupplyship

So, for example, the path would be structurize/schematics/wildwest/builder1 for the Builder's Hut level 1 and structurize/schematics/supplycamp/wildwestsupplycamp for the supply camp.
{% endversion %}

{% version "1.19" after=true %}

Camp or ShipFile Name and Path
Campblueprints/<myownstyle>/decorations/supplies/supplycamp
Shipblueprints/<myownstyle>/decorations/supplies/supplyship
Nether Shipblueprints/<myownstyle>/decorations/supplies/nethership

So, for example, the path would be blueprints/wildwest/fundamentals/builder1 for the Builder's Hut level 1 and blueprints/wildwest/decorations/supplies/supplycamp for the supply camp.
{% endversion %}

You should always apply a groundlevel tag when making a supply camp/ship. The rules for guessing where the ground level is without the tag change depending whether they're placed by the build tool or the supply item, for legacy reasons.

Hut Requirements

BuildingRequirementsSuggested
{% building_link archery %}1 archery dummy (a hay bale with a button on it); 1 bed per levelat least 1 standing position per level (a glowstone block, or any block tagged with work)
{% building_link alchemist %}1 brewing stand per level; 2 soul sand per level starting at level 2 (with 4 soul sand); leaves next to logs, i.e. "trees"
{% building_link bakery %}1 furnace
{% building_link barracks %}1 Barracks Tower per level (up to level 4)
{% building_link barrackstower %}1 bed per level
{% building_link builder %}1 rack per level
{% building_link combatacademy %}1 combat dummy per level (a pumpkin on top of a bale of hay); 1 bed per level
{% building_link composter %}1 compost barrel per level
{% building_link concretemixer %}3 blocks of flowing water with solid blocks below and air blocks above
{% building_link dyer %}1 furnace
{% building_link fisher %}Hut block placed on a block at water levelAt least 6x5x1 unobstructed body of water if integrating fishing location in the schematic
{% building_link flowershop %}4 compost blocks per level
{% building_link glassblower %}1 furnace per level
{% building_link graveyard %}Named Graves, with the amount increasing per level14 named graves at level 1, 18 named graves at level 2, 27 named graves at level 3, 36 named graves at level 4, 50 named graves at level 5
{% building_link guardtower %}1 bed for aesthetics
{% building_link hospital %}1 bed per level
{% building_link house %}1 bed per level
{% building_link library %}Bookshelves
{% building_link mine %}A few starting ladders where the shaft's ladders will go with the tags [cobble] and [ladder]
{% building_link nethermine %}A nether portal, and an enclosed 1x1x2 room
{% building_link plantation %}12 per level, 4 for each of sugar cane, cactus and bamboo
{% building_link restaurant %}1 furnace per level
{% building_link school %}2 carpets per level4 carpets per level
{% building_link smeltery %}1 furnace per level
{% building_link stonesmeltery %}1 furnace per level
{% building_link tavern %}4 beds and a dining roomHorizontal barrels and/or vertical barrels
{% building_link university %}Bookshelves
{% building_link warehouse %}Racks (more each level)

Some buildings may also require tags to be set on certain blocks using the tag tool.

Level Requirements for Overworld Styles

LevelRequirements
Level 1Very Easy - Wooden
Level 2Easy - Iron
Level 3Medium - Nether
Level 4Difficult - Ocean
Level 5Very Difficult - End

Level Requirements for Nether Styles

LevelRequirements
Level 1Very Easy - Nether
Level 2Easy - Rarer Nether
Level 3Medium - Overworld
Level 4Difficult - Ocean
Level 5Very Difficult - End

{% version "1.19.2" after=true %}

Plantation Fields

In 1.19.2 and beyond, the plantation has been changed to include fields, just like the {% worker_link farmer %}. However, unlike the {% worker_link farmer %}, these fields can be completely free-form and created by the style designers. Each field has certain requirements for the {% worker_link planter %} to do their work successfully.

Each plant has 2 separate tags: a field tag and a work tag.
The field tags are given to the plantation field block to define what plants this field handles. The work tag is given based on the implementation of the field.

A field can have as many field tags as you want, but not 2 of the same.

PlantField tagWork tagMaximum work tags
Sugar canesugar_fieldsugar20
Cactuscactus_fieldcactus20
Bamboobamboo_fieldbamboo20
Cocoacocoa_fieldcocoa5 (totalling 20 positions; details below)
Vinevine_fieldvine20
Kelpkelp_fieldkelp20
Seagrassseagrass_fieldseagrass121 (11 x 11 area)
Sea Picklesseapickle_fieldseapickle10
Glow Berriesglowb_fieldglowb_vine20
Weeping Vinesweepv_fieldweepv_vine20
Twisting Vinestwistv_fieldtwistv_vine20
Crimson Plantscrimsonp_fieldcrimsonp_ground121 (11 x 11 area)
Warped Plantswarpedp_fieldwarpedp_ground121 (11 x 11 area)

The {% worker_link planter %} will always attempt to walk to any adjacent air block around the planting position. If none of the adjacent positions are air, the planter will attempt to walk to the block itself. This prevents the {% worker_link planter %} from standing on the block itself whilst, for example, placing a block down like cactus, after which the {% worker_link planter %} would be standing inside of the plant.
Note: Make sure that the {% worker_link planter %} can always get within about 4 blocks of the desired position. If not, they will teleport around to reach the position, which may not always work.

X
XPX
X

X = walking position

P = planting position

Note: Kelp is an exception to this behaviour. To prevent planters from diving into the water, the planter will walk to the first air block above the work tagged block and look up 26 blocks from the work tagged block. If this is not possible, they will not be able to harvest this plant, so ensure there is air above the water above the work tagged block.

Kelp field movement explanation

  • The red X is the position where the planter will walk to in the example image.
  • The blue X is the position where the work tag of the block is.

For downwards-growing plants, the planter will attempt to stand above the work tagged block and harvest below them. Make sure the planter can reach the top of the stem.

Vertically Growing Plants (Upwards and Downwards)

A "vertically growing plant" is a plant that grows in a single line, either upwards or downwards; for example, Sugar Cane is a vertically growing plant that grows upwards. These plants always break fully when their root blocks are broken. The planter will break these at the second block from the root.

Each of these plants have a minimum and sometimes a maximum growth height.
The planter can only harvest them when they reach the minimum. If plants have a maximum height, the planter will have an increasingly higher chance to harvest the plant the taller it gets. Plants are only required to grow to the minimum height within the bounds of the schematic.

PlantMinimum heightMaximum height
Sugar cane3N/A
Cactus3N/A
Bamboo616
Kelp225
Glowberries3N/A
Weeping vines225
Twisting vines225

Treeside Plants

Treeside plants grow directly on the sides of trees. For these plants, you only need to tag the tree's stem; the working positions will automatically be set to every horizontally adjacent block of the tagged stem. Currently this is only used for Cocoa beans.

Note that this means that the amount of tags you can actually place is the amount of working positions divided by 4!

Bonemealed Fields

Bonemealed fields will tell the planter to use bonemeal somewhere on the ground to grow plants as if the player had used bonemeal.

The amount of planting positions on these fields are usually unlimited because bonemealing the ground has a set area of effect. However, it is suggested not to make the fields too big; an area around 7x7 is lightly suggested.

Every bonemealed plant works slightly differently.

PlantWork tag location
SeagrassThe block directly below the water should tagged; the planter will bonemeal the tagged block itself. Red Xs are where the planter will attempt to walk. Blue Xs are the blocks that are tagged with the work tag.Seagrass explanation
Sea picklesThe block directly below the water should tagged. The planter will initially place the pickles, then bonemeal the pickles to let them grow. Red Xs are where the planter will attempt to walk. Blue Xs are the blocks that are tagged with the work tag.Sea Pickle explanation
Crimson plantsTag all the nylium ground blocks where the plants are supposed to grow.
Warped plantsTag all the nylium ground blocks where the plants are supposed to grow.

Percentage-based Harvesting

Percentage based harvesting fields will attempt to place a minimum percentage of plants down on given spots. These plants — such as vines — should then naturally spread to their surroundings without the player's help. The planter has no involvement in this process.

PlantTag location
VineTag all the positions where the vines themselves can spread to, NOT the blocks where the vines are attached to.

{% endversion %}

Tips on Building

Do

  • Make all levels of a hut have the same footprint for x, y, and z
  • Place the hut block in the same location with the same rotation
  • Make sure all racks and furnaces are in the same location through all levels (to prevent the contents spilling out when they're getting moved)
  • Use placeholders where you want to keep any existing block (including from level to level), like the Barracks Towers in the Barracks schematic
  • Use solid placeholders at or below ground level
  • Place a groundlevel tag at ground level if your hut isn't sitting directly on the ground.
  • Use only vanilla blocks or Structurize blocks (for official styles)
  • Use Books and Quills instead of blank books, or written books on a lectern. (Keep a copy of the original book and quill somewhere, if it turns out you made a mistake!)

Don't

  • Use unobtainable items in builds (no command blocks, petrified wood, infested blocks, or mob heads (including player heads))
  • Change someone else's style (officially) unless specifically asked to do so
  • Rename schematics after scanning

Additional Information

How to override some built-in schematics?

{% version "1.18.2" before=true %}
Simply create a schematic file with the same style/name. For instance, to override the {% building_link builder %} wooden level 1, create a schematic file name called wooden/builder1.blueprint.
{% endversion %}

{% version "1.19" after=true %}
Unfortunately, this is not possible, unless you override the entire style (make a style pack with the same name as an existing style pack, in that case).
{% endversion %}

How to use custom huts?

{% version "1.18.2" before=true %}
The custom huts need to be copied in the schematics folder.
{% endversion %}

{% version "1.19" after=true %}
The custom huts need to be copied into a style pack.
{% endversion %}

Once copied, you can start your singleplayer or multiplayer game as usual. You should see them in the build tool (if you have the hut block in your inventory).

How to allow my players to use their own huts' schematics on my server?

You will have to copy them yourself in the blueprints folder on the server and restart it.

How to allow my players to use their scanned decoration schematics on my server?

Edit the Structurize configuration file at minecraft/config/structurize-common.toml and set allowPlayerSchematics to true. This allows the player to use their own decorations. It is not possible for the player to use their own huts' schematics. You can also limit the number of players' schematics at any given time by editing maxCachedSchematics (default is 100). When the limit is reached, the server will start deleting unused schematics.

How to disable built-in schematics completely?

Edit the Structurize configuration file at minecraft/config/structurize-common.toml and set ignoreSchematicsFromJar to true. Be aware: things will break if some huts' schematics are missing.

How to create upgradable decoration schematics?

{% version "1.18.2" before=true %}
Add the deco controller somewhere in the schematic with the name of the schematic, where you'll put it in the file directory, and its level. Make sure to actually put the decoration in that file path, but only after scanning - don't include the path in the scan name.
{% endversion %}

{% version "1.19" after=true %}
Put the deco controller somewhere in the schematic, and make sure the name of the schematic ends with a number while scanning. The decoration controller will automatically find the decoration in the same folder with the next number.
{% endversion %}

Upgradable Decos

How to use custom mineshafts in style packs?

The size must be 9 x 4 x 9 blocks. They must be named and oriented exactly the same (i.e. do not rotate at all) as in the default style pack (careful: the names aren't entirely consistent with the layout, so make careful note which is which!) Use an existing style pack as a template along with the scan tool to create the blueprints.

{% version "1.18.2" before=true %}
The custom mineshafts need to be at schematics/yourstyle/miner/*.
{% endversion %}

{% version "1.19" after=true %}
The custom mineshafts need to be at `blueprints/yourstyle/infrastructure/mineshafts/*.

It's recommended that you use the tag tool and Tag Anchor to make the mineshafts invisible. Take care that the anchor is in the same position as in the original mineshafts -- the very center bottom block.
{% endversion %}

How to make custom quarries in style packs?

The {% building_link quarry %} is split into a "top part" and a "bottom part". Both parts only have one level each.

The top part is constructed by the Builder and is the part outside of the quarry pit -- decorative walls, fences, cranes, racks, etc. This contains the actual quarry hut block itself, which should pretty much always be on the second y level up from the bottom (i.e. the bottom layer is the ground level, then the hut is on the next layer up), although with some caveats this is not absolutely required.

The bottom part is constructed by the Quarrier and is the actual quarry pit itself, consisting mostly of placeholders, air blocks, and decorative elements. While you can also set the anchor manually, it's recommended to use a Tag Anchor. The anchor should normally be at the very top layer, although with some caveats it can be elsewhere.

{% version "1.18.2" before=true %}
The top parts must be named simplequarry1 and mediumquarry1, and the corresponding bottom parts are simplequarryshaft1 and mediumquarryshaft1.
{% endversion %}

{% version "1.19" after=true %}
The top part can be in any folder and name that you like (and you can have more than one alternate), but the canonical names are infrastructure/mineshafts/simplequarry1 and infrastructure/mineshafts/mediumquarry1. (For reasons, it's currently best to avoid using different names.)

The bottom part can only be infrastructure/mineshafts/simplequarryshaft1 and infrastructure/mineshafts/mediumquarryshaft1, regardless of what or where the top part was. As such, you can only make one of each per style pack.
{% endversion %}

Importantly: when built, the two schematics are aligned such that the anchor of the bottom part is exactly two blocks below the anchor of the top part. You should carefully align them when designing.

It is permitted for the quarry to be a slightly different size from the default versions, but it's strongly encouraged (for game balance reasons) to make each one approximately the same size as the originals, and in particular to have the same amount of air blocks in the bottom part, since this affects the final yield of cobble or other stone.

How to create parent/child buildings or decorations?

The Barracks and Barracks Tower always have a parent/child relationship (i.e. the towers are embedded within the barracks, not directly built separately with the build tool). It's also possible to do the same with other buildings -- either putting one or more buildings into a containing decoration (e.g. a "district" of related buildings) or even embedding buildings within other buildings.

Some popular combinations are to embed couriers within the warehouse, and fields within the farmer. Others combinations are possible, depending on your goals for the style -- but don't go too overboard! Some players like combination buildings since they fit nicely together, but others don't like them since they can take away flexibility and creativity when building a colony.

When designing parent/child schematics, the key is the light placeholder. The parent schematic needs to contain the child hut block in the correct position and rotation, along with light placeholders wherever there should be a block from the child, and the parent's own blocks. Similarly, the child schematic needs its own hut block and other blocks, and light placeholders wherever there should be a block from the parent. It can be helpful to make a temporary scan of either the parent or child and overlay them over the other to help line things up, or to build both together and then duplicate it and split apart the designs.

While strictly speaking it's only mandatory to include the child hut at the level that it's introduced into the parent and you could put only a placeholder at higher levels, it's strongly recommended to always include the child hut in every higher level of the parent. This works better when someone moves or repairs the parent, or skips levels and pastes it directly at a higher level.

Also remember that the child building can't be upgraded to a higher level than the parent building. This limit doesn't apply if the parent is a non-upgradeable decoration.

Be careful of "research loops" -- if the player needs to build a child before they can unlock a parent, that's a problem (unless you also have an alternate standalone of the child).

Since the parent will contain multiple hut blocks, you will always need to explicitly specify the anchor block (the main parent hut block if a building, or a deco controller or tag anchor if it's a decoration) when you scan, otherwise you'll get an error that the anchor was ambiguous and it will not work correctly.

{% version "1.18.2" before=true %}
Since you can only have one version of each building in each folder, combinations should be used very sparingly. The parent and child need to be in the same folder.

To place the child hut in the parent, you can simply shift-click it, just like when placing it in the child itself. Be sure to get the location and rotation correct -- the child hut will be built with the matching orientation relative to that.
{% endversion %}

{% version "1.19" after=true %}
The parent and child need to be in the same folder. This doesn't mean that you can't combine buildings that are normally in different folders -- just that the version that's intended to be the child must be in the same folder as the parent. You may still have another version of the child (to be used by itself, not as a child) in the original folder if you like.

It's not supported to have a child contain additional children of its own -- you're limited to just the two layers (though the parent can contain multiple children of either the same or different types).

Regardless of which method you use to build, be sure to get the location and rotation of the child hut correct when placing it in the parent -- the building will be built with the matching orientation relative to that.

If you've used the default folder and filenames for your child, then you can simply shift-click the child hut to place it into the parent, similar to older versions. However this is not the most recommended way to do things any more.

The preferred method is to make another level of your child containing only the hut block, giving it the same folder and name as your actual child, but level 0 (e.g. craftsmanship/storage/mycourier0). You can make it the same size as your real child (surrounded by placeholders) if you wish, but scanning a 1x1x1 is fine too. After scanning, you need to move this to its final location in your actual style pack, and then paste it from there (not from your scans!) into your parent. It doesn't matter whether you use schematic or constructed paste. Paste the same level 0 into all levels of the parent. After it's pasted, you can delete the level 0 blueprint -- it should not be included in your final released style pack. (Note that when you go to paste it, the build tool labels it as "level 1" of 6. You can confirm you have the right one by checking the tooltip name.)

Another option is called "auto-levelling". This is where instead of making and pasting a level 0 into each level of the parent, you instead paste the actual matching child level (i.e. level 1 child in the level 1 parent, level 2 child in the level 2 parent, etc). Again it doesn't matter whether you use schematic or constructed paste, but either way you'll probably have to fix up some of the overlapping blocks afterward. You do still need to include the child hut's blueprints in your released style pack, and you do still have to paste it from your actual style pack and not your scans folder.

With auto-levelling, the builder will upgrade the child at the same time as upgrading the parent, instead of the player needing to explicitly build or upgrade one after the other. While this may sound simpler, there are some downsides: the biggest is that won't work well for child buildings that have required functional blocks (such as beds, furnaces, racks, etc), although purely decorative ones are fine. You also should not use this where the child is locked behind research, unless you can be absolutely certain that it's already unlocked (e.g. if the parent is unlocked after the child -- though still be careful of loops). The "level 0" method doesn't have these issues.

Since you can have multiple alternates of buildings (in the same or separate folders), it's possible to make a particular building type have both a standalone version as well as a version embedded as a child. It's strongly recommended to use the tag tool to mark any blueprint intended for use only as a child (in the child schematic itself) as invisible so that it doesn't show up for building standalone -- especially as child versions are often simpler or cheaper and may be missing walls or other things intended to be provided by the parent, so won't look good on their own or might break game balance. It's also possible to have each child of a parent be its own unique blueprint -- but that requires even more scans and more care when pasting to use the right alternate.
{% endversion %}

What if I have another question?

There's a channel in the Discord serveropen in new window specifically for asking questions about designing your own schematics.

上次编辑于:
贡献者: ddaodan
+ diff --git a/Tutorials/worldgencolonies.html b/Tutorials/worldgencolonies.html index eb6697c..b6ce2ae 100644 --- a/Tutorials/worldgencolonies.html +++ b/Tutorials/worldgencolonies.html @@ -28,13 +28,13 @@ document.documentElement.setAttribute("data-theme", "dark"); } - 世界生成 | 模拟殖民地 中文Wiki - - - + 世界生成 | 模拟殖民地 中文Wiki + + + -
跳至主要內容

世界生成

约 1050 字大约 4 分钟

World Generation Colonies

As you explore the world, you'll notice that there are some colonies abandoned by the former residents. Moving into one of these abandoned colonies is a way to quickstart your own colony!

(Note: This feature is only available in 1.18+. Vanilla villages will still spawn as normal. If you wish to turn off this feature, you can do so in the configuration options for your world.)

Getting Started

To find a world generation colony... just start exploring! They spawn randomly at a low chance in the world in one of several styles. Currently, only a subset of official style colonies can spawn naturally in the world, but more will be added in the future!

Only a subset of possible buildings can generate in a world generation colony, and most will be level 1, though some buildings might be level 2. Sometimes, multiple of the same type of building can spawn, too!

First, find the town hall and click "Create new colony." This is equivalent to you placing a town hall down from the supply camp.

From there, go to each hut block in the found (and now, founded) colony and click "Reactivate" to reclaim the building and add it to the town hall.

Additionally, you can repair each building to make your new colony look like new.

That's it! You've claimed a colony in the world, and now you can start building your new colony!

Creating Your Own World Generation Colonies Style

First, you need to design and build your own schematic. Once you've built your style, you can add jigsaw block connectors at appropriate places and export the structure as a .nbt file. That way, Minecraft knows how to build an abandoned colony in your style!

Tagging and Prepping

The most important thing to ensure that colonies register as abandoned — and can be restored — is to use the tag tool to tag the hut block appropriately.

  1. Tag the hut block with its style name (e.g., "medieval_oak" for the Medieval Oak style). The name must match the style's folder name in the MineColonies.jar file or resource pack.
  2. Add the tag "abandoned" to the hut block. If you right-click the building with an empty hand, it should now say that the building is abandoned and tell you to seek out the town hall.

Adding Jigsaw Blocks

Place jigsaw blocks where a structure would naturally connect to a road or — if creating a road — where it would connect to a structure. Make sure the block is placed at the edge of the structure facing toward a connecting block.

When editing a jigsaw block, there are a few different properties that can be set.

  • name: the name of this jigsaw block. The name can be unique or generic. For the styles in MineColonies, all buildings have the name "minecolonies:building_entrance" and all roads "minecolonies:street". Some styles will also use "minecolonies:field"; this one is used exclusively to connect a field to a farmer building when the farmer building does not a field as part of the level 1 structure.
  • target: When a structure is placed, the target of its jigsaw block determines the next jigsaw block that is added. The target of a placed structure must match the name of the next one to be placed.
  • pool: To restrict the list of applicable structures, use the target pool. MineColonies uses three dedicated pools for each colony style: "<stylename>/roads", "<stylename>/buildings", and "<stylename>/terminators".

Edit the jigsaw block to set the following properties.
(Note that the following is an example using the Medieval Oak style. Replace "medieval_oak" with your style's name.)

  • Buildings
    • name: "minecolonies:building_entrance"
    • pool: "minecolonies:medieval_oak/roads"
    • target: "minecolonies:building_entrance"
    • turns into: "minecraft:structure_void"
  • Roads (Connecting to buildings)
    • name: "minecolonies:street"
    • pool: "minecolonies:medieval_oak/buildings"
    • target: "minecolonies:building_entrance"
    • turns into: "minecraft:structure_void"
  • Roads (Connecting to roads)
    • name: "minecolonies:street"
    • pool: "minecolonies:medieval_oak/roads"
    • target: "minecolonies:street"
    • turns into: "minecraft:structure_void"
  • Terminators (to end roads more decoratively and as fallback structures for roads and buildings)
    • name: "minecolonies:street"
    • turns into: "minecraft:structure_void"

Processors

Processors are used to alter a structure's blocks during placement. Specifically for MineColonies, we use different processors depending on the structure that is placed.

There are three processor files for each style.

street.json

Road processors are defined in "<stylename>/street.json". The main purpose of this processor is to replace porous materials like dirt, dirt paths, and gravel with wooden planks when the road is in water. This will also add minor decay in the form of grass blocks instead of dirt paths.

decoration.json

Park processors are defined in "<stylename>/decoration.json". This processor adds decay to the parks by turning some stone brick into weathered variants like mossy or cracked stone bricks or replaces some dirt blocks with coarse dirt.

placeholder_replacement.json

Building processors are defined in "<stylename>/placeholder_replacement.json". Similar to how zombie villages decay, this processor removes various building blocks or replaces them with cobweb. Which blocks and how often depends on the given style. In addition to decay, the placeholder replacement is also responsible for converting the Structurize placeholder blocks into suitable in-game similar to how a builder treats these blocks when constructing a building.

  • "structurize:blocksolidsubstitution" turns into dirt, which may be converted to another block by a processor defined later in the same file.
  • "structurize:blocksubstitution" is ignored, meaning that existing blocks in the world will remain in place when the structure generates.

Decay Example

The rule below replaces oak logs with cobwebs at a 4% probability. That probability may be fine for one style but be too high or too low for another style.

{ "output_state": { "Name": "minecraft:cobweb" }, "input_predicate": { "block": "minecraft:oak_log", "probability": 0.04, "predicate_type": "minecraft:random_block_match" }, "location_predicate": { "predicate_type": "minecraft:always_true" } },

上次编辑于:
贡献者: ddaodan
- +
跳至主要內容

世界生成

约 1050 字大约 4 分钟

World Generation Colonies

As you explore the world, you'll notice that there are some colonies abandoned by the former residents. Moving into one of these abandoned colonies is a way to quickstart your own colony!

(Note: This feature is only available in 1.18+. Vanilla villages will still spawn as normal. If you wish to turn off this feature, you can do so in the configuration options for your world.)

Getting Started

To find a world generation colony... just start exploring! They spawn randomly at a low chance in the world in one of several styles. Currently, only a subset of official style colonies can spawn naturally in the world, but more will be added in the future!

Only a subset of possible buildings can generate in a world generation colony, and most will be level 1, though some buildings might be level 2. Sometimes, multiple of the same type of building can spawn, too!

First, find the town hall and click "Create new colony." This is equivalent to you placing a town hall down from the supply camp.

From there, go to each hut block in the found (and now, founded) colony and click "Reactivate" to reclaim the building and add it to the town hall.

Additionally, you can repair each building to make your new colony look like new.

That's it! You've claimed a colony in the world, and now you can start building your new colony!

Creating Your Own World Generation Colonies Style

First, you need to design and build your own schematic. Once you've built your style, you can add jigsaw block connectors at appropriate places and export the structure as a .nbt file. That way, Minecraft knows how to build an abandoned colony in your style!

Tagging and Prepping

The most important thing to ensure that colonies register as abandoned — and can be restored — is to use the tag tool to tag the hut block appropriately.

  1. Tag the hut block with its style name (e.g., "medieval_oak" for the Medieval Oak style). The name must match the style's folder name in the MineColonies.jar file or resource pack.
  2. Add the tag "abandoned" to the hut block. If you right-click the building with an empty hand, it should now say that the building is abandoned and tell you to seek out the town hall.

Adding Jigsaw Blocks

Place jigsaw blocks where a structure would naturally connect to a road or — if creating a road — where it would connect to a structure. Make sure the block is placed at the edge of the structure facing toward a connecting block.

When editing a jigsaw block, there are a few different properties that can be set.

  • name: the name of this jigsaw block. The name can be unique or generic. For the styles in MineColonies, all buildings have the name "minecolonies:building_entrance" and all roads "minecolonies:street". Some styles will also use "minecolonies:field"; this one is used exclusively to connect a field to a farmer building when the farmer building does not a field as part of the level 1 structure.
  • target: When a structure is placed, the target of its jigsaw block determines the next jigsaw block that is added. The target of a placed structure must match the name of the next one to be placed.
  • pool: To restrict the list of applicable structures, use the target pool. MineColonies uses three dedicated pools for each colony style: "<stylename>/roads", "<stylename>/buildings", and "<stylename>/terminators".

Edit the jigsaw block to set the following properties.
(Note that the following is an example using the Medieval Oak style. Replace "medieval_oak" with your style's name.)

  • Buildings
    • name: "minecolonies:building_entrance"
    • pool: "minecolonies:medieval_oak/roads"
    • target: "minecolonies:building_entrance"
    • turns into: "minecraft:structure_void"
  • Roads (Connecting to buildings)
    • name: "minecolonies:street"
    • pool: "minecolonies:medieval_oak/buildings"
    • target: "minecolonies:building_entrance"
    • turns into: "minecraft:structure_void"
  • Roads (Connecting to roads)
    • name: "minecolonies:street"
    • pool: "minecolonies:medieval_oak/roads"
    • target: "minecolonies:street"
    • turns into: "minecraft:structure_void"
  • Terminators (to end roads more decoratively and as fallback structures for roads and buildings)
    • name: "minecolonies:street"
    • turns into: "minecraft:structure_void"

Processors

Processors are used to alter a structure's blocks during placement. Specifically for MineColonies, we use different processors depending on the structure that is placed.

There are three processor files for each style.

street.json

Road processors are defined in "<stylename>/street.json". The main purpose of this processor is to replace porous materials like dirt, dirt paths, and gravel with wooden planks when the road is in water. This will also add minor decay in the form of grass blocks instead of dirt paths.

decoration.json

Park processors are defined in "<stylename>/decoration.json". This processor adds decay to the parks by turning some stone brick into weathered variants like mossy or cracked stone bricks or replaces some dirt blocks with coarse dirt.

placeholder_replacement.json

Building processors are defined in "<stylename>/placeholder_replacement.json". Similar to how zombie villages decay, this processor removes various building blocks or replaces them with cobweb. Which blocks and how often depends on the given style. In addition to decay, the placeholder replacement is also responsible for converting the Structurize placeholder blocks into suitable in-game similar to how a builder treats these blocks when constructing a building.

  • "structurize:blocksolidsubstitution" turns into dirt, which may be converted to another block by a processor defined later in the same file.
  • "structurize:blocksubstitution" is ignored, meaning that existing blocks in the world will remain in place when the structure generates.

Decay Example

The rule below replaces oak logs with cobwebs at a 4% probability. That probability may be fine for one style but be too high or too low for another style.

{ "output_state": { "Name": "minecraft:cobweb" }, "input_predicate": { "block": "minecraft:oak_log", "probability": 0.04, "predicate_type": "minecraft:random_block_match" }, "location_predicate": { "predicate_type": "minecraft:always_true" } },

上次编辑于:
贡献者: ddaodan
+ diff --git a/assets/404.html-ildXd5bb.js b/assets/404.html-YbRkGhD2.js similarity index 71% rename from assets/404.html-ildXd5bb.js rename to assets/404.html-YbRkGhD2.js index a1a2198..e56e409 100644 --- a/assets/404.html-ildXd5bb.js +++ b/assets/404.html-YbRkGhD2.js @@ -1 +1 @@ -import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-DfwSKz3Q.js";const o={};function r(_,n){return t(),c("div")}const f=e(o,[["render",r],["__file","404.html.vue"]]);export{f as default}; +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-rX80dX-Q.js";const o={};function r(_,n){return t(),c("div")}const f=e(o,[["render",r],["__file","404.html.vue"]]);export{f as default}; diff --git a/assets/SearchResult-0qz_HMF5.js b/assets/SearchResult-IzeXNURa.js similarity index 98% rename from assets/SearchResult-0qz_HMF5.js rename to assets/SearchResult-IzeXNURa.js index 8564f7f..12df38b 100644 --- a/assets/SearchResult-0qz_HMF5.js +++ b/assets/SearchResult-IzeXNURa.js @@ -1 +1 @@ -import{u as U,g as ee,h as j,i as B,J as ae,j as le,t as se,k as x,l as D,m as te,n as J,p as l,q as _,s as F,v as I,x as re,y as ue,z as ie,A as ne,R as oe,O as ce,B as ve,C as pe,D as ye,E as he,F as de,G as me,H as b,I as fe}from"./app-DfwSKz3Q.js";const He="SEARCH_PRO_QUERY_HISTORY",h=U(He,[]),ge=()=>{const{queryHistoryCount:r}=b,n=r>0;return{enabled:n,queryHistory:h,addQueryHistory:t=>{n&&(h.value.length{h.value=[...h.value.slice(0,t),...h.value.slice(t+1)]}}},Qe="SEARCH_PRO_RESULT_HISTORY",{resultHistoryCount:E}=b,d=U(Qe,[]),Re=()=>{const r=j(),n=E>0,t=s=>r.resolve({name:s.key,..."anchor"in s?{hash:`#${s.anchor}`}:{}}).fullPath;return{enabled:n,resultHistory:d,addResultHistory:s=>{if(n){const u={link:t(s),display:s.display};"header"in s&&(u.header=s.header),d.value.length{d.value=[...d.value.slice(0,s),...d.value.slice(s+1)]}}},ke=r=>{const n=oe(),t=B(),{search:s,terminate:u}=ce(),f=x(!1),H=ve([]);return pe(()=>{const m=()=>{H.value=[],f.value=!1},w=fe(g=>{f.value=!0,g?s({type:"search",query:g,locale:t.value,options:n}).then(y=>{H.value=y,f.value=!1}).catch(y=>{console.error(y),m()}):m()},b.searchDelay);J([r,t],()=>w(r.value),{immediate:!0}),ye(()=>{u()})}),{searching:f,results:H}};var we=ee({name:"SearchResult",props:{query:{type:String,required:!0},isFocusing:Boolean},emits:["close","updateQuery"],setup(r,{emit:n}){const t=j(),s=B(),u=ae(le),{enabled:f,addQueryHistory:H,queryHistory:m,removeQueryHistory:w}=ge(),{enabled:g,resultHistory:y,addResultHistory:O,removeResultHistory:M}=Re(),L=f||g,S=se(r,"query"),{results:Q,searching:Y}=ke(S),o=x({isQuery:!0,index:0}),p=x(0),c=x(0),P=D(()=>L&&(m.value.length>0||y.value.length>0)),q=D(()=>Q.value.length>0),C=D(()=>Q.value[p.value]||null),T=e=>t.resolve({name:e.key,..."anchor"in e?{hash:`#${e.anchor}`}:{}}).fullPath,z=()=>{const{isQuery:e,index:a}=o.value;a===0?o.value={isQuery:!e,index:e?y.value.length-1:m.value.length-1}:o.value={isQuery:e,index:a-1}},G=()=>{const{isQuery:e,index:a}=o.value;a===(e?m.value.length-1:y.value.length-1)?o.value={isQuery:!e,index:0}:o.value={isQuery:e,index:a+1}},V=()=>{p.value=p.value>0?p.value-1:Q.value.length-1,c.value=C.value.contents.length-1},K=()=>{p.value=p.value{c.value{c.value>0?c.value=c.value-1:V()},A=e=>e.map(a=>he(a)?a:l(a[0],a[1])),X=e=>{if(e.type==="customField"){const a=de[e.index]||"$content",[i,k=""]=me(a)?a[s.value].split("$content"):a.split("$content");return e.display.map(v=>l("div",A([i,...v,k])))}return e.display.map(a=>l("div",A(a)))},R=()=>{p.value=0,c.value=0,n("updateQuery",""),n("close")};return te("keydown",e=>{if(r.isFocusing){if(q.value){if(e.key==="ArrowUp")W();else if(e.key==="ArrowDown")N();else if(e.key==="Enter"){const a=C.value.contents[c.value],i=T(a);H(r.query),O(a),t.push(i),R()}}else if(g){if(e.key==="ArrowUp")z();else if(e.key==="ArrowDown")G();else if(e.key==="Enter"){const{index:a}=o.value;o.value.isQuery?(n("updateQuery",m.value[a]),e.preventDefault()):(t.push(y.value[a].link),R())}}}}),J([p,c],()=>{var e;(e=document.querySelector(".search-pro-result-list-item.active .search-pro-result-item.active"))==null||e.scrollIntoView(!1)},{flush:"post"}),()=>l("div",{class:["search-pro-result-wrapper",{empty:S.value?!q.value:!P.value}],id:"search-pro-results"},S.value===""?L?P.value?[f?l("ul",{class:"search-pro-result-list"},l("li",{class:"search-pro-result-list-item"},[l("div",{class:"search-pro-result-title"},u.value.queryHistory),m.value.map((e,a)=>l("div",{class:["search-pro-result-item",{active:o.value.isQuery&&o.value.index===a}],onClick:()=>{n("updateQuery",e)}},[l(_,{class:"search-pro-result-type"}),l("div",{class:"search-pro-result-content"},e),l("button",{class:"search-pro-remove-icon",innerHTML:F,onClick:i=>{i.preventDefault(),i.stopPropagation(),w(a)}})]))])):null,g?l("ul",{class:"search-pro-result-list"},l("li",{class:"search-pro-result-list-item"},[l("div",{class:"search-pro-result-title"},u.value.resultHistory),y.value.map((e,a)=>l(I,{to:e.link,class:["search-pro-result-item",{active:!o.value.isQuery&&o.value.index===a}],onClick:()=>{R()}},()=>[l(_,{class:"search-pro-result-type"}),l("div",{class:"search-pro-result-content"},[e.header?l("div",{class:"content-header"},e.header):null,l("div",e.display.map(i=>A(i)).flat())]),l("button",{class:"search-pro-remove-icon",innerHTML:F,onClick:i=>{i.preventDefault(),i.stopPropagation(),M(a)}})]))])):null]:u.value.emptyHistory:u.value.emptyResult:Y.value?l(re,{hint:u.value.searching}):q.value?l("ul",{class:"search-pro-result-list"},Q.value.map(({title:e,contents:a},i)=>{const k=p.value===i;return l("li",{class:["search-pro-result-list-item",{active:k}]},[l("div",{class:"search-pro-result-title"},e||u.value.defaultTitle),a.map((v,Z)=>{const $=k&&c.value===Z;return l(I,{to:T(v),class:["search-pro-result-item",{active:$,"aria-selected":$}],onClick:()=>{H(r.query),O(v),R()}},()=>[v.type==="text"?null:l(v.type==="title"?ue:v.type==="heading"?ie:ne,{class:"search-pro-result-type"}),l("div",{class:"search-pro-result-content"},[v.type==="text"&&v.header?l("div",{class:"content-header"},v.header):null,l("div",X(v))])])})])})):u.value.emptyResult)}});export{we as default}; +import{u as U,g as ee,h as j,i as B,J as ae,j as le,t as se,k as x,l as D,m as te,n as J,p as l,q as _,s as F,v as I,x as re,y as ue,z as ie,A as ne,R as oe,O as ce,B as ve,C as pe,D as ye,E as he,F as de,G as me,H as b,I as fe}from"./app-rX80dX-Q.js";const He="SEARCH_PRO_QUERY_HISTORY",h=U(He,[]),ge=()=>{const{queryHistoryCount:r}=b,n=r>0;return{enabled:n,queryHistory:h,addQueryHistory:t=>{n&&(h.value.length{h.value=[...h.value.slice(0,t),...h.value.slice(t+1)]}}},Qe="SEARCH_PRO_RESULT_HISTORY",{resultHistoryCount:E}=b,d=U(Qe,[]),Re=()=>{const r=j(),n=E>0,t=s=>r.resolve({name:s.key,..."anchor"in s?{hash:`#${s.anchor}`}:{}}).fullPath;return{enabled:n,resultHistory:d,addResultHistory:s=>{if(n){const u={link:t(s),display:s.display};"header"in s&&(u.header=s.header),d.value.length{d.value=[...d.value.slice(0,s),...d.value.slice(s+1)]}}},ke=r=>{const n=oe(),t=B(),{search:s,terminate:u}=ce(),f=x(!1),H=ve([]);return pe(()=>{const m=()=>{H.value=[],f.value=!1},w=fe(g=>{f.value=!0,g?s({type:"search",query:g,locale:t.value,options:n}).then(y=>{H.value=y,f.value=!1}).catch(y=>{console.error(y),m()}):m()},b.searchDelay);J([r,t],()=>w(r.value),{immediate:!0}),ye(()=>{u()})}),{searching:f,results:H}};var we=ee({name:"SearchResult",props:{query:{type:String,required:!0},isFocusing:Boolean},emits:["close","updateQuery"],setup(r,{emit:n}){const t=j(),s=B(),u=ae(le),{enabled:f,addQueryHistory:H,queryHistory:m,removeQueryHistory:w}=ge(),{enabled:g,resultHistory:y,addResultHistory:O,removeResultHistory:M}=Re(),L=f||g,S=se(r,"query"),{results:Q,searching:Y}=ke(S),o=x({isQuery:!0,index:0}),p=x(0),c=x(0),P=D(()=>L&&(m.value.length>0||y.value.length>0)),q=D(()=>Q.value.length>0),C=D(()=>Q.value[p.value]||null),T=e=>t.resolve({name:e.key,..."anchor"in e?{hash:`#${e.anchor}`}:{}}).fullPath,z=()=>{const{isQuery:e,index:a}=o.value;a===0?o.value={isQuery:!e,index:e?y.value.length-1:m.value.length-1}:o.value={isQuery:e,index:a-1}},G=()=>{const{isQuery:e,index:a}=o.value;a===(e?m.value.length-1:y.value.length-1)?o.value={isQuery:!e,index:0}:o.value={isQuery:e,index:a+1}},V=()=>{p.value=p.value>0?p.value-1:Q.value.length-1,c.value=C.value.contents.length-1},K=()=>{p.value=p.value{c.value{c.value>0?c.value=c.value-1:V()},A=e=>e.map(a=>he(a)?a:l(a[0],a[1])),X=e=>{if(e.type==="customField"){const a=de[e.index]||"$content",[i,k=""]=me(a)?a[s.value].split("$content"):a.split("$content");return e.display.map(v=>l("div",A([i,...v,k])))}return e.display.map(a=>l("div",A(a)))},R=()=>{p.value=0,c.value=0,n("updateQuery",""),n("close")};return te("keydown",e=>{if(r.isFocusing){if(q.value){if(e.key==="ArrowUp")W();else if(e.key==="ArrowDown")N();else if(e.key==="Enter"){const a=C.value.contents[c.value],i=T(a);H(r.query),O(a),t.push(i),R()}}else if(g){if(e.key==="ArrowUp")z();else if(e.key==="ArrowDown")G();else if(e.key==="Enter"){const{index:a}=o.value;o.value.isQuery?(n("updateQuery",m.value[a]),e.preventDefault()):(t.push(y.value[a].link),R())}}}}),J([p,c],()=>{var e;(e=document.querySelector(".search-pro-result-list-item.active .search-pro-result-item.active"))==null||e.scrollIntoView(!1)},{flush:"post"}),()=>l("div",{class:["search-pro-result-wrapper",{empty:S.value?!q.value:!P.value}],id:"search-pro-results"},S.value===""?L?P.value?[f?l("ul",{class:"search-pro-result-list"},l("li",{class:"search-pro-result-list-item"},[l("div",{class:"search-pro-result-title"},u.value.queryHistory),m.value.map((e,a)=>l("div",{class:["search-pro-result-item",{active:o.value.isQuery&&o.value.index===a}],onClick:()=>{n("updateQuery",e)}},[l(_,{class:"search-pro-result-type"}),l("div",{class:"search-pro-result-content"},e),l("button",{class:"search-pro-remove-icon",innerHTML:F,onClick:i=>{i.preventDefault(),i.stopPropagation(),w(a)}})]))])):null,g?l("ul",{class:"search-pro-result-list"},l("li",{class:"search-pro-result-list-item"},[l("div",{class:"search-pro-result-title"},u.value.resultHistory),y.value.map((e,a)=>l(I,{to:e.link,class:["search-pro-result-item",{active:!o.value.isQuery&&o.value.index===a}],onClick:()=>{R()}},()=>[l(_,{class:"search-pro-result-type"}),l("div",{class:"search-pro-result-content"},[e.header?l("div",{class:"content-header"},e.header):null,l("div",e.display.map(i=>A(i)).flat())]),l("button",{class:"search-pro-remove-icon",innerHTML:F,onClick:i=>{i.preventDefault(),i.stopPropagation(),M(a)}})]))])):null]:u.value.emptyHistory:u.value.emptyResult:Y.value?l(re,{hint:u.value.searching}):q.value?l("ul",{class:"search-pro-result-list"},Q.value.map(({title:e,contents:a},i)=>{const k=p.value===i;return l("li",{class:["search-pro-result-list-item",{active:k}]},[l("div",{class:"search-pro-result-title"},e||u.value.defaultTitle),a.map((v,Z)=>{const $=k&&c.value===Z;return l(I,{to:T(v),class:["search-pro-result-item",{active:$,"aria-selected":$}],onClick:()=>{H(r.query),O(v),R()}},()=>[v.type==="text"?null:l(v.type==="title"?ue:v.type==="heading"?ie:ne,{class:"search-pro-result-type"}),l("div",{class:"search-pro-result-content"},[v.type==="text"&&v.header?l("div",{class:"content-header"},v.header):null,l("div",X(v))])])})])})):u.value.emptyResult)}});export{we as default}; diff --git a/assets/app-DfwSKz3Q.js b/assets/app-DfwSKz3Q.js deleted file mode 100644 index f386d53..0000000 --- a/assets/app-DfwSKz3Q.js +++ /dev/null @@ -1,30 +0,0 @@ -/** -* @vue/shared v3.4.13 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function zs(e,t){const n=new Set(e.split(","));return t?r=>n.has(r.toLowerCase()):r=>n.has(r)}const ye={},fn=[],Ze=()=>{},Uc=()=>!1,Zn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),js=e=>e.startsWith("onUpdate:"),ke=Object.assign,Ws=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Zc=Object.prototype.hasOwnProperty,le=(e,t)=>Zc.call(e,t),q=Array.isArray,On=e=>Fr(e)==="[object Map]",Yc=e=>Fr(e)==="[object Set]",te=e=>typeof e=="function",ae=e=>typeof e=="string",Hr=e=>typeof e=="symbol",_e=e=>e!==null&&typeof e=="object",ea=e=>(_e(e)||te(e))&&te(e.then)&&te(e.catch),qc=Object.prototype.toString,Fr=e=>qc.call(e),Xc=e=>Fr(e).slice(8,-1),Jc=e=>Fr(e)==="[object Object]",Ks=e=>ae(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Mn=zs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Dr=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Qc=/-(\w)/g,et=Dr(e=>e.replace(Qc,(t,n)=>n?n.toUpperCase():"")),eu=/\B([A-Z])/g,En=Dr(e=>e.replace(eu,"-$1").toLowerCase()),Yn=Dr(e=>e.charAt(0).toUpperCase()+e.slice(1)),Jr=Dr(e=>e?`on${Yn(e)}`:""),Ht=(e,t)=>!Object.is(e,t),Qr=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},tu=e=>{const t=parseFloat(e);return isNaN(t)?e:t},nu=e=>{const t=ae(e)?Number(e):NaN;return isNaN(t)?e:t};let Mo;const ta=()=>Mo||(Mo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Gs(e){if(q(e)){const t={};for(let n=0;n{if(n){const r=n.split(su);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Us(e){let t="";if(ae(e))t=e;else if(q(e))for(let n=0;n=2))break}this._dirtyLevel<2&&(this._dirtyLevel=0),en()}return this._dirtyLevel>=2}set dirty(t){this._dirtyLevel=t?2:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=$t,n=Zt;try{return $t=!0,Zt=this,this._runnings++,$o(this),this.fn()}finally{No(this),this._runnings--,Zt=n,$t=t}}stop(){var t;this.active&&($o(this),No(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function du(e){return e.value}function $o(e){e._trackId++,e._depsLength=0}function No(e){if(e.deps&&e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},Sr=new WeakMap,Yt=Symbol(""),Es=Symbol("");function De(e,t,n){if($t&&Zt){let r=Sr.get(e);r||Sr.set(e,r=new Map);let s=r.get(n);s||r.set(n,s=ia(()=>r.delete(n))),la(Zt,s)}}function yt(e,t,n,r,s,o){const l=Sr.get(e);if(!l)return;let a=[];if(t==="clear")a=[...l.values()];else if(n==="length"&&q(e)){const i=Number(r);l.forEach((f,u)=>{(u==="length"||!Hr(u)&&u>=i)&&a.push(f)})}else switch(n!==void 0&&a.push(l.get(n)),t){case"add":q(e)?Ks(n)&&a.push(l.get("length")):(a.push(l.get(Yt)),On(e)&&a.push(l.get(Es)));break;case"delete":q(e)||(a.push(l.get(Yt)),On(e)&&a.push(l.get(Es)));break;case"set":On(e)&&a.push(l.get(Yt));break}Ys();for(const i of a)i&&aa(i,2);qs()}function pu(e,t){var n;return(n=Sr.get(e))==null?void 0:n.get(t)}const hu=zs("__proto__,__v_isRef,__isVue"),ca=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Hr)),Ho=vu();function vu(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=se(this);for(let o=0,l=this.length;o{e[t]=function(...n){Qt(),Ys();const r=se(this)[t].apply(this,n);return qs(),en(),r}}),e}function mu(e){const t=se(this);return De(t,"has",e),t.hasOwnProperty(e)}class ua{constructor(t=!1,n=!1){this._isReadonly=t,this._shallow=n}get(t,n,r){const s=this._isReadonly,o=this._shallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return o;if(n==="__v_raw")return r===(s?o?Au:ha:o?pa:da).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const l=q(t);if(!s){if(l&&le(Ho,n))return Reflect.get(Ho,n,r);if(n==="hasOwnProperty")return mu}const a=Reflect.get(t,n,r);return(Hr(n)?ca.has(n):hu(n))||(s||De(t,"get",n),o)?a:Pe(a)?l&&Ks(n)?a:a.value:_e(a)?s?tn(a):qn(a):a}}class fa extends ua{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];if(!this._shallow){const i=mn(o);if(!Tr(r)&&!mn(r)&&(o=se(o),r=se(r)),!q(t)&&Pe(o)&&!Pe(r))return i?!1:(o.value=r,!0)}const l=q(t)&&Ks(n)?Number(n)e,Br=e=>Reflect.getPrototypeOf(e);function ar(e,t,n=!1,r=!1){e=e.__v_raw;const s=se(e),o=se(t);n||(Ht(t,o)&&De(s,"get",t),De(s,"get",o));const{has:l}=Br(s),a=r?Xs:n?eo:Vn;if(l.call(s,t))return a(e.get(t));if(l.call(s,o))return a(e.get(o));e!==s&&e.get(t)}function ir(e,t=!1){const n=this.__v_raw,r=se(n),s=se(e);return t||(Ht(e,s)&&De(r,"has",e),De(r,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function cr(e,t=!1){return e=e.__v_raw,!t&&De(se(e),"iterate",Yt),Reflect.get(e,"size",e)}function Fo(e){e=se(e);const t=se(this);return Br(t).has.call(t,e)||(t.add(e),yt(t,"add",e,e)),this}function Do(e,t){t=se(t);const n=se(this),{has:r,get:s}=Br(n);let o=r.call(n,e);o||(e=se(e),o=r.call(n,e));const l=s.call(n,e);return n.set(e,t),o?Ht(t,l)&&yt(n,"set",e,t):yt(n,"add",e,t),this}function Bo(e){const t=se(this),{has:n,get:r}=Br(t);let s=n.call(t,e);s||(e=se(e),s=n.call(t,e)),r&&r.call(t,e);const o=t.delete(e);return s&&yt(t,"delete",e,void 0),o}function Vo(){const e=se(this),t=e.size!==0,n=e.clear();return t&&yt(e,"clear",void 0,void 0),n}function ur(e,t){return function(r,s){const o=this,l=o.__v_raw,a=se(l),i=t?Xs:e?eo:Vn;return!e&&De(a,"iterate",Yt),l.forEach((f,u)=>r.call(s,i(f),i(u),o))}}function fr(e,t,n){return function(...r){const s=this.__v_raw,o=se(s),l=On(o),a=e==="entries"||e===Symbol.iterator&&l,i=e==="keys"&&l,f=s[e](...r),u=n?Xs:t?eo:Vn;return!t&&De(o,"iterate",i?Es:Yt),{next(){const{value:d,done:p}=f.next();return p?{value:d,done:p}:{value:a?[u(d[0]),u(d[1])]:u(d),done:p}},[Symbol.iterator](){return this}}}}function kt(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function _u(){const e={get(o){return ar(this,o)},get size(){return cr(this)},has:ir,add:Fo,set:Do,delete:Bo,clear:Vo,forEach:ur(!1,!1)},t={get(o){return ar(this,o,!1,!0)},get size(){return cr(this)},has:ir,add:Fo,set:Do,delete:Bo,clear:Vo,forEach:ur(!1,!0)},n={get(o){return ar(this,o,!0)},get size(){return cr(this,!0)},has(o){return ir.call(this,o,!0)},add:kt("add"),set:kt("set"),delete:kt("delete"),clear:kt("clear"),forEach:ur(!0,!1)},r={get(o){return ar(this,o,!0,!0)},get size(){return cr(this,!0)},has(o){return ir.call(this,o,!0)},add:kt("add"),set:kt("set"),delete:kt("delete"),clear:kt("clear"),forEach:ur(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=fr(o,!1,!1),n[o]=fr(o,!0,!1),t[o]=fr(o,!1,!0),r[o]=fr(o,!0,!0)}),[e,n,t,r]}const[Eu,Cu,Su,Tu]=_u();function Js(e,t){const n=t?e?Tu:Su:e?Cu:Eu;return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(le(n,s)&&s in r?n:r,s,o)}const ku={get:Js(!1,!1)},xu={get:Js(!1,!0)},Lu={get:Js(!0,!1)},da=new WeakMap,pa=new WeakMap,ha=new WeakMap,Au=new WeakMap;function Pu(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Ru(e){return e.__v_skip||!Object.isExtensible(e)?0:Pu(Xc(e))}function qn(e){return mn(e)?e:Qs(e,!1,bu,ku,da)}function va(e){return Qs(e,!1,wu,xu,pa)}function tn(e){return Qs(e,!0,yu,Lu,ha)}function Qs(e,t,n,r,s){if(!_e(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=s.get(e);if(o)return o;const l=Ru(e);if(l===0)return e;const a=new Proxy(e,l===2?r:n);return s.set(e,a),a}function dn(e){return mn(e)?dn(e.__v_raw):!!(e&&e.__v_isReactive)}function mn(e){return!!(e&&e.__v_isReadonly)}function Tr(e){return!!(e&&e.__v_isShallow)}function ma(e){return dn(e)||mn(e)}function se(e){const t=e&&e.__v_raw;return t?se(t):e}function ga(e){return Cr(e,"__v_skip",!0),e}const Vn=e=>_e(e)?qn(e):e,eo=e=>_e(e)?tn(e):e;class ba{constructor(t,n,r,s){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Zs(()=>t(this._value),()=>kr(this,1)),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=r}get value(){const t=se(this);return(!t._cacheable||t.effect.dirty)&&Ht(t._value,t._value=t.effect.run())&&kr(t,2),to(t),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function Iu(e,t,n=!1){let r,s;const o=te(e);return o?(r=e,s=Ze):(r=e.get,s=e.set),new ba(r,s,o||!s,n)}function to(e){$t&&Zt&&(e=se(e),la(Zt,e.dep||(e.dep=ia(()=>e.dep=void 0,e instanceof ba?e:void 0))))}function kr(e,t=2,n){e=se(e);const r=e.dep;r&&aa(r,t)}function Pe(e){return!!(e&&e.__v_isRef===!0)}function X(e){return ya(e,!1)}function lt(e){return ya(e,!0)}function ya(e,t){return Pe(e)?e:new Ou(e,t)}class Ou{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:se(t),this._value=n?t:Vn(t)}get value(){return to(this),this._value}set value(t){const n=this.__v_isShallow||Tr(t)||mn(t);t=n?t:se(t),Ht(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Vn(t),kr(this,2))}}function qt(e){return Pe(e)?e.value:e}const Mu={get:(e,t,n)=>qt(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return Pe(s)&&!Pe(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function wa(e){return dn(e)?e:new Proxy(e,Mu)}class $u{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>to(this),()=>kr(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function _a(e){return new $u(e)}class Nu{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return pu(se(this._object),this._key)}}class Hu{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function Vr(e,t,n){return Pe(e)?e:te(e)?new Hu(e):_e(e)&&arguments.length>1?Fu(e,t,n):X(e)}function Fu(e,t,n){const r=e[t];return Pe(r)?r:new Nu(e,t,n)}/** -* @vue/runtime-core v3.4.13 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function Nt(e,t,n,r){let s;try{s=r?e(...r):e()}catch(o){Xn(o,t,n)}return s}function Xe(e,t,n,r){if(te(e)){const o=Nt(e,t,n,r);return o&&ea(o)&&o.catch(l=>{Xn(l,t,n)}),o}const s=[];for(let o=0;o>>1,s=Ie[r],o=jn(s);odt&&Ie.splice(t,1)}function zu(e){q(e)?pn.push(...e):(!Pt||!Pt.includes(e,e.allowRecurse?Kt+1:Kt))&&pn.push(e),Ca()}function zo(e,t,n=zn?dt+1:0){for(;njn(n)-jn(r));if(pn.length=0,Pt){Pt.push(...t);return}for(Pt=t,Kt=0;Kte.id==null?1/0:e.id,ju=(e,t)=>{const n=jn(e)-jn(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Sa(e){Cs=!1,zn=!0,Ie.sort(ju);try{for(dt=0;dtae(v)?v.trim():v)),d&&(s=n.map(tu))}let a,i=r[a=Jr(t)]||r[a=Jr(et(t))];!i&&o&&(i=r[a=Jr(En(t))]),i&&Xe(i,e,6,s);const f=r[a+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,Xe(f,e,6,s)}}function Ta(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let l={},a=!1;if(!te(e)){const i=f=>{const u=Ta(f,t,!0);u&&(a=!0,ke(l,u))};!n&&t.mixins.length&&t.mixins.forEach(i),e.extends&&i(e.extends),e.mixins&&e.mixins.forEach(i)}return!o&&!a?(_e(e)&&r.set(e,null),null):(q(o)?o.forEach(i=>l[i]=null):ke(l,o),_e(e)&&r.set(e,l),l)}function jr(e,t){return!e||!Zn(t)?!1:(t=t.slice(2).replace(/Once$/,""),le(e,t[0].toLowerCase()+t.slice(1))||le(e,En(t))||le(e,t))}let Ye=null,ka=null;function Lr(e){const t=Ye;return Ye=e,ka=e&&e.type.__scopeId||null,t}function Ku(e,t=Ye,n){if(!t||e._n)return e;const r=(...s)=>{r._d&&el(-1);const o=Lr(t);let l;try{l=e(...s)}finally{Lr(o),r._d&&el(1)}return l};return r._n=!0,r._c=!0,r._d=!0,r}function es(e){const{type:t,vnode:n,proxy:r,withProxy:s,props:o,propsOptions:[l],slots:a,attrs:i,emit:f,render:u,renderCache:d,data:p,setupState:v,ctx:g,inheritAttrs:_}=e;let E,b;const L=Lr(e);try{if(n.shapeFlag&4){const S=s||r,$=S;E=st(u.call($,S,d,o,v,p,g)),b=i}else{const S=t;E=st(S.length>1?S(o,{attrs:i,slots:a,emit:f}):S(o,null)),b=t.props?i:Gu(i)}}catch(S){Fn.length=0,Xn(S,e,1),E=Se(Qe)}let y=E;if(b&&_!==!1){const S=Object.keys(b),{shapeFlag:$}=y;S.length&&$&7&&(l&&S.some(js)&&(b=Uu(b,l)),y=Ft(y,b))}return n.dirs&&(y=Ft(y),y.dirs=y.dirs?y.dirs.concat(n.dirs):n.dirs),n.transition&&(y.transition=n.transition),E=y,Lr(L),E}const Gu=e=>{let t;for(const n in e)(n==="class"||n==="style"||Zn(n))&&((t||(t={}))[n]=e[n]);return t},Uu=(e,t)=>{const n={};for(const r in e)(!js(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Zu(e,t,n){const{props:r,children:s,component:o}=e,{props:l,children:a,patchFlag:i}=t,f=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&i>=0){if(i&1024)return!0;if(i&16)return r?jo(r,l,f):!!l;if(i&8){const u=t.dynamicProps;for(let d=0;de.__isSuspense;function La(e,t){t&&t.pendingBranch?q(e)?t.effects.push(...e):t.effects.push(e):zu(e)}const Qu=Symbol.for("v-scx"),ef=()=>ve(Qu);function Aa(e,t){return ro(e,null,t)}const dr={};function ie(e,t,n){return ro(e,t,n)}function ro(e,t,{immediate:n,deep:r,flush:s,once:o,onTrack:l,onTrigger:a}=ye){if(t&&o){const C=t;t=(...j)=>{C(...j),$()}}const i=Ae,f=C=>r===!0?C:an(C,r===!1?1:void 0);let u,d=!1,p=!1;if(Pe(e)?(u=()=>e.value,d=Tr(e)):dn(e)?(u=()=>f(e),d=!0):q(e)?(p=!0,d=e.some(C=>dn(C)||Tr(C)),u=()=>e.map(C=>{if(Pe(C))return C.value;if(dn(C))return f(C);if(te(C))return Nt(C,i,2)})):te(e)?t?u=()=>Nt(e,i,2):u=()=>(v&&v(),Xe(e,i,3,[g])):u=Ze,t&&r){const C=u;u=()=>an(C())}let v,g=C=>{v=y.onStop=()=>{Nt(C,i,4),v=y.onStop=void 0}},_;if(er)if(g=Ze,t?n&&Xe(t,i,3,[u(),p?[]:void 0,g]):u(),s==="sync"){const C=ef();_=C.__watcherHandles||(C.__watcherHandles=[])}else return Ze;let E=p?new Array(e.length).fill(dr):dr;const b=()=>{if(!(!y.active||!y.dirty))if(t){const C=y.run();(r||d||(p?C.some((j,N)=>Ht(j,E[N])):Ht(C,E)))&&(v&&v(),Xe(t,i,3,[C,E===dr?void 0:p&&E[0]===dr?[]:E,g]),E=C)}else y.run()};b.allowRecurse=!!t;let L;s==="sync"?L=b:s==="post"?L=()=>Ne(b,i&&i.suspense):(b.pre=!0,i&&(b.id=i.uid),L=()=>zr(b));const y=new Zs(u,Ze,L),S=ra(),$=()=>{y.stop(),S&&Ws(S.effects,y)};return t?n?b():E=y.run():s==="post"?Ne(y.run.bind(y),i&&i.suspense):y.run(),_&&_.push($),$}function tf(e,t,n){const r=this.proxy,s=ae(e)?e.includes(".")?Pa(r,e):()=>r[e]:e.bind(r,r);let o;te(t)?o=t:(o=t.handler,n=t);const l=Qn(this),a=ro(s,o.bind(r),n);return l(),a}function Pa(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;s0){if(n>=t)return e;n++}if(r=r||new Set,r.has(e))return e;if(r.add(e),Pe(e))an(e.value,t,n,r);else if(q(e))for(let s=0;s{an(s,t,n,r)});else if(Jc(e))for(const s in e)an(e[s],t,n,r);return e}function ft(e,t,n,r){const s=e.dirs,o=t&&t.dirs;for(let l=0;l{e.isMounted=!0}),oo(()=>{e.isUnmounting=!0}),e}const Ge=[Function,Array],Ia={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ge,onEnter:Ge,onAfterEnter:Ge,onEnterCancelled:Ge,onBeforeLeave:Ge,onLeave:Ge,onAfterLeave:Ge,onLeaveCancelled:Ge,onBeforeAppear:Ge,onAppear:Ge,onAfterAppear:Ge,onAppearCancelled:Ge},nf={name:"BaseTransition",props:Ia,setup(e,{slots:t}){const n=Sn(),r=Ra();let s;return()=>{const o=t.default&&so(t.default(),!0);if(!o||!o.length)return;let l=o[0];if(o.length>1){for(const _ of o)if(_.type!==Qe){l=_;break}}const a=se(e),{mode:i}=a;if(r.isLeaving)return ts(l);const f=Ko(l);if(!f)return ts(l);const u=Wn(f,a,r,n);Kn(f,u);const d=n.subTree,p=d&&Ko(d);let v=!1;const{getTransitionKey:g}=f.type;if(g){const _=g();s===void 0?s=_:_!==s&&(s=_,v=!0)}if(p&&p.type!==Qe&&(!Gt(f,p)||v)){const _=Wn(p,a,r,n);if(Kn(p,_),i==="out-in")return r.isLeaving=!0,_.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},ts(l);i==="in-out"&&f.type!==Qe&&(_.delayLeave=(E,b,L)=>{const y=Oa(r,p);y[String(p.key)]=p,E[Rt]=()=>{b(),E[Rt]=void 0,delete u.delayedLeave},u.delayedLeave=L})}return l}}},rf=nf;function Oa(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Wn(e,t,n,r){const{appear:s,mode:o,persisted:l=!1,onBeforeEnter:a,onEnter:i,onAfterEnter:f,onEnterCancelled:u,onBeforeLeave:d,onLeave:p,onAfterLeave:v,onLeaveCancelled:g,onBeforeAppear:_,onAppear:E,onAfterAppear:b,onAppearCancelled:L}=t,y=String(e.key),S=Oa(n,e),$=(N,O)=>{N&&Xe(N,r,9,O)},C=(N,O)=>{const H=O[1];$(N,O),q(N)?N.every(ee=>ee.length<=1)&&H():N.length<=1&&H()},j={mode:o,persisted:l,beforeEnter(N){let O=a;if(!n.isMounted)if(s)O=_||a;else return;N[Rt]&&N[Rt](!0);const H=S[y];H&&Gt(e,H)&&H.el[Rt]&&H.el[Rt](),$(O,[N])},enter(N){let O=i,H=f,ee=u;if(!n.isMounted)if(s)O=E||i,H=b||f,ee=L||u;else return;let F=!1;const J=N[pr]=Ee=>{F||(F=!0,Ee?$(ee,[N]):$(H,[N]),j.delayedLeave&&j.delayedLeave(),N[pr]=void 0)};O?C(O,[N,J]):J()},leave(N,O){const H=String(e.key);if(N[pr]&&N[pr](!0),n.isUnmounting)return O();$(d,[N]);let ee=!1;const F=N[Rt]=J=>{ee||(ee=!0,O(),J?$(g,[N]):$(v,[N]),N[Rt]=void 0,S[H]===e&&delete S[H])};S[H]=e,p?C(p,[N,F]):F()},clone(N){return Wn(N,t,n,r)}};return j}function ts(e){if(Jn(e))return e=Ft(e),e.children=null,e}function Ko(e){return Jn(e)?e.children?e.children[0]:void 0:e}function Kn(e,t){e.shapeFlag&6&&e.component?Kn(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function so(e,t=!1,n){let r=[],s=0;for(let o=0;o1)for(let o=0;o!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function ze(e){te(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,timeout:o,suspensible:l=!0,onError:a}=e;let i=null,f,u=0;const d=()=>(u++,i=null,p()),p=()=>{let v;return i||(v=i=t().catch(g=>{if(g=g instanceof Error?g:new Error(String(g)),a)return new Promise((_,E)=>{a(g,()=>_(d()),()=>E(g),u+1)});throw g}).then(g=>v!==i&&i?i:(g&&(g.__esModule||g[Symbol.toStringTag]==="Module")&&(g=g.default),f=g,g)))};return K({name:"AsyncComponentWrapper",__asyncLoader:p,get __asyncResolved(){return f},setup(){const v=Ae;if(f)return()=>ns(f,v);const g=L=>{i=null,Xn(L,v,13,!r)};if(l&&v.suspense||er)return p().then(L=>()=>ns(L,v)).catch(L=>(g(L),()=>r?Se(r,{error:L}):null));const _=X(!1),E=X(),b=X(!!s);return s&&setTimeout(()=>{b.value=!1},s),o!=null&&setTimeout(()=>{if(!_.value&&!E.value){const L=new Error(`Async component timed out after ${o}ms.`);g(L),E.value=L}},o),p().then(()=>{_.value=!0,v.parent&&Jn(v.parent.vnode)&&(v.parent.effect.dirty=!0,zr(v.parent.update))}).catch(L=>{g(L),E.value=L}),()=>{if(_.value&&f)return ns(f,v);if(E.value&&r)return Se(r,{error:E.value});if(n&&!b.value)return Se(n)}}})}function ns(e,t){const{ref:n,props:r,children:s,ce:o}=t.vnode,l=Se(e,r,s);return l.ref=n,l.ce=o,delete t.vnode.ce,l}const Jn=e=>e.type.__isKeepAlive;function sf(e,t){Ma(e,"a",t)}function of(e,t){Ma(e,"da",t)}function Ma(e,t,n=Ae){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(Wr(t,r,n),n){let s=n.parent;for(;s&&s.parent;)Jn(s.parent.vnode)&&lf(r,t,n,s),s=s.parent}}function lf(e,t,n,r){const s=Wr(t,e,r,!0);Cn(()=>{Ws(r[t],s)},n)}function Wr(e,t,n=Ae,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...l)=>{if(n.isUnmounted)return;Qt();const a=Qn(n),i=Xe(t,n,e,l);return a(),en(),i});return r?s.unshift(o):s.push(o),o}}const Ct=e=>(t,n=Ae)=>(!er||e==="sp")&&Wr(e,(...r)=>t(...r),n),af=Ct("bm"),we=Ct("m"),cf=Ct("bu"),$a=Ct("u"),oo=Ct("bum"),Cn=Ct("um"),uf=Ct("sp"),ff=Ct("rtg"),df=Ct("rtc");function pf(e,t=Ae){Wr("ec",e,t)}const Ss=e=>e?qa(e)?co(e)||e.proxy:Ss(e.parent):null,Nn=ke(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Ss(e.parent),$root:e=>Ss(e.root),$emit:e=>e.emit,$options:e=>lo(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,zr(e.update)}),$nextTick:e=>e.n||(e.n=Bt.bind(e.proxy)),$watch:e=>tf.bind(e)}),rs=(e,t)=>e!==ye&&!e.__isScriptSetup&&le(e,t),hf={get({_:e},t){const{ctx:n,setupState:r,data:s,props:o,accessCache:l,type:a,appContext:i}=e;let f;if(t[0]!=="$"){const v=l[t];if(v!==void 0)switch(v){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(rs(r,t))return l[t]=1,r[t];if(s!==ye&&le(s,t))return l[t]=2,s[t];if((f=e.propsOptions[0])&&le(f,t))return l[t]=3,o[t];if(n!==ye&&le(n,t))return l[t]=4,n[t];Ts&&(l[t]=0)}}const u=Nn[t];let d,p;if(u)return t==="$attrs"&&De(e,"get",t),u(e);if((d=a.__cssModules)&&(d=d[t]))return d;if(n!==ye&&le(n,t))return l[t]=4,n[t];if(p=i.config.globalProperties,le(p,t))return p[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return rs(s,t)?(s[t]=n,!0):r!==ye&&le(r,t)?(r[t]=n,!0):le(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:o}},l){let a;return!!n[l]||e!==ye&&le(e,l)||rs(t,l)||(a=o[0])&&le(a,l)||le(r,l)||le(Nn,l)||le(s.config.globalProperties,l)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:le(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Go(e){return q(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Ts=!0;function vf(e){const t=lo(e),n=e.proxy,r=e.ctx;Ts=!1,t.beforeCreate&&Uo(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:l,watch:a,provide:i,inject:f,created:u,beforeMount:d,mounted:p,beforeUpdate:v,updated:g,activated:_,deactivated:E,beforeDestroy:b,beforeUnmount:L,destroyed:y,unmounted:S,render:$,renderTracked:C,renderTriggered:j,errorCaptured:N,serverPrefetch:O,expose:H,inheritAttrs:ee,components:F,directives:J,filters:Ee}=t;if(f&&mf(f,r,null),l)for(const ne in l){const G=l[ne];te(G)&&(r[ne]=G.bind(n))}if(s){const ne=s.call(n,n);_e(ne)&&(e.data=qn(ne))}if(Ts=!0,o)for(const ne in o){const G=o[ne],nt=te(G)?G.bind(n,n):te(G.get)?G.get.bind(n,n):Ze,Tt=!te(G)&&te(G.set)?G.set.bind(n):Ze,ct=k({get:nt,set:Tt});Object.defineProperty(r,ne,{enumerable:!0,configurable:!0,get:()=>ct.value,set:$e=>ct.value=$e})}if(a)for(const ne in a)Na(a[ne],r,n,ne);if(i){const ne=te(i)?i.call(n):i;Reflect.ownKeys(ne).forEach(G=>{Xt(G,ne[G])})}u&&Uo(u,e,"c");function U(ne,G){q(G)?G.forEach(nt=>ne(nt.bind(n))):G&&ne(G.bind(n))}if(U(af,d),U(we,p),U(cf,v),U($a,g),U(sf,_),U(of,E),U(pf,N),U(df,C),U(ff,j),U(oo,L),U(Cn,S),U(uf,O),q(H))if(H.length){const ne=e.exposed||(e.exposed={});H.forEach(G=>{Object.defineProperty(ne,G,{get:()=>n[G],set:nt=>n[G]=nt})})}else e.exposed||(e.exposed={});$&&e.render===Ze&&(e.render=$),ee!=null&&(e.inheritAttrs=ee),F&&(e.components=F),J&&(e.directives=J)}function mf(e,t,n=Ze){q(e)&&(e=ks(e));for(const r in e){const s=e[r];let o;_e(s)?"default"in s?o=ve(s.from||r,s.default,!0):o=ve(s.from||r):o=ve(s),Pe(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:l=>o.value=l}):t[r]=o}}function Uo(e,t,n){Xe(q(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Na(e,t,n,r){const s=r.includes(".")?Pa(n,r):()=>n[r];if(ae(e)){const o=t[e];te(o)&&ie(s,o)}else if(te(e))ie(s,e.bind(n));else if(_e(e))if(q(e))e.forEach(o=>Na(o,t,n,r));else{const o=te(e.handler)?e.handler.bind(n):t[e.handler];te(o)&&ie(s,o,e)}}function lo(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:l}}=e.appContext,a=o.get(t);let i;return a?i=a:!s.length&&!n&&!r?i=t:(i={},s.length&&s.forEach(f=>Ar(i,f,l,!0)),Ar(i,t,l)),_e(t)&&o.set(t,i),i}function Ar(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&Ar(e,o,n,!0),s&&s.forEach(l=>Ar(e,l,n,!0));for(const l in t)if(!(r&&l==="expose")){const a=gf[l]||n&&n[l];e[l]=a?a(e[l],t[l]):t[l]}return e}const gf={data:Zo,props:Yo,emits:Yo,methods:In,computed:In,beforeCreate:Oe,created:Oe,beforeMount:Oe,mounted:Oe,beforeUpdate:Oe,updated:Oe,beforeDestroy:Oe,beforeUnmount:Oe,destroyed:Oe,unmounted:Oe,activated:Oe,deactivated:Oe,errorCaptured:Oe,serverPrefetch:Oe,components:In,directives:In,watch:yf,provide:Zo,inject:bf};function Zo(e,t){return t?e?function(){return ke(te(e)?e.call(this,this):e,te(t)?t.call(this,this):t)}:t:e}function bf(e,t){return In(ks(e),ks(t))}function ks(e){if(q(e)){const t={};for(let n=0;n1)return n&&te(t)?t.call(r&&r.proxy):t}}function Ef(e,t,n,r=!1){const s={},o={};Cr(o,Kr,1),e.propsDefaults=Object.create(null),Fa(e,t,s,o);for(const l in e.propsOptions[0])l in s||(s[l]=void 0);n?e.props=r?s:va(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function Cf(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:l}}=e,a=se(s),[i]=e.propsOptions;let f=!1;if((r||l>0)&&!(l&16)){if(l&8){const u=e.vnode.dynamicProps;for(let d=0;d{i=!0;const[p,v]=Da(d,t,!0);ke(l,p),v&&a.push(...v)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!o&&!i)return _e(e)&&r.set(e,fn),fn;if(q(o))for(let u=0;u-1,v[1]=_<0||g<_,(g>-1||le(v,"default"))&&a.push(d)}}}const f=[l,a];return _e(e)&&r.set(e,f),f}function qo(e){return e[0]!=="$"}function Xo(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function Jo(e,t){return Xo(e)===Xo(t)}function Qo(e,t){return q(t)?t.findIndex(n=>Jo(n,e)):te(t)&&Jo(t,e)?0:-1}const Ba=e=>e[0]==="_"||e==="$stable",ao=e=>q(e)?e.map(st):[st(e)],Sf=(e,t,n)=>{if(t._n)return t;const r=Ku((...s)=>ao(t(...s)),n);return r._c=!1,r},Va=(e,t,n)=>{const r=e._ctx;for(const s in e){if(Ba(s))continue;const o=e[s];if(te(o))t[s]=Sf(s,o,r);else if(o!=null){const l=ao(o);t[s]=()=>l}}},za=(e,t)=>{const n=ao(t);e.slots.default=()=>n},Tf=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=se(t),Cr(t,"_",n)):Va(t,e.slots={})}else e.slots={},t&&za(e,t);Cr(e.slots,Kr,1)},kf=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,l=ye;if(r.shapeFlag&32){const a=t._;a?n&&a===1?o=!1:(ke(s,t),!n&&a===1&&delete s._):(o=!t.$stable,Va(t,s)),l=t}else t&&(za(e,t),l={default:1});if(o)for(const a in s)!Ba(a)&&l[a]==null&&delete s[a]};function Rr(e,t,n,r,s=!1){if(q(e)){e.forEach((p,v)=>Rr(p,t&&(q(t)?t[v]:t),n,r,s));return}if($n(r)&&!s)return;const o=r.shapeFlag&4?co(r.component)||r.component.proxy:r.el,l=s?null:o,{i:a,r:i}=e,f=t&&t.r,u=a.refs===ye?a.refs={}:a.refs,d=a.setupState;if(f!=null&&f!==i&&(ae(f)?(u[f]=null,le(d,f)&&(d[f]=null)):Pe(f)&&(f.value=null)),te(i))Nt(i,a,12,[l,u]);else{const p=ae(i),v=Pe(i);if(p||v){const g=()=>{if(e.f){const _=p?le(d,i)?d[i]:u[i]:i.value;s?q(_)&&Ws(_,o):q(_)?_.includes(o)||_.push(o):p?(u[i]=[o],le(d,i)&&(d[i]=u[i])):(i.value=[o],e.k&&(u[e.k]=i.value))}else p?(u[i]=l,le(d,i)&&(d[i]=l)):v&&(i.value=l,e.k&&(u[e.k]=l))};l?(g.id=-1,Ne(g,n)):g()}}}let xt=!1;const xf=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",Lf=e=>e.namespaceURI.includes("MathML"),hr=e=>{if(xf(e))return"svg";if(Lf(e))return"mathml"},vr=e=>e.nodeType===8;function Af(e){const{mt:t,p:n,o:{patchProp:r,createText:s,nextSibling:o,parentNode:l,remove:a,insert:i,createComment:f}}=e,u=(y,S)=>{if(!S.hasChildNodes()){n(null,y,S),xr(),S._vnode=y;return}xt=!1,d(S.firstChild,y,null,null,null),xr(),S._vnode=y,xt&&console.error("Hydration completed but contains mismatches.")},d=(y,S,$,C,j,N=!1)=>{const O=vr(y)&&y.data==="[",H=()=>_(y,S,$,C,j,O),{type:ee,ref:F,shapeFlag:J,patchFlag:Ee}=S;let Ce=y.nodeType;S.el=y,Ee===-2&&(N=!1,S.dynamicChildren=null);let U=null;switch(ee){case gn:Ce!==3?S.children===""?(i(S.el=s(""),l(y),y),U=y):U=H():(y.data!==S.children&&(xt=!0,y.data=S.children),U=o(y));break;case Qe:L(y)?(U=o(y),b(S.el=y.content.firstChild,y,$)):Ce!==8||O?U=H():U=o(y);break;case Hn:if(O&&(y=o(y),Ce=y.nodeType),Ce===1||Ce===3){U=y;const ne=!S.children.length;for(let G=0;G{N=N||!!S.dynamicChildren;const{type:O,props:H,patchFlag:ee,shapeFlag:F,dirs:J,transition:Ee}=S,Ce=O==="input"||O==="option";if(Ce||ee!==-1){J&&ft(S,null,$,"created");let U=!1;if(L(y)){U=ja(C,Ee)&&$&&$.vnode.props&&$.vnode.props.appear;const G=y.content.firstChild;U&&Ee.beforeEnter(G),b(G,y,$),S.el=y=G}if(F&16&&!(H&&(H.innerHTML||H.textContent))){let G=v(y.firstChild,S,y,$,C,j,N);for(;G;){xt=!0;const nt=G;G=G.nextSibling,a(nt)}}else F&8&&y.textContent!==S.children&&(xt=!0,y.textContent=S.children);if(H)if(Ce||!N||ee&48)for(const G in H)(Ce&&(G.endsWith("value")||G==="indeterminate")||Zn(G)&&!Mn(G)||G[0]===".")&&r(y,G,null,H[G],void 0,void 0,$);else H.onClick&&r(y,"onClick",null,H.onClick,void 0,void 0,$);let ne;(ne=H&&H.onVnodeBeforeMount)&&Ue(ne,$,S),J&&ft(S,null,$,"beforeMount"),((ne=H&&H.onVnodeMounted)||J||U)&&La(()=>{ne&&Ue(ne,$,S),U&&Ee.enter(y),J&&ft(S,null,$,"mounted")},C)}return y.nextSibling},v=(y,S,$,C,j,N,O)=>{O=O||!!S.dynamicChildren;const H=S.children,ee=H.length;for(let F=0;F{const{slotScopeIds:O}=S;O&&(j=j?j.concat(O):O);const H=l(y),ee=v(o(y),S,H,$,C,j,N);return ee&&vr(ee)&&ee.data==="]"?o(S.anchor=ee):(xt=!0,i(S.anchor=f("]"),H,ee),ee)},_=(y,S,$,C,j,N)=>{if(xt=!0,S.el=null,N){const ee=E(y);for(;;){const F=o(y);if(F&&F!==ee)a(F);else break}}const O=o(y),H=l(y);return a(y),n(null,S,H,O,$,C,hr(H),j),O},E=(y,S="[",$="]")=>{let C=0;for(;y;)if(y=o(y),y&&vr(y)&&(y.data===S&&C++,y.data===$)){if(C===0)return o(y);C--}return y},b=(y,S,$)=>{const C=S.parentNode;C&&C.replaceChild(y,S);let j=$;for(;j;)j.vnode.el===S&&(j.vnode.el=j.subTree.el=y),j=j.parent},L=y=>y.nodeType===1&&y.tagName.toLowerCase()==="template";return[u,d]}const Ne=La;function Pf(e){return Rf(e,Af)}function Rf(e,t){const n=ta();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:l,createText:a,createComment:i,setText:f,setElementText:u,parentNode:d,nextSibling:p,setScopeId:v=Ze,insertStaticContent:g}=e,_=(h,m,w,A=null,T=null,I=null,B=void 0,R=null,M=!!m.dynamicChildren)=>{if(h===m)return;h&&!Gt(h,m)&&(A=x(h),$e(h,T,I,!0),h=null),m.patchFlag===-2&&(M=!1,m.dynamicChildren=null);const{type:P,ref:z,shapeFlag:Y}=m;switch(P){case gn:E(h,m,w,A);break;case Qe:b(h,m,w,A);break;case Hn:h==null&&L(m,w,A,B);break;case We:F(h,m,w,A,T,I,B,R,M);break;default:Y&1?$(h,m,w,A,T,I,B,R,M):Y&6?J(h,m,w,A,T,I,B,R,M):(Y&64||Y&128)&&P.process(h,m,w,A,T,I,B,R,M,W)}z!=null&&T&&Rr(z,h&&h.ref,I,m||h,!m)},E=(h,m,w,A)=>{if(h==null)r(m.el=a(m.children),w,A);else{const T=m.el=h.el;m.children!==h.children&&f(T,m.children)}},b=(h,m,w,A)=>{h==null?r(m.el=i(m.children||""),w,A):m.el=h.el},L=(h,m,w,A)=>{[h.el,h.anchor]=g(h.children,m,w,A,h.el,h.anchor)},y=({el:h,anchor:m},w,A)=>{let T;for(;h&&h!==m;)T=p(h),r(h,w,A),h=T;r(m,w,A)},S=({el:h,anchor:m})=>{let w;for(;h&&h!==m;)w=p(h),s(h),h=w;s(m)},$=(h,m,w,A,T,I,B,R,M)=>{m.type==="svg"?B="svg":m.type==="math"&&(B="mathml"),h==null?C(m,w,A,T,I,B,R,M):O(h,m,T,I,B,R,M)},C=(h,m,w,A,T,I,B,R)=>{let M,P;const{props:z,shapeFlag:Y,transition:Z,dirs:Q}=h;if(M=h.el=l(h.type,I,z&&z.is,z),Y&8?u(M,h.children):Y&16&&N(h.children,M,null,A,T,ss(h,I),B,R),Q&&ft(h,null,A,"created"),j(M,h,h.scopeId,B,A),z){for(const fe in z)fe!=="value"&&!Mn(fe)&&o(M,fe,null,z[fe],I,h.children,A,T,Re);"value"in z&&o(M,"value",null,z.value,I),(P=z.onVnodeBeforeMount)&&Ue(P,A,h)}Q&&ft(h,null,A,"beforeMount");const re=ja(T,Z);re&&Z.beforeEnter(M),r(M,m,w),((P=z&&z.onVnodeMounted)||re||Q)&&Ne(()=>{P&&Ue(P,A,h),re&&Z.enter(M),Q&&ft(h,null,A,"mounted")},T)},j=(h,m,w,A,T)=>{if(w&&v(h,w),A)for(let I=0;I{for(let P=M;P{const R=m.el=h.el;let{patchFlag:M,dynamicChildren:P,dirs:z}=m;M|=h.patchFlag&16;const Y=h.props||ye,Z=m.props||ye;let Q;if(w&&jt(w,!1),(Q=Z.onVnodeBeforeUpdate)&&Ue(Q,w,m,h),z&&ft(m,h,w,"beforeUpdate"),w&&jt(w,!0),P?H(h.dynamicChildren,P,R,w,A,ss(m,T),I):B||G(h,m,R,null,w,A,ss(m,T),I,!1),M>0){if(M&16)ee(R,m,Y,Z,w,A,T);else if(M&2&&Y.class!==Z.class&&o(R,"class",null,Z.class,T),M&4&&o(R,"style",Y.style,Z.style,T),M&8){const re=m.dynamicProps;for(let fe=0;fe{Q&&Ue(Q,w,m,h),z&&ft(m,h,w,"updated")},A)},H=(h,m,w,A,T,I,B)=>{for(let R=0;R{if(w!==A){if(w!==ye)for(const R in w)!Mn(R)&&!(R in A)&&o(h,R,w[R],null,B,m.children,T,I,Re);for(const R in A){if(Mn(R))continue;const M=A[R],P=w[R];M!==P&&R!=="value"&&o(h,R,P,M,B,m.children,T,I,Re)}"value"in A&&o(h,"value",w.value,A.value,B)}},F=(h,m,w,A,T,I,B,R,M)=>{const P=m.el=h?h.el:a(""),z=m.anchor=h?h.anchor:a("");let{patchFlag:Y,dynamicChildren:Z,slotScopeIds:Q}=m;Q&&(R=R?R.concat(Q):Q),h==null?(r(P,w,A),r(z,w,A),N(m.children||[],w,z,T,I,B,R,M)):Y>0&&Y&64&&Z&&h.dynamicChildren?(H(h.dynamicChildren,Z,w,T,I,B,R),(m.key!=null||T&&m===T.subTree)&&Wa(h,m,!0)):G(h,m,w,z,T,I,B,R,M)},J=(h,m,w,A,T,I,B,R,M)=>{m.slotScopeIds=R,h==null?m.shapeFlag&512?T.ctx.activate(m,w,A,B,M):Ee(m,w,A,T,I,B,M):Ce(h,m,M)},Ee=(h,m,w,A,T,I,B)=>{const R=h.component=zf(h,A,T);if(Jn(h)&&(R.ctx.renderer=W),jf(R),R.asyncDep){if(T&&T.registerDep(R,U),!h.el){const M=R.subTree=Se(Qe);b(null,M,m,w)}}else U(R,h,m,w,T,I,B)},Ce=(h,m,w)=>{const A=m.component=h.component;if(Zu(h,m,w))if(A.asyncDep&&!A.asyncResolved){ne(A,m,w);return}else A.next=m,Vu(A.update),A.effect.dirty=!0,A.update();else m.el=h.el,A.vnode=m},U=(h,m,w,A,T,I,B)=>{const R=()=>{if(h.isMounted){let{next:z,bu:Y,u:Z,parent:Q,vnode:re}=h;{const on=Ka(h);if(on){z&&(z.el=re.el,ne(h,z,B)),on.asyncDep.then(()=>{h.isUnmounted||R()});return}}let fe=z,be;jt(h,!1),z?(z.el=re.el,ne(h,z,B)):z=re,Y&&Qr(Y),(be=z.props&&z.props.onVnodeBeforeUpdate)&&Ue(be,Q,z,re),jt(h,!0);const Le=es(h),rt=h.subTree;h.subTree=Le,_(rt,Le,d(rt.el),x(rt),h,T,I),z.el=Le.el,fe===null&&Yu(h,Le.el),Z&&Ne(Z,T),(be=z.props&&z.props.onVnodeUpdated)&&Ne(()=>Ue(be,Q,z,re),T)}else{let z;const{el:Y,props:Z}=m,{bm:Q,m:re,parent:fe}=h,be=$n(m);if(jt(h,!1),Q&&Qr(Q),!be&&(z=Z&&Z.onVnodeBeforeMount)&&Ue(z,fe,m),jt(h,!0),Y&&ge){const Le=()=>{h.subTree=es(h),ge(Y,h.subTree,h,T,null)};be?m.type.__asyncLoader().then(()=>!h.isUnmounted&&Le()):Le()}else{const Le=h.subTree=es(h);_(null,Le,w,A,h,T,I),m.el=Le.el}if(re&&Ne(re,T),!be&&(z=Z&&Z.onVnodeMounted)){const Le=m;Ne(()=>Ue(z,fe,Le),T)}(m.shapeFlag&256||fe&&$n(fe.vnode)&&fe.vnode.shapeFlag&256)&&h.a&&Ne(h.a,T),h.isMounted=!0,m=w=A=null}},M=h.effect=new Zs(R,Ze,()=>zr(P),h.scope),P=h.update=()=>{M.dirty&&M.run()};P.id=h.uid,jt(h,!0),P()},ne=(h,m,w)=>{m.component=h;const A=h.vnode.props;h.vnode=m,h.next=null,Cf(h,m.props,A,w),kf(h,m.children,w),Qt(),zo(h),en()},G=(h,m,w,A,T,I,B,R,M=!1)=>{const P=h&&h.children,z=h?h.shapeFlag:0,Y=m.children,{patchFlag:Z,shapeFlag:Q}=m;if(Z>0){if(Z&128){Tt(P,Y,w,A,T,I,B,R,M);return}else if(Z&256){nt(P,Y,w,A,T,I,B,R,M);return}}Q&8?(z&16&&Re(P,T,I),Y!==P&&u(w,Y)):z&16?Q&16?Tt(P,Y,w,A,T,I,B,R,M):Re(P,T,I,!0):(z&8&&u(w,""),Q&16&&N(Y,w,A,T,I,B,R,M))},nt=(h,m,w,A,T,I,B,R,M)=>{h=h||fn,m=m||fn;const P=h.length,z=m.length,Y=Math.min(P,z);let Z;for(Z=0;Zz?Re(h,T,I,!0,!1,Y):N(m,w,A,T,I,B,R,M,Y)},Tt=(h,m,w,A,T,I,B,R,M)=>{let P=0;const z=m.length;let Y=h.length-1,Z=z-1;for(;P<=Y&&P<=Z;){const Q=h[P],re=m[P]=M?It(m[P]):st(m[P]);if(Gt(Q,re))_(Q,re,w,null,T,I,B,R,M);else break;P++}for(;P<=Y&&P<=Z;){const Q=h[Y],re=m[Z]=M?It(m[Z]):st(m[Z]);if(Gt(Q,re))_(Q,re,w,null,T,I,B,R,M);else break;Y--,Z--}if(P>Y){if(P<=Z){const Q=Z+1,re=QZ)for(;P<=Y;)$e(h[P],T,I,!0),P++;else{const Q=P,re=P,fe=new Map;for(P=re;P<=Z;P++){const Ve=m[P]=M?It(m[P]):st(m[P]);Ve.key!=null&&fe.set(Ve.key,P)}let be,Le=0;const rt=Z-re+1;let on=!1,Ro=0;const Ln=new Array(rt);for(P=0;P=rt){$e(Ve,T,I,!0);continue}let ut;if(Ve.key!=null)ut=fe.get(Ve.key);else for(be=re;be<=Z;be++)if(Ln[be-re]===0&&Gt(Ve,m[be])){ut=be;break}ut===void 0?$e(Ve,T,I,!0):(Ln[ut-re]=P+1,ut>=Ro?Ro=ut:on=!0,_(Ve,m[ut],w,null,T,I,B,R,M),Le++)}const Io=on?If(Ln):fn;for(be=Io.length-1,P=rt-1;P>=0;P--){const Ve=re+P,ut=m[Ve],Oo=Ve+1{const{el:I,type:B,transition:R,children:M,shapeFlag:P}=h;if(P&6){ct(h.component.subTree,m,w,A);return}if(P&128){h.suspense.move(m,w,A);return}if(P&64){B.move(h,m,w,W);return}if(B===We){r(I,m,w);for(let Y=0;YR.enter(I),T);else{const{leave:Y,delayLeave:Z,afterLeave:Q}=R,re=()=>r(I,m,w),fe=()=>{Y(I,()=>{re(),Q&&Q()})};Z?Z(I,re,fe):fe()}else r(I,m,w)},$e=(h,m,w,A=!1,T=!1)=>{const{type:I,props:B,ref:R,children:M,dynamicChildren:P,shapeFlag:z,patchFlag:Y,dirs:Z}=h;if(R!=null&&Rr(R,null,w,h,!0),z&256){m.ctx.deactivate(h);return}const Q=z&1&&Z,re=!$n(h);let fe;if(re&&(fe=B&&B.onVnodeBeforeUnmount)&&Ue(fe,m,h),z&6)lr(h.component,w,A);else{if(z&128){h.suspense.unmount(w,A);return}Q&&ft(h,null,m,"beforeUnmount"),z&64?h.type.remove(h,m,w,T,W,A):P&&(I!==We||Y>0&&Y&64)?Re(P,m,w,!1,!0):(I===We&&Y&384||!T&&z&16)&&Re(M,m,w),A&&rn(h)}(re&&(fe=B&&B.onVnodeUnmounted)||Q)&&Ne(()=>{fe&&Ue(fe,m,h),Q&&ft(h,null,m,"unmounted")},w)},rn=h=>{const{type:m,el:w,anchor:A,transition:T}=h;if(m===We){sn(w,A);return}if(m===Hn){S(h);return}const I=()=>{s(w),T&&!T.persisted&&T.afterLeave&&T.afterLeave()};if(h.shapeFlag&1&&T&&!T.persisted){const{leave:B,delayLeave:R}=T,M=()=>B(w,I);R?R(h.el,I,M):M()}else I()},sn=(h,m)=>{let w;for(;h!==m;)w=p(h),s(h),h=w;s(m)},lr=(h,m,w)=>{const{bum:A,scope:T,update:I,subTree:B,um:R}=h;A&&Qr(A),T.stop(),I&&(I.active=!1,$e(B,h,m,w)),R&&Ne(R,m),Ne(()=>{h.isUnmounted=!0},m),m&&m.pendingBranch&&!m.isUnmounted&&h.asyncDep&&!h.asyncResolved&&h.suspenseId===m.pendingId&&(m.deps--,m.deps===0&&m.resolve())},Re=(h,m,w,A=!1,T=!1,I=0)=>{for(let B=I;Bh.shapeFlag&6?x(h.component.subTree):h.shapeFlag&128?h.suspense.next():p(h.anchor||h.el);let V=!1;const D=(h,m,w)=>{h==null?m._vnode&&$e(m._vnode,null,null,!0):_(m._vnode||null,h,m,null,null,null,w),V||(V=!0,zo(),xr(),V=!1),m._vnode=h},W={p:_,um:$e,m:ct,r:rn,mt:Ee,mc:N,pc:G,pbc:H,n:x,o:e};let ce,ge;return t&&([ce,ge]=t(W)),{render:D,hydrate:ce,createApp:_f(D,ce)}}function ss({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function jt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function ja(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Wa(e,t,n=!1){const r=e.children,s=t.children;if(q(r)&&q(s))for(let o=0;o>1,e[n[a]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,l=n[o-1];o-- >0;)n[o]=l,l=t[l];return n}function Ka(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Ka(t)}const Of=e=>e.__isTeleport,We=Symbol.for("v-fgt"),gn=Symbol.for("v-txt"),Qe=Symbol.for("v-cmt"),Hn=Symbol.for("v-stc"),Fn=[];let ot=null;function Mf(e=!1){Fn.push(ot=e?null:[])}function $f(){Fn.pop(),ot=Fn[Fn.length-1]||null}let Gn=1;function el(e){Gn+=e}function Ga(e){return e.dynamicChildren=Gn>0?ot||fn:null,$f(),Gn>0&&ot&&ot.push(e),e}function V0(e,t,n,r,s,o){return Ga(Za(e,t,n,r,s,o,!0))}function Nf(e,t,n,r,s){return Ga(Se(e,t,n,r,s,!0))}function Ls(e){return e?e.__v_isVNode===!0:!1}function Gt(e,t){return e.type===t.type&&e.key===t.key}const Kr="__vInternal",Ua=({key:e})=>e??null,Er=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ae(e)||Pe(e)||te(e)?{i:Ye,r:e,k:t,f:!!n}:e:null);function Za(e,t=null,n=null,r=0,s=null,o=e===We?0:1,l=!1,a=!1){const i={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Ua(t),ref:t&&Er(t),scopeId:ka,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:Ye};return a?(io(i,n),o&128&&e.normalize(i)):n&&(i.shapeFlag|=ae(n)?8:16),Gn>0&&!l&&ot&&(i.patchFlag>0||o&6)&&i.patchFlag!==32&&ot.push(i),i}const Se=Hf;function Hf(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===qu)&&(e=Qe),Ls(e)){const a=Ft(e,t,!0);return n&&io(a,n),Gn>0&&!o&&ot&&(a.shapeFlag&6?ot[ot.indexOf(e)]=a:ot.push(a)),a.patchFlag|=-2,a}if(Zf(e)&&(e=e.__vccOpts),t){t=Ff(t);let{class:a,style:i}=t;a&&!ae(a)&&(t.class=Us(a)),_e(i)&&(ma(i)&&!q(i)&&(i=ke({},i)),t.style=Gs(i))}const l=ae(e)?1:Ju(e)?128:Of(e)?64:_e(e)?4:te(e)?2:0;return Za(e,t,n,r,s,l,o,!0)}function Ff(e){return e?ma(e)||Kr in e?ke({},e):e:null}function Ft(e,t,n=!1){const{props:r,ref:s,patchFlag:o,children:l}=e,a=t?Df(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&Ua(a),ref:t&&t.ref?n&&s?q(s)?s.concat(Er(t)):[s,Er(t)]:Er(t):s,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==We?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Ft(e.ssContent),ssFallback:e.ssFallback&&Ft(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Ya(e=" ",t=0){return Se(gn,null,e,t)}function z0(e,t){const n=Se(Hn,null,e);return n.staticCount=t,n}function j0(e="",t=!1){return t?(Mf(),Nf(Qe,null,e)):Se(Qe,null,e)}function st(e){return e==null||typeof e=="boolean"?Se(Qe):q(e)?Se(We,null,e.slice()):typeof e=="object"?It(e):Se(gn,null,String(e))}function It(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Ft(e)}function io(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(q(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),io(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!(Kr in t)?t._ctx=Ye:s===3&&Ye&&(Ye.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else te(t)?(t={default:t,_ctx:Ye},n=32):(t=String(t),r&64?(n=16,t=[Ya(t)]):n=8);e.children=t,e.shapeFlag|=n}function Df(...e){const t={};for(let n=0;nAe||Ye;let Ir,As;{const e=ta(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),o=>{s.length>1?s.forEach(l=>l(o)):s[0](o)}};Ir=t("__VUE_INSTANCE_SETTERS__",n=>Ae=n),As=t("__VUE_SSR_SETTERS__",n=>er=n)}const Qn=e=>{const t=Ae;return Ir(e),e.scope.on(),()=>{e.scope.off(),Ir(t)}},tl=()=>{Ae&&Ae.scope.off(),Ir(null)};function qa(e){return e.vnode.shapeFlag&4}let er=!1;function jf(e,t=!1){t&&As(t);const{props:n,children:r}=e.vnode,s=qa(e);Ef(e,n,s,t),Tf(e,r);const o=s?Wf(e,t):void 0;return t&&As(!1),o}function Wf(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=ga(new Proxy(e.ctx,hf));const{setup:r}=n;if(r){const s=e.setupContext=r.length>1?Gf(e):null,o=Qn(e);Qt();const l=Nt(r,e,0,[e.props,s]);if(en(),o(),ea(l)){if(l.then(tl,tl),t)return l.then(a=>{nl(e,a,t)}).catch(a=>{Xn(a,e,0)});e.asyncDep=l}else nl(e,l,t)}else Xa(e,t)}function nl(e,t,n){te(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:_e(t)&&(e.setupState=wa(t)),Xa(e,n)}let rl;function Xa(e,t,n){const r=e.type;if(!e.render){if(!t&&rl&&!r.render){const s=r.template||lo(e).template;if(s){const{isCustomElement:o,compilerOptions:l}=e.appContext.config,{delimiters:a,compilerOptions:i}=r,f=ke(ke({isCustomElement:o,delimiters:a},l),i);r.render=rl(s,f)}}e.render=r.render||Ze}{const s=Qn(e);Qt();try{vf(e)}finally{en(),s()}}}function Kf(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return De(e,"get","$attrs"),t[n]}}))}function Gf(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return Kf(e)},slots:e.slots,emit:e.emit,expose:t}}function co(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(wa(ga(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Nn)return Nn[n](e)},has(t,n){return n in t||n in Nn}}))}function Uf(e,t=!0){return te(e)?e.displayName||e.name:e.name||t&&e.__name}function Zf(e){return te(e)&&"__vccOpts"in e}const k=(e,t)=>Iu(e,t,er);function c(e,t,n){const r=arguments.length;return r===2?_e(t)&&!q(t)?Ls(t)?Se(e,null,[t]):Se(e,t):Se(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Ls(n)&&(n=[n]),Se(e,t,n))}const Yf="3.4.13";/** -* @vue/runtime-dom v3.4.13 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/const qf="http://www.w3.org/2000/svg",Xf="http://www.w3.org/1998/Math/MathML",Ot=typeof document<"u"?document:null,sl=Ot&&Ot.createElement("template"),Jf={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?Ot.createElementNS(qf,e):t==="mathml"?Ot.createElementNS(Xf,e):Ot.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>Ot.createTextNode(e),createComment:e=>Ot.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ot.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const l=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{sl.innerHTML=r==="svg"?`${e}`:r==="mathml"?`${e}`:e;const a=sl.content;if(r==="svg"||r==="mathml"){const i=a.firstChild;for(;i.firstChild;)a.appendChild(i.firstChild);a.removeChild(i)}t.insertBefore(a,n)}return[l?l.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Lt="transition",An="animation",bn=Symbol("_vtc"),Dt=(e,{slots:t})=>c(rf,Qa(e),t);Dt.displayName="Transition";const Ja={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Qf=Dt.props=ke({},Ia,Ja),Wt=(e,t=[])=>{q(e)?e.forEach(n=>n(...t)):e&&e(...t)},ol=e=>e?q(e)?e.some(t=>t.length>1):e.length>1:!1;function Qa(e){const t={};for(const F in e)F in Ja||(t[F]=e[F]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:l=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:i=o,appearActiveClass:f=l,appearToClass:u=a,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:v=`${n}-leave-to`}=e,g=ed(s),_=g&&g[0],E=g&&g[1],{onBeforeEnter:b,onEnter:L,onEnterCancelled:y,onLeave:S,onLeaveCancelled:$,onBeforeAppear:C=b,onAppear:j=L,onAppearCancelled:N=y}=t,O=(F,J,Ee)=>{At(F,J?u:a),At(F,J?f:l),Ee&&Ee()},H=(F,J)=>{F._isLeaving=!1,At(F,d),At(F,v),At(F,p),J&&J()},ee=F=>(J,Ee)=>{const Ce=F?j:L,U=()=>O(J,F,Ee);Wt(Ce,[J,U]),ll(()=>{At(J,F?i:o),vt(J,F?u:a),ol(Ce)||al(J,r,_,U)})};return ke(t,{onBeforeEnter(F){Wt(b,[F]),vt(F,o),vt(F,l)},onBeforeAppear(F){Wt(C,[F]),vt(F,i),vt(F,f)},onEnter:ee(!1),onAppear:ee(!0),onLeave(F,J){F._isLeaving=!0;const Ee=()=>H(F,J);vt(F,d),ti(),vt(F,p),ll(()=>{F._isLeaving&&(At(F,d),vt(F,v),ol(S)||al(F,r,E,Ee))}),Wt(S,[F,Ee])},onEnterCancelled(F){O(F,!1),Wt(y,[F])},onAppearCancelled(F){O(F,!0),Wt(N,[F])},onLeaveCancelled(F){H(F),Wt($,[F])}})}function ed(e){if(e==null)return null;if(_e(e))return[os(e.enter),os(e.leave)];{const t=os(e);return[t,t]}}function os(e){return nu(e)}function vt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[bn]||(e[bn]=new Set)).add(t)}function At(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[bn];n&&(n.delete(t),n.size||(e[bn]=void 0))}function ll(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let td=0;function al(e,t,n,r){const s=e._endId=++td,o=()=>{s===e._endId&&r()};if(n)return setTimeout(o,n);const{type:l,timeout:a,propCount:i}=ei(e,t);if(!l)return r();const f=l+"end";let u=0;const d=()=>{e.removeEventListener(f,p),o()},p=v=>{v.target===e&&++u>=i&&d()};setTimeout(()=>{u(n[g]||"").split(", "),s=r(`${Lt}Delay`),o=r(`${Lt}Duration`),l=il(s,o),a=r(`${An}Delay`),i=r(`${An}Duration`),f=il(a,i);let u=null,d=0,p=0;t===Lt?l>0&&(u=Lt,d=l,p=o.length):t===An?f>0&&(u=An,d=f,p=i.length):(d=Math.max(l,f),u=d>0?l>f?Lt:An:null,p=u?u===Lt?o.length:i.length:0);const v=u===Lt&&/\b(transform|all)(,|$)/.test(r(`${Lt}Property`).toString());return{type:u,timeout:d,propCount:p,hasTransform:v}}function il(e,t){for(;e.lengthcl(n)+cl(e[r])))}function cl(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function ti(){return document.body.offsetHeight}function nd(e,t,n){const r=e[bn];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const rd=Symbol("_vod"),sd=Symbol("");function od(e,t,n){const r=e.style,s=r.display,o=ae(n);if(n&&!o){if(t&&!ae(t))for(const l in t)n[l]==null&&Ps(r,l,"");for(const l in n)Ps(r,l,n[l])}else if(o){if(t!==n){const l=r[sd];l&&(n+=";"+l),r.cssText=n}}else t&&e.removeAttribute("style");rd in e&&(r.display=s)}const ul=/\s*!important$/;function Ps(e,t,n){if(q(n))n.forEach(r=>Ps(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=ld(e,t);ul.test(n)?e.setProperty(En(r),n.replace(ul,""),"important"):e[r]=n}}const fl=["Webkit","Moz","ms"],ls={};function ld(e,t){const n=ls[t];if(n)return n;let r=et(t);if(r!=="filter"&&r in e)return ls[t]=r;r=Yn(r);for(let s=0;sas||(pd.then(()=>as=0),as=Date.now());function vd(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Xe(md(r,n.value),t,5,[r])};return n.value=e,n.attached=hd(),n}function md(e,t){if(q(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const vl=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,gd=(e,t,n,r,s,o,l,a,i)=>{const f=s==="svg";t==="class"?nd(e,r,f):t==="style"?od(e,n,r):Zn(t)?js(t)||fd(e,t,n,r,l):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):bd(e,t,r,f))?id(e,t,r,o,l,a,i):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),ad(e,t,r,f))};function bd(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&vl(t)&&te(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return vl(t)&&ae(n)?!1:t in e}const ni=new WeakMap,ri=new WeakMap,Or=Symbol("_moveCb"),ml=Symbol("_enterCb"),si={name:"TransitionGroup",props:ke({},Qf,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=Sn(),r=Ra();let s,o;return $a(()=>{if(!s.length)return;const l=e.moveClass||`${e.name||"v"}-move`;if(!Sd(s[0].el,n.vnode.el,l))return;s.forEach(_d),s.forEach(Ed);const a=s.filter(Cd);ti(),a.forEach(i=>{const f=i.el,u=f.style;vt(f,l),u.transform=u.webkitTransform=u.transitionDuration="";const d=f[Or]=p=>{p&&p.target!==f||(!p||/transform$/.test(p.propertyName))&&(f.removeEventListener("transitionend",d),f[Or]=null,At(f,l))};f.addEventListener("transitionend",d)})}),()=>{const l=se(e),a=Qa(l);let i=l.tag||We;s=o,o=t.default?so(t.default()):[];for(let f=0;fdelete e.mode;si.props;const wd=si;function _d(e){const t=e.el;t[Or]&&t[Or](),t[ml]&&t[ml]()}function Ed(e){ri.set(e,e.el.getBoundingClientRect())}function Cd(e){const t=ni.get(e),n=ri.get(e),r=t.left-n.left,s=t.top-n.top;if(r||s){const o=e.el.style;return o.transform=o.webkitTransform=`translate(${r}px,${s}px)`,o.transitionDuration="0s",e}}function Sd(e,t,n){const r=e.cloneNode(),s=e[bn];s&&s.forEach(a=>{a.split(/\s+/).forEach(i=>i&&r.classList.remove(i))}),n.split(/\s+/).forEach(a=>a&&r.classList.add(a)),r.style.display="none";const o=t.nodeType===1?t:t.parentNode;o.appendChild(r);const{hasTransform:l}=ei(r);return o.removeChild(r),l}const Td=ke({patchProp:gd},Jf);let is,gl=!1;function kd(){return is=gl?is:Pf(Td),gl=!0,is}const xd=(...e)=>{const t=kd().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=Ad(r);if(s)return n(s,!0,Ld(s))},t};function Ld(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Ad(e){return ae(e)?document.querySelector(e):e}const Pd="modulepreload",Rd=function(e){return"/Minecolonies-Chinese-Wiki/"+e},bl={},he=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){const o=document.getElementsByTagName("link");s=Promise.all(n.map(l=>{if(l=Rd(l),l in bl)return;bl[l]=!0;const a=l.endsWith(".css"),i=a?'[rel="stylesheet"]':"";if(!!r)for(let d=o.length-1;d>=0;d--){const p=o[d];if(p.href===l&&(!a||p.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${l}"]${i}`))return;const u=document.createElement("link");if(u.rel=a?"stylesheet":Pd,a||(u.as="script",u.crossOrigin=""),u.href=l,document.head.appendChild(u),a)return new Promise((d,p)=>{u.addEventListener("load",d),u.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${l}`)))})}))}return s.then(()=>t()).catch(o=>{const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o})},Id={"v-8daa1a0e":()=>he(()=>import("./index.html-yqP3NtEM.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-712c96ac":()=>he(()=>import("./temp.html-8yp40aS7.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-7d932540":()=>he(()=>import("./gdlauncher.html-LPHvh2kO.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3631dba2":()=>he(()=>import("./hmcl.html-DJuZyzNI.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-0932ecbb":()=>he(()=>import("./java.html-b4gnrsFa.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-117ff75c":()=>he(()=>import("./datapacks.html-XoM--KFN.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3d245998":()=>he(()=>import("./getting-started.html-YUNoi4Ak.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-f61210c0":()=>he(()=>import("./schematics.html-ZIiwWZQs.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-dd87a1e0":()=>he(()=>import("./worldgencolonies.html-lvv6_fgg.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3706649a":()=>he(()=>import("./404.html-FzwsIe5I.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-384502bc":()=>he(()=>import("./index.html-VMcSGSDB.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-f45ff45a":()=>he(()=>import("./index.html-4_SvwSbq.js"),__vite__mapDeps([])).then(({data:e})=>e)},Od=JSON.parse('{"base":"/Minecolonies-Chinese-Wiki/","lang":"zh-CN","title":"模拟殖民地 中文Wiki","description":"由爱好者建立的模拟殖民地非官方中文Wiki","head":[],"locales":{}}');var Md=([e,t,n])=>e==="meta"&&t.name?`${e}.${t.name}`:["title","base"].includes(e)?e:e==="template"&&t.id?`${e}.${t.id}`:JSON.stringify([e,t,n]),$d=e=>{const t=new Set,n=[];return e.forEach(r=>{const s=Md(r);t.has(s)||(t.add(s),n.push(r))}),n},Nd=e=>e[0]==="/"?e:`/${e}`,oi=e=>e[e.length-1]==="/"||e.endsWith(".html")?e:`${e}/`,Tn=e=>/^(https?:)?\/\//.test(e),Hd=/.md((\?|#).*)?$/,Mr=(e,t="/")=>!!(Tn(e)||e.startsWith("/")&&!e.startsWith(t)&&!Hd.test(e)),li=e=>/^[a-z][a-z0-9+.-]*:/.test(e),uo=e=>Object.prototype.toString.call(e)==="[object Object]",fo=e=>e[e.length-1]==="/"?e.slice(0,-1):e,ai=e=>e[0]==="/"?e.slice(1):e,Fd=(e,t)=>{const n=Object.keys(e).sort((r,s)=>{const o=s.split("/").length-r.split("/").length;return o!==0?o:s.length-r.length});for(const r of n)if(t.startsWith(r))return r;return"/"};const ii={"v-8daa1a0e":ze(()=>he(()=>import("./index.html-EmnQAaQ8.js"),__vite__mapDeps([0,1]))),"v-712c96ac":ze(()=>he(()=>import("./temp.html-EQReOu7c.js"),__vite__mapDeps([2,1]))),"v-7d932540":ze(()=>he(()=>import("./gdlauncher.html-GCJ8v77L.js"),__vite__mapDeps([3,1]))),"v-3631dba2":ze(()=>he(()=>import("./hmcl.html-hOzTwKg8.js"),__vite__mapDeps([4,1]))),"v-0932ecbb":ze(()=>he(()=>import("./java.html-7czWNuwa.js"),__vite__mapDeps([5,1]))),"v-117ff75c":ze(()=>he(()=>import("./datapacks.html-b79FIvJC.js"),__vite__mapDeps([6,1]))),"v-3d245998":ze(()=>he(()=>import("./getting-started.html-e9ywOSFJ.js"),__vite__mapDeps([7,1]))),"v-f61210c0":ze(()=>he(()=>import("./schematics.html-SSffZR-9.js"),__vite__mapDeps([8,1]))),"v-dd87a1e0":ze(()=>he(()=>import("./worldgencolonies.html-4262Bk1s.js"),__vite__mapDeps([9,1]))),"v-3706649a":ze(()=>he(()=>import("./404.html-ildXd5bb.js"),__vite__mapDeps([10,1]))),"v-384502bc":ze(()=>he(()=>import("./index.html-Ds4LqAQv.js"),__vite__mapDeps([11,1]))),"v-f45ff45a":ze(()=>he(()=>import("./index.html-nt6y7cdN.js"),__vite__mapDeps([12,1])))};var Dd=Symbol(""),ci=Symbol(""),Bd=tn({key:"",path:"",title:"",lang:"",frontmatter:{},headers:[]}),de=()=>{const e=ve(ci);if(!e)throw new Error("pageData() is called without provider.");return e},ui=Symbol(""),xe=()=>{const e=ve(ui);if(!e)throw new Error("usePageFrontmatter() is called without provider.");return e},fi=Symbol(""),Vd=()=>{const e=ve(fi);if(!e)throw new Error("usePageHead() is called without provider.");return e},zd=Symbol(""),di=Symbol(""),pi=()=>{const e=ve(di);if(!e)throw new Error("usePageLang() is called without provider.");return e},hi=Symbol(""),jd=()=>{const e=ve(hi);if(!e)throw new Error("usePageLayout() is called without provider.");return e},Wd=X(Id),po=Symbol(""),nn=()=>{const e=ve(po);if(!e)throw new Error("useRouteLocale() is called without provider.");return e},cn=X(Od),vi=()=>cn,mi=Symbol(""),Gr=()=>{const e=ve(mi);if(!e)throw new Error("useSiteLocaleData() is called without provider.");return e},Kd=Symbol(""),Gd="Layout",Ud="NotFound",mt=qn({resolveLayouts:e=>e.reduce((t,n)=>({...t,...n.layouts}),{}),resolvePageData:async e=>{const t=Wd.value[e];return await(t==null?void 0:t())??Bd},resolvePageFrontmatter:e=>e.frontmatter,resolvePageHead:(e,t,n)=>{const r=ae(t.description)?t.description:n.description,s=[...q(t.head)?t.head:[],...n.head,["title",{},e],["meta",{name:"description",content:r}]];return $d(s)},resolvePageHeadTitle:(e,t)=>[e.title,t.title].filter(n=>!!n).join(" | "),resolvePageLang:(e,t)=>e.lang||t.lang||"en-US",resolvePageLayout:(e,t)=>{let n;if(e.path){const r=e.frontmatter.layout;ae(r)?n=r:n=Gd}else n=Ud;return t[n]},resolveRouteLocale:(e,t)=>Fd(e,t),resolveSiteLocaleData:(e,t)=>({...e,...e.locales[t]})}),Ur=K({name:"ClientOnly",setup(e,t){const n=X(!1);return we(()=>{n.value=!0}),()=>{var r,s;return n.value?(s=(r=t.slots).default)==null?void 0:s.call(r):null}}}),gi=K({name:"Content",props:{pageKey:{type:String,required:!1,default:""}},setup(e){const t=de(),n=k(()=>ii[e.pageKey||t.value.key]);return()=>n.value?c(n.value):c("div","404 Not Found")}}),it=(e={})=>e,Me=e=>Tn(e)?e:`/Minecolonies-Chinese-Wiki/${ai(e)}`;const Zd={};/*! - * vue-router v4.2.5 - * (c) 2023 Eduardo San Martin Morote - * @license MIT - */const ln=typeof window<"u";function Yd(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const ue=Object.assign;function cs(e,t){const n={};for(const r in t){const s=t[r];n[r]=at(s)?s.map(e):e(s)}return n}const Dn=()=>{},at=Array.isArray,qd=/\/$/,Xd=e=>e.replace(qd,"");function us(e,t,n="/"){let r,s={},o="",l="";const a=t.indexOf("#");let i=t.indexOf("?");return a=0&&(i=-1),i>-1&&(r=t.slice(0,i),o=t.slice(i+1,a>-1?a:t.length),s=e(o)),a>-1&&(r=r||t.slice(0,a),l=t.slice(a,t.length)),r=tp(r??t,n),{fullPath:r+(o&&"?")+o+l,path:r,query:s,hash:l}}function Jd(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function yl(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Qd(e,t,n){const r=t.matched.length-1,s=n.matched.length-1;return r>-1&&r===s&&yn(t.matched[r],n.matched[s])&&bi(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function yn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function bi(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!ep(e[n],t[n]))return!1;return!0}function ep(e,t){return at(e)?wl(e,t):at(t)?wl(t,e):e===t}function wl(e,t){return at(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function tp(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),s=r[r.length-1];(s===".."||s===".")&&r.push("");let o=n.length-1,l,a;for(l=0;l1&&o--;else break;return n.slice(0,o).join("/")+"/"+r.slice(l-(l===r.length?1:0)).join("/")}var Un;(function(e){e.pop="pop",e.push="push"})(Un||(Un={}));var Bn;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Bn||(Bn={}));function np(e){if(!e)if(ln){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Xd(e)}const rp=/^[^#]+#/;function sp(e,t){return e.replace(rp,"#")+t}function op(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const Zr=()=>({left:window.pageXOffset,top:window.pageYOffset});function lp(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),s=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=op(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.pageXOffset,t.top!=null?t.top:window.pageYOffset)}function _l(e,t){return(history.state?history.state.position-t:-1)+e}const Rs=new Map;function ap(e,t){Rs.set(e,t)}function ip(e){const t=Rs.get(e);return Rs.delete(e),t}let cp=()=>location.protocol+"//"+location.host;function yi(e,t){const{pathname:n,search:r,hash:s}=t,o=e.indexOf("#");if(o>-1){let a=s.includes(e.slice(o))?e.slice(o).length:1,i=s.slice(a);return i[0]!=="/"&&(i="/"+i),yl(i,"")}return yl(n,e)+r+s}function up(e,t,n,r){let s=[],o=[],l=null;const a=({state:p})=>{const v=yi(e,location),g=n.value,_=t.value;let E=0;if(p){if(n.value=v,t.value=p,l&&l===g){l=null;return}E=_?p.position-_.position:0}else r(v);s.forEach(b=>{b(n.value,g,{delta:E,type:Un.pop,direction:E?E>0?Bn.forward:Bn.back:Bn.unknown})})};function i(){l=n.value}function f(p){s.push(p);const v=()=>{const g=s.indexOf(p);g>-1&&s.splice(g,1)};return o.push(v),v}function u(){const{history:p}=window;p.state&&p.replaceState(ue({},p.state,{scroll:Zr()}),"")}function d(){for(const p of o)p();o=[],window.removeEventListener("popstate",a),window.removeEventListener("beforeunload",u)}return window.addEventListener("popstate",a),window.addEventListener("beforeunload",u,{passive:!0}),{pauseListeners:i,listen:f,destroy:d}}function El(e,t,n,r=!1,s=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:s?Zr():null}}function fp(e){const{history:t,location:n}=window,r={value:yi(e,n)},s={value:t.state};s.value||o(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(i,f,u){const d=e.indexOf("#"),p=d>-1?(n.host&&document.querySelector("base")?e:e.slice(d))+i:cp()+e+i;try{t[u?"replaceState":"pushState"](f,"",p),s.value=f}catch(v){console.error(v),n[u?"replace":"assign"](p)}}function l(i,f){const u=ue({},t.state,El(s.value.back,i,s.value.forward,!0),f,{position:s.value.position});o(i,u,!0),r.value=i}function a(i,f){const u=ue({},s.value,t.state,{forward:i,scroll:Zr()});o(u.current,u,!0);const d=ue({},El(r.value,i,null),{position:u.position+1},f);o(i,d,!1),r.value=i}return{location:r,state:s,push:a,replace:l}}function dp(e){e=np(e);const t=fp(e),n=up(e,t.state,t.location,t.replace);function r(o,l=!0){l||n.pauseListeners(),history.go(o)}const s=ue({location:"",base:e,go:r,createHref:sp.bind(null,e)},t,n);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}function pp(e){return typeof e=="string"||e&&typeof e=="object"}function wi(e){return typeof e=="string"||typeof e=="symbol"}const gt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},_i=Symbol("");var Cl;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Cl||(Cl={}));function wn(e,t){return ue(new Error,{type:e,[_i]:!0},t)}function ht(e,t){return e instanceof Error&&_i in e&&(t==null||!!(e.type&t))}const Sl="[^/]+?",hp={sensitive:!1,strict:!1,start:!0,end:!0},vp=/[.+*?^${}()[\]/\\]/g;function mp(e,t){const n=ue({},hp,t),r=[];let s=n.start?"^":"";const o=[];for(const f of e){const u=f.length?[]:[90];n.strict&&!f.length&&(s+="/");for(let d=0;dt.length?t.length===1&&t[0]===80?1:-1:0}function bp(e,t){let n=0;const r=e.score,s=t.score;for(;n0&&t[t.length-1]<0}const yp={type:0,value:""},wp=/[a-zA-Z0-9_]/;function _p(e){if(!e)return[[]];if(e==="/")return[[yp]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(v){throw new Error(`ERR (${n})/"${f}": ${v}`)}let n=0,r=n;const s=[];let o;function l(){o&&s.push(o),o=[]}let a=0,i,f="",u="";function d(){f&&(n===0?o.push({type:0,value:f}):n===1||n===2||n===3?(o.length>1&&(i==="*"||i==="+")&&t(`A repeatable param (${f}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:f,regexp:u,repeatable:i==="*"||i==="+",optional:i==="*"||i==="?"})):t("Invalid state to consume buffer"),f="")}function p(){f+=i}for(;a{l(L)}:Dn}function l(u){if(wi(u)){const d=r.get(u);d&&(r.delete(u),n.splice(n.indexOf(d),1),d.children.forEach(l),d.alias.forEach(l))}else{const d=n.indexOf(u);d>-1&&(n.splice(d,1),u.record.name&&r.delete(u.record.name),u.children.forEach(l),u.alias.forEach(l))}}function a(){return n}function i(u){let d=0;for(;d=0&&(u.record.path!==n[d].record.path||!Ei(u,n[d]));)d++;n.splice(d,0,u),u.record.name&&!xl(u)&&r.set(u.record.name,u)}function f(u,d){let p,v={},g,_;if("name"in u&&u.name){if(p=r.get(u.name),!p)throw wn(1,{location:u});_=p.record.name,v=ue(kl(d.params,p.keys.filter(L=>!L.optional).map(L=>L.name)),u.params&&kl(u.params,p.keys.map(L=>L.name))),g=p.stringify(v)}else if("path"in u)g=u.path,p=n.find(L=>L.re.test(g)),p&&(v=p.parse(g),_=p.record.name);else{if(p=d.name?r.get(d.name):n.find(L=>L.re.test(d.path)),!p)throw wn(1,{location:u,currentLocation:d});_=p.record.name,v=ue({},d.params,u.params),g=p.stringify(v)}const E=[];let b=p;for(;b;)E.unshift(b.record),b=b.parent;return{name:_,path:g,params:v,matched:E,meta:kp(E)}}return e.forEach(u=>o(u)),{addRoute:o,resolve:f,removeRoute:l,getRoutes:a,getRecordMatcher:s}}function kl(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function Sp(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:Tp(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function Tp(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function xl(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function kp(e){return e.reduce((t,n)=>ue(t,n.meta),{})}function Ll(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function Ei(e,t){return t.children.some(n=>n===e||Ei(e,n))}const Ci=/#/g,xp=/&/g,Lp=/\//g,Ap=/=/g,Pp=/\?/g,Si=/\+/g,Rp=/%5B/g,Ip=/%5D/g,Ti=/%5E/g,Op=/%60/g,ki=/%7B/g,Mp=/%7C/g,xi=/%7D/g,$p=/%20/g;function ho(e){return encodeURI(""+e).replace(Mp,"|").replace(Rp,"[").replace(Ip,"]")}function Np(e){return ho(e).replace(ki,"{").replace(xi,"}").replace(Ti,"^")}function Is(e){return ho(e).replace(Si,"%2B").replace($p,"+").replace(Ci,"%23").replace(xp,"%26").replace(Op,"`").replace(ki,"{").replace(xi,"}").replace(Ti,"^")}function Hp(e){return Is(e).replace(Ap,"%3D")}function Fp(e){return ho(e).replace(Ci,"%23").replace(Pp,"%3F")}function Dp(e){return e==null?"":Fp(e).replace(Lp,"%2F")}function $r(e){try{return decodeURIComponent(""+e)}catch{}return""+e}function Bp(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;so&&Is(o)):[r&&Is(r)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+n,o!=null&&(t+="="+o))})}return t}function Vp(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=at(r)?r.map(s=>s==null?null:""+s):r==null?r:""+r)}return t}const zp=Symbol(""),Pl=Symbol(""),Yr=Symbol(""),vo=Symbol(""),Os=Symbol("");function Pn(){let e=[];function t(r){return e.push(r),()=>{const s=e.indexOf(r);s>-1&&e.splice(s,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Mt(e,t,n,r,s){const o=r&&(r.enterCallbacks[s]=r.enterCallbacks[s]||[]);return()=>new Promise((l,a)=>{const i=d=>{d===!1?a(wn(4,{from:n,to:t})):d instanceof Error?a(d):pp(d)?a(wn(2,{from:t,to:d})):(o&&r.enterCallbacks[s]===o&&typeof d=="function"&&o.push(d),l())},f=e.call(r&&r.instances[s],t,n,i);let u=Promise.resolve(f);e.length<3&&(u=u.then(i)),u.catch(d=>a(d))})}function fs(e,t,n,r){const s=[];for(const o of e)for(const l in o.components){let a=o.components[l];if(!(t!=="beforeRouteEnter"&&!o.instances[l]))if(jp(a)){const f=(a.__vccOpts||a)[t];f&&s.push(Mt(f,n,r,o,l))}else{let i=a();s.push(()=>i.then(f=>{if(!f)return Promise.reject(new Error(`Couldn't resolve component "${l}" at "${o.path}"`));const u=Yd(f)?f.default:f;o.components[l]=u;const p=(u.__vccOpts||u)[t];return p&&Mt(p,n,r,o,l)()}))}}return s}function jp(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Ms(e){const t=ve(Yr),n=ve(vo),r=k(()=>t.resolve(qt(e.to))),s=k(()=>{const{matched:i}=r.value,{length:f}=i,u=i[f-1],d=n.matched;if(!u||!d.length)return-1;const p=d.findIndex(yn.bind(null,u));if(p>-1)return p;const v=Rl(i[f-2]);return f>1&&Rl(u)===v&&d[d.length-1].path!==v?d.findIndex(yn.bind(null,i[f-2])):p}),o=k(()=>s.value>-1&&Up(n.params,r.value.params)),l=k(()=>s.value>-1&&s.value===n.matched.length-1&&bi(n.params,r.value.params));function a(i={}){return Gp(i)?t[qt(e.replace)?"replace":"push"](qt(e.to)).catch(Dn):Promise.resolve()}return{route:r,href:k(()=>r.value.href),isActive:o,isExactActive:l,navigate:a}}const Wp=K({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:Ms,setup(e,{slots:t}){const n=qn(Ms(e)),{options:r}=ve(Yr),s=k(()=>({[Il(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[Il(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&t.default(n);return e.custom?o:c("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:s.value},o)}}}),Kp=Wp;function Gp(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Up(e,t){for(const n in t){const r=t[n],s=e[n];if(typeof r=="string"){if(r!==s)return!1}else if(!at(s)||s.length!==r.length||r.some((o,l)=>o!==s[l]))return!1}return!0}function Rl(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Il=(e,t,n)=>e??t??n,Zp=K({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=ve(Os),s=k(()=>e.route||r.value),o=ve(Pl,0),l=k(()=>{let f=qt(o);const{matched:u}=s.value;let d;for(;(d=u[f])&&!d.components;)f++;return f}),a=k(()=>s.value.matched[l.value]);Xt(Pl,k(()=>l.value+1)),Xt(zp,a),Xt(Os,s);const i=X();return ie(()=>[i.value,a.value,e.name],([f,u,d],[p,v,g])=>{u&&(u.instances[d]=f,v&&v!==u&&f&&f===p&&(u.leaveGuards.size||(u.leaveGuards=v.leaveGuards),u.updateGuards.size||(u.updateGuards=v.updateGuards))),f&&u&&(!v||!yn(u,v)||!p)&&(u.enterCallbacks[d]||[]).forEach(_=>_(f))},{flush:"post"}),()=>{const f=s.value,u=e.name,d=a.value,p=d&&d.components[u];if(!p)return Ol(n.default,{Component:p,route:f});const v=d.props[u],g=v?v===!0?f.params:typeof v=="function"?v(f):v:null,E=c(p,ue({},g,t,{onVnodeUnmounted:b=>{b.component.isUnmounted&&(d.instances[u]=null)},ref:i}));return Ol(n.default,{Component:E,route:f})||E}}});function Ol(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Li=Zp;function Yp(e){const t=Cp(e.routes,e),n=e.parseQuery||Bp,r=e.stringifyQuery||Al,s=e.history,o=Pn(),l=Pn(),a=Pn(),i=lt(gt);let f=gt;ln&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=cs.bind(null,x=>""+x),d=cs.bind(null,Dp),p=cs.bind(null,$r);function v(x,V){let D,W;return wi(x)?(D=t.getRecordMatcher(x),W=V):W=x,t.addRoute(W,D)}function g(x){const V=t.getRecordMatcher(x);V&&t.removeRoute(V)}function _(){return t.getRoutes().map(x=>x.record)}function E(x){return!!t.getRecordMatcher(x)}function b(x,V){if(V=ue({},V||i.value),typeof x=="string"){const m=us(n,x,V.path),w=t.resolve({path:m.path},V),A=s.createHref(m.fullPath);return ue(m,w,{params:p(w.params),hash:$r(m.hash),redirectedFrom:void 0,href:A})}let D;if("path"in x)D=ue({},x,{path:us(n,x.path,V.path).path});else{const m=ue({},x.params);for(const w in m)m[w]==null&&delete m[w];D=ue({},x,{params:d(m)}),V.params=d(V.params)}const W=t.resolve(D,V),ce=x.hash||"";W.params=u(p(W.params));const ge=Jd(r,ue({},x,{hash:Np(ce),path:W.path})),h=s.createHref(ge);return ue({fullPath:ge,hash:ce,query:r===Al?Vp(x.query):x.query||{}},W,{redirectedFrom:void 0,href:h})}function L(x){return typeof x=="string"?us(n,x,i.value.path):ue({},x)}function y(x,V){if(f!==x)return wn(8,{from:V,to:x})}function S(x){return j(x)}function $(x){return S(ue(L(x),{replace:!0}))}function C(x){const V=x.matched[x.matched.length-1];if(V&&V.redirect){const{redirect:D}=V;let W=typeof D=="function"?D(x):D;return typeof W=="string"&&(W=W.includes("?")||W.includes("#")?W=L(W):{path:W},W.params={}),ue({query:x.query,hash:x.hash,params:"path"in W?{}:x.params},W)}}function j(x,V){const D=f=b(x),W=i.value,ce=x.state,ge=x.force,h=x.replace===!0,m=C(D);if(m)return j(ue(L(m),{state:typeof m=="object"?ue({},ce,m.state):ce,force:ge,replace:h}),V||D);const w=D;w.redirectedFrom=V;let A;return!ge&&Qd(r,W,D)&&(A=wn(16,{to:w,from:W}),ct(W,W,!0,!1)),(A?Promise.resolve(A):H(w,W)).catch(T=>ht(T)?ht(T,2)?T:Tt(T):G(T,w,W)).then(T=>{if(T){if(ht(T,2))return j(ue({replace:h},L(T.to),{state:typeof T.to=="object"?ue({},ce,T.to.state):ce,force:ge}),V||w)}else T=F(w,W,!0,h,ce);return ee(w,W,T),T})}function N(x,V){const D=y(x,V);return D?Promise.reject(D):Promise.resolve()}function O(x){const V=sn.values().next().value;return V&&typeof V.runWithContext=="function"?V.runWithContext(x):x()}function H(x,V){let D;const[W,ce,ge]=qp(x,V);D=fs(W.reverse(),"beforeRouteLeave",x,V);for(const m of W)m.leaveGuards.forEach(w=>{D.push(Mt(w,x,V))});const h=N.bind(null,x,V);return D.push(h),Re(D).then(()=>{D=[];for(const m of o.list())D.push(Mt(m,x,V));return D.push(h),Re(D)}).then(()=>{D=fs(ce,"beforeRouteUpdate",x,V);for(const m of ce)m.updateGuards.forEach(w=>{D.push(Mt(w,x,V))});return D.push(h),Re(D)}).then(()=>{D=[];for(const m of ge)if(m.beforeEnter)if(at(m.beforeEnter))for(const w of m.beforeEnter)D.push(Mt(w,x,V));else D.push(Mt(m.beforeEnter,x,V));return D.push(h),Re(D)}).then(()=>(x.matched.forEach(m=>m.enterCallbacks={}),D=fs(ge,"beforeRouteEnter",x,V),D.push(h),Re(D))).then(()=>{D=[];for(const m of l.list())D.push(Mt(m,x,V));return D.push(h),Re(D)}).catch(m=>ht(m,8)?m:Promise.reject(m))}function ee(x,V,D){a.list().forEach(W=>O(()=>W(x,V,D)))}function F(x,V,D,W,ce){const ge=y(x,V);if(ge)return ge;const h=V===gt,m=ln?history.state:{};D&&(W||h?s.replace(x.fullPath,ue({scroll:h&&m&&m.scroll},ce)):s.push(x.fullPath,ce)),i.value=x,ct(x,V,D,h),Tt()}let J;function Ee(){J||(J=s.listen((x,V,D)=>{if(!lr.listening)return;const W=b(x),ce=C(W);if(ce){j(ue(ce,{replace:!0}),W).catch(Dn);return}f=W;const ge=i.value;ln&&ap(_l(ge.fullPath,D.delta),Zr()),H(W,ge).catch(h=>ht(h,12)?h:ht(h,2)?(j(h.to,W).then(m=>{ht(m,20)&&!D.delta&&D.type===Un.pop&&s.go(-1,!1)}).catch(Dn),Promise.reject()):(D.delta&&s.go(-D.delta,!1),G(h,W,ge))).then(h=>{h=h||F(W,ge,!1),h&&(D.delta&&!ht(h,8)?s.go(-D.delta,!1):D.type===Un.pop&&ht(h,20)&&s.go(-1,!1)),ee(W,ge,h)}).catch(Dn)}))}let Ce=Pn(),U=Pn(),ne;function G(x,V,D){Tt(x);const W=U.list();return W.length?W.forEach(ce=>ce(x,V,D)):console.error(x),Promise.reject(x)}function nt(){return ne&&i.value!==gt?Promise.resolve():new Promise((x,V)=>{Ce.add([x,V])})}function Tt(x){return ne||(ne=!x,Ee(),Ce.list().forEach(([V,D])=>x?D(x):V()),Ce.reset()),x}function ct(x,V,D,W){const{scrollBehavior:ce}=e;if(!ln||!ce)return Promise.resolve();const ge=!D&&ip(_l(x.fullPath,0))||(W||!D)&&history.state&&history.state.scroll||null;return Bt().then(()=>ce(x,V,ge)).then(h=>h&&lp(h)).catch(h=>G(h,x,V))}const $e=x=>s.go(x);let rn;const sn=new Set,lr={currentRoute:i,listening:!0,addRoute:v,removeRoute:g,hasRoute:E,getRoutes:_,resolve:b,options:e,push:S,replace:$,go:$e,back:()=>$e(-1),forward:()=>$e(1),beforeEach:o.add,beforeResolve:l.add,afterEach:a.add,onError:U.add,isReady:nt,install(x){const V=this;x.component("RouterLink",Kp),x.component("RouterView",Li),x.config.globalProperties.$router=V,Object.defineProperty(x.config.globalProperties,"$route",{enumerable:!0,get:()=>qt(i)}),ln&&!rn&&i.value===gt&&(rn=!0,S(s.location).catch(ce=>{}));const D={};for(const ce in gt)Object.defineProperty(D,ce,{get:()=>i.value[ce],enumerable:!0});x.provide(Yr,V),x.provide(vo,va(D)),x.provide(Os,i);const W=x.unmount;sn.add(x),x.unmount=function(){sn.delete(x),sn.size<1&&(f=gt,J&&J(),J=null,i.value=gt,rn=!1,ne=!1),W()}}};function Re(x){return x.reduce((V,D)=>V.then(()=>O(D)),Promise.resolve())}return lr}function qp(e,t){const n=[],r=[],s=[],o=Math.max(t.matched.length,e.matched.length);for(let l=0;lyn(f,a))?r.push(a):n.push(a));const i=e.matched[l];i&&(t.matched.find(f=>yn(f,i))||s.push(i))}return[n,r,s]}function tt(){return ve(Yr)}function St(){return ve(vo)}const me=({name:e="",color:t="currentColor"},{slots:n})=>{var r;return c("svg",{xmlns:"http://www.w3.org/2000/svg",class:["icon",`${e}-icon`],viewBox:"0 0 1024 1024",fill:t,"aria-label":`${e} icon`},(r=n.default)==null?void 0:r.call(n))};me.displayName="IconBase";const Ai=(e,{slots:t})=>{var n;return(n=t.default)==null?void 0:n.call(t)},Xp=e=>[/\((ipad);[-\w),; ]+apple/i,/applecoremedia\/[\w.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i].some(t=>t.test(e)),Jp=e=>[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/cfnetwork\/.+darwin/i].some(t=>t.test(e)),Qp=e=>[/(mac os x) ?([\w. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i].some(t=>t.test(e)),eh=(e="")=>{if(e){if(typeof e=="number")return new Date(e);const t=Date.parse(e.toString());if(!Number.isNaN(t))return new Date(t)}return null},Pi=(e,t)=>{let n=1;for(let r=0;r>6;return n+=n<<3,n^=n>>11,n%t},Ri=Array.isArray,th=e=>typeof e=="function",nh=e=>typeof e=="string";var mo=e=>/^(https?:)?\/\//.test(e),rh=/.md((\?|#).*)?$/,sh=(e,t="/")=>!!(mo(e)||e.startsWith("/")&&!e.startsWith(t)&&!rh.test(e)),Ii=e=>Object.prototype.toString.call(e)==="[object Object]";function oh(){const e=X(!1);return Sn()&&we(()=>{e.value=!0}),e}function lh(e){return oh(),k(()=>!!e())}const ds=e=>typeof e=="number",Et=e=>typeof e=="string",Jt=(e,t)=>Et(e)&&e.startsWith(t),mr=(e,t)=>Et(e)&&e.endsWith(t),Oi=Object.entries,ah=Object.fromEntries,tr=Object.keys,ih=e=>(e.endsWith(".md")&&(e=`${e.slice(0,-3)}.html`),!e.endsWith("/")&&!e.endsWith(".html")&&(e=`${e}.html`),e=e.replace(/(^|\/)(?:README|index).html$/i,"$1"),e),Mi=e=>{const[t,n=""]=e.split("#");return t?`${ih(t)}${n?`#${n}`:""}`:e},Ml=e=>Ii(e)&&Et(e.name),$l=(e,t=!1)=>e?Ri(e)?e.map(n=>Et(n)?{name:n}:Ml(n)?n:null).filter(n=>n!==null):Et(e)?[{name:e}]:Ml(e)?[e]:(console.error(`Expect "author" to be \`AuthorInfo[] | AuthorInfo | string[] | string ${t?"":"| false"} | undefined\`, but got`,e),[]):[],$i=(e,t)=>{if(e){if(Ri(e)&&e.every(Et))return e;if(Et(e))return[e];console.error(`Expect ${t||"value"} to be \`string[] | string | undefined\`, but got`,e)}return[]},ch=e=>$i(e,"category"),uh=e=>$i(e,"tag"),qr=e=>Jt(e,"/"),Ni=/#.*$/u,fh=e=>{const t=Ni.exec(e);return t?t[0]:""},Nl=e=>decodeURI(e).replace(Ni,"").replace(/(index)?\.html$/i,"").replace(/(README|index)?\.md$/i,""),Hi=(e,t)=>{if(t===void 0)return!1;const n=Nl(e.path),r=Nl(t),s=fh(t);return s?s===e.hash&&(!r||n===r):n===r},dh=e=>mo(e)?e:`https://github.com/${e}`,Fi=e=>!mo(e)||/github\.com/.test(e)?"GitHub":/bitbucket\.org/.test(e)?"Bitbucket":/gitlab\.com/.test(e)?"GitLab":/gitee\.com/.test(e)?"Gitee":null,Nr=(e,...t)=>{const n=e.resolve(...t),r=n.matched[n.matched.length-1];if(!(r!=null&&r.redirect))return n;const{redirect:s}=r,o=th(s)?s(n):s,l=nh(o)?{path:o}:o;return Nr(e,{hash:n.hash,query:n.query,params:n.params,...l})},ph=e=>{var t;if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)&&!(e.currentTarget&&((t=e.currentTarget.getAttribute("target"))!=null&&t.match(/\b_blank\b/i))))return e.preventDefault(),!0},qe=({to:e="",class:t="",...n},{slots:r})=>{var a;const s=tt(),o=Mi(e),l=(i={})=>ph(i)?s.push(e).catch():Promise.resolve();return c("a",{...n,class:["vp-link",t],href:Jt(o,"/")?Me(o):o,onClick:l},(a=r.default)==null?void 0:a.call(r))};qe.displayName="VPLink";const Di=()=>c(me,{name:"github"},()=>c("path",{d:"M511.957 21.333C241.024 21.333 21.333 240.981 21.333 512c0 216.832 140.544 400.725 335.574 465.664 24.49 4.395 32.256-10.07 32.256-23.083 0-11.69.256-44.245 0-85.205-136.448 29.61-164.736-64.64-164.736-64.64-22.315-56.704-54.4-71.765-54.4-71.765-44.587-30.464 3.285-29.824 3.285-29.824 49.195 3.413 75.179 50.517 75.179 50.517 43.776 75.008 114.816 53.333 142.762 40.79 4.523-31.66 17.152-53.377 31.19-65.537-108.971-12.458-223.488-54.485-223.488-242.602 0-53.547 19.114-97.323 50.517-131.67-5.035-12.33-21.93-62.293 4.779-129.834 0 0 41.258-13.184 134.912 50.346a469.803 469.803 0 0 1 122.88-16.554c41.642.213 83.626 5.632 122.88 16.554 93.653-63.488 134.784-50.346 134.784-50.346 26.752 67.541 9.898 117.504 4.864 129.834 31.402 34.347 50.474 78.123 50.474 131.67 0 188.586-114.73 230.016-224.042 242.09 17.578 15.232 33.578 44.672 33.578 90.454v135.85c0 13.142 7.936 27.606 32.854 22.87C862.25 912.597 1002.667 728.747 1002.667 512c0-271.019-219.648-490.667-490.71-490.667z"}));Di.displayName="GitHubIcon";const Bi=()=>c(me,{name:"gitlab"},()=>c("path",{d:"M229.333 78.688C223.52 62 199.895 62 193.895 78.688L87.958 406.438h247.5c-.188 0-106.125-327.75-106.125-327.75zM33.77 571.438c-4.875 15 .563 31.687 13.313 41.25l464.812 345L87.77 406.438zm301.5-165 176.813 551.25 176.812-551.25zm655.125 165-54-165-424.312 551.25 464.812-345c12.938-9.563 18.188-26.25 13.5-41.25zM830.27 78.688c-5.812-16.688-29.437-16.688-35.437 0l-106.125 327.75h247.5z"}));Bi.displayName="GitLabIcon";const Vi=()=>c(me,{name:"gitee"},()=>c("path",{d:"M512 992C246.92 992 32 777.08 32 512S246.92 32 512 32s480 214.92 480 480-214.92 480-480 480zm242.97-533.34H482.39a23.7 23.7 0 0 0-23.7 23.7l-.03 59.28c0 13.08 10.59 23.7 23.7 23.7h165.96a23.7 23.7 0 0 1 23.7 23.7v11.85a71.1 71.1 0 0 1-71.1 71.1H375.71a23.7 23.7 0 0 1-23.7-23.7V423.11a71.1 71.1 0 0 1 71.1-71.1h331.8a23.7 23.7 0 0 0 23.7-23.7l.06-59.25a23.73 23.73 0 0 0-23.7-23.73H423.11a177.78 177.78 0 0 0-177.78 177.75v331.83c0 13.08 10.62 23.7 23.7 23.7h349.62a159.99 159.99 0 0 0 159.99-159.99V482.33a23.7 23.7 0 0 0-23.7-23.7z"}));Vi.displayName="GiteeIcon";const zi=()=>c(me,{name:"bitbucket"},()=>c("path",{d:"M575.256 490.862c6.29 47.981-52.005 85.723-92.563 61.147-45.714-20.004-45.714-92.562-1.133-113.152 38.29-23.442 93.696 7.424 93.696 52.005zm63.451-11.996c-10.276-81.152-102.29-134.839-177.152-101.156-47.433 21.138-79.433 71.424-77.129 124.562 2.853 69.705 69.157 126.866 138.862 120.576S647.3 548.571 638.708 478.83zm136.558-309.723c-25.161-33.134-67.986-38.839-105.728-45.13-106.862-17.151-216.576-17.7-323.438 1.134-35.438 5.706-75.447 11.996-97.719 43.996 36.572 34.304 88.576 39.424 135.424 45.129 84.553 10.862 171.447 11.447 256 .585 47.433-5.705 99.987-10.276 135.424-45.714zm32.585 591.433c-16.018 55.99-6.839 131.438-66.304 163.986-102.29 56.576-226.304 62.867-338.87 42.862-59.43-10.862-129.135-29.696-161.72-85.723-14.3-54.858-23.442-110.848-32.585-166.84l3.438-9.142 10.276-5.157c170.277 112.567 408.576 112.567 579.438 0 26.844 8.01 6.84 40.558 6.29 60.014zm103.424-549.157c-19.42 125.148-41.728 249.71-63.415 374.272-6.29 36.572-41.728 57.162-71.424 72.558-106.862 53.724-231.424 62.866-348.562 50.286-79.433-8.558-160.585-29.696-225.134-79.433-30.28-23.443-30.28-63.415-35.986-97.134-20.005-117.138-42.862-234.277-57.161-352.585 6.839-51.42 64.585-73.728 107.447-89.71 57.16-21.138 118.272-30.866 178.87-36.571 129.134-12.58 261.157-8.01 386.304 28.562 44.581 13.13 92.563 31.415 122.844 69.705 13.714 17.7 9.143 40.01 6.29 60.014z"}));zi.displayName="BitbucketIcon";const ji=()=>c(me,{name:"source"},()=>c("path",{d:"M601.92 475.2c0 76.428-8.91 83.754-28.512 99.594-14.652 11.88-43.956 14.058-78.012 16.434-18.81 1.386-40.392 2.97-62.172 6.534-18.612 2.97-36.432 9.306-53.064 17.424V299.772c37.818-21.978 63.36-62.766 63.36-109.692 0-69.894-56.826-126.72-126.72-126.72S190.08 120.186 190.08 190.08c0 46.926 25.542 87.714 63.36 109.692v414.216c-37.818 21.978-63.36 62.766-63.36 109.692 0 69.894 56.826 126.72 126.72 126.72s126.72-56.826 126.72-126.72c0-31.086-11.286-59.598-29.7-81.576 13.266-9.504 27.522-17.226 39.996-19.206 16.038-2.574 32.868-3.762 50.688-5.148 48.312-3.366 103.158-7.326 148.896-44.55 61.182-49.698 74.25-103.158 75.24-187.902V475.2h-126.72zM316.8 126.72c34.848 0 63.36 28.512 63.36 63.36s-28.512 63.36-63.36 63.36-63.36-28.512-63.36-63.36 28.512-63.36 63.36-63.36zm0 760.32c-34.848 0-63.36-28.512-63.36-63.36s28.512-63.36 63.36-63.36 63.36 28.512 63.36 63.36-28.512 63.36-63.36 63.36zM823.68 158.4h-95.04V63.36h-126.72v95.04h-95.04v126.72h95.04v95.04h126.72v-95.04h95.04z"}));ji.displayName="SourceIcon";const wt=(e,t)=>{var r;const n=(r=(t==null?void 0:t._instance)||Sn())==null?void 0:r.appContext.components;return n?e in n||et(e)in n||Yn(et(e))in n:!1},hh=()=>lh(()=>typeof window<"u"&&window.navigator&&"userAgent"in window.navigator),Wi=()=>{const e=hh();return k(()=>e.value&&/\b(?:Android|iPhone)/i.test(navigator.userAgent))},Vt=e=>{const t=nn();return k(()=>e[t.value])},Ki=({type:e="info",text:t="",vertical:n,color:r},{slots:s})=>{var o;return c("span",{class:["vp-badge",e,{diy:r}],style:{verticalAlign:n??!1,backgroundColor:r??!1}},((o=s.default)==null?void 0:o.call(s))||t)};Ki.displayName="Badge";var vh=K({name:"FontIcon",props:{icon:{type:String,default:""},color:{type:String,default:""},size:{type:[String,Number],default:""}},setup(e){const t=k(()=>{const r=["font-icon icon"],s=`${e.icon}`;return r.push(s),r}),n=k(()=>{const r={};return e.color&&(r.color=e.color),e.size&&(r["font-size"]=Number.isNaN(Number(e.size))?e.size:`${e.size}px`),tr(r).length?r:null});return()=>e.icon?c("span",{key:e.icon,class:t.value,style:n.value}):null}});function Hl(e,t){var n;const r=lt();return Aa(()=>{r.value=e()},{...t,flush:(n=t==null?void 0:t.flush)!=null?n:"sync"}),tn(r)}function go(e,t){let n,r,s;const o=X(!0),l=()=>{o.value=!0,s()};ie(e,l,{flush:"sync"});const a=typeof t=="function"?t:t.get,i=typeof t=="function"?void 0:t.set,f=_a((u,d)=>(r=u,s=d,{get(){return o.value&&(n=a(),o.value=!1),r(),n},set(p){i==null||i(p)}}));return Object.isExtensible(f)&&(f.trigger=l),f}function kn(e){return ra()?(fu(e),!0):!1}function He(e){return typeof e=="function"?e():qt(e)}const nr=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const mh=Object.prototype.toString,gh=e=>mh.call(e)==="[object Object]",_t=()=>{},$s=bh();function bh(){var e,t;return nr&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function bo(e,t){function n(...r){return new Promise((s,o)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(s).catch(o)})}return n}const Gi=e=>e();function yh(e,t={}){let n,r,s=_t;const o=a=>{clearTimeout(a),s(),s=_t};return a=>{const i=He(e),f=He(t.maxWait);return n&&o(n),i<=0||f!==void 0&&f<=0?(r&&(o(r),r=null),Promise.resolve(a())):new Promise((u,d)=>{s=t.rejectOnCancel?d:u,f&&!r&&(r=setTimeout(()=>{n&&o(n),r=null,u(a())},f)),n=setTimeout(()=>{r&&o(r),r=null,u(a())},i)})}}function wh(e,t=!0,n=!0,r=!1){let s=0,o,l=!0,a=_t,i;const f=()=>{o&&(clearTimeout(o),o=void 0,a(),a=_t)};return d=>{const p=He(e),v=Date.now()-s,g=()=>i=d();return f(),p<=0?(s=Date.now(),g()):(v>p&&(n||!l)?(s=Date.now(),g()):t&&(i=new Promise((_,E)=>{a=r?E:_,o=setTimeout(()=>{s=Date.now(),l=!0,_(g()),f()},Math.max(0,p-v))})),!n&&!o&&(o=setTimeout(()=>l=!0,p)),l=!1,i)}}function _h(e=Gi){const t=X(!0);function n(){t.value=!1}function r(){t.value=!0}const s=(...o)=>{t.value&&e(...o)};return{isActive:tn(t),pause:n,resume:r,eventFilter:s}}function Eh(e){let t;function n(){return t||(t=e()),t}return n.reset=async()=>{const r=t;t=void 0,r&&await r},n}function Ch(e){return e||Sn()}function Sh(...e){if(e.length!==1)return Vr(...e);const t=e[0];return typeof t=="function"?tn(_a(()=>({get:t,set:_t}))):X(t)}function Th(e,t=200,n={}){return bo(yh(t,n),e)}function kh(e,t=200,n=!1,r=!0,s=!1){return bo(wh(t,n,r,s),e)}function xh(e,t,n={}){const{eventFilter:r=Gi,...s}=n;return ie(e,bo(r,t),s)}function Lh(e,t,n={}){const{eventFilter:r,...s}=n,{eventFilter:o,pause:l,resume:a,isActive:i}=_h(r);return{stop:xh(e,t,{...s,eventFilter:o}),pause:l,resume:a,isActive:i}}function yo(e,t=!0,n){Ch()?we(e,n):t?e():Bt(e)}function Ah(e,t,n={}){const{immediate:r=!0}=n,s=X(!1);let o=null;function l(){o&&(clearTimeout(o),o=null)}function a(){s.value=!1,l()}function i(...f){l(),s.value=!0,o=setTimeout(()=>{s.value=!1,o=null,e(...f)},He(t))}return r&&(s.value=!0,nr&&i()),kn(a),{isPending:tn(s),start:i,stop:a}}function Fl(e=!1,t={}){const{truthyValue:n=!0,falsyValue:r=!1}=t,s=Pe(e),o=X(e);function l(a){if(arguments.length)return o.value=a,o.value;{const i=He(n);return o.value=o.value===i?He(r):i,o.value}}return s?l:[o,l]}function Ke(e){var t;const n=He(e);return(t=n==null?void 0:n.$el)!=null?t:n}const pt=nr?window:void 0,Ph=nr?window.document:void 0,Ui=nr?window.navigator:void 0;function Te(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=pt):[t,n,r,s]=e,!t)return _t;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const o=[],l=()=>{o.forEach(u=>u()),o.length=0},a=(u,d,p,v)=>(u.addEventListener(d,p,v),()=>u.removeEventListener(d,p,v)),i=ie(()=>[Ke(t),He(s)],([u,d])=>{if(l(),!u)return;const p=gh(d)?{...d}:d;o.push(...n.flatMap(v=>r.map(g=>a(u,v,g,p))))},{immediate:!0,flush:"post"}),f=()=>{i(),l()};return kn(f),f}let Dl=!1;function Rh(e,t,n={}){const{window:r=pt,ignore:s=[],capture:o=!0,detectIframe:l=!1}=n;if(!r)return _t;$s&&!Dl&&(Dl=!0,Array.from(r.document.body.children).forEach(p=>p.addEventListener("click",_t)),r.document.documentElement.addEventListener("click",_t));let a=!0;const i=p=>s.some(v=>{if(typeof v=="string")return Array.from(r.document.querySelectorAll(v)).some(g=>g===p.target||p.composedPath().includes(g));{const g=Ke(v);return g&&(p.target===g||p.composedPath().includes(g))}}),u=[Te(r,"click",p=>{const v=Ke(e);if(!(!v||v===p.target||p.composedPath().includes(v))){if(p.detail===0&&(a=!i(p)),!a){a=!0;return}t(p)}},{passive:!0,capture:o}),Te(r,"pointerdown",p=>{const v=Ke(e);a=!i(p)&&!!(v&&!p.composedPath().includes(v))},{passive:!0}),l&&Te(r,"blur",p=>{setTimeout(()=>{var v;const g=Ke(e);((v=r.document.activeElement)==null?void 0:v.tagName)==="IFRAME"&&!(g!=null&&g.contains(r.document.activeElement))&&t(p)},0)})].filter(Boolean);return()=>u.forEach(p=>p())}function Ih(){const e=X(!1);return Sn()&&we(()=>{e.value=!0}),e}function rr(e){const t=Ih();return k(()=>(t.value,!!e()))}function Zi(e,t={}){const{window:n=pt}=t,r=rr(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const o=X(!1),l=f=>{o.value=f.matches},a=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",l):s.removeListener(l))},i=Aa(()=>{r.value&&(a(),s=n.matchMedia(He(e)),"addEventListener"in s?s.addEventListener("change",l):s.addListener(l),o.value=s.matches)});return kn(()=>{i(),a(),s=void 0}),o}function Bl(e,t={}){const{controls:n=!1,navigator:r=Ui}=t,s=rr(()=>r&&"permissions"in r);let o;const l=typeof e=="string"?{name:e}:e,a=X(),i=()=>{o&&(a.value=o.state)},f=Eh(async()=>{if(s.value){if(!o)try{o=await r.permissions.query(l),Te(o,"change",i),i()}catch{a.value="prompt"}return o}});return f(),n?{state:a,isSupported:s,query:f}:a}function Oh(e={}){const{navigator:t=Ui,read:n=!1,source:r,copiedDuring:s=1500,legacy:o=!1}=e,l=rr(()=>t&&"clipboard"in t),a=Bl("clipboard-read"),i=Bl("clipboard-write"),f=k(()=>l.value||o),u=X(""),d=X(!1),p=Ah(()=>d.value=!1,s);function v(){l.value&&a.value!=="denied"?t.clipboard.readText().then(b=>{u.value=b}):u.value=E()}f.value&&n&&Te(["copy","cut"],v);async function g(b=He(r)){f.value&&b!=null&&(l.value&&i.value!=="denied"?await t.clipboard.writeText(b):_(b),u.value=b,d.value=!0,p.start())}function _(b){const L=document.createElement("textarea");L.value=b??"",L.style.position="absolute",L.style.opacity="0",document.body.appendChild(L),L.select(),document.execCommand("copy"),L.remove()}function E(){var b,L,y;return(y=(L=(b=document==null?void 0:document.getSelection)==null?void 0:b.call(document))==null?void 0:L.toString())!=null?y:""}return{isSupported:f,text:u,copied:d,copy:g}}const gr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},br="__vueuse_ssr_handlers__",Mh=$h();function $h(){return br in gr||(gr[br]=gr[br]||{}),gr[br]}function Nh(e,t){return Mh[e]||t}function Hh(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Fh={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Vl="vueuse-storage";function Yi(e,t,n,r={}){var s;const{flush:o="pre",deep:l=!0,listenToStorageChanges:a=!0,writeDefaults:i=!0,mergeDefaults:f=!1,shallow:u,window:d=pt,eventFilter:p,onError:v=O=>{console.error(O)},initOnMounted:g}=r,_=(u?lt:X)(typeof t=="function"?t():t);if(!n)try{n=Nh("getDefaultStorage",()=>{var O;return(O=pt)==null?void 0:O.localStorage})()}catch(O){v(O)}if(!n)return _;const E=He(t),b=Hh(E),L=(s=r.serializer)!=null?s:Fh[b],{pause:y,resume:S}=Lh(_,()=>$(_.value),{flush:o,deep:l,eventFilter:p});return d&&a&&yo(()=>{Te(d,"storage",N),Te(d,Vl,j),g&&N()}),g||N(),_;function $(O){try{if(O==null)n.removeItem(e);else{const H=L.write(O),ee=n.getItem(e);ee!==H&&(n.setItem(e,H),d&&d.dispatchEvent(new CustomEvent(Vl,{detail:{key:e,oldValue:ee,newValue:H,storageArea:n}})))}}catch(H){v(H)}}function C(O){const H=O?O.newValue:n.getItem(e);if(H==null)return i&&E!=null&&n.setItem(e,L.write(E)),E;if(!O&&f){const ee=L.read(H);return typeof f=="function"?f(ee,E):b==="object"&&!Array.isArray(ee)?{...E,...ee}:ee}else return typeof H!="string"?H:L.read(H)}function j(O){N(O.detail)}function N(O){if(!(O&&O.storageArea!==n)){if(O&&O.key==null){_.value=E;return}if(!(O&&O.key!==e)){y();try{(O==null?void 0:O.newValue)!==L.write(_.value)&&(_.value=C(O))}catch(H){v(H)}finally{O?Bt(S):S()}}}}}function Dh(e){return Zi("(prefers-color-scheme: dark)",e)}function Bh(e,t,n={}){const{window:r=pt,...s}=n;let o;const l=rr(()=>r&&"ResizeObserver"in r),a=()=>{o&&(o.disconnect(),o=void 0)},i=k(()=>Array.isArray(e)?e.map(d=>Ke(d)):[Ke(e)]),f=ie(i,d=>{if(a(),l.value&&r){o=new ResizeObserver(t);for(const p of d)p&&o.observe(p,s)}},{immediate:!0,flush:"post",deep:!0}),u=()=>{a(),f()};return kn(u),{isSupported:l,stop:u}}function Vh(e,t={width:0,height:0},n={}){const{window:r=pt,box:s="content-box"}=n,o=k(()=>{var d,p;return(p=(d=Ke(e))==null?void 0:d.namespaceURI)==null?void 0:p.includes("svg")}),l=X(t.width),a=X(t.height),{stop:i}=Bh(e,([d])=>{const p=s==="border-box"?d.borderBoxSize:s==="content-box"?d.contentBoxSize:d.devicePixelContentBoxSize;if(r&&o.value){const v=Ke(e);if(v){const g=r.getComputedStyle(v);l.value=Number.parseFloat(g.width),a.value=Number.parseFloat(g.height)}}else if(p){const v=Array.isArray(p)?p:[p];l.value=v.reduce((g,{inlineSize:_})=>g+_,0),a.value=v.reduce((g,{blockSize:_})=>g+_,0)}else l.value=d.contentRect.width,a.value=d.contentRect.height},n);yo(()=>{const d=Ke(e);d&&(l.value="offsetWidth"in d?d.offsetWidth:t.width,a.value="offsetHeight"in d?d.offsetHeight:t.height)});const f=ie(()=>Ke(e),d=>{l.value=d?t.width:0,a.value=d?t.height:0});function u(){i(),f()}return{width:l,height:a,stop:u}}const zl=["fullscreenchange","webkitfullscreenchange","webkitendfullscreen","mozfullscreenchange","MSFullscreenChange"];function wo(e,t={}){const{document:n=Ph,autoExit:r=!1}=t,s=k(()=>{var b;return(b=Ke(e))!=null?b:n==null?void 0:n.querySelector("html")}),o=X(!1),l=k(()=>["requestFullscreen","webkitRequestFullscreen","webkitEnterFullscreen","webkitEnterFullScreen","webkitRequestFullScreen","mozRequestFullScreen","msRequestFullscreen"].find(b=>n&&b in n||s.value&&b in s.value)),a=k(()=>["exitFullscreen","webkitExitFullscreen","webkitExitFullScreen","webkitCancelFullScreen","mozCancelFullScreen","msExitFullscreen"].find(b=>n&&b in n||s.value&&b in s.value)),i=k(()=>["fullScreen","webkitIsFullScreen","webkitDisplayingFullscreen","mozFullScreen","msFullscreenElement"].find(b=>n&&b in n||s.value&&b in s.value)),f=["fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement"].find(b=>n&&b in n),u=rr(()=>s.value&&n&&l.value!==void 0&&a.value!==void 0&&i.value!==void 0),d=()=>f?(n==null?void 0:n[f])===s.value:!1,p=()=>{if(i.value){if(n&&n[i.value]!=null)return n[i.value];{const b=s.value;if((b==null?void 0:b[i.value])!=null)return!!b[i.value]}}return!1};async function v(){if(!(!u.value||!o.value)){if(a.value)if((n==null?void 0:n[a.value])!=null)await n[a.value]();else{const b=s.value;(b==null?void 0:b[a.value])!=null&&await b[a.value]()}o.value=!1}}async function g(){if(!u.value||o.value)return;p()&&await v();const b=s.value;l.value&&(b==null?void 0:b[l.value])!=null&&(await b[l.value](),o.value=!0)}async function _(){await(o.value?v():g())}const E=()=>{const b=p();(!b||b&&d())&&(o.value=b)};return Te(n,zl,E,!1),Te(()=>Ke(s),zl,E,!1),r&&kn(v),{isSupported:u,isFullscreen:o,enter:g,exit:v,toggle:_}}function ps(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function W0(e,t,n={}){const{window:r=pt}=n;return Yi(e,t,r==null?void 0:r.localStorage,n)}function qi(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const yr=new WeakMap;function _o(e,t=!1){const n=X(t);let r=null,s;ie(Sh(e),a=>{const i=ps(He(a));if(i){const f=i;yr.get(f)||yr.set(f,s),n.value&&(f.style.overflow="hidden")}},{immediate:!0});const o=()=>{const a=ps(He(e));!a||n.value||($s&&(r=Te(a,"touchmove",i=>{zh(i)},{passive:!1})),a.style.overflow="hidden",n.value=!0)},l=()=>{var a;const i=ps(He(e));!i||!n.value||($s&&(r==null||r()),i.style.overflow=(a=yr.get(i))!=null?a:"",yr.delete(i),n.value=!1)};return kn(l),k({get(){return n.value},set(a){a?o():l()}})}function jh(e={}){const{window:t=pt,behavior:n="auto"}=e;if(!t)return{x:X(0),y:X(0)};const r=X(t.scrollX),s=X(t.scrollY),o=k({get(){return r.value},set(a){scrollTo({left:a,behavior:n})}}),l=k({get(){return s.value},set(a){scrollTo({top:a,behavior:n})}});return Te(t,"scroll",()=>{r.value=t.scrollX,s.value=t.scrollY},{capture:!1,passive:!0}),{x:o,y:l}}function Wh(e={}){const{window:t=pt,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:r=Number.POSITIVE_INFINITY,listenOrientation:s=!0,includeScrollbar:o=!0}=e,l=X(n),a=X(r),i=()=>{t&&(o?(l.value=t.innerWidth,a.value=t.innerHeight):(l.value=t.document.documentElement.clientWidth,a.value=t.document.documentElement.clientHeight))};if(i(),yo(i),Te("resize",i,{passive:!0}),s){const f=Zi("(orientation: portrait)");ie(f,()=>i())}return{width:l,height:a}}const Xi=()=>c(me,{name:"back-to-top"},()=>[c("path",{d:"M512 843.2c-36.2 0-66.4-13.6-85.8-21.8-10.8-4.6-22.6 3.6-21.8 15.2l7 102c.4 6.2 7.6 9.4 12.6 5.6l29-22c3.6-2.8 9-1.8 11.4 2l41 64.2c3 4.8 10.2 4.8 13.2 0l41-64.2c2.4-3.8 7.8-4.8 11.4-2l29 22c5 3.8 12.2.6 12.6-5.6l7-102c.8-11.6-11-20-21.8-15.2-19.6 8.2-49.6 21.8-85.8 21.8z"}),c("path",{d:"m795.4 586.2-96-98.2C699.4 172 513 32 513 32S324.8 172 324.8 488l-96 98.2c-3.6 3.6-5.2 9-4.4 14.2L261.2 824c1.8 11.4 14.2 17 23.6 10.8L419 744s41.4 40 94.2 40c52.8 0 92.2-40 92.2-40l134.2 90.8c9.2 6.2 21.6.6 23.6-10.8l37-223.8c.4-5.2-1.2-10.4-4.8-14zM513 384c-34 0-61.4-28.6-61.4-64s27.6-64 61.4-64c34 0 61.4 28.6 61.4 64S547 384 513 384z"})]);Xi.displayName="BackToTopIcon";var Kh={"/":{backToTop:"返回顶部"}},Gh=K({name:"BackToTop",props:{threshold:{type:Number,default:100},noProgress:Boolean},setup(e){const t=xe(),n=Vt(Kh),r=lt(),{height:s}=Vh(r),{height:o}=Wh(),{y:l}=jh(),a=k(()=>t.value.backToTop!==!1&&l.value>e.threshold),i=k(()=>l.value/(s.value-o.value)*100);return we(()=>{r.value=document.body}),()=>c(Dt,{name:"fade"},()=>a.value?c("button",{type:"button",class:"vp-back-to-top-button","aria-label":n.value.backToTop,"data-balloon-pos":"left",onClick:()=>{window.scrollTo({top:0,behavior:"smooth"})}},[e.noProgress?null:c("span",{class:"vp-scroll-progress",role:"progressbar","aria-labelledby":"loadinglabel","aria-valuenow":i.value},c("svg",c("circle",{cx:"50%",cy:"50%",style:{"stroke-dasharray":`calc(${Math.PI*i.value}% - ${4*Math.PI}px) calc(${Math.PI*100}% - ${4*Math.PI}px)`}}))),c(Xi)]):null)}});const Uh=it({enhance:({app:e})=>{wt("Badge")||e.component("Badge",Ki),wt("FontIcon")||e.component("FontIcon",vh)},setup:()=>{},rootComponents:[()=>c(Gh,{})]});function Zh(e,t,n){var r,s,o;t===void 0&&(t=50),n===void 0&&(n={});var l=(r=n.isImmediate)!=null&&r,a=(s=n.callback)!=null&&s,i=n.maxWait,f=Date.now(),u=[];function d(){if(i!==void 0){var v=Date.now()-f;if(v+t>=i)return i-v}return t}var p=function(){var v=[].slice.call(arguments),g=this;return new Promise(function(_,E){var b=l&&o===void 0;if(o!==void 0&&clearTimeout(o),o=setTimeout(function(){if(o=void 0,f=Date.now(),!l){var y=e.apply(g,v);a&&a(y),u.forEach(function(S){return(0,S.resolve)(y)}),u=[]}},d()),b){var L=e.apply(g,v);return a&&a(L),_(L)}u.push({resolve:_,reject:E})})};return p.cancel=function(v){o!==void 0&&clearTimeout(o),u.forEach(function(g){return(0,g.reject)(v)}),u=[]},p}const Yh=({headerLinkSelector:e,headerAnchorSelector:t,delay:n,offset:r=5})=>{const s=tt(),l=Zh(()=>{var _,E;const a=Math.max(window.scrollY,document.documentElement.scrollTop,document.body.scrollTop);if(Math.abs(a-0)p.some(L=>L.hash===b.hash));for(let b=0;b=(((_=L.parentElement)==null?void 0:_.offsetTop)??0)-r,$=!y||a<(((E=y.parentElement)==null?void 0:E.offsetTop)??0)-r;if(!(S&&$))continue;const j=decodeURIComponent(s.currentRoute.value.hash),N=decodeURIComponent(L.hash);if(j===N)return;if(d){for(let O=b+1;O{window.addEventListener("scroll",l)}),oo(()=>{window.removeEventListener("scroll",l)})},jl=async(e,t)=>{const{scrollBehavior:n}=e.options;e.options.scrollBehavior=void 0,await e.replace({query:e.currentRoute.value.query,hash:t}).finally(()=>e.options.scrollBehavior=n)},qh=".vp-sidebar-link, .toc-link",Xh=".header-anchor",Jh=200,Qh=5,e1=it({setup(){Yh({headerLinkSelector:qh,headerAnchorSelector:Xh,delay:Jh,offset:Qh})}});let Ji=e=>ae(e.title)?{title:e.title}:null;const Qi=Symbol(""),t1=e=>{Ji=e},n1=()=>ve(Qi),r1=e=>{e.provide(Qi,Ji)};var s1={"/":{title:"目录",empty:"暂无目录"}},o1=K({name:"AutoCatalog",props:{base:{type:String,default:""},level:{type:Number,default:3},index:Boolean,hideHeading:Boolean},setup(e){const t=n1(),n=Vt(s1),r=de(),s=tt(),o=vi(),l=X(s.getRoutes().map(({meta:f,path:u})=>{const d=t(f);if(!d)return null;const p=u.split("/").length;return{level:mr(u,"/")?p-2:p-1,base:u.replace(/\/[^/]+\/?$/,"/"),path:u,...d}}).filter(f=>Ii(f)&&ae(f.title))),a=()=>{const f=e.base?Nd(oi(e.base)):r.value.path.replace(/\/[^/]+$/,"/"),u=f.split("/").length-2,d=[];return l.value.filter(({level:p,path:v})=>{if(!Jt(v,f)||v===f)return!1;if(f==="/"){const g=tr(o.value.locales).filter(_=>_!=="/");if(v==="/404.html"||g.some(_=>Jt(v,_)))return!1}return p-u<=e.level&&(mr(v,".html")&&!mr(v,"/index.html")||mr(v,"/"))}).sort(({title:p,level:v,order:g},{title:_,level:E,order:b})=>v-E||(ds(g)?ds(b)?g>0?b>0?g-b:-1:b<0?g-b:1:g:ds(b)?b:p.localeCompare(_))).forEach(p=>{var _;const{base:v,level:g}=p;switch(g-u){case 1:d.push(p);break;case 2:{const E=d.find(b=>b.path===v);E&&(E.children??(E.children=[])).push(p);break}default:{const E=d.find(b=>b.path===v.replace(/\/[^/]+\/$/,"/"));if(E){const b=(_=E.children)==null?void 0:_.find(L=>L.path===v);b&&(b.children??(b.children=[])).push(p)}}}}),d},i=k(()=>a());return()=>{const f=i.value.some(u=>u.children);return c("div",{class:["vp-catalog-wrapper",{index:e.index}]},[e.hideHeading?null:c("h2",{class:"vp-catalog-main-title"},n.value.title),i.value.length?c(e.index?"ol":"ul",{class:["vp-catalogs",{deep:f}]},i.value.map(({children:u=[],title:d,path:p,content:v})=>{const g=c(qe,{class:"vp-catalog-title",to:p},()=>v?c(v):d);return c("li",{class:"vp-catalog"},f?[c("h3",{id:d,class:["vp-catalog-child-title",{"has-children":u.length}]},[c("a",{href:`#${d}`,class:"header-anchor","aria-hidden":!0},"#"),g]),u.length?c(e.index?"ol":"ul",{class:"vp-child-catalogs"},u.map(({children:_=[],content:E,path:b,title:L})=>c("li",{class:"vp-child-catalog"},[c("div",{class:["vp-catalog-sub-title",{"has-children":_.length}]},[c("a",{href:`#${L}`,class:"header-anchor"},"#"),c(qe,{class:"vp-catalog-title",to:b},()=>E?c(E):L)]),_.length?c(e.index?"ol":"div",{class:e.index?"vp-sub-catalogs":"vp-sub-catalogs-wrapper"},_.map(({content:y,path:S,title:$})=>e.index?c("li",{class:"vp-sub-catalog"},c(qe,{to:S},()=>y?c(y):$)):c(qe,{class:"vp-sub-catalog-link",to:S},()=>y?c(y):$))):null]))):null]:c("div",{class:"vp-catalog-child-title"},g))})):c("p",{class:"vp-empty-catalog"},n.value.empty)])}}}),l1=it({enhance:({app:e})=>{r1(e),wt("AutoCatalog",e)||e.component("AutoCatalog",o1)}});const a1=c("svg",{class:"external-link-icon",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"},[c("path",{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}),c("polygon",{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"})]),ec=K({name:"ExternalLinkIcon",props:{locales:{type:Object,required:!1,default:()=>({})}},setup(e){const t=nn(),n=k(()=>e.locales[t.value]??{openInNewWindow:"open in new window"});return()=>c("span",[a1,c("span",{class:"external-link-icon-sr-only"},n.value.openInNewWindow)])}});var i1={};const c1=i1,u1=it({enhance({app:e}){e.component("ExternalLinkIcon",c(ec,{locales:c1}))}});/** - * NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress - * @license MIT - */const oe={settings:{minimum:.08,easing:"ease",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,barSelector:'[role="bar"]',parent:"body",template:'
'},status:null,set:e=>{const t=oe.isStarted();e=hs(e,oe.settings.minimum,1),oe.status=e===1?null:e;const n=oe.render(!t),r=n.querySelector(oe.settings.barSelector),s=oe.settings.speed,o=oe.settings.easing;return n.offsetWidth,f1(l=>{wr(r,{transform:"translate3d("+Wl(e)+"%,0,0)",transition:"all "+s+"ms "+o}),e===1?(wr(n,{transition:"none",opacity:"1"}),n.offsetWidth,setTimeout(function(){wr(n,{transition:"all "+s+"ms linear",opacity:"0"}),setTimeout(function(){oe.remove(),l()},s)},s)):setTimeout(()=>l(),s)}),oe},isStarted:()=>typeof oe.status=="number",start:()=>{oe.status||oe.set(0);const e=()=>{setTimeout(()=>{oe.status&&(oe.trickle(),e())},oe.settings.trickleSpeed)};return oe.settings.trickle&&e(),oe},done:e=>!e&&!oe.status?oe:oe.inc(.3+.5*Math.random()).set(1),inc:e=>{let t=oe.status;return t?(typeof e!="number"&&(e=(1-t)*hs(Math.random()*t,.1,.95)),t=hs(t+e,0,.994),oe.set(t)):oe.start()},trickle:()=>oe.inc(Math.random()*oe.settings.trickleRate),render:e=>{if(oe.isRendered())return document.getElementById("nprogress");Kl(document.documentElement,"nprogress-busy");const t=document.createElement("div");t.id="nprogress",t.innerHTML=oe.settings.template;const n=t.querySelector(oe.settings.barSelector),r=e?"-100":Wl(oe.status||0),s=document.querySelector(oe.settings.parent);return wr(n,{transition:"all 0 linear",transform:"translate3d("+r+"%,0,0)"}),s!==document.body&&Kl(s,"nprogress-custom-parent"),s==null||s.appendChild(t),t},remove:()=>{Gl(document.documentElement,"nprogress-busy"),Gl(document.querySelector(oe.settings.parent),"nprogress-custom-parent");const e=document.getElementById("nprogress");e&&d1(e)},isRendered:()=>!!document.getElementById("nprogress")},hs=(e,t,n)=>en?n:e,Wl=e=>(-1+e)*100,f1=function(){const e=[];function t(){const n=e.shift();n&&n(t)}return function(n){e.push(n),e.length===1&&t()}}(),wr=function(){const e=["Webkit","O","Moz","ms"],t={};function n(l){return l.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(a,i){return i.toUpperCase()})}function r(l){const a=document.body.style;if(l in a)return l;let i=e.length;const f=l.charAt(0).toUpperCase()+l.slice(1);let u;for(;i--;)if(u=e[i]+f,u in a)return u;return l}function s(l){return l=n(l),t[l]??(t[l]=r(l))}function o(l,a,i){a=s(a),l.style[a]=i}return function(l,a){for(const i in a){const f=a[i];f!==void 0&&Object.prototype.hasOwnProperty.call(a,i)&&o(l,i,f)}}}(),tc=(e,t)=>(typeof e=="string"?e:Eo(e)).indexOf(" "+t+" ")>=0,Kl=(e,t)=>{const n=Eo(e),r=n+t;tc(n,t)||(e.className=r.substring(1))},Gl=(e,t)=>{const n=Eo(e);if(!tc(e,t))return;const r=n.replace(" "+t+" "," ");e.className=r.substring(1,r.length-1)},Eo=e=>(" "+(e.className||"")+" ").replace(/\s+/gi," "),d1=e=>{e&&e.parentNode&&e.parentNode.removeChild(e)},p1=()=>{we(()=>{const e=tt(),t=new Set;t.add(e.currentRoute.value.path),e.beforeEach(n=>{t.has(n.path)||oe.start()}),e.afterEach(n=>{t.add(n.path),oe.done()})})},h1=it({setup(){p1()}}),v1=JSON.parse('{"encrypt":{},"logo":"./assets/image/minecolonies_wiki.png","pageInfo":["Original","Date","Category","Tag","Word","ReadingTime"],"locales":{"/":{"lang":"zh-CN","navbarLocales":{"langName":"简体中文","selectLangAriaLabel":"选择语言"},"metaLocales":{"author":"作者","date":"写作日期","origin":"原创","views":"访问量","category":"分类","tag":"标签","readingTime":"阅读时间","words":"字数","toc":"此页内容","prev":"上一页","next":"下一页","lastUpdated":"上次编辑于","contributors":"贡献者","editLink":"编辑此页","print":"打印"},"outlookLocales":{"themeColor":"主题色","darkmode":"外观","fullscreen":"全屏"},"routeLocales":{"skipToContent":"跳至主要內容","notFoundTitle":"页面不存在","notFoundMsg":["这里什么也没有","我们是怎么来到这儿的?","这 是 四 零 四 !","看起来你访问了一个失效的链接"],"back":"返回上一页","home":"带我回家","openInNewWindow":"Open in new window"},"navbar":[{"text":"主页","link":"/"},{"text":"安装","prefix":"Installation/","link":"","children":["gdlauncher","java","hmcl"]},{"text":"教程","prefix":"Tutorials/","children":["getting-started","datapacks","schematics","worldgencolonies"]}],"sidebar":{"/Installation/":"structure","/Tutorials/":"structure","/":["start"]}}}}'),m1=X(v1),nc=()=>m1,rc=Symbol(""),g1=()=>{const e=ve(rc);if(!e)throw new Error("useThemeLocaleData() is called without provider.");return e},b1=(e,t)=>{const{locales:n,...r}=e;return{...r,...n==null?void 0:n[t]}},y1=it({enhance({app:e}){const t=nc(),n=e._context.provides[po],r=k(()=>b1(t.value,n.value));e.provide(rc,r),Object.defineProperties(e.config.globalProperties,{$theme:{get(){return t.value}},$themeLocale:{get(){return r.value}}})}});var w1={"/":{copy:"复制代码",copied:"已复制",hint:"复制成功"}},_1=['.theme-hope-content div[class*="language-"] pre'];const E1=800,C1=2e3,S1=w1,T1=_1,Ul=!1,vs=new Map,k1=()=>{const{copy:e}=Oh({legacy:!0}),t=Vt(S1),n=de(),r=Wi(),s=a=>{if(!a.hasAttribute("copy-code-registered")){const i=document.createElement("button");i.type="button",i.classList.add("copy-code-button"),i.innerHTML='
',i.setAttribute("aria-label",t.value.copy),i.setAttribute("data-copied",t.value.copied),a.parentElement&&a.parentElement.insertBefore(i,a),a.setAttribute("copy-code-registered","")}},o=()=>Bt().then(()=>new Promise(a=>{setTimeout(()=>{T1.forEach(i=>{document.querySelectorAll(i).forEach(s)}),a()},E1)})),l=(a,i,f)=>{let{innerText:u=""}=i;/language-(shellscript|shell|bash|sh|zsh)/.test(a.classList.toString())&&(u=u.replace(/^ *(\$|>) /gm,"")),e(u).then(()=>{f.classList.add("copied"),clearTimeout(vs.get(f));const d=setTimeout(()=>{f.classList.remove("copied"),f.blur(),vs.delete(f)},C1);vs.set(f,d)})};we(()=>{(!r.value||Ul)&&o(),Te("click",a=>{const i=a.target;if(i.matches('div[class*="language-"] > button.copy')){const f=i.parentElement,u=i.nextElementSibling;u&&l(f,u,i)}else if(i.matches('div[class*="language-"] div.copy-icon')){const f=i.parentElement,u=f.parentElement,d=f.nextElementSibling;d&&l(u,d,f)}}),ie(()=>n.value.path,()=>{(!r.value||Ul)&&o()})})};var x1=it({setup:()=>{k1()}});const L1=()=>{Te("beforeprint",()=>{document.querySelectorAll("details").forEach(e=>{e.open=!0})})},A1=it({enhance:({app:e})=>{},setup:()=>{L1()}});let P1={};const sc=Symbol(""),R1=()=>ve(sc),I1=e=>{e.provide(sc,P1)};var O1={"/":{closeTitle:"关闭",downloadTitle:"下载图片",fullscreenTitle:"切换全屏",zoomTitle:"缩放",arrowPrevTitle:"上一个 (左箭头)",arrowNextTitle:"下一个 (右箭头)"}};const M1=".theme-hope-content :not(a) > img:not([no-view])",$1=O1,N1=800,H1='
',F1=e=>ae(e)?Array.from(document.querySelectorAll(e)):e.map(t=>Array.from(document.querySelectorAll(t))).flat(),oc=e=>new Promise((t,n)=>{e.complete?t({type:"image",element:e,src:e.src,width:e.naturalWidth,height:e.naturalHeight,alt:e.alt,msrc:e.src}):(e.onload=()=>t(oc(e)),e.onerror=r=>n(r))}),D1=()=>{const e=Vt($1),t=xe(),n=de(),{isSupported:r,toggle:s}=wo(),o=R1();let l;const a=k(()=>t.value.photoSwipe===!1?!1:t.value.photoSwipe||M1),i=u=>{u.on("uiRegister",()=>{r&&u.ui.registerElement({name:"fullscreen",order:7,isButton:!0,html:'',onClick:()=>{s()}}),u.ui.registerElement({name:"download",order:8,isButton:!0,tagName:"a",html:{isCustomSVG:!0,inner:'',outlineID:"pswp__icn-download"},onInit:(d,p)=>{d.setAttribute("download",""),d.setAttribute("target","_blank"),d.setAttribute("rel","noopener"),p.on("change",()=>{d.setAttribute("href",p.currSlide.data.src)})}}),u.ui.registerElement({name:"bulletsIndicator",className:"photo-swipe-bullets-indicator",appendTo:"wrapper",onInit:(d,p)=>{const v=[];let g=-1;for(let _=0;_{p.goTo(v.indexOf(b.target))},v.push(E),d.appendChild(E)}p.on("change",()=>{g>=0&&v[g].classList.remove("active"),v[p.currIndex].classList.add("active"),g=p.currIndex})}})})},f=async()=>{if(a.value)return Promise.all([he(()=>import("./photoswipe.esm-08_zHRDQ.js"),__vite__mapDeps([])),Bt().then(()=>new Promise(u=>setTimeout(u,N1)).then(()=>F1(a.value)))]).then(([{default:u},d])=>{const p=d.map(v=>({html:H1,element:v,msrc:v.src}));d.forEach((v,g)=>{const _=()=>{l=new u({preloaderDelay:0,showHideAnimationType:"zoom",...e.value,...o,dataSource:p,index:g,closeOnVerticalDrag:!0,wheelToZoom:!1}),i(l),l.addFilter("thumbEl",()=>v),l.addFilter("placeholderSrc",()=>v.src),l.init()};v.style.cursor="zoom-in",v.addEventListener("click",()=>{_()}),v.addEventListener("keypress",({key:E})=>{E==="Enter"&&_()})}),d.forEach((v,g)=>{oc(v).then(_=>{p.splice(g,1,_),l==null||l.refreshSlideContent(g)})})})};we(()=>{Te("wheel",()=>{l==null||l.close()}),ie(()=>n.value.path,f,{immediate:!0})})};var B1=it({enhance:({app:e})=>{I1(e)},setup:()=>{D1()}});const V1=()=>c(me,{name:"heading"},()=>c("path",{d:"M250.4 704.6H64V595.4h202.4l26.2-166.6H94V319.6h214.4L352 64h127.8l-43.6 255.4h211.2L691 64h126.2l-43.6 255.4H960v109.2H756.2l-24.6 166.6H930v109.2H717L672 960H545.8l43.6-255.4H376.6L333 960H206.8l43.6-255.4zm168.4-276L394 595.4h211.2l24.6-166.6h-211z"}));V1.displayName="HeadingIcon";const z1=()=>c(me,{name:"heart"},()=>c("path",{d:"M1024 358.156C1024 195.698 892.3 64 729.844 64c-86.362 0-164.03 37.218-217.844 96.49C458.186 101.218 380.518 64 294.156 64 131.698 64 0 195.698 0 358.156 0 444.518 37.218 522.186 96.49 576H96l320 320c32 32 64 64 96 64s64-32 96-64l320-320h-.49c59.272-53.814 96.49-131.482 96.49-217.844zM841.468 481.232 517.49 805.49a2981.962 2981.962 0 0 1-5.49 5.48c-1.96-1.95-3.814-3.802-5.49-5.48L182.532 481.234C147.366 449.306 128 405.596 128 358.156 128 266.538 202.538 192 294.156 192c47.44 0 91.15 19.366 123.076 54.532L512 350.912l94.768-104.378C638.696 211.366 682.404 192 729.844 192 821.462 192 896 266.538 896 358.156c0 47.44-19.368 91.15-54.532 123.076z"}));z1.displayName="HeartIcon";const j1=()=>c(me,{name:"history"},()=>c("path",{d:"M512 1024a512 512 0 1 1 512-512 512 512 0 0 1-512 512zm0-896a384 384 0 1 0 384 384 384 384 0 0 0-384-384zm192 448H512a64 64 0 0 1-64-64V320a64 64 0 0 1 128 0v128h128a64 64 0 0 1 0 128z"}));j1.displayName="HistoryIcon";const W1=()=>c(me,{name:"title"},()=>c("path",{d:"M512 256c70.656 0 134.656 28.672 180.992 75.008A254.933 254.933 0 0 1 768 512c0 83.968-41.024 157.888-103.488 204.48C688.96 748.736 704 788.48 704 832c0 105.984-86.016 192-192 192-106.048 0-192-86.016-192-192h128a64 64 0 1 0 128 0 64 64 0 0 0-64-64 255.19 255.19 0 0 1-181.056-75.008A255.403 255.403 0 0 1 256 512c0-83.968 41.024-157.824 103.488-204.544C335.04 275.264 320 235.584 320 192A192 192 0 0 1 512 0c105.984 0 192 85.952 192 192H576a64.021 64.021 0 0 0-128 0c0 35.328 28.672 64 64 64zM384 512c0 70.656 57.344 128 128 128s128-57.344 128-128-57.344-128-128-128-128 57.344-128 128z"}));W1.displayName="TitleIcon";const Co=()=>c(me,{name:"search"},()=>c("path",{d:"M192 480a256 256 0 1 1 512 0 256 256 0 0 1-512 0m631.776 362.496-143.2-143.168A318.464 318.464 0 0 0 768 480c0-176.736-143.264-320-320-320S128 303.264 128 480s143.264 320 320 320a318.016 318.016 0 0 0 184.16-58.592l146.336 146.368c12.512 12.48 32.768 12.48 45.28 0 12.48-12.512 12.48-32.768 0-45.28"}));Co.displayName="SearchIcon";const lc=()=>c("svg",{xmlns:"http://www.w3.org/2000/svg",width:"32",height:"32",preserveAspectRatio:"xMidYMid",viewBox:"0 0 100 100"},[c("circle",{cx:"28",cy:"75",r:"11",fill:"currentColor"},c("animate",{attributeName:"fill-opacity",begin:"0s",dur:"1s",keyTimes:"0;0.2;1",repeatCount:"indefinite",values:"0;1;1"})),c("path",{fill:"none",stroke:"#88baf0","stroke-width":"10",d:"M28 47a28 28 0 0 1 28 28"},c("animate",{attributeName:"stroke-opacity",begin:"0.1s",dur:"1s",keyTimes:"0;0.2;1",repeatCount:"indefinite",values:"0;1;1"})),c("path",{fill:"none",stroke:"#88baf0","stroke-width":"10",d:"M28 25a50 50 0 0 1 50 50"},c("animate",{attributeName:"stroke-opacity",begin:"0.2s",dur:"1s",keyTimes:"0;0.2;1",repeatCount:"indefinite",values:"0;1;1"}))]);lc.displayName="LoadingIcon";const ac=({hint:e})=>c("div",{class:"search-pro-result-wrapper loading"},[c(lc),e]);ac.displayName="SearchLoading";const K1='';var G1={0:{"/":{0:"分",1:"类",2:":",3:" ",4:"$",5:"c",6:"o",7:"n",8:"t",9:"e",10:"n",11:"t"}},1:{"/":{0:"标",1:"签",2:":",3:" ",4:"$",5:"c",6:"o",7:"n",8:"t",9:"e",10:"n",11:"t"}}},U1={"/":{cancel:"取消",placeholder:"搜索",search:"搜索",searching:"搜索中",defaultTitle:"文档",select:"选择",navigate:"切换",autocomplete:"自动补全",exit:"关闭",queryHistory:"搜索历史",resultHistory:"历史结果",emptyHistory:"无搜索历史",emptyResult:"没有找到结果",loading:"正在加载搜索索引..."}},Z1={searchDelay:150,suggestDelay:0,queryHistoryCount:5,resultHistoryCount:5,hotKeys:[{key:"k",ctrl:!0},{key:"/",ctrl:!0}],worker:"search-pro.worker.js"};const So=Z1,K0=G1,ic=So.hotKeys,To=U1;new URL("data:application/javascript;base64,aW1wb3J0e3NlYXJjaCBhcyBDLGdldFN0b3JlZEZpZWxkcyBhcyBSLGF1dG9TdWdnZXN0IGFzIFQsbG9hZEpTT05JbmRleCBhcyB3fWZyb20ic2xpbXNlYXJjaCI7aW1wb3J0ICQgZnJvbSJAdGVtcC9zZWFyY2gtcHJvL2luZGV4IjtpbXBvcnR7ZW50cmllcyBhcyBFfWZyb20idnVlcHJlc3Mtc2hhcmVkL2NsaWVudCI7Y29uc3QgeD0obCxlKT0+e2NvbnN0IG49bC50b0xvd2VyQ2FzZSgpLHM9ZS50b0xvd2VyQ2FzZSgpLG89W107bGV0IHQ9MCxyPTA7Y29uc3QgaT0oYyxnPSExKT0+e2xldCBwPSIiO3I9PT0wP3A9Yy5sZW5ndGg+MjA/YOKApiAke2Muc2xpY2UoLTIwKX1gOmM6Zz9wPWMubGVuZ3RoK3I+MTAwP2Ake2Muc2xpY2UoMCwxMDAtcil94oCmIGA6YzpwPWMubGVuZ3RoPjIwP2Ake2Muc2xpY2UoMCwyMCl9IOKApiAke2Muc2xpY2UoLTIwKX1gOmMscCYmby5wdXNoKHApLHIrPXAubGVuZ3RoLGd8fChvLnB1c2goWyJtYXJrIixlXSkscis9ZS5sZW5ndGgscj49MTAwJiZvLnB1c2goIiDigKYiKSl9O2xldCBoPW4uaW5kZXhPZihzLHQpO2lmKGg9PT0tMSlyZXR1cm4gbnVsbDtmb3IoO2g+PTA7KXtjb25zdCBjPWgrcy5sZW5ndGg7aWYoaShsLnNsaWNlKHQsaCkpLHQ9YyxyPjEwMClicmVhaztoPW4uaW5kZXhPZihzLHQpfXJldHVybiByPDEwMCYmaShsLnNsaWNlKHQpLCEwKSxvfSxTPS9bXHU0ZTAwLVx1OWZhNV0vZyxNPShsPXt9KT0+KHtmdXp6eTouMixwcmVmaXg6ITAscHJvY2Vzc1Rlcm06ZT0+e2NvbnN0IG49ZS5tYXRjaChTKXx8W10scz1lLnJlcGxhY2UoUywiIikudG9Mb3dlckNhc2UoKTtyZXR1cm4gcz9bcywuLi5uXTpbLi4ubl19LC4uLmx9KSxGPShsLGUpPT5lLmNvbnRlbnRzLnJlZHVjZSgobixbLHNdKT0+bitzLDApLWwuY29udGVudHMucmVkdWNlKChuLFssc10pPT5uK3MsMCksXz0obCxlKT0+TWF0aC5tYXgoLi4uZS5jb250ZW50cy5tYXAoKFssbl0pPT5uKSktTWF0aC5tYXgoLi4ubC5jb250ZW50cy5tYXAoKFssbl0pPT5uKSksTz0obCxlLG49e30pPT57Y29uc3Qgcz17fTtyZXR1cm4gQyhlLGwsTSh7Ym9vc3Q6e2g6Mix0OjEsYzo0fSwuLi5ufSkpLmZvckVhY2gobz0+e2NvbnN0e2lkOnQsdGVybXM6cixzY29yZTppfT1vLGg9dC5pbmNsdWRlcygiQCIpLGM9dC5pbmNsdWRlcygiIyIpLFtnLHBdPXQuc3BsaXQoL1sjQF0vKSxtPXIuc29ydCgodSxhKT0+dS5sZW5ndGgtYS5sZW5ndGgpLmZpbHRlcigodSxhKT0+ci5zbGljZShhKzEpLmV2ZXJ5KGY9PiFmLmluY2x1ZGVzKHUpKSkse2NvbnRlbnRzOmR9PXNbZ10/Pz17dGl0bGU6IiIsY29udGVudHM6W119O2lmKGgpZC5wdXNoKFt7dHlwZToiY3VzdG9tRmllbGQiLGtleTpnLGluZGV4OnAsZGlzcGxheTptLm1hcCh1PT5vLmMubWFwKGE9PngoYSx1KSkpLmZsYXQoKS5maWx0ZXIodT0+dSE9PW51bGwpfSxpXSk7ZWxzZXtjb25zdCB1PW0ubWFwKGE9Pngoby5oLGEpKS5maWx0ZXIoYT0+YSE9PW51bGwpO2lmKHUubGVuZ3RoJiZkLnB1c2goW3t0eXBlOmM/ImhlYWRpbmciOiJ0aXRsZSIsa2V5OmcsLi4uYyYme2FuY2hvcjpwfSxkaXNwbGF5OnV9LGldKSwidCJpbiBvKWZvcihjb25zdCBhIG9mIG8udCl7Y29uc3QgZj1tLm1hcCh5PT54KGEseSkpLmZpbHRlcih5PT55IT09bnVsbCk7Zi5sZW5ndGgmJmQucHVzaChbe3R5cGU6InRleHQiLGtleTpnLC4uLmMmJnthbmNob3I6cH0sZGlzcGxheTpmfSxpXSl9fX0pLEUocykuc29ydCgoWyxvXSxbLHRdKT0+U0VBUkNIX1BST19TT1JUX1NUUkFURUdZPT09InRvdGFsIj9GKG8sdCk6XyhvLHQpKS5tYXAoKFtvLHt0aXRsZTp0LGNvbnRlbnRzOnJ9XSk9PntpZighdCl7Y29uc3QgaT1SKGUsbyk7aSYmKHQ9aS5oKX1yZXR1cm57dGl0bGU6dCxjb250ZW50czpyLm1hcCgoW2ldKT0+aSl9fSl9LGs9KGwsZSxuPXt9KT0+VChlLGwsTShuKSkubWFwKCh7c3VnZ2VzdGlvbjpzfSk9PnMpO3NlbGYub25tZXNzYWdlPWFzeW5jKHtkYXRhOnt0eXBlOmw9ImFsbCIscXVlcnk6ZSxsb2NhbGU6bixvcHRpb25zOnN9fSk9Pntjb25zdHtkZWZhdWx0Om99PWF3YWl0ICRbbl0oKSx0PXcobyx7ZmllbGRzOlsiaCIsInQiLCJjIl0sc3RvcmVGaWVsZHM6WyJoIiwidCIsImMiXX0pO2w9PT0ic3VnZ2VzdCI/c2VsZi5wb3N0TWVzc2FnZShrKGUsdCxzKSk6bD09PSJzZWFyY2giP3NlbGYucG9zdE1lc3NhZ2UoTyhlLHQscykpOnNlbGYucG9zdE1lc3NhZ2Uoe3N1Z2dlc3Rpb25zOmsoZSx0LHMpLHJlc3VsdHM6TyhlLHQscyl9KX07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcAo=",import.meta.url);let Y1={};const cc=Symbol(""),q1=()=>ve(cc),X1=e=>{e.provide(cc,Y1)},J1=()=>{const e=new Worker(`/Minecolonies-Chinese-Wiki/${So.worker}`,{}),t=[];return e.addEventListener("message",({data:n})=>{const{resolve:r}=t.shift();r(n)}),{search:n=>new Promise((r,s)=>{e.postMessage(n),t.push({resolve:r,reject:s})}),terminate:()=>{e.terminate(),t.forEach(({reject:n})=>n(new Error("Worker has been terminated.")))}}},Q1=(e,t=!1)=>{const n=X(0),r=k(()=>e.value[n.value]),s=()=>{n.value=n.value>0?n.value-1:e.value.length-1},o=()=>{n.value=n.value{t||(n.value=0)}),{index:n,item:r,prev:s,next:o}},ko=Symbol(""),ev=()=>{const e=X(!1);Xt(ko,e)},tv=e=>e instanceof Element?document.activeElement===e&&(["TEXTAREA","SELECT","INPUT"].includes(e.tagName)||e.hasAttribute("contenteditable")):!1,nv=e=>ic.some(t=>{const{key:n,ctrl:r=!1,shift:s=!1,alt:o=!1,meta:l=!1}=t;return n===e.key&&r===e.ctrlKey&&s===e.shiftKey&&o===e.altKey&&l===e.metaKey}),rv='',sv='',ov='',lv='',av=e=>{const t=X([]);{const n=q1(),r=nn();we(()=>{const s=Th(a=>{a?o({type:"suggest",query:a,locale:r.value,options:n}).then(i=>{t.value=i.length?Jt(i[0],a)&&!i[0].slice(a.length).includes(" ")?i:[a,...i]:[]}).catch(i=>{console.error(i)}):t.value=[]},So.suggestDelay),{search:o,terminate:l}=J1();ie([e,r],()=>s(e.value),{immediate:!0}),Cn(()=>{l()})})}return{suggestions:t}},ms=ic[0];var iv=K({name:"SearchBox",setup(){const e=Vt(To),t=ve(ko),n=X(!1),r=k(()=>ms?[(n.value?["⌃","⇧","⌥","⌘"]:["Ctrl","Shift","Alt","Win"]).filter((s,o)=>ms[["ctrl","shift","alt","meta"][o]]),ms.key.toUpperCase()]:null);return Te("keydown",s=>{!t.value&&nv(s)&&!tv(s.target)&&(s.preventDefault(),t.value=!0)}),we(()=>{const{userAgent:s}=navigator;n.value=Qp(s)||Jp(s)||Xp(s)}),()=>[c("button",{type:"button",class:"search-pro-button","aria-label":e.value.search,onClick:()=>{t.value=!0}},[c(Co),c("div",{class:"search-pro-placeholder"},e.value.search),r.value?c("div",{class:"search-pro-key-hints"},r.value.map(s=>c("kbd",{class:"search-pro-key"},s))):null])]}});const cv=ze({loader:()=>he(()=>import("./SearchResult-0qz_HMF5.js"),__vite__mapDeps([])),loadingComponent:()=>{const e=Vt(To);return c(ac,{hint:e.value.loading})}});var uv=K({name:"SearchModal",setup(){const e=ve(ko),t=Gr(),n=Wi(),r=Vt(To),s=X(""),{suggestions:o}=av(s),l=X(!1),{index:a,prev:i,next:f}=Q1(o),u=lt(),d=lt(),p=(v=a.value)=>{s.value=o.value[v],l.value=!1};return Te("keydown",v=>{l.value?v.key==="ArrowUp"?i():v.key==="ArrowDown"?f():v.key==="Enter"?p():v.key==="Escape"&&(l.value=!1):v.key==="Escape"&&(e.value=!1)}),we(()=>{const v=_o(document.body);ie(e,async g=>{var _;v.value=g,g&&(await Bt(),(_=u.value)==null||_.focus())}),Rh(d,()=>{l.value=!1}),Cn(()=>{v.value=!1})}),()=>e.value?c("div",{class:"search-pro-modal-wrapper"},[c("div",{class:"search-pro-mask",onClick:()=>{e.value=!1,s.value=""}}),c("div",{class:"search-pro-modal"},[c("div",{class:"search-pro-box"},[c("form",[c("label",{for:"search-pro","aria-label":r.value.search},c(Co)),c("input",{ref:u,type:"search",class:"search-pro-input",id:"search-pro",placeholder:r.value.placeholder,spellcheck:"false",autocapitalize:"off",autocomplete:"off",autocorrect:"off",name:`${t.value.title}-search`,value:s.value,"aria-controls":"search-pro-results",onKeydown:v=>{const{key:g}=v;o.value.length&&(g==="Tab"?(p(),v.preventDefault()):(g==="ArrowDown"||g==="ArrowUp"||g==="Escape")&&v.preventDefault())},onInput:({target:v})=>{s.value=v.value,l.value=!0,a.value=0}}),s.value?c("button",{type:"reset",class:"search-pro-clear-button",innerHTML:K1,onClick:()=>{s.value=""}}):null,l.value&&o.value.length?c("ul",{class:"search-pro-suggestions",ref:d},o.value.map((v,g)=>c("li",{class:["search-pro-suggestion",{active:g===a.value}],onClick:()=>{p(g)}},[c("kbd",{class:"search-pro-auto-complete",title:`Tab ${r.value.autocomplete}`},"Tab"),v]))):null]),c("button",{type:"button",class:"search-pro-close-button",onClick:()=>{e.value=!1,s.value=""}},r.value.cancel)]),c(cv,{query:s.value,isFocusing:!l.value,onClose:()=>{e.value=!1},onUpdateQuery:v=>{s.value=v}}),n.value?null:c("div",{class:"search-pro-hints"},[c("span",{class:"search-pro-hint"},[c("kbd",{innerHTML:rv}),r.value.select]),c("span",{class:"search-pro-hint"},[c("kbd",{innerHTML:ov}),c("kbd",{innerHTML:sv}),r.value.navigate]),c("span",{class:"search-pro-hint"},[c("kbd",{innerHTML:lv}),r.value.exit])])])]):null}}),fv=it({enhance({app:e}){X1(e),e.component("SearchBox",iv)},setup(){ev()},rootComponents:[uv]}),Zl={"/":{word:"约 $word 字",less1Minute:"小于 1 分钟",time:"大约 $time 分钟"}};const uc=()=>{const e=de();return k(()=>e.value.readingTime??null)},Ns=typeof Zl>"u"?null:Zl,dv=(e,t)=>{const{minutes:n,words:r}=e,{less1Minute:s,word:o,time:l}=t;return{time:n<1?s:l.replace("$time",Math.round(n).toString()),words:o.replace("$word",r.toString())}},Yl={words:"",time:""},pv=()=>Ns?Vt(Ns):k(()=>null),hv=()=>{if(typeof Ns>"u")return k(()=>Yl);const e=uc(),t=pv();return k(()=>e.value&&t.value?dv(e.value,t.value):Yl)},xn=()=>nc(),pe=()=>g1(),sr=()=>k(()=>!!xn().value.pure);var gs=K({name:"EmptyComponent",setup:()=>()=>null});const vv="719px",mv="1440px",gv="false",xo={mobileBreakPoint:vv,pcBreakPoint:mv,enableThemeColor:gv},Lo={"/Installation/":["gdlauncher","hmcl","java"],"/Tutorials/":["worldgencolonies","getting-started","schematics","datapacks"]},fc=e=>{const{icon:t="",color:n,size:r}=e,s={};return n&&(s.color=n),r&&(s.height=Number.isNaN(Number(r))?r:`${r}px`),Tn(t)?c("img",{class:"icon",src:t,"no-view":"",style:s}):qr(t)?c("img",{class:"icon",src:Me(t),"aria-hidden":"","no-view":"",style:s}):c(Je("FontIcon"),e)};fc.displayName="HopeIcon";var Be=fc;const bv=()=>{const e=tt(),t=St();return n=>{if(n)if(qr(n))t.path!==n&&e.push(n);else if(li(n))window&&window.open(n);else{const r=t.path.slice(0,t.path.lastIndexOf("/"));e.push(`${r}/${encodeURI(n)}`)}}},dc=()=>{const e=pe(),t=xe();return k(()=>{const{author:n}=t.value;return n?$l(n):n===!1?[]:$l(e.value.author,!1)})},yv=()=>{const e=xe();return k(()=>ch(e.value.category).map(t=>({name:t,path:""})))},wv=()=>{const e=xe();return k(()=>uh(e.value.tag).map(t=>({name:t,path:""})))},_v=()=>{const e=xe(),t=de();return k(()=>{const n=eh(e.value.date);if(n)return n;const{createdTime:r}=t.value.git||{};return r?new Date(r):null})},Ev=()=>{const e=pe(),t=de(),n=xe(),r=dc(),s=yv(),o=wv(),l=_v(),a=uc(),i=hv(),f=k(()=>({author:r.value,category:s.value,date:l.value,localizedDate:t.value.localizedDate,tag:o.value,isOriginal:n.value.isOriginal||!1,readingTime:a.value,readingTimeLocale:i.value,pageview:"pageview"in n.value?n.value.pageview:!0})),u=k(()=>"pageInfo"in n.value?n.value.pageInfo:"pageInfo"in e.value?e.value.pageInfo:null);return{info:f,items:u}},{mobileBreakPoint:Cv,pcBreakPoint:Sv}=xo,ql=e=>e.endsWith("px")?Number(e.slice(0,-2)):null,Xr=()=>{const e=X(!1),t=X(!1),n=()=>{e.value=window.innerWidth<=(ql(Cv)??719),t.value=window.innerWidth>=(ql(Sv)??1440)};return we(()=>{n(),Te("resize",n,!1),Te("orientationchange",n,!1)}),{isMobile:e,isPC:t}},pc=Symbol(""),or=()=>{const e=ve(pc);if(!e)throw new Error("useDarkmode() is called without provider.");return e},Tv=e=>{const t=xn(),n=Dh(),r=Yi("vuepress-theme-hope-scheme","auto"),s=k(()=>t.value.darkmode||"switch"),o=k(()=>{const a=s.value;return a==="disable"?!1:a==="enable"?!0:a==="auto"?n.value:a==="toggle"?r.value==="dark":r.value==="dark"||r.value==="auto"&&n.value}),l=k(()=>{const a=s.value;return a==="switch"||a==="toggle"});e.provide(pc,{canToggle:l,config:s,isDarkmode:o,status:r}),Object.defineProperties(e.config.globalProperties,{$isDarkmode:{get:()=>o.value}})},kv=()=>{const{isDarkmode:e}=or(),t=(n=e.value)=>document.documentElement.setAttribute("data-theme",n?"dark":"light");we(()=>{ie(e,t,{immediate:!0})})};var Fe=K({name:"AutoLink",inheritAttrs:!1,props:{config:{type:Object,required:!0},exact:Boolean,noExternalLinkIcon:Boolean},emits:["focusout"],slots:Object,setup(e,{attrs:t,emit:n,slots:r}){const s=St(),o=vi(),l=Vr(e,"config"),a=k(()=>Tn(l.value.link)),i=k(()=>!a.value&&li(l.value.link)),f=k(()=>l.value.target||(a.value?"_blank":void 0)),u=k(()=>f.value==="_blank"),d=k(()=>!a.value&&!i.value&&!u.value),p=k(()=>l.value.rel||(u.value?"noopener noreferrer":void 0)),v=k(()=>l.value.ariaLabel||l.value.text),g=k(()=>{if(e.exact)return!1;const E=tr(o.value.locales);return E.length?E.every(b=>b!==l.value.link):l.value.link!=="/"}),_=k(()=>d.value?l.value.activeMatch?new RegExp(l.value.activeMatch).test(s.path):g.value?Jt(s.path,l.value.link):s.path===l.value.link:!1);return()=>{const{before:E,after:b,default:L}=r,{text:y,icon:S,link:$}=l.value;return d.value?c(qe,{to:$,"aria-label":v.value,...t,class:["nav-link",{active:_.value},t.class],onFocusout:()=>n("focusout")},()=>L?L():[E?E():c(Be,{icon:S}),y,b==null?void 0:b()]):c("a",{href:$,rel:p.value,target:f.value,"aria-label":v.value,...t,class:["nav-link",t.class],onFocusout:()=>n("focusout")},L?L():[E?E():c(Be,{icon:S}),y,e.noExternalLinkIcon?null:c(ec),b==null?void 0:b()])}}});const _n=(e,t,n=!1)=>"activeMatch"in t?new RegExp(t.activeMatch).test(e.path):Hi(e,t.link)?!0:t.children&&!n?t.children.some(r=>_n(e,r)):!1,hc=(e,t)=>t.type==="group"?t.children.some(n=>n.type==="group"?hc(e,n):n.type==="page"&&_n(e,n,!0))||"prefix"in t&&Hi(e,t.prefix):!1,vc=(e,t)=>ae(e.link)?c(Fe,{...t,config:e}):c("p",t,[c(Be,{icon:e.icon}),e.text]),mc=e=>{const t=St();return e?c("ul",{class:"vp-sidebar-sub-headers"},e.map(n=>c("li",{class:"vp-sidebar-sub-header"},[vc(n,{class:["vp-sidebar-link","vp-heading",{active:_n(t,n,!0)}]}),mc(n.children)]))):null};var bt=(e=>(e.type="y",e.title="t",e.shortTitle="s",e.icon="i",e.author="a",e.date="d",e.localizedDate="l",e.category="c",e.tag="g",e.isEncrypted="n",e.isOriginal="o",e.readingTime="r",e.excerpt="e",e.sticky="u",e.cover="v",e.index="I",e.order="O",e))(bt||{}),xv=(e=>(e.article="a",e.home="h",e.slide="s",e.page="p",e))(xv||{});const Ut=(e="",t="")=>qr(t)?t:`${oi(e)}${t}`,hn=(e,t,n=!1)=>{let r=Nr(e,Mi(encodeURI(t)));r.name==="404"&&(r=Nr(e,t));const{fullPath:s,meta:o,name:l}=r;return{text:!n&&o[bt.shortTitle]?o[bt.shortTitle]:o[bt.title]||t,link:l==="404"?t:s,...o[bt.icon]?{icon:o[bt.icon]}:{}}},Lv=(e,t)=>{const n=de();return{type:"heading",text:e.title,link:`${n.value.path}#${e.slug}`,children:Ao(e.children,t)}},Ao=(e,t)=>t>0?e.map(n=>Lv(n,t-1)):[],gc=e=>{const t=de();return Ao(t.value.headers,e)},Hs=(e,t,n="")=>{const r=tt(),s=de(),o=(l,a=n)=>{var f;const i=ae(l)?hn(r,Ut(a,l)):l.link?{...l,...Mr(l.link)?{}:{link:hn(r,Ut(a,l.link)).link}}:l;if("children"in i){const u=Ut(a,i.prefix),d=i.children==="structure"?Lo[u]:i.children;return{type:"group",...i,prefix:u,children:d.map(p=>o(p,u))}}return{type:"page",...i,children:i.link===s.value.path?Ao(((f=s.value.headers[0])==null?void 0:f.level)===1?s.value.headers[0].children:s.value.headers,t):[]}};return e.map(l=>o(l))},Av=(e,t)=>{const n=de(),r=tr(e).sort((s,o)=>o.length-s.length);for(const s of r)if(Jt(decodeURI(n.value.path),s)){const o=e[s];return o?Hs(o==="structure"?Lo[s]:o==="heading"?gc(t):o,t,s):[]}return console.warn(`${n.value.path} is missing sidebar config.`),[]},Pv=(e,t)=>{const n=nn();return e===!1?[]:e==="heading"?gc(t):e==="structure"?Hs(Lo[n.value],t,n.value):q(e)?Hs(e,t):uo(e)?Av(e,t):[]},bc=Symbol(""),Rv=()=>{const e=xe(),t=pe(),n=de(),r=k(()=>e.value.home?!1:e.value.sidebar??t.value.sidebar??"structure"),s=k(()=>e.value.headerDepth??t.value.headerDepth??2),o=go(()=>[r.value,s.value,n.value.path,null],()=>Pv(r.value,s.value));Xt(bc,o)},Po=()=>{const e=ve(bc);if(!e)throw new Error("useSidebarItems() is called without provider.");return e};var Iv=K({name:"PageFooter",setup(){const e=xn(),t=pe(),n=xe(),r=dc(),s=k(()=>{const{copyright:f,footer:u}=n.value;return u!==!1&&!!(f||u||t.value.displayFooter)}),o=k(()=>{const{footer:f}=n.value;return f===!1?!1:ae(f)?f:t.value.footer||""}),l=k(()=>r.value.map(({name:f})=>f).join(", ")),a=f=>`Copyright © ${new Date().getFullYear()} ${l.value} ${f?`${f} Licensed`:""}`,i=k(()=>{const{copyright:f,license:u=""}=n.value,{license:d}=e.value,{copyright:p}=t.value;return f??(u?a(u):ae(p)?p:l.value||d?a(d):!1)});return()=>s.value?c("footer",{class:"vp-footer-wrapper"},[o.value?c("div",{class:"vp-footer",innerHTML:o.value}):null,i.value?c("div",{class:"vp-copyright",innerHTML:i.value}):null]):null}}),Ov=K({name:"NavbarDropdownLink",props:{config:{type:Object,required:!0}},slots:Object,setup(e,{slots:t}){const n=de(),r=Vr(e,"config"),s=k(()=>r.value.ariaLabel||r.value.text),o=X(!1);ie(()=>n.value.path,()=>{o.value=!1});const l=a=>{a.detail===0&&(o.value=!o.value)};return()=>{var a;return c("div",{class:["dropdown-wrapper",{open:o.value}]},[c("button",{type:"button",class:"dropdown-title","aria-label":s.value,onClick:l},[((a=t.title)==null?void 0:a.call(t))||c("span",{class:"title"},[c(Be,{icon:r.value.icon}),e.config.text]),c("span",{class:"arrow"}),c("ul",{class:"nav-dropdown"},r.value.children.map((i,f)=>{const u=f===r.value.children.length-1;return c("li",{class:"dropdown-item"},"children"in i?[c("h4",{class:"dropdown-subtitle"},i.link?c(Fe,{config:i,onFocusout:()=>{i.children.length===0&&u&&(o.value=!1)}}):c("span",i.text)),c("ul",{class:"dropdown-subitem-wrapper"},i.children.map((d,p)=>c("li",{class:"dropdown-subitem"},c(Fe,{config:d,onFocusout:()=>{p===i.children.length-1&&u&&(o.value=!1)}}))))]:c(Fe,{config:i,onFocusout:()=>{u&&(o.value=!1)}}))}))])])}}});const yc=(e,t,n="")=>ae(t)?hn(e,Ut(n,t)):"children"in t?{...t,...t.link&&!Mr(t.link)?hn(e,Ut(n,t.link)):{},children:t.children.map(r=>yc(e,r,Ut(n,t.prefix)))}:{...t,link:Mr(t.link)?t.link:hn(e,Ut(n,t.link)).link},wc=()=>{const e=pe(),t=tt(),n=()=>(e.value.navbar||[]).map(r=>yc(t,r));return go(()=>e.value.navbar,()=>n())},Mv=()=>{const e=pe(),t=k(()=>e.value.repo||null),n=k(()=>t.value?dh(t.value):null),r=k(()=>t.value?Fi(t.value):null),s=k(()=>n.value?e.value.repoLabel??(r.value===null?"Source":r.value):null);return k(()=>!n.value||!s.value||e.value.repoDisplay===!1?null:{type:r.value||"Source",label:s.value,link:n.value})};var $v=K({name:"NavScreenDropdown",props:{config:{type:Object,required:!0}},setup(e){const t=de(),n=Vr(e,"config"),r=k(()=>n.value.ariaLabel||n.value.text),s=X(!1);ie(()=>t.value.path,()=>{s.value=!1});const o=(l,a)=>a[a.length-1]===l;return()=>[c("button",{type:"button",class:["nav-screen-dropdown-title",{active:s.value}],"aria-label":r.value,onClick:()=>{s.value=!s.value}},[c("span",{class:"title"},[c(Be,{icon:n.value.icon}),e.config.text]),c("span",{class:["arrow",s.value?"down":"end"]})]),c("ul",{class:["nav-screen-dropdown",{hide:!s.value}]},n.value.children.map(l=>c("li",{class:"dropdown-item"},"children"in l?[c("h4",{class:"dropdown-subtitle"},l.link?c(Fe,{config:l,onFocusout:()=>{o(l,n.value.children)&&l.children.length===0&&(s.value=!1)}}):c("span",l.text)),c("ul",{class:"dropdown-subitem-wrapper"},l.children.map(a=>c("li",{class:"dropdown-subitem"},c(Fe,{config:a,onFocusout:()=>{o(a,l.children)&&o(l,n.value.children)&&(s.value=!1)}}))))]:c(Fe,{config:l,onFocusout:()=>{o(l,n.value.children)&&(s.value=!1)}}))))]}}),Nv=K({name:"NavScreenLinks",setup(){const e=wc();return()=>e.value.length?c("nav",{class:"nav-screen-links"},e.value.map(t=>c("div",{class:"navbar-links-item"},"children"in t?c($v,{config:t}):c(Fe,{config:t})))):null}});const _c=()=>c(me,{name:"dark"},()=>c("path",{d:"M524.8 938.667h-4.267a439.893 439.893 0 0 1-313.173-134.4 446.293 446.293 0 0 1-11.093-597.334A432.213 432.213 0 0 1 366.933 90.027a42.667 42.667 0 0 1 45.227 9.386 42.667 42.667 0 0 1 10.24 42.667 358.4 358.4 0 0 0 82.773 375.893 361.387 361.387 0 0 0 376.747 82.774 42.667 42.667 0 0 1 54.187 55.04 433.493 433.493 0 0 1-99.84 154.88 438.613 438.613 0 0 1-311.467 128z"}));_c.displayName="DarkIcon";const Ec=()=>c(me,{name:"light"},()=>c("path",{d:"M952 552h-80a40 40 0 0 1 0-80h80a40 40 0 0 1 0 80zM801.88 280.08a41 41 0 0 1-57.96-57.96l57.96-58a41.04 41.04 0 0 1 58 58l-58 57.96zM512 752a240 240 0 1 1 0-480 240 240 0 0 1 0 480zm0-560a40 40 0 0 1-40-40V72a40 40 0 0 1 80 0v80a40 40 0 0 1-40 40zm-289.88 88.08-58-57.96a41.04 41.04 0 0 1 58-58l57.96 58a41 41 0 0 1-57.96 57.96zM192 512a40 40 0 0 1-40 40H72a40 40 0 0 1 0-80h80a40 40 0 0 1 40 40zm30.12 231.92a41 41 0 0 1 57.96 57.96l-57.96 58a41.04 41.04 0 0 1-58-58l58-57.96zM512 832a40 40 0 0 1 40 40v80a40 40 0 0 1-80 0v-80a40 40 0 0 1 40-40zm289.88-88.08 58 57.96a41.04 41.04 0 0 1-58 58l-57.96-58a41 41 0 0 1 57.96-57.96z"}));Ec.displayName="LightIcon";const Cc=()=>c(me,{name:"auto"},()=>c("path",{d:"M512 992C246.92 992 32 777.08 32 512S246.92 32 512 32s480 214.92 480 480-214.92 480-480 480zm0-840c-198.78 0-360 161.22-360 360 0 198.84 161.22 360 360 360s360-161.16 360-360c0-198.78-161.22-360-360-360zm0 660V212c165.72 0 300 134.34 300 300 0 165.72-134.28 300-300 300z"}));Cc.displayName="AutoIcon";const Sc=()=>c(me,{name:"enter-fullscreen"},()=>c("path",{d:"M762.773 90.24h-497.28c-96.106 0-174.4 78.293-174.4 174.4v497.28c0 96.107 78.294 174.4 174.4 174.4h497.28c96.107 0 175.04-78.293 174.4-174.4V264.64c0-96.213-78.186-174.4-174.4-174.4zm-387.2 761.173H215.04c-21.867 0-40.427-17.92-41.067-41.066V649.92c0-22.507 17.92-40.427 40.427-40.427 11.307 0 21.227 4.694 28.48 11.947 7.253 7.253 11.947 17.92 11.947 28.48v62.293l145.28-145.28c15.893-15.893 41.813-15.893 57.706 0 15.894 15.894 15.894 41.814 0 57.707l-145.28 145.28h62.294c22.506 0 40.426 17.92 40.426 40.427s-17.173 41.066-39.68 41.066zM650.24 165.76h160.427c21.866 0 40.426 17.92 41.066 41.067v160.426c0 22.507-17.92 40.427-40.426 40.427-11.307 0-21.227-4.693-28.48-11.947-7.254-7.253-11.947-17.92-11.947-28.48v-62.186L625.6 450.347c-15.893 15.893-41.813 15.893-57.707 0-15.893-15.894-15.893-41.814 0-57.707l145.28-145.28H650.88c-22.507 0-40.427-17.92-40.427-40.427s17.174-41.173 39.787-41.173z"}));Sc.displayName="EnterFullScreenIcon";const Tc=()=>c(me,{name:"cancel-fullscreen"},()=>c("path",{d:"M778.468 78.62H247.922c-102.514 0-186.027 83.513-186.027 186.027V795.08c0 102.514 83.513 186.027 186.027 186.027h530.432c102.514 0 186.71-83.513 186.026-186.027V264.647C964.494 162.02 880.981 78.62 778.468 78.62zM250.88 574.35h171.122c23.324 0 43.122 19.115 43.804 43.805v171.121c0 24.008-19.114 43.122-43.122 43.122-12.06 0-22.641-5.006-30.378-12.743s-12.743-19.115-12.743-30.379V722.83L224.597 877.91c-16.953 16.952-44.6 16.952-61.553 0-16.953-16.954-16.953-44.602 0-61.554L318.009 661.39h-66.446c-24.007 0-43.122-19.114-43.122-43.122 0-24.12 18.432-43.918 42.439-43.918zm521.899-98.873H601.657c-23.325 0-43.122-19.114-43.805-43.804V260.55c0-24.007 19.115-43.122 43.122-43.122 12.06 0 22.642 5.007 30.379 12.743s12.743 19.115 12.743 30.38v66.445l154.965-154.965c16.953-16.953 44.601-16.953 61.554 0 16.953 16.953 16.953 44.6 0 61.554L705.536 388.55h66.446c24.007 0 43.122 19.115 43.122 43.122.114 24.007-18.318 43.804-42.325 43.804z"}));Tc.displayName="CancelFullScreenIcon";const kc=()=>c(me,{name:"outlook"},()=>[c("path",{d:"M224 800c0 9.6 3.2 44.8 6.4 54.4 6.4 48-48 76.8-48 76.8s80 41.6 147.2 0 134.4-134.4 38.4-195.2c-22.4-12.8-41.6-19.2-57.6-19.2C259.2 716.8 227.2 761.6 224 800zM560 675.2l-32 51.2c-51.2 51.2-83.2 32-83.2 32 25.6 67.2 0 112-12.8 128 25.6 6.4 51.2 9.6 80 9.6 54.4 0 102.4-9.6 150.4-32l0 0c3.2 0 3.2-3.2 3.2-3.2 22.4-16 12.8-35.2 6.4-44.8-9.6-12.8-12.8-25.6-12.8-41.6 0-54.4 60.8-99.2 137.6-99.2 6.4 0 12.8 0 22.4 0 12.8 0 38.4 9.6 48-25.6 0-3.2 0-3.2 3.2-6.4 0-3.2 3.2-6.4 3.2-6.4 6.4-16 6.4-16 6.4-19.2 9.6-35.2 16-73.6 16-115.2 0-105.6-41.6-198.4-108.8-268.8C704 396.8 560 675.2 560 675.2zM224 419.2c0-28.8 22.4-51.2 51.2-51.2 28.8 0 51.2 22.4 51.2 51.2 0 28.8-22.4 51.2-51.2 51.2C246.4 470.4 224 448 224 419.2zM320 284.8c0-22.4 19.2-41.6 41.6-41.6 22.4 0 41.6 19.2 41.6 41.6 0 22.4-19.2 41.6-41.6 41.6C339.2 326.4 320 307.2 320 284.8zM457.6 208c0-12.8 12.8-25.6 25.6-25.6 12.8 0 25.6 12.8 25.6 25.6 0 12.8-12.8 25.6-25.6 25.6C470.4 233.6 457.6 220.8 457.6 208zM128 505.6C128 592 153.6 672 201.6 736c28.8-60.8 112-60.8 124.8-60.8-16-51.2 16-99.2 16-99.2l316.8-422.4c-48-19.2-99.2-32-150.4-32C297.6 118.4 128 291.2 128 505.6zM764.8 86.4c-22.4 19.2-390.4 518.4-390.4 518.4-22.4 28.8-12.8 76.8 22.4 99.2l9.6 6.4c35.2 22.4 80 12.8 99.2-25.6 0 0 6.4-12.8 9.6-19.2 54.4-105.6 275.2-524.8 288-553.6 6.4-19.2-3.2-32-19.2-32C777.6 76.8 771.2 80 764.8 86.4z"})]);kc.displayName="OutlookIcon";var xc=K({name:"AppearanceSwitch",setup(){const{config:e,isDarkmode:t,status:n}=or(),r=sr(),s=()=>{e.value==="switch"?n.value={light:"dark",dark:"auto",auto:"light"}[n.value]:n.value=n.value==="light"?"dark":"light"},o=async l=>{if(!(document.startViewTransition&&!window.matchMedia("(prefers-reduced-motion: reduce)").matches&&!r.value)||!l){s();return}const a=l.clientX,i=l.clientY,f=Math.hypot(Math.max(a,innerWidth-a),Math.max(i,innerHeight-i)),u=t.value;await document.startViewTransition(async()=>{s(),await Bt()}).ready,t.value!==u&&document.documentElement.animate({clipPath:t.value?[`circle(${f}px at ${a}px ${i}px)`,`circle(0px at ${a}px ${i}px)`]:[`circle(0px at ${a}px ${i}px)`,`circle(${f}px at ${a}px ${i}px)`]},{duration:400,pseudoElement:t.value?"::view-transition-old(root)":"::view-transition-new(root)"})};return()=>c("button",{type:"button",id:"appearance-switch",onClick:o},[c(Cc,{style:{display:n.value==="auto"?"block":"none"}}),c(_c,{style:{display:n.value==="dark"?"block":"none"}}),c(Ec,{style:{display:n.value==="light"?"block":"none"}})])}}),Hv=K({name:"AppearanceMode",setup(){const e=pe(),{canToggle:t}=or(),n=k(()=>e.value.outlookLocales.darkmode);return()=>t.value?c("div",{class:"appearance-wrapper"},[c("label",{class:"appearance-title",for:"appearance-switch"},n.value),c(xc)]):null}});const bs="VUEPRESS_THEME_COLOR";var Fv=K({name:"ThemeColorPicker",props:{themeColor:{type:Object,required:!0}},setup(e){const t=(n="")=>{const r=document.documentElement.classList,s=tr(e.themeColor);if(!n){localStorage.removeItem(bs),r.remove(...s);return}r.remove(...s.filter(o=>o!==n)),r.add(n),localStorage.setItem(bs,n)};return we(()=>{const n=localStorage.getItem(bs);n&&t(n)}),()=>c("ul",{id:"theme-color-picker"},[c("li",c("span",{class:"theme-color",onClick:()=>t()})),Oi(e.themeColor).map(([n,r])=>c("li",c("span",{style:{background:r},onClick:()=>t(n)})))])}});const vn=xo.enableThemeColor==="true",Dv=vn?ah(Oi(xo).filter(([e])=>e.startsWith("theme-"))):{};var Bv=K({name:"ThemeColor",setup(){const e=pe(),t=k(()=>e.value.outlookLocales.themeColor);return()=>vn?c("div",{class:"theme-color-wrapper"},[c("label",{class:"theme-color-title",for:"theme-color-picker"},t.value),c(Fv,{themeColor:Dv})]):null}}),Lc=K({name:"ToggleFullScreenButton",setup(){const e=pe(),{isSupported:t,isFullscreen:n,toggle:r}=wo(),s=k(()=>e.value.outlookLocales.fullscreen);return()=>t?c("div",{class:"full-screen-wrapper"},[c("label",{class:"full-screen-title",for:"full-screen-switch"},s.value),c("button",{type:"button",id:"full-screen-switch",class:"full-screen",ariaPressed:n.value,onClick:()=>r()},n.value?c(Tc):c(Sc))]):null}}),Ac=K({name:"OutlookSettings",setup(){const e=xn(),t=sr(),n=k(()=>!t.value&&e.value.fullscreen);return()=>c(Ur,()=>[vn?c(Bv):null,c(Hv),n.value?c(Lc):null])}}),Vv=K({name:"NavScreen",props:{show:Boolean},emits:["close"],slots:Object,setup(e,{emit:t,slots:n}){const r=de(),{isMobile:s}=Xr(),o=lt(),l=_o(o);return we(()=>{o.value=document.body,ie(s,a=>{!a&&e.show&&(l.value=!1,t("close"))}),ie(()=>r.value.path,()=>{l.value=!1,t("close")})}),Cn(()=>{l.value=!1}),()=>c(Dt,{name:"fade",onEnter:()=>{l.value=!0},onAfterLeave:()=>{l.value=!1}},()=>{var a,i;return e.show?c("div",{id:"nav-screen"},c("div",{class:"vp-nav-screen-container"},[(a=n.before)==null?void 0:a.call(n),c(Nv),c("div",{class:"vp-outlook-wrapper"},c(Ac)),(i=n.after)==null?void 0:i.call(n)])):null})}}),zv=K({name:"NavbarBrand",setup(){const e=nn(),t=Gr(),n=pe(),r=k(()=>n.value.home||e.value),s=k(()=>t.value.title),o=k(()=>n.value.navTitle??s.value),l=k(()=>n.value.logo?Me(n.value.logo):null),a=k(()=>n.value.logoDark?Me(n.value.logoDark):null);return()=>c(qe,{to:r.value,class:"vp-brand"},()=>[l.value?c("img",{class:["vp-nav-logo",{light:!!a.value}],src:l.value,alt:""}):null,a.value?c("img",{class:["vp-nav-logo dark"],src:a.value,alt:""}):null,o.value?c("span",{class:["vp-site-name",{"hide-in-pad":l.value&&n.value.hideSiteNameOnMobile!==!1}]},o.value):null])}}),jv=K({name:"NavbarLinks",setup(){const e=wc();return()=>e.value.length?c("nav",{class:"vp-nav-links"},e.value.map(t=>c("div",{class:"nav-item hide-in-mobile"},"children"in t?c(Ov,{config:t}):c(Fe,{config:t})))):null}}),Wv=K({name:"RepoLink",components:{BitbucketIcon:zi,GiteeIcon:Vi,GitHubIcon:Di,GitLabIcon:Bi,SourceIcon:ji},setup(){const e=Mv();return()=>e.value?c("div",{class:"nav-item vp-repo"},c("a",{class:"vp-repo-link",href:e.value.link,target:"_blank",rel:"noopener noreferrer","aria-label":e.value.label},c(Je(`${e.value.type}Icon`),{style:{width:"1.25rem",height:"1.25rem",verticalAlign:"middle"}}))):null}});const Pc=({active:e=!1},{emit:t})=>c("button",{type:"button",class:["vp-toggle-navbar-button",{"is-active":e}],"aria-label":"Toggle Navbar","aria-expanded":e,"aria-controls":"nav-screen",onClick:()=>t("toggle")},c("span",[c("span",{class:"vp-top"}),c("span",{class:"vp-middle"}),c("span",{class:"vp-bottom"})]));Pc.displayName="ToggleNavbarButton";var Kv=Pc;const Fs=(e,{emit:t})=>c("button",{type:"button",class:"vp-toggle-sidebar-button",title:"Toggle Sidebar",onClick:()=>t("toggle")},c("span",{class:"icon"}));Fs.displayName="ToggleSidebarButton",Fs.emits=["toggle"];var Gv=Fs,Uv=K({name:"OutlookButton",setup(){const{isSupported:e}=wo(),t=xn(),n=sr(),r=de(),{canToggle:s}=or(),o=X(!1),l=k(()=>!n.value&&t.value.fullscreen&&e);return ie(()=>r.value.path,()=>{o.value=!1}),()=>s.value||l.value||vn?c("div",{class:"nav-item hide-in-mobile"},s.value&&!l.value&&!vn?c(xc):l.value&&!s.value&&!vn?c(Lc):c("button",{type:"button",class:["outlook-button",{open:o.value}],tabindex:"-1","aria-hidden":!0},[c(kc),c("div",{class:"outlook-dropdown"},c(Ac))])):null}}),Zv=K({name:"NavBar",emits:["toggleSidebar"],slots:Object,setup(e,{emit:t,slots:n}){const r=pe(),{isMobile:s}=Xr(),o=X(!1),l=k(()=>{const{navbarAutoHide:u="mobile"}=r.value;return u!=="none"&&(u==="always"||s.value)}),a=k(()=>r.value.navbarLayout||{start:["Brand"],center:["Links"],end:["Language","Repo","Outlook","Search"]}),i={Brand:zv,Language:gs,Links:jv,Repo:Wv,Outlook:Uv,Search:wt("Docsearch")?Je("Docsearch"):wt("SearchBox")?Je("SearchBox"):gs},f=u=>i[u]??(wt(u)?Je(u):gs);return()=>{var u,d,p,v,g,_;return[c("header",{id:"navbar",class:["vp-navbar",{"auto-hide":l.value,"hide-icon":r.value.navbarIcon===!1}]},[c("div",{class:"vp-navbar-start"},[c(Gv,{onToggle:()=>{o.value&&(o.value=!1),t("toggleSidebar")}}),(u=n.startBefore)==null?void 0:u.call(n),(a.value.start||[]).map(E=>c(f(E))),(d=n.startAfter)==null?void 0:d.call(n)]),c("div",{class:"vp-navbar-center"},[(p=n.centerBefore)==null?void 0:p.call(n),(a.value.center||[]).map(E=>c(f(E))),(v=n.centerAfter)==null?void 0:v.call(n)]),c("div",{class:"vp-navbar-end"},[(g=n.endBefore)==null?void 0:g.call(n),(a.value.end||[]).map(E=>c(f(E))),(_=n.endAfter)==null?void 0:_.call(n),c(Kv,{active:o.value,onToggle:()=>{o.value=!o.value}})])]),c(Vv,{show:o.value,onClose:()=>{o.value=!1}},{before:()=>{var E;return(E=n.screenTop)==null?void 0:E.call(n)},after:()=>{var E;return(E=n.screenBottom)==null?void 0:E.call(n)}})]}}}),Yv=K({name:"SidebarChild",props:{config:{type:Object,required:!0}},setup(e){const t=St();return()=>[vc(e.config,{class:["vp-sidebar-link",`vp-sidebar-${e.config.type}`,{active:_n(t,e.config,!0)}],exact:!0}),mc(e.config.children)]}}),qv=K({name:"SidebarGroup",props:{config:{type:Object,required:!0},open:{type:Boolean,required:!0}},emits:["toggle"],setup(e,{emit:t}){const n=St(),r=k(()=>_n(n,e.config)),s=k(()=>_n(n,e.config,!0));return()=>{const{collapsible:o,children:l=[],icon:a,prefix:i,link:f,text:u}=e.config;return c("section",{class:"vp-sidebar-group"},[c(o?"button":"p",{class:["vp-sidebar-heading",{clickable:o||f,exact:s.value,active:r.value}],...o?{type:"button",onClick:()=>t("toggle"),onKeydown:d=>{d.key==="Enter"&&t("toggle")}}:{}},[c(Be,{icon:a}),f?c(Fe,{class:"vp-sidebar-title",config:{text:u,link:f},noExternalLinkIcon:!0}):c("span",{class:"vp-sidebar-title"},u),o?c("span",{class:["vp-arrow",e.open?"down":"end"]}):null]),e.open||!o?c(Rc,{key:i,config:l}):null])}}}),Rc=K({name:"SidebarLinks",props:{config:{type:Array,required:!0}},setup(e){const t=St(),n=X(-1),r=s=>{n.value=s===n.value?-1:s};return ie(()=>t.path,()=>{const s=e.config.findIndex(o=>hc(t,o));n.value=s},{immediate:!0,flush:"post"}),()=>c("ul",{class:"vp-sidebar-links"},e.config.map((s,o)=>c("li",s.type==="group"?c(qv,{config:s,open:o===n.value,onToggle:()=>r(o)}):c(Yv,{config:s}))))}}),Xv=K({name:"SideBar",slots:Object,setup(e,{slots:t}){const n=St(),r=pe(),s=Po(),o=lt();return we(()=>{ie(()=>n.hash,l=>{const a=document.querySelector(`.vp-sidebar a.vp-sidebar-link[href="${n.path}${l}"]`);if(!a)return;const{top:i,height:f}=o.value.getBoundingClientRect(),{top:u,height:d}=a.getBoundingClientRect();ui+f&&a.scrollIntoView(!1)},{immediate:!0})}),()=>{var l,a,i;return c("aside",{ref:o,id:"sidebar",class:["vp-sidebar",{"hide-icon":r.value.sidebarIcon===!1}]},[(l=t.top)==null?void 0:l.call(t),((a=t.default)==null?void 0:a.call(t))||c(Rc,{config:s.value}),(i=t.bottom)==null?void 0:i.call(t)])}}}),Ic=K({name:"CommonWrapper",props:{containerClass:{type:String,default:""},noNavbar:Boolean,noSidebar:Boolean,noToc:Boolean},slots:Object,setup(e,{slots:t}){const n=tt(),r=de(),s=xe(),o=pe(),{isMobile:l,isPC:a}=Xr(),[i,f]=Fl(!1),[u,d]=Fl(!1),p=Po(),v=X(!1),g=k(()=>e.noNavbar||s.value.navbar===!1||o.value.navbar===!1?!1:!!(r.value.title||o.value.logo||o.value.repo||o.value.navbar)),_=k(()=>e.noSidebar?!1:s.value.sidebar!==!1&&p.value.length!==0&&!s.value.home),E=k(()=>e.noToc||s.value.home?!1:s.value.toc||o.value.toc!==!1&&s.value.toc!==!1),b={x:0,y:0},L=C=>{b.x=C.changedTouches[0].clientX,b.y=C.changedTouches[0].clientY},y=C=>{const j=C.changedTouches[0].clientX-b.x,N=C.changedTouches[0].clientY-b.y;Math.abs(j)>Math.abs(N)*1.5&&Math.abs(j)>40&&(j>0&&b.x<=80?f(!0):f(!1))},S=()=>window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;let $=0;return Te("scroll",kh(()=>{const C=S();C<=58||C<$?v.value=!1:$+200{C||f(!1)}),we(()=>{const C=_o(document.body);ie(i,N=>{C.value=N});const j=n.afterEach(()=>{f(!1)});Cn(()=>{C.value=!1,j()})}),()=>c(wt("GlobalEncrypt")?Je("GlobalEncrypt"):Ai,()=>c("div",{class:["theme-container",{"no-navbar":!g.value,"no-sidebar":!_.value&&!(t.sidebar||t.sidebarTop||t.sidebarBottom),"has-toc":E.value,"hide-navbar":v.value,"sidebar-collapsed":!l.value&&!a.value&&u.value,"sidebar-open":l.value&&i.value},e.containerClass,s.value.containerClass||""],onTouchStart:L,onTouchEnd:y},[g.value?c(Zv,{onToggleSidebar:()=>f()},{startBefore:()=>{var C;return(C=t.navbarStartBefore)==null?void 0:C.call(t)},startAfter:()=>{var C;return(C=t.navbarStartAfter)==null?void 0:C.call(t)},centerBefore:()=>{var C;return(C=t.navbarCenterBefore)==null?void 0:C.call(t)},centerAfter:()=>{var C;return(C=t.navbarCenterAfter)==null?void 0:C.call(t)},endBefore:()=>{var C;return(C=t.navbarEndBefore)==null?void 0:C.call(t)},endAfter:()=>{var C;return(C=t.navbarEndAfter)==null?void 0:C.call(t)},screenTop:()=>{var C;return(C=t.navScreenTop)==null?void 0:C.call(t)},screenBottom:()=>{var C;return(C=t.navScreenBottom)==null?void 0:C.call(t)}}):null,c(Dt,{name:"fade"},()=>i.value?c("div",{class:"vp-sidebar-mask",onClick:()=>f(!1)}):null),c(Dt,{name:"fade"},()=>l.value?null:c("div",{class:"toggle-sidebar-wrapper",onClick:()=>d()},c("span",{class:["arrow",u.value?"end":"start"]}))),c(Xv,{},{...t.sidebar?{default:()=>t.sidebar()}:{},top:()=>{var C;return(C=t.sidebarTop)==null?void 0:C.call(t)},bottom:()=>{var C;return(C=t.sidebarBottom)==null?void 0:C.call(t)}}),t.default(),c(Iv)]))}}),un=K({name:"DropTransition",props:{type:{type:String,default:"single"},delay:{type:Number,default:0},duration:{type:Number,default:.25},appear:Boolean},slots:Object,setup(e,{slots:t}){const n=s=>{s.style.transition=`transform ${e.duration}s ease-in-out ${e.delay}s, opacity ${e.duration}s ease-in-out ${e.delay}s`,s.style.transform="translateY(-20px)",s.style.opacity="0"},r=s=>{s.style.transform="translateY(0)",s.style.opacity="1"};return()=>c(e.type==="single"?Dt:wd,{name:"drop",appear:e.appear,onAppear:n,onAfterAppear:r,onEnter:n,onAfterEnter:r,onBeforeLeave:n},()=>t.default())}});const Ds=({custom:e})=>c(gi,{class:["theme-hope-content",{custom:e}]});Ds.displayName="MarkdownContent",Ds.props={custom:Boolean};var Oc=Ds;const Mc=()=>c(me,{name:"author"},()=>c("path",{d:"M649.6 633.6c86.4-48 147.2-144 147.2-249.6 0-160-128-288-288-288s-288 128-288 288c0 108.8 57.6 201.6 147.2 249.6-121.6 48-214.4 153.6-240 288-3.2 9.6 0 19.2 6.4 25.6 3.2 9.6 12.8 12.8 22.4 12.8h704c9.6 0 19.2-3.2 25.6-12.8 6.4-6.4 9.6-16 6.4-25.6-25.6-134.4-121.6-240-243.2-288z"}));Mc.displayName="AuthorIcon";const $c=()=>c(me,{name:"calendar"},()=>c("path",{d:"M716.4 110.137c0-18.753-14.72-33.473-33.472-33.473-18.753 0-33.473 14.72-33.473 33.473v33.473h66.993v-33.473zm-334.87 0c0-18.753-14.72-33.473-33.473-33.473s-33.52 14.72-33.52 33.473v33.473h66.993v-33.473zm468.81 33.52H716.4v100.465c0 18.753-14.72 33.473-33.472 33.473a33.145 33.145 0 01-33.473-33.473V143.657H381.53v100.465c0 18.753-14.72 33.473-33.473 33.473a33.145 33.145 0 01-33.473-33.473V143.657H180.6A134.314 134.314 0 0046.66 277.595v535.756A134.314 134.314 0 00180.6 947.289h669.74a134.36 134.36 0 00133.94-133.938V277.595a134.314 134.314 0 00-133.94-133.938zm33.473 267.877H147.126a33.145 33.145 0 01-33.473-33.473c0-18.752 14.72-33.473 33.473-33.473h736.687c18.752 0 33.472 14.72 33.472 33.473a33.145 33.145 0 01-33.472 33.473z"}));$c.displayName="CalendarIcon";const Nc=()=>c(me,{name:"category"},()=>c("path",{d:"M148.41 106.992h282.176c22.263 0 40.31 18.048 40.31 40.31V429.48c0 22.263-18.047 40.31-40.31 40.31H148.41c-22.263 0-40.311-18.047-40.311-40.31V147.302c0-22.263 18.048-40.31 40.311-40.31zM147.556 553.478H429.73c22.263 0 40.311 18.048 40.311 40.31v282.176c0 22.263-18.048 40.312-40.31 40.312H147.555c-22.263 0-40.311-18.049-40.311-40.312V593.79c0-22.263 18.048-40.311 40.31-40.311zM593.927 106.992h282.176c22.263 0 40.31 18.048 40.31 40.31V429.48c0 22.263-18.047 40.31-40.31 40.31H593.927c-22.263 0-40.311-18.047-40.311-40.31V147.302c0-22.263 18.048-40.31 40.31-40.31zM730.22 920.502H623.926c-40.925 0-74.22-33.388-74.22-74.425V623.992c0-41.038 33.387-74.424 74.425-74.424h222.085c41.038 0 74.424 33.226 74.424 74.067v114.233c0 10.244-8.304 18.548-18.547 18.548s-18.548-8.304-18.548-18.548V623.635c0-20.388-16.746-36.974-37.33-36.974H624.13c-20.585 0-37.331 16.747-37.331 37.33v222.086c0 20.585 16.654 37.331 37.126 37.331H730.22c10.243 0 18.547 8.304 18.547 18.547 0 10.244-8.304 18.547-18.547 18.547z"}));Nc.displayName="CategoryIcon";const Hc=()=>c(me,{name:"print"},()=>c("path",{d:"M819.2 364.8h-44.8V128c0-17.067-14.933-32-32-32H281.6c-17.067 0-32 14.933-32 32v236.8h-44.8C145.067 364.8 96 413.867 96 473.6v192c0 59.733 49.067 108.8 108.8 108.8h44.8V896c0 17.067 14.933 32 32 32h460.8c17.067 0 32-14.933 32-32V774.4h44.8c59.733 0 108.8-49.067 108.8-108.8v-192c0-59.733-49.067-108.8-108.8-108.8zM313.6 160h396.8v204.8H313.6V160zm396.8 704H313.6V620.8h396.8V864zM864 665.6c0 25.6-19.2 44.8-44.8 44.8h-44.8V588.8c0-17.067-14.933-32-32-32H281.6c-17.067 0-32 14.933-32 32v121.6h-44.8c-25.6 0-44.8-19.2-44.8-44.8v-192c0-25.6 19.2-44.8 44.8-44.8h614.4c25.6 0 44.8 19.2 44.8 44.8v192z"}));Hc.displayName="PrintIcon";const Fc=()=>c(me,{name:"tag"},()=>c("path",{d:"M939.902 458.563L910.17 144.567c-1.507-16.272-14.465-29.13-30.737-30.737L565.438 84.098h-.402c-3.215 0-5.726 1.005-7.634 2.913l-470.39 470.39a10.004 10.004 0 000 14.164l365.423 365.424c1.909 1.908 4.42 2.913 7.132 2.913s5.223-1.005 7.132-2.913l470.39-470.39c2.01-2.11 3.014-5.023 2.813-8.036zm-240.067-72.121c-35.458 0-64.286-28.828-64.286-64.286s28.828-64.285 64.286-64.285 64.286 28.828 64.286 64.285-28.829 64.286-64.286 64.286z"}));Fc.displayName="TagIcon";const Dc=()=>c(me,{name:"timer"},()=>c("path",{d:"M799.387 122.15c4.402-2.978 7.38-7.897 7.38-13.463v-1.165c0-8.933-7.38-16.312-16.312-16.312H256.33c-8.933 0-16.311 7.38-16.311 16.312v1.165c0 5.825 2.977 10.874 7.637 13.592 4.143 194.44 97.22 354.963 220.201 392.763-122.204 37.542-214.893 196.511-220.2 389.397-4.661 5.049-7.638 11.651-7.638 19.03v5.825h566.49v-5.825c0-7.379-2.849-13.981-7.509-18.9-5.049-193.016-97.867-351.985-220.2-389.527 123.24-37.67 216.446-198.453 220.588-392.892zM531.16 450.445v352.632c117.674 1.553 211.787 40.778 211.787 88.676H304.097c0-48.286 95.149-87.382 213.728-88.676V450.445c-93.077-3.107-167.901-81.297-167.901-177.093 0-8.803 6.99-15.793 15.793-15.793 8.803 0 15.794 6.99 15.794 15.793 0 80.261 63.69 145.635 142.01 145.635s142.011-65.374 142.011-145.635c0-8.803 6.99-15.793 15.794-15.793s15.793 6.99 15.793 15.793c0 95.019-73.789 172.82-165.96 177.093z"}));Dc.displayName="TimerIcon";const Bc=()=>c(me,{name:"word"},()=>[c("path",{d:"M518.217 432.64V73.143A73.143 73.143 0 01603.43 1.097a512 512 0 01419.474 419.474 73.143 73.143 0 01-72.046 85.212H591.36a73.143 73.143 0 01-73.143-73.143z"}),c("path",{d:"M493.714 566.857h340.297a73.143 73.143 0 0173.143 85.577A457.143 457.143 0 11371.566 117.76a73.143 73.143 0 0185.577 73.143v339.383a36.571 36.571 0 0036.571 36.571z"})]);Bc.displayName="WordIcon";const zt=()=>{const e=pe();return k(()=>e.value.metaLocales)};var Jv=K({name:"AuthorInfo",inheritAttrs:!1,props:{author:{type:Array,required:!0},pure:Boolean},setup(e){const t=zt();return()=>e.author.length?c("span",{class:"page-author-info","aria-label":`${t.value.author}${e.pure?"":"🖊"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[c(Mc),c("span",e.author.map(n=>n.url?c("a",{class:"page-author-item",href:n.url,target:"_blank",rel:"noopener noreferrer"},n.name):c("span",{class:"page-author-item"},n.name))),c("span",{property:"author",content:e.author.map(n=>n.name).join(", ")})]):null}}),Qv=K({name:"CategoryInfo",inheritAttrs:!1,props:{category:{type:Array,required:!0},pure:Boolean},setup(e){const t=tt(),n=de(),r=zt(),s=(o,l="")=>{l&&n.value.path!==l&&(o.preventDefault(),t.push(l))};return()=>e.category.length?c("span",{class:"page-category-info","aria-label":`${r.value.category}${e.pure?"":"🌈"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[c(Nc),e.category.map(({name:o,path:l})=>c("span",{class:["page-category-item",{[`category${Pi(o,9)}`]:!e.pure,clickable:l}],role:l?"navigation":"",onClick:a=>s(a,l)},o)),c("meta",{property:"articleSection",content:e.category.map(({name:o})=>o).join(",")})]):null}}),e0=K({name:"DateInfo",inheritAttrs:!1,props:{date:{type:Object,default:null},localizedDate:{type:String,default:""},pure:Boolean},setup(e){const t=pi(),n=zt();return()=>e.date?c("span",{class:"page-date-info","aria-label":`${n.value.date}${e.pure?"":"📅"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[c($c),c("span",c(Ur,()=>e.localizedDate||e.date.toLocaleDateString(t.value))),c("meta",{property:"datePublished",content:e.date.toISOString()||""})]):null}}),t0=K({name:"OriginalInfo",inheritAttrs:!1,props:{isOriginal:Boolean},setup(e){const t=zt();return()=>e.isOriginal?c("span",{class:"page-original-info"},t.value.origin):null}}),n0=K({name:"ReadingTimeInfo",inheritAttrs:!1,props:{readingTime:{type:Object,default:()=>null},readingTimeLocale:{type:Object,default:()=>null},pure:Boolean},setup(e){const t=zt(),n=k(()=>{if(!e.readingTime)return null;const{minutes:r}=e.readingTime;return r<1?"PT1M":`PT${Math.round(r)}M`});return()=>{var r,s;return(r=e.readingTimeLocale)!=null&&r.time?c("span",{class:"page-reading-time-info","aria-label":`${t.value.readingTime}${e.pure?"":"⌛"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[c(Dc),c("span",(s=e.readingTimeLocale)==null?void 0:s.time),c("meta",{property:"timeRequired",content:n.value})]):null}}}),r0=K({name:"TagInfo",inheritAttrs:!1,props:{tag:{type:Array,default:()=>[]},pure:Boolean},setup(e){const t=tt(),n=de(),r=zt(),s=(o,l="")=>{l&&n.value.path!==l&&(o.preventDefault(),t.push(l))};return()=>e.tag.length?c("span",{class:"page-tag-info","aria-label":`${r.value.tag}${e.pure?"":"🏷"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[c(Fc),e.tag.map(({name:o,path:l})=>c("span",{class:["page-tag-item",{[`tag${Pi(o,9)}`]:!e.pure,clickable:l}],role:l?"navigation":"",onClick:a=>s(a,l)},o)),c("meta",{property:"keywords",content:e.tag.map(({name:o})=>o).join(",")})]):null}}),s0=K({name:"ReadTimeInfo",inheritAttrs:!1,props:{readingTime:{type:Object,default:()=>null},readingTimeLocale:{type:Object,default:()=>null},pure:Boolean},setup(e){const t=zt();return()=>{var n,r,s;return(n=e.readingTimeLocale)!=null&&n.words?c("span",{class:"page-word-info","aria-label":`${t.value.words}${e.pure?"":"🔠"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[c(Bc),c("span",(r=e.readingTimeLocale)==null?void 0:r.words),c("meta",{property:"wordCount",content:(s=e.readingTime)==null?void 0:s.words})]):null}}}),o0=K({name:"PageInfo",components:{AuthorInfo:Jv,CategoryInfo:Qv,DateInfo:e0,OriginalInfo:t0,PageViewInfo:()=>null,ReadingTimeInfo:n0,TagInfo:r0,WordInfo:s0},props:{items:{type:[Array,Boolean],default:()=>["Author","Original","Date","PageView","ReadingTime","Category","Tag"]},info:{type:Object,required:!0}},setup(e){const t=sr();return()=>e.items?c("div",{class:"page-info"},e.items.map(n=>c(Je(`${n}Info`),{...e.info,pure:t.value}))):null}}),l0=K({name:"PrintButton",setup(){const e=xn(),t=pe();return()=>e.value.print===!1?null:c("button",{type:"button",class:"print-button",title:t.value.metaLocales.print,onClick:()=>{window.print()}},c(Hc))}});const a0=({title:e,level:t,slug:n})=>c(qe,{to:`#${n}`,class:["toc-link",`level${t}`]},()=>e),Bs=(e,t)=>{const n=St();return e.length&&t>0?c("ul",{class:"toc-list"},e.map(r=>{const s=Bs(r.children,t-1);return[c("li",{class:["toc-item",{active:n.hash===`#${r.slug}`}]},a0(r)),s?c("li",s):null]})):null};var i0=K({name:"TOC",props:{items:{type:Array,default:()=>[]},headerDepth:{type:Number,default:2}},slots:Object,setup(e,{slots:t}){const n=St(),r=de(),s=zt(),o=lt(),l=X("-1.7rem"),a=f=>{var u;(u=o.value)==null||u.scrollTo({top:f,behavior:"smooth"})},i=()=>{if(o.value){const f=document.querySelector(".toc-item.active");f?l.value=`${f.getBoundingClientRect().top-o.value.getBoundingClientRect().top+o.value.scrollTop}px`:l.value="-1.7rem"}else l.value="-1.7rem"};return we(()=>{ie(()=>n.hash,f=>{if(o.value){const u=document.querySelector(`#toc a.toc-link[href$="${f}"]`);if(!u)return;const{top:d,height:p}=o.value.getBoundingClientRect(),{top:v,height:g}=u.getBoundingClientRect();vd+p&&a(o.value.scrollTop+v+g-d-p)}}),ie(()=>n.fullPath,i,{flush:"post",immediate:!0})}),()=>{var u,d;const f=e.items.length?Bs(e.items,e.headerDepth):r.value.headers?Bs(r.value.headers,e.headerDepth):null;return f?c("div",{class:"toc-place-holder"},[c("aside",{id:"toc"},[(u=t.before)==null?void 0:u.call(t),c("div",{class:"toc-header"},[s.value.toc,c(l0)]),c("div",{class:"toc-wrapper",ref:o},[f,c("div",{class:"toc-marker",style:{top:l.value}})]),(d=t.after)==null?void 0:d.call(t)])]):null}}}),Vc=K({name:"SkipLink",props:{content:{type:String,default:"main-content"}},setup(e){const t=de(),n=pe(),r=lt(),s=({target:o})=>{const l=document.querySelector(o.hash);if(l){const a=()=>{l.removeAttribute("tabindex"),l.removeEventListener("blur",a)};l.setAttribute("tabindex","-1"),l.addEventListener("blur",a),l.focus(),window.scrollTo(0,0)}};return we(()=>{ie(()=>t.value.path,()=>r.value.focus())}),()=>[c("span",{ref:r,tabindex:"-1"}),c("a",{href:`#${e.content}`,class:"vp-skip-link sr-only",onClick:s},n.value.routeLocales.skipToContent)]}});let ys=null,Rn=null;const c0={wait:()=>ys,pending:()=>{ys=new Promise(e=>Rn=e)},resolve:()=>{Rn==null||Rn(),ys=null,Rn=null}},zc=()=>c0;var u0=K({name:"FadeSlideY",slots:Object,setup(e,{slots:t}){const{resolve:n,pending:r}=zc();return()=>c(Dt,{name:"fade-slide-y",mode:"out-in",onBeforeEnter:n,onBeforeLeave:r},()=>{var s;return(s=t.default)==null?void 0:s.call(t)})}});const f0=(e,t)=>{const n=e.replace(t,"/").split("/"),r=[];let s=fo(t);return n.forEach((o,l)=>{l!==n.length-1?(s+=`${o}/`,r.push({link:s,name:o||"Home"})):o!==""&&(s+=o,r.push({link:s,name:o}))}),r},jc=(e,{slots:t})=>{var d,p;const{bgImage:n,bgImageDark:r,bgImageStyle:s,color:o,description:l,image:a,imageDark:i,header:f,features:u=[]}=e;return c("div",{class:"vp-feature-wrapper"},[n?c("div",{class:["vp-feature-bg",{light:r}],style:[{"background-image":`url(${n})`},s]}):null,r?c("div",{class:"vp-feature-bg dark",style:[{"background-image":`url(${r})`},s]}):null,c("div",{class:"vp-feature",style:o?{color:o}:{}},[((d=t.image)==null?void 0:d.call(t,e))||[a?c("img",{class:["vp-feature-image",{light:i}],src:Me(a),alt:""}):null,i?c("img",{class:"vp-feature-image dark",src:Me(i),alt:""}):null],((p=t.info)==null?void 0:p.call(t,e))||[f?c("h2",{class:"vp-feature-header"},f):null,l?c("p",{class:"vp-feature-description",innerHTML:l}):null],u.length?c("div",{class:"vp-features"},u.map(({icon:v,title:g,details:_,link:E})=>{const b=[c("h3",{class:"vp-feature-title"},[c(Be,{icon:v}),c("span",{innerHTML:g})]),c("p",{class:"vp-feature-details",innerHTML:_})];return E?Mr(E)?c("a",{class:"vp-feature-item link",href:E,"aria-label":g,target:"_blank"},b):c(qe,{class:"vp-feature-item link",to:E,"aria-label":g},()=>b):c("div",{class:"vp-feature-item"},b)})):null])])};jc.displayName="FeaturePanel";var Xl=jc;const Wc=e=>{const{icon:t="",color:n,size:r}=e,s={};return n&&(s.color=n),r&&(s.height=Number.isNaN(Number(r))?r:`${r}px`),Tn(t)?c("img",{class:"icon",src:t,"no-view":"",style:s}):qr(t)?c("img",{class:"icon",src:Me(t),"aria-hidden":"","no-view":"",style:s}):c(Je("FontIcon"),e)};Wc.displayName="HopeIcon";var d0=Wc,p0=K({name:"HeroInfo",slots:Object,setup(e,{slots:t}){const n=xe(),r=Gr(),s=k(()=>n.value.heroFullScreen??!1),o=k(()=>{const{heroText:f,tagline:u}=n.value;return{text:f??r.value.title??"Hello",tagline:u??r.value.description??"",isFullScreen:s.value}}),l=k(()=>{const{heroText:f,heroImage:u,heroImageDark:d,heroAlt:p,heroImageStyle:v}=n.value;return{image:u?Me(u):null,imageDark:d?Me(d):null,heroStyle:v,alt:p||f||"",isFullScreen:s.value}}),a=k(()=>{const{bgImage:f,bgImageDark:u,bgImageStyle:d}=n.value;return{image:Et(f)?Me(f):null,imageDark:Et(u)?Me(u):null,bgStyle:d,isFullScreen:s.value}}),i=k(()=>n.value.actions??[]);return()=>{var f,u,d;return c("header",{class:["vp-hero-info-wrapper",{fullscreen:s.value}]},[((f=t.heroBg)==null?void 0:f.call(t,a.value))||[a.value.image?c("div",{class:["vp-hero-mask",{light:a.value.imageDark}],style:[{"background-image":`url(${a.value.image})`},a.value.bgStyle]}):null,a.value.imageDark?c("div",{class:"vp-hero-mask dark",style:[{"background-image":`url(${a.value.imageDark})`},a.value.bgStyle]}):null],c("div",{class:"vp-hero-info"},[((u=t.heroImage)==null?void 0:u.call(t,l.value))||c(un,{appear:!0,type:"group"},()=>[l.value.image?c("img",{key:"light",class:["vp-hero-image",{light:l.value.imageDark}],style:l.value.heroStyle,src:l.value.image,alt:l.value.alt}):null,l.value.imageDark?c("img",{key:"dark",class:"vp-hero-image dark",style:l.value.heroStyle,src:l.value.imageDark,alt:l.value.alt}):null]),((d=t.heroInfo)==null?void 0:d.call(t,o.value))??c("div",{class:"vp-hero-infos"},[o.value.text?c(un,{appear:!0,delay:.04},()=>c("h1",{id:"main-title"},o.value.text)):null,o.value.tagline?c(un,{appear:!0,delay:.08},()=>c("p",{id:"main-description",innerHTML:o.value.tagline})):null,i.value.length?c(un,{appear:!0,delay:.12},()=>c("p",{class:"vp-hero-actions"},i.value.map(p=>c(Fe,{class:["vp-hero-action",p.type||"default"],config:p,noExternalLinkIcon:!0},p.icon?{before:()=>c(d0,{icon:p.icon})}:{})))):null])])])}}});const Kc=(e,{slots:t})=>{var p,v,g;const{bgImage:n,bgImageDark:r,bgImageStyle:s,color:o,description:l,image:a,imageDark:i,header:f,highlights:u=[],type:d="un-order"}=e;return c("div",{class:"vp-highlight-wrapper",style:o?{color:o}:{}},[n?c("div",{class:["vp-highlight-bg",{light:r}],style:[{"background-image":`url(${n})`},s]}):null,r?c("div",{class:"vp-highlight-bg dark",style:[{"background-image":`url(${r})`},s]}):null,c("div",{class:"vp-highlight"},[((p=t.image)==null?void 0:p.call(t,e))||[a?c("img",{class:["vp-highlight-image",{light:i}],src:Me(a),alt:""}):null,i?c("img",{class:"vp-highlight-image dark",src:Me(i),alt:""}):null],((v=t.info)==null?void 0:v.call(t,e))||[c("div",{class:"vp-highlight-info-wrapper"},c("div",{class:"vp-highlight-info"},[f?c("h2",{class:"vp-highlight-header",innerHTML:f}):null,l?c("p",{class:"vp-highlight-description",innerHTML:l}):null,((g=t.highlights)==null?void 0:g.call(t,u))||c(d==="order"?"ol":d==="no-order"?"dl":"ul",{class:"vp-highlights"},u.map(({icon:_,title:E,details:b,link:L})=>{const y=[c(d==="no-order"?"dt":"h3",{class:"vp-highlight-title"},[_?c(Be,{class:"vp-highlight-icon",icon:_}):null,c("span",{innerHTML:E})]),b?c(d==="no-order"?"dd":"p",{class:"vp-highlight-details",innerHTML:b}):null];return c(d==="no-order"?"div":"li",{class:["vp-highlight-item-wrapper",{link:L}]},L?sh(L)?c("a",{class:"vp-highlight-item link",href:L,"aria-label":E,target:"_blank"},y):c(qe,{class:"vp-highlight-item link",to:L,"aria-label":E},()=>y):c("div",{class:"vp-highlight-item"},y))}))]))]])])};Kc.displayName="HighlightPanel";var h0=Kc,v0=K({name:"HomePage",slots:Object,setup(e,{slots:t}){const n=sr(),r=xe(),s=k(()=>{const{features:l}=r.value;return q(l)?l:null}),o=k(()=>{const{highlights:l}=r.value;return q(l)?l:null});return()=>{var l,a,i,f;return c("main",{id:"main-content",class:["vp-project-home ",{pure:n.value}],"aria-labelledby":r.value.heroText===null?"":"main-title"},[(l=t.top)==null?void 0:l.call(t),c(p0),((a=o.value)==null?void 0:a.map(u=>"features"in u?c(Xl,u):c(h0,u)))||(s.value?c(un,{appear:!0,delay:.24},()=>c(Xl,{features:s.value})):null),(i=t.center)==null?void 0:i.call(t),c(un,{appear:!0,delay:.32},()=>c(Oc)),(f=t.bottom)==null?void 0:f.call(t)])}}}),m0=K({name:"BreadCrumb",setup(){const e=tt(),t=de(),n=nn(),r=xe(),s=pe(),o=lt([]),l=k(()=>(r.value.breadcrumb||r.value.breadcrumb!==!1&&s.value.breadcrumb!==!1)&&o.value.length>1),a=k(()=>r.value.breadcrumbIcon||r.value.breadcrumbIcon!==!1&&s.value.breadcrumbIcon!==!1),i=()=>{const f=e.getRoutes(),u=f0(t.value.path,n.value).map(({link:d,name:p})=>{const v=f.find(g=>g.path===d);if(v){const{meta:g,path:_}=Nr(e,v.path);return{title:g[bt.shortTitle]||g[bt.title]||p,icon:g[bt.icon],path:_}}return null}).filter(d=>d!==null);u.length>1&&(o.value=u)};return we(()=>{ie(()=>t.value.path,i,{immediate:!0})}),()=>c("nav",{class:["vp-breadcrumb",{disable:!l.value}]},l.value?c("ol",{vocab:"https://schema.org/",typeof:"BreadcrumbList"},o.value.map((f,u)=>c("li",{class:{"is-active":o.value.length-1===u},property:"itemListElement",typeof:"ListItem"},[c(qe,{to:f.path,property:"item",typeof:"WebPage"},()=>[a.value?c(Be,{icon:f.icon}):null,c("span",{property:"name"},f.title||"Unknown")]),c("meta",{property:"position",content:u+1})]))):[])}});const Jl=e=>{const t=tt();return e===!1?!1:ae(e)?hn(t,e,!0):uo(e)?e:null},Vs=(e,t,n)=>{const r=e.findIndex(s=>s.link===t);if(r!==-1){const s=e[r+n];return s!=null&&s.link?s:null}for(const s of e)if(s.children){const o=Vs(s.children,t,n);if(o)return o}return null};var g0=K({name:"PageNav",setup(){const e=pe(),t=xe(),n=Po(),r=de(),s=bv(),o=k(()=>{const a=Jl(t.value.prev);return a===!1?null:a||(e.value.prevLink===!1?null:Vs(n.value,r.value.path,-1))}),l=k(()=>{const a=Jl(t.value.next);return a===!1?null:a||(e.value.nextLink===!1?null:Vs(n.value,r.value.path,1))});return Te("keydown",a=>{a.altKey&&(a.key==="ArrowRight"?l.value&&(s(l.value.link),a.preventDefault()):a.key==="ArrowLeft"&&o.value&&(s(o.value.link),a.preventDefault()))}),()=>o.value||l.value?c("nav",{class:"vp-page-nav"},[o.value?c(Fe,{class:"prev",config:o.value},()=>{var a,i;return[c("div",{class:"hint"},[c("span",{class:"arrow start"}),e.value.metaLocales.prev]),c("div",{class:"link"},[c(Be,{icon:(a=o.value)==null?void 0:a.icon}),(i=o.value)==null?void 0:i.text])]}):null,l.value?c(Fe,{class:"next",config:l.value},()=>{var a,i;return[c("div",{class:"hint"},[e.value.metaLocales.next,c("span",{class:"arrow end"})]),c("div",{class:"link"},[(a=l.value)==null?void 0:a.text,c(Be,{icon:(i=l.value)==null?void 0:i.icon})])]}):null]):null}});const b0={GitHub:":repo/edit/:branch/:path",GitLab:":repo/-/edit/:branch/:path",Gitee:":repo/edit/:branch/:path",Bitbucket:":repo/src/:branch/:path?mode=edit&spa=0&at=:branch&fileviewer=file-view-default"},y0=({docsRepo:e,docsBranch:t,docsDir:n,filePathRelative:r,editLinkPattern:s})=>{if(!r)return null;const o=Fi(e);let l;return s?l=s:o!==null&&(l=b0[o]),l?l.replace(/:repo/,Tn(e)?e:`https://github.com/${e}`).replace(/:branch/,t).replace(/:path/,ai(`${fo(n)}/${r}`)):null},w0=()=>{const e=pe(),t=de(),n=xe();return k(()=>{const{repo:r,docsRepo:s=r,docsBranch:o="main",docsDir:l="",editLink:a,editLinkPattern:i=""}=e.value;if(!(n.value.editLink??a??!0)||!s)return null;const f=y0({docsRepo:s,docsBranch:o,docsDir:l,editLinkPattern:i,filePathRelative:t.value.filePathRelative});return f?{text:e.value.metaLocales.editLink,link:f}:null})},_0=()=>{const e=Gr(),t=pe(),n=de(),r=xe();return k(()=>{var s,o;return!(r.value.lastUpdated??t.value.lastUpdated??!0)||!((s=n.value.git)!=null&&s.updatedTime)?null:new Date((o=n.value.git)==null?void 0:o.updatedTime).toLocaleString(e.value.lang)})},E0=()=>{const e=pe(),t=de(),n=xe();return k(()=>{var r;return n.value.contributors??e.value.contributors??!0?((r=t.value.git)==null?void 0:r.contributors)??null:null})};var C0=K({name:"PageTitle",setup(){const e=de(),t=xe(),n=pe(),{info:r,items:s}=Ev();return()=>c("div",{class:"vp-page-title"},[c("h1",[n.value.titleIcon===!1?null:c(Be,{icon:t.value.icon}),e.value.title]),c(o0,{info:r.value,...s.value===null?{}:{items:s.value}}),c("hr")])}});const Gc=()=>c(me,{name:"edit"},()=>[c("path",{d:"M430.818 653.65a60.46 60.46 0 0 1-50.96-93.281l71.69-114.012 7.773-10.365L816.038 80.138A60.46 60.46 0 0 1 859.225 62a60.46 60.46 0 0 1 43.186 18.138l43.186 43.186a60.46 60.46 0 0 1 0 86.373L588.879 565.55l-8.637 8.637-117.466 68.234a60.46 60.46 0 0 1-31.958 11.229z"}),c("path",{d:"M728.802 962H252.891A190.883 190.883 0 0 1 62.008 771.98V296.934a190.883 190.883 0 0 1 190.883-192.61h267.754a60.46 60.46 0 0 1 0 120.92H252.891a69.962 69.962 0 0 0-69.098 69.099V771.98a69.962 69.962 0 0 0 69.098 69.098h475.911A69.962 69.962 0 0 0 797.9 771.98V503.363a60.46 60.46 0 1 1 120.922 0V771.98A190.883 190.883 0 0 1 728.802 962z"})]);Gc.displayName="EditIcon";var S0=K({name:"PageMeta",setup(){const e=pe(),t=w0(),n=_0(),r=E0();return()=>{const{metaLocales:s}=e.value;return c("footer",{class:"page-meta"},[t.value?c("div",{class:"meta-item edit-link"},c(Fe,{class:"label",config:t.value},{before:()=>c(Gc)})):null,c("div",{class:"meta-item git-info"},[n.value?c("div",{class:"update-time"},[c("span",{class:"label"},`${s.lastUpdated}: `),c(Ur,()=>c("span",{class:"info"},n.value))]):null,r.value&&r.value.length?c("div",{class:"contributors"},[c("span",{class:"label"},`${s.contributors}: `),r.value.map(({email:o,name:l},a)=>[c("span",{class:"contributor",title:`email: ${o}`},l),a!==r.value.length-1?",":""])]):null])])}}}),T0=K({name:"NormalPage",slots:Object,setup(e,{slots:t}){const n=xe(),{isDarkmode:r}=or(),s=pe(),o=k(()=>n.value.toc||n.value.toc!==!1&&s.value.toc!==!1);return()=>c("main",{id:"main-content",class:"vp-page"},c(wt("LocalEncrypt")?Je("LocalEncrypt"):Ai,()=>{var l,a,i,f;return[(l=t.top)==null?void 0:l.call(t),n.value.cover?c("div",{class:"page-cover"},c("img",{src:Me(n.value.cover),alt:"","no-view":""})):null,c(m0),c(C0),o.value?c(i0,{headerDepth:n.value.headerDepth??s.value.headerDepth??2},{before:()=>{var u;return(u=t.tocBefore)==null?void 0:u.call(t)},after:()=>{var u;return(u=t.tocAfter)==null?void 0:u.call(t)}}):null,(a=t.contentBefore)==null?void 0:a.call(t),c(Oc),(i=t.contentAfter)==null?void 0:i.call(t),c(S0),c(g0),wt("CommentService")?c(Je("CommentService"),{darkmode:r.value}):null,(f=t.bottom)==null?void 0:f.call(t)]}))}}),k0=K({name:"Layout",slots:Object,setup(e,{slots:t}){pe();const n=de(),r=xe(),{isMobile:s}=Xr(),o=k(()=>"none");return()=>[c(Vc),c(Ic,{},{default:()=>{var l;return((l=t.default)==null?void 0:l.call(t))||(r.value.home?c(v0):c(u0,()=>c(T0,{key:n.value.path},{top:()=>{var a;return(a=t.top)==null?void 0:a.call(t)},bottom:()=>{var a;return(a=t.bottom)==null?void 0:a.call(t)},contentBefore:()=>{var a;return(a=t.contentBefore)==null?void 0:a.call(t)},contentAfter:()=>{var a;return(a=t.contentAfter)==null?void 0:a.call(t)},tocBefore:()=>{var a;return(a=t.tocBefore)==null?void 0:a.call(t)},tocAfter:()=>{var a;return(a=t.tocAfter)==null?void 0:a.call(t)}})))},...o.value!=="none"?{navScreenBottom:()=>c(Je("BloggerInfo"))}:{},...!s.value&&o.value==="always"?{sidebar:()=>c(Je("BloggerInfo"))}:{}})]}}),x0=K({name:"NotFoundHint",setup(){const e=pe(),t=()=>{const n=e.value.routeLocales.notFoundMsg;return n[Math.floor(Math.random()*n.length)]};return()=>c("div",{class:"not-found-hint"},[c("p",{class:"error-code"},"404"),c("h1",{class:"error-title"},e.value.routeLocales.notFoundTitle),c("p",{class:"error-hint"},t())])}}),L0=K({name:"NotFound",slots:Object,setup(e,{slots:t}){const n=nn(),r=pe(),{navigate:s}=Ms({to:r.value.home??n.value});return()=>[c(Vc),c(Ic,{noSidebar:!0},()=>{var o;return c("main",{id:"main-content",class:"vp-page not-found"},((o=t.default)==null?void 0:o.call(t))||[c(x0),c("div",{class:"actions"},[c("button",{type:"button",class:"action-button",onClick:()=>{window.history.go(-1)}},r.value.routeLocales.back),c("button",{type:"button",class:"action-button",onClick:()=>s()},r.value.routeLocales.home)])])})]}});t1(e=>{const t=e.t,n=e.I!==!1,r=e.i;return n?{title:t,content:r?()=>[c(Be,{icon:r}),t]:null,order:e.O,index:e.I}:null});const A0=it({enhance:({app:e,router:t})=>{const{scrollBehavior:n}=t.options;t.options.scrollBehavior=async(...r)=>(await zc().wait(),n(...r)),Tv(e),e.component("HopeIcon",Be),e.component("VPLink",qe)},setup:()=>{kv(),Rv()},layouts:{Layout:k0,NotFound:L0}}),_r=[Zd,Uh,e1,l1,u1,h1,y1,x1,A1,B1,fv,A0],P0=[["v-8daa1a0e","/",{y:"h",t:"开始"},["/README.md"]],["v-712c96ac","/temp.html",{y:"a",t:""},[":md"]],["v-7d932540","/Installation/gdlauncher.html",{y:"a",t:"GDLauncher 安装"},[":md"]],["v-3631dba2","/Installation/hmcl.html",{y:"a",t:"HMCL 启动器"},[":md"]],["v-0932ecbb","/Installation/java.html",{y:"a",t:"Minecraft Java版"},[":md"]],["v-117ff75c","/Tutorials/datapacks.html",{y:"a",t:"数据包"},[":md"]],["v-3d245998","/Tutorials/getting-started.html",{y:"a",t:"入门"},[":md"]],["v-f61210c0","/Tutorials/schematics.html",{y:"a",t:"原理图"},[":md"]],["v-dd87a1e0","/Tutorials/worldgencolonies.html",{y:"a",t:"世界生成"},[":md"]],["v-3706649a","/404.html",{y:"p",t:""},[]],["v-384502bc","/Installation/",{y:"p",t:"Installation"},[]],["v-f45ff45a","/Tutorials/",{y:"p",t:"Tutorials"},[]]];var Ql=K({name:"Vuepress",setup(){const e=jd();return()=>c(e.value)}}),R0=()=>P0.reduce((e,[t,n,r,s])=>(e.push({name:t,path:n,component:Ql,meta:r},{path:n.endsWith("/")?n+"index.html":n.substring(0,n.length-5),redirect:n},...s.map(o=>({path:o===":md"?n.substring(0,n.length-5)+".md":o,redirect:n}))),e),[{name:"404",path:"/:catchAll(.*)",component:Ql}]),I0=dp,O0=()=>{const e=Yp({history:I0(fo("/Minecolonies-Chinese-Wiki/")),routes:R0(),scrollBehavior:(t,n,r)=>r||(t.hash?{el:t.hash}:{top:0})});return e.beforeResolve(async(t,n)=>{var r;(t.path!==n.path||n===gt)&&([t.meta._data]=await Promise.all([mt.resolvePageData(t.name),(r=ii[t.name])==null?void 0:r.__asyncLoader()]))}),e},M0=e=>{e.component("ClientOnly",Ur),e.component("Content",gi)},$0=(e,t,n)=>{const r=Hl(()=>t.currentRoute.value.path),s=Hl(()=>mt.resolveRouteLocale(cn.value.locales,r.value)),o=go(r,()=>t.currentRoute.value.meta._data),l=k(()=>mt.resolveLayouts(n)),a=k(()=>mt.resolveSiteLocaleData(cn.value,s.value)),i=k(()=>mt.resolvePageFrontmatter(o.value)),f=k(()=>mt.resolvePageHeadTitle(o.value,a.value)),u=k(()=>mt.resolvePageHead(f.value,i.value,a.value)),d=k(()=>mt.resolvePageLang(o.value,a.value)),p=k(()=>mt.resolvePageLayout(o.value,l.value));return e.provide(Dd,l),e.provide(ci,o),e.provide(ui,i),e.provide(zd,f),e.provide(fi,u),e.provide(di,d),e.provide(hi,p),e.provide(po,s),e.provide(mi,a),Object.defineProperties(e.config.globalProperties,{$frontmatter:{get:()=>i.value},$head:{get:()=>u.value},$headTitle:{get:()=>f.value},$lang:{get:()=>d.value},$page:{get:()=>o.value},$routeLocale:{get:()=>s.value},$site:{get:()=>cn.value},$siteLocale:{get:()=>a.value},$withBase:{get:()=>Me}}),{layouts:l,pageData:o,pageFrontmatter:i,pageHead:u,pageHeadTitle:f,pageLang:d,pageLayout:p,routeLocale:s,siteData:cn,siteLocaleData:a}},N0=()=>{const e=Vd(),t=pi(),n=X([]),r=()=>{e.value.forEach(o=>{const l=H0(o);l&&n.value.push(l)})},s=()=>{document.documentElement.lang=t.value,n.value.forEach(o=>{o.parentNode===document.head&&document.head.removeChild(o)}),n.value.splice(0,n.value.length),e.value.forEach(o=>{const l=F0(o);l!==null&&(document.head.appendChild(l),n.value.push(l))})};Xt(Kd,s),we(()=>{r(),s(),ie(()=>e.value,s)})},H0=([e,t,n=""])=>{const r=Object.entries(t).map(([a,i])=>ae(i)?`[${a}=${JSON.stringify(i)}]`:i===!0?`[${a}]`:"").join(""),s=`head > ${e}${r}`;return Array.from(document.querySelectorAll(s)).find(a=>a.innerText===n)||null},F0=([e,t,n])=>{if(!ae(e))return null;const r=document.createElement(e);return uo(t)&&Object.entries(t).forEach(([s,o])=>{ae(o)?r.setAttribute(s,o):o===!0&&r.setAttribute(s,"")}),ae(n)&&r.appendChild(document.createTextNode(n)),r},D0=xd,B0=async()=>{var n;const e=D0({name:"VuepressApp",setup(){var r;N0();for(const s of _r)(r=s.setup)==null||r.call(s);return()=>[c(Li),..._r.flatMap(({rootComponents:s=[]})=>s.map(o=>c(o)))]}}),t=O0();M0(e),$0(e,t,_r);for(const r of _r)await((n=r.enhance)==null?void 0:n.call(r,{app:e,router:t,siteData:cn}));return e.use(t),{app:e,router:t}};B0().then(({app:e,router:t})=>{t.isReady().then(()=>{e.mount("#app")})});export{z1 as A,lt as B,we as C,Cn as D,ae as E,K0 as F,uo as G,So as H,Th as I,Vt as J,J1 as O,q1 as R,Za as a,Ya as b,V0 as c,B0 as createVueApp,z0 as d,Se as e,j0 as f,K as g,tt as h,nn as i,To as j,X as k,k as l,Te as m,ie as n,Mf as o,c as p,j1 as q,Je as r,K1 as s,Vr as t,W0 as u,qe as v,Ku as w,ac as x,W1 as y,V1 as z}; -function __vite__mapDeps(indexes) { - if (!__vite__mapDeps.viteFileDeps) { - __vite__mapDeps.viteFileDeps = ["assets/index.html-EmnQAaQ8.js","assets/plugin-vue_export-helper-x3n3nnut.js","assets/temp.html-EQReOu7c.js","assets/gdlauncher.html-GCJ8v77L.js","assets/hmcl.html-hOzTwKg8.js","assets/java.html-7czWNuwa.js","assets/datapacks.html-b79FIvJC.js","assets/getting-started.html-e9ywOSFJ.js","assets/schematics.html-SSffZR-9.js","assets/worldgencolonies.html-4262Bk1s.js","assets/404.html-ildXd5bb.js","assets/index.html-Ds4LqAQv.js","assets/index.html-nt6y7cdN.js"] - } - return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) -} diff --git a/assets/app-rX80dX-Q.js b/assets/app-rX80dX-Q.js new file mode 100644 index 0000000..0827aa4 --- /dev/null +++ b/assets/app-rX80dX-Q.js @@ -0,0 +1,30 @@ +/** +* @vue/shared v3.4.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Wo(e,t){const n=new Set(e.split(","));return t?r=>n.has(r.toLowerCase()):r=>n.has(r)}const we={},fn=[],Ze=()=>{},Yc=()=>!1,Zn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),jo=e=>e.startsWith("onUpdate:"),ke=Object.assign,Ko=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},qc=Object.prototype.hasOwnProperty,le=(e,t)=>qc.call(e,t),q=Array.isArray,On=e=>Dr(e)==="[object Map]",Xc=e=>Dr(e)==="[object Set]",te=e=>typeof e=="function",ae=e=>typeof e=="string",Hr=e=>typeof e=="symbol",_e=e=>e!==null&&typeof e=="object",ea=e=>(_e(e)||te(e))&&te(e.then)&&te(e.catch),Jc=Object.prototype.toString,Dr=e=>Jc.call(e),Qc=e=>Dr(e).slice(8,-1),eu=e=>Dr(e)==="[object Object]",Go=e=>ae(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Mn=Wo(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Fr=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},tu=/-(\w)/g,et=Fr(e=>e.replace(tu,(t,n)=>n?n.toUpperCase():"")),nu=/\B([A-Z])/g,En=Fr(e=>e.replace(nu,"-$1").toLowerCase()),Yn=Fr(e=>e.charAt(0).toUpperCase()+e.slice(1)),Jr=Fr(e=>e?`on${Yn(e)}`:""),Bt=(e,t)=>!Object.is(e,t),Qr=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},ru=e=>{const t=parseFloat(e);return isNaN(t)?e:t},ou=e=>{const t=ae(e)?Number(e):NaN;return isNaN(t)?e:t};let Ms;const ta=()=>Ms||(Ms=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Uo(e){if(q(e)){const t={};for(let n=0;n{if(n){const r=n.split(lu);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Zo(e){let t="";if(ae(e))t=e;else if(q(e))for(let n=0;n=2))break}this._dirtyLevel<2&&(this._dirtyLevel=0),en()}return this._dirtyLevel>=2}set dirty(t){this._dirtyLevel=t?2:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Ht,n=Yt;try{return Ht=!0,Yt=this,this._runnings++,$s(this),this.fn()}finally{Ns(this),this._runnings--,Yt=n,Ht=t}}stop(){var t;this.active&&($s(this),Ns(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function hu(e){return e.value}function $s(e){e._trackId++,e._depsLength=0}function Ns(e){if(e.deps&&e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},Sr=new WeakMap,qt=Symbol(""),Co=Symbol("");function Be(e,t,n){if(Ht&&Yt){let r=Sr.get(e);r||Sr.set(e,r=new Map);let o=r.get(n);o||r.set(n,o=ia(()=>r.delete(n))),la(Yt,o)}}function yt(e,t,n,r,o,s){const l=Sr.get(e);if(!l)return;let a=[];if(t==="clear")a=[...l.values()];else if(n==="length"&&q(e)){const i=Number(r);l.forEach((f,u)=>{(u==="length"||!Hr(u)&&u>=i)&&a.push(f)})}else switch(n!==void 0&&a.push(l.get(n)),t){case"add":q(e)?Go(n)&&a.push(l.get("length")):(a.push(l.get(qt)),On(e)&&a.push(l.get(Co)));break;case"delete":q(e)||(a.push(l.get(qt)),On(e)&&a.push(l.get(Co)));break;case"set":On(e)&&a.push(l.get(qt));break}qo();for(const i of a)i&&aa(i,2);Xo()}function vu(e,t){var n;return(n=Sr.get(e))==null?void 0:n.get(t)}const mu=Wo("__proto__,__v_isRef,__isVue"),ca=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Hr)),Hs=gu();function gu(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=oe(this);for(let s=0,l=this.length;s{e[t]=function(...n){Qt(),qo();const r=oe(this)[t].apply(this,n);return Xo(),en(),r}}),e}function bu(e){const t=oe(this);return Be(t,"has",e),t.hasOwnProperty(e)}class ua{constructor(t=!1,n=!1){this._isReadonly=t,this._shallow=n}get(t,n,r){const o=this._isReadonly,s=this._shallow;if(n==="__v_isReactive")return!o;if(n==="__v_isReadonly")return o;if(n==="__v_isShallow")return s;if(n==="__v_raw")return r===(o?s?Iu:ha:s?pa:da).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const l=q(t);if(!o){if(l&&le(Hs,n))return Reflect.get(Hs,n,r);if(n==="hasOwnProperty")return bu}const a=Reflect.get(t,n,r);return(Hr(n)?ca.has(n):mu(n))||(o||Be(t,"get",n),s)?a:Pe(a)?l&&Go(n)?a:a.value:_e(a)?o?tn(a):qn(a):a}}class fa extends ua{constructor(t=!1){super(!1,t)}set(t,n,r,o){let s=t[n];if(!this._shallow){const i=mn(s);if(!Tr(r)&&!mn(r)&&(s=oe(s),r=oe(r)),!q(t)&&Pe(s)&&!Pe(r))return i?!1:(s.value=r,!0)}const l=q(t)&&Go(n)?Number(n)e,Br=e=>Reflect.getPrototypeOf(e);function ar(e,t,n=!1,r=!1){e=e.__v_raw;const o=oe(e),s=oe(t);n||(Bt(t,s)&&Be(o,"get",t),Be(o,"get",s));const{has:l}=Br(o),a=r?Jo:n?ts:Vn;if(l.call(o,t))return a(e.get(t));if(l.call(o,s))return a(e.get(s));e!==o&&e.get(t)}function ir(e,t=!1){const n=this.__v_raw,r=oe(n),o=oe(e);return t||(Bt(e,o)&&Be(r,"has",e),Be(r,"has",o)),e===o?n.has(e):n.has(e)||n.has(o)}function cr(e,t=!1){return e=e.__v_raw,!t&&Be(oe(e),"iterate",qt),Reflect.get(e,"size",e)}function Ds(e){e=oe(e);const t=oe(this);return Br(t).has.call(t,e)||(t.add(e),yt(t,"add",e,e)),this}function Fs(e,t){t=oe(t);const n=oe(this),{has:r,get:o}=Br(n);let s=r.call(n,e);s||(e=oe(e),s=r.call(n,e));const l=o.call(n,e);return n.set(e,t),s?Bt(t,l)&&yt(n,"set",e,t):yt(n,"add",e,t),this}function Bs(e){const t=oe(this),{has:n,get:r}=Br(t);let o=n.call(t,e);o||(e=oe(e),o=n.call(t,e)),r&&r.call(t,e);const s=t.delete(e);return o&&yt(t,"delete",e,void 0),s}function Vs(){const e=oe(this),t=e.size!==0,n=e.clear();return t&&yt(e,"clear",void 0,void 0),n}function ur(e,t){return function(r,o){const s=this,l=s.__v_raw,a=oe(l),i=t?Jo:e?ts:Vn;return!e&&Be(a,"iterate",qt),l.forEach((f,u)=>r.call(o,i(f),i(u),s))}}function fr(e,t,n){return function(...r){const o=this.__v_raw,s=oe(o),l=On(s),a=e==="entries"||e===Symbol.iterator&&l,i=e==="keys"&&l,f=o[e](...r),u=n?Jo:t?ts:Vn;return!t&&Be(s,"iterate",i?Co:qt),{next(){const{value:d,done:p}=f.next();return p?{value:d,done:p}:{value:a?[u(d[0]),u(d[1])]:u(d),done:p}},[Symbol.iterator](){return this}}}}function Lt(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Cu(){const e={get(s){return ar(this,s)},get size(){return cr(this)},has:ir,add:Ds,set:Fs,delete:Bs,clear:Vs,forEach:ur(!1,!1)},t={get(s){return ar(this,s,!1,!0)},get size(){return cr(this)},has:ir,add:Ds,set:Fs,delete:Bs,clear:Vs,forEach:ur(!1,!0)},n={get(s){return ar(this,s,!0)},get size(){return cr(this,!0)},has(s){return ir.call(this,s,!0)},add:Lt("add"),set:Lt("set"),delete:Lt("delete"),clear:Lt("clear"),forEach:ur(!0,!1)},r={get(s){return ar(this,s,!0,!0)},get size(){return cr(this,!0)},has(s){return ir.call(this,s,!0)},add:Lt("add"),set:Lt("set"),delete:Lt("delete"),clear:Lt("clear"),forEach:ur(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(s=>{e[s]=fr(s,!1,!1),n[s]=fr(s,!0,!1),t[s]=fr(s,!1,!0),r[s]=fr(s,!0,!0)}),[e,n,t,r]}const[Su,Tu,ku,xu]=Cu();function Qo(e,t){const n=t?e?xu:ku:e?Tu:Su;return(r,o,s)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?r:Reflect.get(le(n,o)&&o in r?n:r,o,s)}const Lu={get:Qo(!1,!1)},Au={get:Qo(!1,!0)},Pu={get:Qo(!0,!1)},da=new WeakMap,pa=new WeakMap,ha=new WeakMap,Iu=new WeakMap;function Ru(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Ou(e){return e.__v_skip||!Object.isExtensible(e)?0:Ru(Qc(e))}function qn(e){return mn(e)?e:es(e,!1,wu,Lu,da)}function va(e){return es(e,!1,Eu,Au,pa)}function tn(e){return es(e,!0,_u,Pu,ha)}function es(e,t,n,r,o){if(!_e(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const s=o.get(e);if(s)return s;const l=Ou(e);if(l===0)return e;const a=new Proxy(e,l===2?r:n);return o.set(e,a),a}function dn(e){return mn(e)?dn(e.__v_raw):!!(e&&e.__v_isReactive)}function mn(e){return!!(e&&e.__v_isReadonly)}function Tr(e){return!!(e&&e.__v_isShallow)}function ma(e){return dn(e)||mn(e)}function oe(e){const t=e&&e.__v_raw;return t?oe(t):e}function ga(e){return Cr(e,"__v_skip",!0),e}const Vn=e=>_e(e)?qn(e):e,ts=e=>_e(e)?tn(e):e;class ba{constructor(t,n,r,o){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Yo(()=>t(this._value),()=>kr(this,1)),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=r}get value(){const t=oe(this);return(!t._cacheable||t.effect.dirty)&&Bt(t._value,t._value=t.effect.run())&&kr(t,2),ns(t),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function Mu(e,t,n=!1){let r,o;const s=te(e);return s?(r=e,o=Ze):(r=e.get,o=e.set),new ba(r,o,s||!o,n)}function ns(e){Ht&&Yt&&(e=oe(e),la(Yt,e.dep||(e.dep=ia(()=>e.dep=void 0,e instanceof ba?e:void 0))))}function kr(e,t=2,n){e=oe(e);const r=e.dep;r&&aa(r,t)}function Pe(e){return!!(e&&e.__v_isRef===!0)}function X(e){return ya(e,!1)}function tt(e){return ya(e,!0)}function ya(e,t){return Pe(e)?e:new $u(e,t)}class $u{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:oe(t),this._value=n?t:Vn(t)}get value(){return ns(this),this._value}set value(t){const n=this.__v_isShallow||Tr(t)||mn(t);t=n?t:oe(t),Bt(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Vn(t),kr(this,2))}}function Xt(e){return Pe(e)?e.value:e}const Nu={get:(e,t,n)=>Xt(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return Pe(o)&&!Pe(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function wa(e){return dn(e)?e:new Proxy(e,Nu)}class Hu{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>ns(this),()=>kr(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function _a(e){return new Hu(e)}class Du{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return vu(oe(this._object),this._key)}}class Fu{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function Vr(e,t,n){return Pe(e)?e:te(e)?new Fu(e):_e(e)&&arguments.length>1?Bu(e,t,n):X(e)}function Bu(e,t,n){const r=e[t];return Pe(r)?r:new Du(e,t,n)}/** +* @vue/runtime-core v3.4.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Dt(e,t,n,r){let o;try{o=r?e(...r):e()}catch(s){Xn(s,t,n)}return o}function Xe(e,t,n,r){if(te(e)){const s=Dt(e,t,n,r);return s&&ea(s)&&s.catch(l=>{Xn(l,t,n)}),s}const o=[];for(let s=0;s>>1,o=Re[r],s=Wn(o);sdt&&Re.splice(t,1)}function ju(e){q(e)?pn.push(...e):(!Rt||!Rt.includes(e,e.allowRecurse?Gt+1:Gt))&&pn.push(e),Ca()}function zs(e,t,n=zn?dt+1:0){for(;nWn(n)-Wn(r));if(pn.length=0,Rt){Rt.push(...t);return}for(Rt=t,Gt=0;Gte.id==null?1/0:e.id,Ku=(e,t)=>{const n=Wn(e)-Wn(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Sa(e){So=!1,zn=!0,Re.sort(Ku);try{for(dt=0;dtae(v)?v.trim():v)),d&&(o=n.map(ru))}let a,i=r[a=Jr(t)]||r[a=Jr(et(t))];!i&&s&&(i=r[a=Jr(En(t))]),i&&Xe(i,e,6,o);const f=r[a+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,Xe(f,e,6,o)}}function Ta(e,t,n=!1){const r=t.emitsCache,o=r.get(e);if(o!==void 0)return o;const s=e.emits;let l={},a=!1;if(!te(e)){const i=f=>{const u=Ta(f,t,!0);u&&(a=!0,ke(l,u))};!n&&t.mixins.length&&t.mixins.forEach(i),e.extends&&i(e.extends),e.mixins&&e.mixins.forEach(i)}return!s&&!a?(_e(e)&&r.set(e,null),null):(q(s)?s.forEach(i=>l[i]=null):ke(l,s),_e(e)&&r.set(e,l),l)}function Wr(e,t){return!e||!Zn(t)?!1:(t=t.slice(2).replace(/Once$/,""),le(e,t[0].toLowerCase()+t.slice(1))||le(e,En(t))||le(e,t))}let Ye=null,ka=null;function Lr(e){const t=Ye;return Ye=e,ka=e&&e.type.__scopeId||null,t}function Uu(e,t=Ye,n){if(!t||e._n)return e;const r=(...o)=>{r._d&&el(-1);const s=Lr(t);let l;try{l=e(...o)}finally{Lr(s),r._d&&el(1)}return l};return r._n=!0,r._c=!0,r._d=!0,r}function eo(e){const{type:t,vnode:n,proxy:r,withProxy:o,props:s,propsOptions:[l],slots:a,attrs:i,emit:f,render:u,renderCache:d,data:p,setupState:v,ctx:g,inheritAttrs:_}=e;let E,b;const L=Lr(e);try{if(n.shapeFlag&4){const S=o||r,$=S;E=lt(u.call($,S,d,s,v,p,g)),b=i}else{const S=t;E=lt(S.length>1?S(s,{attrs:i,slots:a,emit:f}):S(s,null)),b=t.props?i:Zu(i)}}catch(S){Dn.length=0,Xn(S,e,1),E=Se(Qe)}let y=E;if(b&&_!==!1){const S=Object.keys(b),{shapeFlag:$}=y;S.length&&$&7&&(l&&S.some(jo)&&(b=Yu(b,l)),y=Vt(y,b))}return n.dirs&&(y=Vt(y),y.dirs=y.dirs?y.dirs.concat(n.dirs):n.dirs),n.transition&&(y.transition=n.transition),E=y,Lr(L),E}const Zu=e=>{let t;for(const n in e)(n==="class"||n==="style"||Zn(n))&&((t||(t={}))[n]=e[n]);return t},Yu=(e,t)=>{const n={};for(const r in e)(!jo(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function qu(e,t,n){const{props:r,children:o,component:s}=e,{props:l,children:a,patchFlag:i}=t,f=s.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&i>=0){if(i&1024)return!0;if(i&16)return r?Ws(r,l,f):!!l;if(i&8){const u=t.dynamicProps;for(let d=0;de.__isSuspense;function La(e,t){t&&t.pendingBranch?q(e)?t.effects.push(...e):t.effects.push(e):ju(e)}const tf=Symbol.for("v-scx"),nf=()=>he(tf);function Aa(e,t){return os(e,null,t)}const dr={};function ce(e,t,n){return os(e,t,n)}function os(e,t,{immediate:n,deep:r,flush:o,once:s,onTrack:l,onTrigger:a}=we){if(t&&s){const C=t;t=(...j)=>{C(...j),$()}}const i=Ae,f=C=>r===!0?C:an(C,r===!1?1:void 0);let u,d=!1,p=!1;if(Pe(e)?(u=()=>e.value,d=Tr(e)):dn(e)?(u=()=>f(e),d=!0):q(e)?(p=!0,d=e.some(C=>dn(C)||Tr(C)),u=()=>e.map(C=>{if(Pe(C))return C.value;if(dn(C))return f(C);if(te(C))return Dt(C,i,2)})):te(e)?t?u=()=>Dt(e,i,2):u=()=>(v&&v(),Xe(e,i,3,[g])):u=Ze,t&&r){const C=u;u=()=>an(C())}let v,g=C=>{v=y.onStop=()=>{Dt(C,i,4),v=y.onStop=void 0}},_;if(er)if(g=Ze,t?n&&Xe(t,i,3,[u(),p?[]:void 0,g]):u(),o==="sync"){const C=nf();_=C.__watcherHandles||(C.__watcherHandles=[])}else return Ze;let E=p?new Array(e.length).fill(dr):dr;const b=()=>{if(!(!y.active||!y.dirty))if(t){const C=y.run();(r||d||(p?C.some((j,N)=>Bt(j,E[N])):Bt(C,E)))&&(v&&v(),Xe(t,i,3,[C,E===dr?void 0:p&&E[0]===dr?[]:E,g]),E=C)}else y.run()};b.allowRecurse=!!t;let L;o==="sync"?L=b:o==="post"?L=()=>He(b,i&&i.suspense):(b.pre=!0,i&&(b.id=i.uid),L=()=>zr(b));const y=new Yo(u,Ze,L),S=ra(),$=()=>{y.stop(),S&&Ko(S.effects,y)};return t?n?b():E=y.run():o==="post"?He(y.run.bind(y),i&&i.suspense):y.run(),_&&_.push($),$}function rf(e,t,n){const r=this.proxy,o=ae(e)?e.includes(".")?Pa(r,e):()=>r[e]:e.bind(r,r);let s;te(t)?s=t:(s=t.handler,n=t);const l=Qn(this),a=os(o,s.bind(r),n);return l(),a}function Pa(e,t){const n=t.split(".");return()=>{let r=e;for(let o=0;o0){if(n>=t)return e;n++}if(r=r||new Set,r.has(e))return e;if(r.add(e),Pe(e))an(e.value,t,n,r);else if(q(e))for(let o=0;o{an(o,t,n,r)});else if(eu(e))for(const o in e)an(e[o],t,n,r);return e}function ft(e,t,n,r){const o=e.dirs,s=t&&t.dirs;for(let l=0;l{e.isMounted=!0}),ls(()=>{e.isUnmounting=!0}),e}const Ge=[Function,Array],Ra={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ge,onEnter:Ge,onAfterEnter:Ge,onEnterCancelled:Ge,onBeforeLeave:Ge,onLeave:Ge,onAfterLeave:Ge,onLeaveCancelled:Ge,onBeforeAppear:Ge,onAppear:Ge,onAfterAppear:Ge,onAppearCancelled:Ge},of={name:"BaseTransition",props:Ra,setup(e,{slots:t}){const n=Sn(),r=Ia();let o;return()=>{const s=t.default&&ss(t.default(),!0);if(!s||!s.length)return;let l=s[0];if(s.length>1){for(const _ of s)if(_.type!==Qe){l=_;break}}const a=oe(e),{mode:i}=a;if(r.isLeaving)return to(l);const f=Ks(l);if(!f)return to(l);const u=jn(f,a,r,n);Kn(f,u);const d=n.subTree,p=d&&Ks(d);let v=!1;const{getTransitionKey:g}=f.type;if(g){const _=g();o===void 0?o=_:_!==o&&(o=_,v=!0)}if(p&&p.type!==Qe&&(!Ut(f,p)||v)){const _=jn(p,a,r,n);if(Kn(p,_),i==="out-in")return r.isLeaving=!0,_.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},to(l);i==="in-out"&&f.type!==Qe&&(_.delayLeave=(E,b,L)=>{const y=Oa(r,p);y[String(p.key)]=p,E[Ot]=()=>{b(),E[Ot]=void 0,delete u.delayedLeave},u.delayedLeave=L})}return l}}},sf=of;function Oa(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function jn(e,t,n,r){const{appear:o,mode:s,persisted:l=!1,onBeforeEnter:a,onEnter:i,onAfterEnter:f,onEnterCancelled:u,onBeforeLeave:d,onLeave:p,onAfterLeave:v,onLeaveCancelled:g,onBeforeAppear:_,onAppear:E,onAfterAppear:b,onAppearCancelled:L}=t,y=String(e.key),S=Oa(n,e),$=(N,O)=>{N&&Xe(N,r,9,O)},C=(N,O)=>{const H=O[1];$(N,O),q(N)?N.every(ee=>ee.length<=1)&&H():N.length<=1&&H()},j={mode:s,persisted:l,beforeEnter(N){let O=a;if(!n.isMounted)if(o)O=_||a;else return;N[Ot]&&N[Ot](!0);const H=S[y];H&&Ut(e,H)&&H.el[Ot]&&H.el[Ot](),$(O,[N])},enter(N){let O=i,H=f,ee=u;if(!n.isMounted)if(o)O=E||i,H=b||f,ee=L||u;else return;let D=!1;const J=N[pr]=Ee=>{D||(D=!0,Ee?$(ee,[N]):$(H,[N]),j.delayedLeave&&j.delayedLeave(),N[pr]=void 0)};O?C(O,[N,J]):J()},leave(N,O){const H=String(e.key);if(N[pr]&&N[pr](!0),n.isUnmounting)return O();$(d,[N]);let ee=!1;const D=N[Ot]=J=>{ee||(ee=!0,O(),J?$(g,[N]):$(v,[N]),N[Ot]=void 0,S[H]===e&&delete S[H])};S[H]=e,p?C(p,[N,D]):D()},clone(N){return jn(N,t,n,r)}};return j}function to(e){if(Jn(e))return e=Vt(e),e.children=null,e}function Ks(e){return Jn(e)?e.children?e.children[0]:void 0:e}function Kn(e,t){e.shapeFlag&6&&e.component?Kn(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function ss(e,t=!1,n){let r=[],o=0;for(let s=0;s1)for(let s=0;s!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function Me(e){te(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:o=200,timeout:s,suspensible:l=!0,onError:a}=e;let i=null,f,u=0;const d=()=>(u++,i=null,p()),p=()=>{let v;return i||(v=i=t().catch(g=>{if(g=g instanceof Error?g:new Error(String(g)),a)return new Promise((_,E)=>{a(g,()=>_(d()),()=>E(g),u+1)});throw g}).then(g=>v!==i&&i?i:(g&&(g.__esModule||g[Symbol.toStringTag]==="Module")&&(g=g.default),f=g,g)))};return W({name:"AsyncComponentWrapper",__asyncLoader:p,get __asyncResolved(){return f},setup(){const v=Ae;if(f)return()=>no(f,v);const g=L=>{i=null,Xn(L,v,13,!r)};if(l&&v.suspense||er)return p().then(L=>()=>no(L,v)).catch(L=>(g(L),()=>r?Se(r,{error:L}):null));const _=X(!1),E=X(),b=X(!!o);return o&&setTimeout(()=>{b.value=!1},o),s!=null&&setTimeout(()=>{if(!_.value&&!E.value){const L=new Error(`Async component timed out after ${s}ms.`);g(L),E.value=L}},s),p().then(()=>{_.value=!0,v.parent&&Jn(v.parent.vnode)&&(v.parent.effect.dirty=!0,zr(v.parent.update))}).catch(L=>{g(L),E.value=L}),()=>{if(_.value&&f)return no(f,v);if(E.value&&r)return Se(r,{error:E.value});if(n&&!b.value)return Se(n)}}})}function no(e,t){const{ref:n,props:r,children:o,ce:s}=t.vnode,l=Se(e,r,o);return l.ref=n,l.ce=s,delete t.vnode.ce,l}const Jn=e=>e.type.__isKeepAlive;function lf(e,t){Ma(e,"a",t)}function af(e,t){Ma(e,"da",t)}function Ma(e,t,n=Ae){const r=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(jr(t,r,n),n){let o=n.parent;for(;o&&o.parent;)Jn(o.parent.vnode)&&cf(r,t,n,o),o=o.parent}}function cf(e,t,n,r){const o=jr(t,e,r,!0);Cn(()=>{Ko(r[t],o)},n)}function jr(e,t,n=Ae,r=!1){if(n){const o=n[e]||(n[e]=[]),s=t.__weh||(t.__weh=(...l)=>{if(n.isUnmounted)return;Qt();const a=Qn(n),i=Xe(t,n,e,l);return a(),en(),i});return r?o.unshift(s):o.push(s),s}}const St=e=>(t,n=Ae)=>(!er||e==="sp")&&jr(e,(...r)=>t(...r),n),uf=St("bm"),ge=St("m"),ff=St("bu"),$a=St("u"),ls=St("bum"),Cn=St("um"),df=St("sp"),pf=St("rtg"),hf=St("rtc");function vf(e,t=Ae){jr("ec",e,t)}const To=e=>e?qa(e)?us(e)||e.proxy:To(e.parent):null,Nn=ke(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>To(e.parent),$root:e=>To(e.root),$emit:e=>e.emit,$options:e=>as(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,zr(e.update)}),$nextTick:e=>e.n||(e.n=zt.bind(e.proxy)),$watch:e=>rf.bind(e)}),ro=(e,t)=>e!==we&&!e.__isScriptSetup&&le(e,t),mf={get({_:e},t){const{ctx:n,setupState:r,data:o,props:s,accessCache:l,type:a,appContext:i}=e;let f;if(t[0]!=="$"){const v=l[t];if(v!==void 0)switch(v){case 1:return r[t];case 2:return o[t];case 4:return n[t];case 3:return s[t]}else{if(ro(r,t))return l[t]=1,r[t];if(o!==we&&le(o,t))return l[t]=2,o[t];if((f=e.propsOptions[0])&&le(f,t))return l[t]=3,s[t];if(n!==we&&le(n,t))return l[t]=4,n[t];ko&&(l[t]=0)}}const u=Nn[t];let d,p;if(u)return t==="$attrs"&&Be(e,"get",t),u(e);if((d=a.__cssModules)&&(d=d[t]))return d;if(n!==we&&le(n,t))return l[t]=4,n[t];if(p=i.config.globalProperties,le(p,t))return p[t]},set({_:e},t,n){const{data:r,setupState:o,ctx:s}=e;return ro(o,t)?(o[t]=n,!0):r!==we&&le(r,t)?(r[t]=n,!0):le(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(s[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOptions:s}},l){let a;return!!n[l]||e!==we&&le(e,l)||ro(t,l)||(a=s[0])&&le(a,l)||le(r,l)||le(Nn,l)||le(o.config.globalProperties,l)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:le(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Gs(e){return q(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let ko=!0;function gf(e){const t=as(e),n=e.proxy,r=e.ctx;ko=!1,t.beforeCreate&&Us(t.beforeCreate,e,"bc");const{data:o,computed:s,methods:l,watch:a,provide:i,inject:f,created:u,beforeMount:d,mounted:p,beforeUpdate:v,updated:g,activated:_,deactivated:E,beforeDestroy:b,beforeUnmount:L,destroyed:y,unmounted:S,render:$,renderTracked:C,renderTriggered:j,errorCaptured:N,serverPrefetch:O,expose:H,inheritAttrs:ee,components:D,directives:J,filters:Ee}=t;if(f&&bf(f,r,null),l)for(const ne in l){const G=l[ne];te(G)&&(r[ne]=G.bind(n))}if(o){const ne=o.call(n,n);_e(ne)&&(e.data=qn(ne))}if(ko=!0,s)for(const ne in s){const G=s[ne],ot=te(G)?G.bind(n,n):te(G.get)?G.get.bind(n,n):Ze,xt=!te(G)&&te(G.set)?G.set.bind(n):Ze,ct=k({get:ot,set:xt});Object.defineProperty(r,ne,{enumerable:!0,configurable:!0,get:()=>ct.value,set:Ne=>ct.value=Ne})}if(a)for(const ne in a)Na(a[ne],r,n,ne);if(i){const ne=te(i)?i.call(n):i;Reflect.ownKeys(ne).forEach(G=>{Ft(G,ne[G])})}u&&Us(u,e,"c");function U(ne,G){q(G)?G.forEach(ot=>ne(ot.bind(n))):G&&ne(G.bind(n))}if(U(uf,d),U(ge,p),U(ff,v),U($a,g),U(lf,_),U(af,E),U(vf,N),U(hf,C),U(pf,j),U(ls,L),U(Cn,S),U(df,O),q(H))if(H.length){const ne=e.exposed||(e.exposed={});H.forEach(G=>{Object.defineProperty(ne,G,{get:()=>n[G],set:ot=>n[G]=ot})})}else e.exposed||(e.exposed={});$&&e.render===Ze&&(e.render=$),ee!=null&&(e.inheritAttrs=ee),D&&(e.components=D),J&&(e.directives=J)}function bf(e,t,n=Ze){q(e)&&(e=xo(e));for(const r in e){const o=e[r];let s;_e(o)?"default"in o?s=he(o.from||r,o.default,!0):s=he(o.from||r):s=he(o),Pe(s)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>s.value,set:l=>s.value=l}):t[r]=s}}function Us(e,t,n){Xe(q(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Na(e,t,n,r){const o=r.includes(".")?Pa(n,r):()=>n[r];if(ae(e)){const s=t[e];te(s)&&ce(o,s)}else if(te(e))ce(o,e.bind(n));else if(_e(e))if(q(e))e.forEach(s=>Na(s,t,n,r));else{const s=te(e.handler)?e.handler.bind(n):t[e.handler];te(s)&&ce(o,s,e)}}function as(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCache:s,config:{optionMergeStrategies:l}}=e.appContext,a=s.get(t);let i;return a?i=a:!o.length&&!n&&!r?i=t:(i={},o.length&&o.forEach(f=>Ar(i,f,l,!0)),Ar(i,t,l)),_e(t)&&s.set(t,i),i}function Ar(e,t,n,r=!1){const{mixins:o,extends:s}=t;s&&Ar(e,s,n,!0),o&&o.forEach(l=>Ar(e,l,n,!0));for(const l in t)if(!(r&&l==="expose")){const a=yf[l]||n&&n[l];e[l]=a?a(e[l],t[l]):t[l]}return e}const yf={data:Zs,props:Ys,emits:Ys,methods:Rn,computed:Rn,beforeCreate:$e,created:$e,beforeMount:$e,mounted:$e,beforeUpdate:$e,updated:$e,beforeDestroy:$e,beforeUnmount:$e,destroyed:$e,unmounted:$e,activated:$e,deactivated:$e,errorCaptured:$e,serverPrefetch:$e,components:Rn,directives:Rn,watch:_f,provide:Zs,inject:wf};function Zs(e,t){return t?e?function(){return ke(te(e)?e.call(this,this):e,te(t)?t.call(this,this):t)}:t:e}function wf(e,t){return Rn(xo(e),xo(t))}function xo(e){if(q(e)){const t={};for(let n=0;n1)return n&&te(t)?t.call(r&&r.proxy):t}}function Sf(e,t,n,r=!1){const o={},s={};Cr(s,Kr,1),e.propsDefaults=Object.create(null),Da(e,t,o,s);for(const l in e.propsOptions[0])l in o||(o[l]=void 0);n?e.props=r?o:va(o):e.type.props?e.props=o:e.props=s,e.attrs=s}function Tf(e,t,n,r){const{props:o,attrs:s,vnode:{patchFlag:l}}=e,a=oe(o),[i]=e.propsOptions;let f=!1;if((r||l>0)&&!(l&16)){if(l&8){const u=e.vnode.dynamicProps;for(let d=0;d{i=!0;const[p,v]=Fa(d,t,!0);ke(l,p),v&&a.push(...v)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!s&&!i)return _e(e)&&r.set(e,fn),fn;if(q(s))for(let u=0;u-1,v[1]=_<0||g<_,(g>-1||le(v,"default"))&&a.push(d)}}}const f=[l,a];return _e(e)&&r.set(e,f),f}function qs(e){return e[0]!=="$"}function Xs(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function Js(e,t){return Xs(e)===Xs(t)}function Qs(e,t){return q(t)?t.findIndex(n=>Js(n,e)):te(t)&&Js(t,e)?0:-1}const Ba=e=>e[0]==="_"||e==="$stable",is=e=>q(e)?e.map(lt):[lt(e)],kf=(e,t,n)=>{if(t._n)return t;const r=Uu((...o)=>is(t(...o)),n);return r._c=!1,r},Va=(e,t,n)=>{const r=e._ctx;for(const o in e){if(Ba(o))continue;const s=e[o];if(te(s))t[o]=kf(o,s,r);else if(s!=null){const l=is(s);t[o]=()=>l}}},za=(e,t)=>{const n=is(t);e.slots.default=()=>n},xf=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=oe(t),Cr(t,"_",n)):Va(t,e.slots={})}else e.slots={},t&&za(e,t);Cr(e.slots,Kr,1)},Lf=(e,t,n)=>{const{vnode:r,slots:o}=e;let s=!0,l=we;if(r.shapeFlag&32){const a=t._;a?n&&a===1?s=!1:(ke(o,t),!n&&a===1&&delete o._):(s=!t.$stable,Va(t,o)),l=t}else t&&(za(e,t),l={default:1});if(s)for(const a in o)!Ba(a)&&l[a]==null&&delete o[a]};function Ir(e,t,n,r,o=!1){if(q(e)){e.forEach((p,v)=>Ir(p,t&&(q(t)?t[v]:t),n,r,o));return}if($n(r)&&!o)return;const s=r.shapeFlag&4?us(r.component)||r.component.proxy:r.el,l=o?null:s,{i:a,r:i}=e,f=t&&t.r,u=a.refs===we?a.refs={}:a.refs,d=a.setupState;if(f!=null&&f!==i&&(ae(f)?(u[f]=null,le(d,f)&&(d[f]=null)):Pe(f)&&(f.value=null)),te(i))Dt(i,a,12,[l,u]);else{const p=ae(i),v=Pe(i);if(p||v){const g=()=>{if(e.f){const _=p?le(d,i)?d[i]:u[i]:i.value;o?q(_)&&Ko(_,s):q(_)?_.includes(s)||_.push(s):p?(u[i]=[s],le(d,i)&&(d[i]=u[i])):(i.value=[s],e.k&&(u[e.k]=i.value))}else p?(u[i]=l,le(d,i)&&(d[i]=l)):v&&(i.value=l,e.k&&(u[e.k]=l))};l?(g.id=-1,He(g,n)):g()}}}let At=!1;const Af=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",Pf=e=>e.namespaceURI.includes("MathML"),hr=e=>{if(Af(e))return"svg";if(Pf(e))return"mathml"},vr=e=>e.nodeType===8;function If(e){const{mt:t,p:n,o:{patchProp:r,createText:o,nextSibling:s,parentNode:l,remove:a,insert:i,createComment:f}}=e,u=(y,S)=>{if(!S.hasChildNodes()){n(null,y,S),xr(),S._vnode=y;return}At=!1,d(S.firstChild,y,null,null,null),xr(),S._vnode=y,At&&console.error("Hydration completed but contains mismatches.")},d=(y,S,$,C,j,N=!1)=>{const O=vr(y)&&y.data==="[",H=()=>_(y,S,$,C,j,O),{type:ee,ref:D,shapeFlag:J,patchFlag:Ee}=S;let Ce=y.nodeType;S.el=y,Ee===-2&&(N=!1,S.dynamicChildren=null);let U=null;switch(ee){case gn:Ce!==3?S.children===""?(i(S.el=o(""),l(y),y),U=y):U=H():(y.data!==S.children&&(At=!0,y.data=S.children),U=s(y));break;case Qe:L(y)?(U=s(y),b(S.el=y.content.firstChild,y,$)):Ce!==8||O?U=H():U=s(y);break;case Hn:if(O&&(y=s(y),Ce=y.nodeType),Ce===1||Ce===3){U=y;const ne=!S.children.length;for(let G=0;G{N=N||!!S.dynamicChildren;const{type:O,props:H,patchFlag:ee,shapeFlag:D,dirs:J,transition:Ee}=S,Ce=O==="input"||O==="option";if(Ce||ee!==-1){J&&ft(S,null,$,"created");let U=!1;if(L(y)){U=Wa(C,Ee)&&$&&$.vnode.props&&$.vnode.props.appear;const G=y.content.firstChild;U&&Ee.beforeEnter(G),b(G,y,$),S.el=y=G}if(D&16&&!(H&&(H.innerHTML||H.textContent))){let G=v(y.firstChild,S,y,$,C,j,N);for(;G;){At=!0;const ot=G;G=G.nextSibling,a(ot)}}else D&8&&y.textContent!==S.children&&(At=!0,y.textContent=S.children);if(H)if(Ce||!N||ee&48)for(const G in H)(Ce&&(G.endsWith("value")||G==="indeterminate")||Zn(G)&&!Mn(G)||G[0]===".")&&r(y,G,null,H[G],void 0,void 0,$);else H.onClick&&r(y,"onClick",null,H.onClick,void 0,void 0,$);let ne;(ne=H&&H.onVnodeBeforeMount)&&Ue(ne,$,S),J&&ft(S,null,$,"beforeMount"),((ne=H&&H.onVnodeMounted)||J||U)&&La(()=>{ne&&Ue(ne,$,S),U&&Ee.enter(y),J&&ft(S,null,$,"mounted")},C)}return y.nextSibling},v=(y,S,$,C,j,N,O)=>{O=O||!!S.dynamicChildren;const H=S.children,ee=H.length;for(let D=0;D{const{slotScopeIds:O}=S;O&&(j=j?j.concat(O):O);const H=l(y),ee=v(s(y),S,H,$,C,j,N);return ee&&vr(ee)&&ee.data==="]"?s(S.anchor=ee):(At=!0,i(S.anchor=f("]"),H,ee),ee)},_=(y,S,$,C,j,N)=>{if(At=!0,S.el=null,N){const ee=E(y);for(;;){const D=s(y);if(D&&D!==ee)a(D);else break}}const O=s(y),H=l(y);return a(y),n(null,S,H,O,$,C,hr(H),j),O},E=(y,S="[",$="]")=>{let C=0;for(;y;)if(y=s(y),y&&vr(y)&&(y.data===S&&C++,y.data===$)){if(C===0)return s(y);C--}return y},b=(y,S,$)=>{const C=S.parentNode;C&&C.replaceChild(y,S);let j=$;for(;j;)j.vnode.el===S&&(j.vnode.el=j.subTree.el=y),j=j.parent},L=y=>y.nodeType===1&&y.tagName.toLowerCase()==="template";return[u,d]}const He=La;function Rf(e){return Of(e,If)}function Of(e,t){const n=ta();n.__VUE__=!0;const{insert:r,remove:o,patchProp:s,createElement:l,createText:a,createComment:i,setText:f,setElementText:u,parentNode:d,nextSibling:p,setScopeId:v=Ze,insertStaticContent:g}=e,_=(h,m,w,A=null,T=null,R=null,B=void 0,I=null,M=!!m.dynamicChildren)=>{if(h===m)return;h&&!Ut(h,m)&&(A=x(h),Ne(h,T,R,!0),h=null),m.patchFlag===-2&&(M=!1,m.dynamicChildren=null);const{type:P,ref:z,shapeFlag:Y}=m;switch(P){case gn:E(h,m,w,A);break;case Qe:b(h,m,w,A);break;case Hn:h==null&&L(m,w,A,B);break;case je:D(h,m,w,A,T,R,B,I,M);break;default:Y&1?$(h,m,w,A,T,R,B,I,M):Y&6?J(h,m,w,A,T,R,B,I,M):(Y&64||Y&128)&&P.process(h,m,w,A,T,R,B,I,M,K)}z!=null&&T&&Ir(z,h&&h.ref,R,m||h,!m)},E=(h,m,w,A)=>{if(h==null)r(m.el=a(m.children),w,A);else{const T=m.el=h.el;m.children!==h.children&&f(T,m.children)}},b=(h,m,w,A)=>{h==null?r(m.el=i(m.children||""),w,A):m.el=h.el},L=(h,m,w,A)=>{[h.el,h.anchor]=g(h.children,m,w,A,h.el,h.anchor)},y=({el:h,anchor:m},w,A)=>{let T;for(;h&&h!==m;)T=p(h),r(h,w,A),h=T;r(m,w,A)},S=({el:h,anchor:m})=>{let w;for(;h&&h!==m;)w=p(h),o(h),h=w;o(m)},$=(h,m,w,A,T,R,B,I,M)=>{m.type==="svg"?B="svg":m.type==="math"&&(B="mathml"),h==null?C(m,w,A,T,R,B,I,M):O(h,m,T,R,B,I,M)},C=(h,m,w,A,T,R,B,I)=>{let M,P;const{props:z,shapeFlag:Y,transition:Z,dirs:Q}=h;if(M=h.el=l(h.type,R,z&&z.is,z),Y&8?u(M,h.children):Y&16&&N(h.children,M,null,A,T,oo(h,R),B,I),Q&&ft(h,null,A,"created"),j(M,h,h.scopeId,B,A),z){for(const de in z)de!=="value"&&!Mn(de)&&s(M,de,null,z[de],R,h.children,A,T,Ie);"value"in z&&s(M,"value",null,z.value,R),(P=z.onVnodeBeforeMount)&&Ue(P,A,h)}Q&&ft(h,null,A,"beforeMount");const re=Wa(T,Z);re&&Z.beforeEnter(M),r(M,m,w),((P=z&&z.onVnodeMounted)||re||Q)&&He(()=>{P&&Ue(P,A,h),re&&Z.enter(M),Q&&ft(h,null,A,"mounted")},T)},j=(h,m,w,A,T)=>{if(w&&v(h,w),A)for(let R=0;R{for(let P=M;P{const I=m.el=h.el;let{patchFlag:M,dynamicChildren:P,dirs:z}=m;M|=h.patchFlag&16;const Y=h.props||we,Z=m.props||we;let Q;if(w&&jt(w,!1),(Q=Z.onVnodeBeforeUpdate)&&Ue(Q,w,m,h),z&&ft(m,h,w,"beforeUpdate"),w&&jt(w,!0),P?H(h.dynamicChildren,P,I,w,A,oo(m,T),R):B||G(h,m,I,null,w,A,oo(m,T),R,!1),M>0){if(M&16)ee(I,m,Y,Z,w,A,T);else if(M&2&&Y.class!==Z.class&&s(I,"class",null,Z.class,T),M&4&&s(I,"style",Y.style,Z.style,T),M&8){const re=m.dynamicProps;for(let de=0;de{Q&&Ue(Q,w,m,h),z&&ft(m,h,w,"updated")},A)},H=(h,m,w,A,T,R,B)=>{for(let I=0;I{if(w!==A){if(w!==we)for(const I in w)!Mn(I)&&!(I in A)&&s(h,I,w[I],null,B,m.children,T,R,Ie);for(const I in A){if(Mn(I))continue;const M=A[I],P=w[I];M!==P&&I!=="value"&&s(h,I,P,M,B,m.children,T,R,Ie)}"value"in A&&s(h,"value",w.value,A.value,B)}},D=(h,m,w,A,T,R,B,I,M)=>{const P=m.el=h?h.el:a(""),z=m.anchor=h?h.anchor:a("");let{patchFlag:Y,dynamicChildren:Z,slotScopeIds:Q}=m;Q&&(I=I?I.concat(Q):Q),h==null?(r(P,w,A),r(z,w,A),N(m.children||[],w,z,T,R,B,I,M)):Y>0&&Y&64&&Z&&h.dynamicChildren?(H(h.dynamicChildren,Z,w,T,R,B,I),(m.key!=null||T&&m===T.subTree)&&ja(h,m,!0)):G(h,m,w,z,T,R,B,I,M)},J=(h,m,w,A,T,R,B,I,M)=>{m.slotScopeIds=I,h==null?m.shapeFlag&512?T.ctx.activate(m,w,A,B,M):Ee(m,w,A,T,R,B,M):Ce(h,m,M)},Ee=(h,m,w,A,T,R,B)=>{const I=h.component=jf(h,A,T);if(Jn(h)&&(I.ctx.renderer=K),Kf(I),I.asyncDep){if(T&&T.registerDep(I,U),!h.el){const M=I.subTree=Se(Qe);b(null,M,m,w)}}else U(I,h,m,w,T,R,B)},Ce=(h,m,w)=>{const A=m.component=h.component;if(qu(h,m,w))if(A.asyncDep&&!A.asyncResolved){ne(A,m,w);return}else A.next=m,Wu(A.update),A.effect.dirty=!0,A.update();else m.el=h.el,A.vnode=m},U=(h,m,w,A,T,R,B)=>{const I=()=>{if(h.isMounted){let{next:z,bu:Y,u:Z,parent:Q,vnode:re}=h;{const sn=Ka(h);if(sn){z&&(z.el=re.el,ne(h,z,B)),sn.asyncDep.then(()=>{h.isUnmounted||I()});return}}let de=z,ye;jt(h,!1),z?(z.el=re.el,ne(h,z,B)):z=re,Y&&Qr(Y),(ye=z.props&&z.props.onVnodeBeforeUpdate)&&Ue(ye,Q,z,re),jt(h,!0);const Le=eo(h),st=h.subTree;h.subTree=Le,_(st,Le,d(st.el),x(st),h,T,R),z.el=Le.el,de===null&&Xu(h,Le.el),Z&&He(Z,T),(ye=z.props&&z.props.onVnodeUpdated)&&He(()=>Ue(ye,Q,z,re),T)}else{let z;const{el:Y,props:Z}=m,{bm:Q,m:re,parent:de}=h,ye=$n(m);if(jt(h,!1),Q&&Qr(Q),!ye&&(z=Z&&Z.onVnodeBeforeMount)&&Ue(z,de,m),jt(h,!0),Y&&be){const Le=()=>{h.subTree=eo(h),be(Y,h.subTree,h,T,null)};ye?m.type.__asyncLoader().then(()=>!h.isUnmounted&&Le()):Le()}else{const Le=h.subTree=eo(h);_(null,Le,w,A,h,T,R),m.el=Le.el}if(re&&He(re,T),!ye&&(z=Z&&Z.onVnodeMounted)){const Le=m;He(()=>Ue(z,de,Le),T)}(m.shapeFlag&256||de&&$n(de.vnode)&&de.vnode.shapeFlag&256)&&h.a&&He(h.a,T),h.isMounted=!0,m=w=A=null}},M=h.effect=new Yo(I,Ze,()=>zr(P),h.scope),P=h.update=()=>{M.dirty&&M.run()};P.id=h.uid,jt(h,!0),P()},ne=(h,m,w)=>{m.component=h;const A=h.vnode.props;h.vnode=m,h.next=null,Tf(h,m.props,A,w),Lf(h,m.children,w),Qt(),zs(h),en()},G=(h,m,w,A,T,R,B,I,M=!1)=>{const P=h&&h.children,z=h?h.shapeFlag:0,Y=m.children,{patchFlag:Z,shapeFlag:Q}=m;if(Z>0){if(Z&128){xt(P,Y,w,A,T,R,B,I,M);return}else if(Z&256){ot(P,Y,w,A,T,R,B,I,M);return}}Q&8?(z&16&&Ie(P,T,R),Y!==P&&u(w,Y)):z&16?Q&16?xt(P,Y,w,A,T,R,B,I,M):Ie(P,T,R,!0):(z&8&&u(w,""),Q&16&&N(Y,w,A,T,R,B,I,M))},ot=(h,m,w,A,T,R,B,I,M)=>{h=h||fn,m=m||fn;const P=h.length,z=m.length,Y=Math.min(P,z);let Z;for(Z=0;Zz?Ie(h,T,R,!0,!1,Y):N(m,w,A,T,R,B,I,M,Y)},xt=(h,m,w,A,T,R,B,I,M)=>{let P=0;const z=m.length;let Y=h.length-1,Z=z-1;for(;P<=Y&&P<=Z;){const Q=h[P],re=m[P]=M?Mt(m[P]):lt(m[P]);if(Ut(Q,re))_(Q,re,w,null,T,R,B,I,M);else break;P++}for(;P<=Y&&P<=Z;){const Q=h[Y],re=m[Z]=M?Mt(m[Z]):lt(m[Z]);if(Ut(Q,re))_(Q,re,w,null,T,R,B,I,M);else break;Y--,Z--}if(P>Y){if(P<=Z){const Q=Z+1,re=QZ)for(;P<=Y;)Ne(h[P],T,R,!0),P++;else{const Q=P,re=P,de=new Map;for(P=re;P<=Z;P++){const ze=m[P]=M?Mt(m[P]):lt(m[P]);ze.key!=null&&de.set(ze.key,P)}let ye,Le=0;const st=Z-re+1;let sn=!1,Is=0;const Ln=new Array(st);for(P=0;P=st){Ne(ze,T,R,!0);continue}let ut;if(ze.key!=null)ut=de.get(ze.key);else for(ye=re;ye<=Z;ye++)if(Ln[ye-re]===0&&Ut(ze,m[ye])){ut=ye;break}ut===void 0?Ne(ze,T,R,!0):(Ln[ut-re]=P+1,ut>=Is?Is=ut:sn=!0,_(ze,m[ut],w,null,T,R,B,I,M),Le++)}const Rs=sn?Mf(Ln):fn;for(ye=Rs.length-1,P=st-1;P>=0;P--){const ze=re+P,ut=m[ze],Os=ze+1{const{el:R,type:B,transition:I,children:M,shapeFlag:P}=h;if(P&6){ct(h.component.subTree,m,w,A);return}if(P&128){h.suspense.move(m,w,A);return}if(P&64){B.move(h,m,w,K);return}if(B===je){r(R,m,w);for(let Y=0;YI.enter(R),T);else{const{leave:Y,delayLeave:Z,afterLeave:Q}=I,re=()=>r(R,m,w),de=()=>{Y(R,()=>{re(),Q&&Q()})};Z?Z(R,re,de):de()}else r(R,m,w)},Ne=(h,m,w,A=!1,T=!1)=>{const{type:R,props:B,ref:I,children:M,dynamicChildren:P,shapeFlag:z,patchFlag:Y,dirs:Z}=h;if(I!=null&&Ir(I,null,w,h,!0),z&256){m.ctx.deactivate(h);return}const Q=z&1&&Z,re=!$n(h);let de;if(re&&(de=B&&B.onVnodeBeforeUnmount)&&Ue(de,m,h),z&6)lr(h.component,w,A);else{if(z&128){h.suspense.unmount(w,A);return}Q&&ft(h,null,m,"beforeUnmount"),z&64?h.type.remove(h,m,w,T,K,A):P&&(R!==je||Y>0&&Y&64)?Ie(P,m,w,!1,!0):(R===je&&Y&384||!T&&z&16)&&Ie(M,m,w),A&&rn(h)}(re&&(de=B&&B.onVnodeUnmounted)||Q)&&He(()=>{de&&Ue(de,m,h),Q&&ft(h,null,m,"unmounted")},w)},rn=h=>{const{type:m,el:w,anchor:A,transition:T}=h;if(m===je){on(w,A);return}if(m===Hn){S(h);return}const R=()=>{o(w),T&&!T.persisted&&T.afterLeave&&T.afterLeave()};if(h.shapeFlag&1&&T&&!T.persisted){const{leave:B,delayLeave:I}=T,M=()=>B(w,R);I?I(h.el,R,M):M()}else R()},on=(h,m)=>{let w;for(;h!==m;)w=p(h),o(h),h=w;o(m)},lr=(h,m,w)=>{const{bum:A,scope:T,update:R,subTree:B,um:I}=h;A&&Qr(A),T.stop(),R&&(R.active=!1,Ne(B,h,m,w)),I&&He(I,m),He(()=>{h.isUnmounted=!0},m),m&&m.pendingBranch&&!m.isUnmounted&&h.asyncDep&&!h.asyncResolved&&h.suspenseId===m.pendingId&&(m.deps--,m.deps===0&&m.resolve())},Ie=(h,m,w,A=!1,T=!1,R=0)=>{for(let B=R;Bh.shapeFlag&6?x(h.component.subTree):h.shapeFlag&128?h.suspense.next():p(h.anchor||h.el);let V=!1;const F=(h,m,w)=>{h==null?m._vnode&&Ne(m._vnode,null,null,!0):_(m._vnode||null,h,m,null,null,null,w),V||(V=!0,zs(),xr(),V=!1),m._vnode=h},K={p:_,um:Ne,m:ct,r:rn,mt:Ee,mc:N,pc:G,pbc:H,n:x,o:e};let ue,be;return t&&([ue,be]=t(K)),{render:F,hydrate:ue,createApp:Cf(F,ue)}}function oo({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function jt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Wa(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function ja(e,t,n=!1){const r=e.children,o=t.children;if(q(r)&&q(o))for(let s=0;s>1,e[n[a]]0&&(t[r]=n[s-1]),n[s]=r)}}for(s=n.length,l=n[s-1];s-- >0;)n[s]=l,l=t[l];return n}function Ka(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Ka(t)}const $f=e=>e.__isTeleport,je=Symbol.for("v-fgt"),gn=Symbol.for("v-txt"),Qe=Symbol.for("v-cmt"),Hn=Symbol.for("v-stc"),Dn=[];let at=null;function Nf(e=!1){Dn.push(at=e?null:[])}function Hf(){Dn.pop(),at=Dn[Dn.length-1]||null}let Gn=1;function el(e){Gn+=e}function Ga(e){return e.dynamicChildren=Gn>0?at||fn:null,Hf(),Gn>0&&at&&at.push(e),e}function Q0(e,t,n,r,o,s){return Ga(Za(e,t,n,r,o,s,!0))}function Df(e,t,n,r,o){return Ga(Se(e,t,n,r,o,!0))}function Ao(e){return e?e.__v_isVNode===!0:!1}function Ut(e,t){return e.type===t.type&&e.key===t.key}const Kr="__vInternal",Ua=({key:e})=>e??null,Er=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ae(e)||Pe(e)||te(e)?{i:Ye,r:e,k:t,f:!!n}:e:null);function Za(e,t=null,n=null,r=0,o=null,s=e===je?0:1,l=!1,a=!1){const i={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Ua(t),ref:t&&Er(t),scopeId:ka,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:s,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:Ye};return a?(cs(i,n),s&128&&e.normalize(i)):n&&(i.shapeFlag|=ae(n)?8:16),Gn>0&&!l&&at&&(i.patchFlag>0||s&6)&&i.patchFlag!==32&&at.push(i),i}const Se=Ff;function Ff(e,t=null,n=null,r=0,o=null,s=!1){if((!e||e===Ju)&&(e=Qe),Ao(e)){const a=Vt(e,t,!0);return n&&cs(a,n),Gn>0&&!s&&at&&(a.shapeFlag&6?at[at.indexOf(e)]=a:at.push(a)),a.patchFlag|=-2,a}if(qf(e)&&(e=e.__vccOpts),t){t=Bf(t);let{class:a,style:i}=t;a&&!ae(a)&&(t.class=Zo(a)),_e(i)&&(ma(i)&&!q(i)&&(i=ke({},i)),t.style=Uo(i))}const l=ae(e)?1:ef(e)?128:$f(e)?64:_e(e)?4:te(e)?2:0;return Za(e,t,n,r,o,l,s,!0)}function Bf(e){return e?ma(e)||Kr in e?ke({},e):e:null}function Vt(e,t,n=!1){const{props:r,ref:o,patchFlag:s,children:l}=e,a=t?Vf(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&Ua(a),ref:t&&t.ref?n&&o?q(o)?o.concat(Er(t)):[o,Er(t)]:Er(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==je?s===-1?16:s|16:s,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Vt(e.ssContent),ssFallback:e.ssFallback&&Vt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Ya(e=" ",t=0){return Se(gn,null,e,t)}function em(e,t){const n=Se(Hn,null,e);return n.staticCount=t,n}function tm(e="",t=!1){return t?(Nf(),Df(Qe,null,e)):Se(Qe,null,e)}function lt(e){return e==null||typeof e=="boolean"?Se(Qe):q(e)?Se(je,null,e.slice()):typeof e=="object"?Mt(e):Se(gn,null,String(e))}function Mt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Vt(e)}function cs(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(q(t))n=16;else if(typeof t=="object")if(r&65){const o=t.default;o&&(o._c&&(o._d=!1),cs(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!(Kr in t)?t._ctx=Ye:o===3&&Ye&&(Ye.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else te(t)?(t={default:t,_ctx:Ye},n=32):(t=String(t),r&64?(n=16,t=[Ya(t)]):n=8);e.children=t,e.shapeFlag|=n}function Vf(...e){const t={};for(let n=0;nAe||Ye;let Rr,Po;{const e=ta(),t=(n,r)=>{let o;return(o=e[n])||(o=e[n]=[]),o.push(r),s=>{o.length>1?o.forEach(l=>l(s)):o[0](s)}};Rr=t("__VUE_INSTANCE_SETTERS__",n=>Ae=n),Po=t("__VUE_SSR_SETTERS__",n=>er=n)}const Qn=e=>{const t=Ae;return Rr(e),e.scope.on(),()=>{e.scope.off(),Rr(t)}},tl=()=>{Ae&&Ae.scope.off(),Rr(null)};function qa(e){return e.vnode.shapeFlag&4}let er=!1;function Kf(e,t=!1){t&&Po(t);const{props:n,children:r}=e.vnode,o=qa(e);Sf(e,n,o,t),xf(e,r);const s=o?Gf(e,t):void 0;return t&&Po(!1),s}function Gf(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=ga(new Proxy(e.ctx,mf));const{setup:r}=n;if(r){const o=e.setupContext=r.length>1?Zf(e):null,s=Qn(e);Qt();const l=Dt(r,e,0,[e.props,o]);if(en(),s(),ea(l)){if(l.then(tl,tl),t)return l.then(a=>{nl(e,a,t)}).catch(a=>{Xn(a,e,0)});e.asyncDep=l}else nl(e,l,t)}else Xa(e,t)}function nl(e,t,n){te(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:_e(t)&&(e.setupState=wa(t)),Xa(e,n)}let rl;function Xa(e,t,n){const r=e.type;if(!e.render){if(!t&&rl&&!r.render){const o=r.template||as(e).template;if(o){const{isCustomElement:s,compilerOptions:l}=e.appContext.config,{delimiters:a,compilerOptions:i}=r,f=ke(ke({isCustomElement:s,delimiters:a},l),i);r.render=rl(o,f)}}e.render=r.render||Ze}{const o=Qn(e);Qt();try{gf(e)}finally{en(),o()}}}function Uf(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return Be(e,"get","$attrs"),t[n]}}))}function Zf(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return Uf(e)},slots:e.slots,emit:e.emit,expose:t}}function us(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(wa(ga(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Nn)return Nn[n](e)},has(t,n){return n in t||n in Nn}}))}function Yf(e,t=!0){return te(e)?e.displayName||e.name:e.name||t&&e.__name}function qf(e){return te(e)&&"__vccOpts"in e}const k=(e,t)=>Mu(e,t,er);function c(e,t,n){const r=arguments.length;return r===2?_e(t)&&!q(t)?Ao(t)?Se(e,null,[t]):Se(e,t):Se(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Ao(n)&&(n=[n]),Se(e,t,n))}const Xf="3.4.13";/** +* @vue/runtime-dom v3.4.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const Jf="http://www.w3.org/2000/svg",Qf="http://www.w3.org/1998/Math/MathML",$t=typeof document<"u"?document:null,ol=$t&&$t.createElement("template"),ed={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t==="svg"?$t.createElementNS(Jf,e):t==="mathml"?$t.createElementNS(Qf,e):$t.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&o.setAttribute("multiple",r.multiple),o},createText:e=>$t.createTextNode(e),createComment:e=>$t.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>$t.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,s){const l=n?n.previousSibling:t.lastChild;if(o&&(o===s||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===s||!(o=o.nextSibling)););else{ol.innerHTML=r==="svg"?`${e}`:r==="mathml"?`${e}`:e;const a=ol.content;if(r==="svg"||r==="mathml"){const i=a.firstChild;for(;i.firstChild;)a.appendChild(i.firstChild);a.removeChild(i)}t.insertBefore(a,n)}return[l?l.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Pt="transition",An="animation",bn=Symbol("_vtc"),Et=(e,{slots:t})=>c(sf,Qa(e),t);Et.displayName="Transition";const Ja={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},td=Et.props=ke({},Ra,Ja),Kt=(e,t=[])=>{q(e)?e.forEach(n=>n(...t)):e&&e(...t)},sl=e=>e?q(e)?e.some(t=>t.length>1):e.length>1:!1;function Qa(e){const t={};for(const D in e)D in Ja||(t[D]=e[D]);if(e.css===!1)return t;const{name:n="v",type:r,duration:o,enterFromClass:s=`${n}-enter-from`,enterActiveClass:l=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:i=s,appearActiveClass:f=l,appearToClass:u=a,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:v=`${n}-leave-to`}=e,g=nd(o),_=g&&g[0],E=g&&g[1],{onBeforeEnter:b,onEnter:L,onEnterCancelled:y,onLeave:S,onLeaveCancelled:$,onBeforeAppear:C=b,onAppear:j=L,onAppearCancelled:N=y}=t,O=(D,J,Ee)=>{It(D,J?u:a),It(D,J?f:l),Ee&&Ee()},H=(D,J)=>{D._isLeaving=!1,It(D,d),It(D,v),It(D,p),J&&J()},ee=D=>(J,Ee)=>{const Ce=D?j:L,U=()=>O(J,D,Ee);Kt(Ce,[J,U]),ll(()=>{It(J,D?i:s),vt(J,D?u:a),sl(Ce)||al(J,r,_,U)})};return ke(t,{onBeforeEnter(D){Kt(b,[D]),vt(D,s),vt(D,l)},onBeforeAppear(D){Kt(C,[D]),vt(D,i),vt(D,f)},onEnter:ee(!1),onAppear:ee(!0),onLeave(D,J){D._isLeaving=!0;const Ee=()=>H(D,J);vt(D,d),ti(),vt(D,p),ll(()=>{D._isLeaving&&(It(D,d),vt(D,v),sl(S)||al(D,r,E,Ee))}),Kt(S,[D,Ee])},onEnterCancelled(D){O(D,!1),Kt(y,[D])},onAppearCancelled(D){O(D,!0),Kt(N,[D])},onLeaveCancelled(D){H(D),Kt($,[D])}})}function nd(e){if(e==null)return null;if(_e(e))return[so(e.enter),so(e.leave)];{const t=so(e);return[t,t]}}function so(e){return ou(e)}function vt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[bn]||(e[bn]=new Set)).add(t)}function It(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[bn];n&&(n.delete(t),n.size||(e[bn]=void 0))}function ll(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let rd=0;function al(e,t,n,r){const o=e._endId=++rd,s=()=>{o===e._endId&&r()};if(n)return setTimeout(s,n);const{type:l,timeout:a,propCount:i}=ei(e,t);if(!l)return r();const f=l+"end";let u=0;const d=()=>{e.removeEventListener(f,p),s()},p=v=>{v.target===e&&++u>=i&&d()};setTimeout(()=>{u(n[g]||"").split(", "),o=r(`${Pt}Delay`),s=r(`${Pt}Duration`),l=il(o,s),a=r(`${An}Delay`),i=r(`${An}Duration`),f=il(a,i);let u=null,d=0,p=0;t===Pt?l>0&&(u=Pt,d=l,p=s.length):t===An?f>0&&(u=An,d=f,p=i.length):(d=Math.max(l,f),u=d>0?l>f?Pt:An:null,p=u?u===Pt?s.length:i.length:0);const v=u===Pt&&/\b(transform|all)(,|$)/.test(r(`${Pt}Property`).toString());return{type:u,timeout:d,propCount:p,hasTransform:v}}function il(e,t){for(;e.lengthcl(n)+cl(e[r])))}function cl(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function ti(){return document.body.offsetHeight}function od(e,t,n){const r=e[bn];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const sd=Symbol("_vod"),ld=Symbol("");function ad(e,t,n){const r=e.style,o=r.display,s=ae(n);if(n&&!s){if(t&&!ae(t))for(const l in t)n[l]==null&&Io(r,l,"");for(const l in n)Io(r,l,n[l])}else if(s){if(t!==n){const l=r[ld];l&&(n+=";"+l),r.cssText=n}}else t&&e.removeAttribute("style");sd in e&&(r.display=o)}const ul=/\s*!important$/;function Io(e,t,n){if(q(n))n.forEach(r=>Io(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=id(e,t);ul.test(n)?e.setProperty(En(r),n.replace(ul,""),"important"):e[r]=n}}const fl=["Webkit","Moz","ms"],lo={};function id(e,t){const n=lo[t];if(n)return n;let r=et(t);if(r!=="filter"&&r in e)return lo[t]=r;r=Yn(r);for(let o=0;oao||(vd.then(()=>ao=0),ao=Date.now());function gd(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Xe(bd(r,n.value),t,5,[r])};return n.value=e,n.attached=md(),n}function bd(e,t){if(q(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>o=>!o._stopped&&r&&r(o))}else return t}const vl=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,yd=(e,t,n,r,o,s,l,a,i)=>{const f=o==="svg";t==="class"?od(e,r,f):t==="style"?ad(e,n,r):Zn(t)?jo(t)||pd(e,t,n,r,l):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):wd(e,t,r,f))?ud(e,t,r,s,l,a,i):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),cd(e,t,r,f))};function wd(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&vl(t)&&te(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return vl(t)&&ae(n)?!1:t in e}const ni=new WeakMap,ri=new WeakMap,Or=Symbol("_moveCb"),ml=Symbol("_enterCb"),oi={name:"TransitionGroup",props:ke({},td,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=Sn(),r=Ia();let o,s;return $a(()=>{if(!o.length)return;const l=e.moveClass||`${e.name||"v"}-move`;if(!kd(o[0].el,n.vnode.el,l))return;o.forEach(Cd),o.forEach(Sd);const a=o.filter(Td);ti(),a.forEach(i=>{const f=i.el,u=f.style;vt(f,l),u.transform=u.webkitTransform=u.transitionDuration="";const d=f[Or]=p=>{p&&p.target!==f||(!p||/transform$/.test(p.propertyName))&&(f.removeEventListener("transitionend",d),f[Or]=null,It(f,l))};f.addEventListener("transitionend",d)})}),()=>{const l=oe(e),a=Qa(l);let i=l.tag||je;o=s,s=t.default?ss(t.default()):[];for(let f=0;fdelete e.mode;oi.props;const Ed=oi;function Cd(e){const t=e.el;t[Or]&&t[Or](),t[ml]&&t[ml]()}function Sd(e){ri.set(e,e.el.getBoundingClientRect())}function Td(e){const t=ni.get(e),n=ri.get(e),r=t.left-n.left,o=t.top-n.top;if(r||o){const s=e.el.style;return s.transform=s.webkitTransform=`translate(${r}px,${o}px)`,s.transitionDuration="0s",e}}function kd(e,t,n){const r=e.cloneNode(),o=e[bn];o&&o.forEach(a=>{a.split(/\s+/).forEach(i=>i&&r.classList.remove(i))}),n.split(/\s+/).forEach(a=>a&&r.classList.add(a)),r.style.display="none";const s=t.nodeType===1?t:t.parentNode;s.appendChild(r);const{hasTransform:l}=ei(r);return s.removeChild(r),l}const xd=ke({patchProp:yd},ed);let io,gl=!1;function Ld(){return io=gl?io:Rf(xd),gl=!0,io}const Ad=(...e)=>{const t=Ld().createApp(...e),{mount:n}=t;return t.mount=r=>{const o=Id(r);if(o)return n(o,!0,Pd(o))},t};function Pd(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Id(e){return ae(e)?document.querySelector(e):e}const Rd="modulepreload",Od=function(e){return"/Minecolonies-Chinese-Wiki/"+e},bl={},ie=function(t,n,r){let o=Promise.resolve();if(n&&n.length>0){const s=document.getElementsByTagName("link");o=Promise.all(n.map(l=>{if(l=Od(l),l in bl)return;bl[l]=!0;const a=l.endsWith(".css"),i=a?'[rel="stylesheet"]':"";if(!!r)for(let d=s.length-1;d>=0;d--){const p=s[d];if(p.href===l&&(!a||p.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${l}"]${i}`))return;const u=document.createElement("link");if(u.rel=a?"stylesheet":Rd,a||(u.as="script",u.crossOrigin=""),u.href=l,document.head.appendChild(u),a)return new Promise((d,p)=>{u.addEventListener("load",d),u.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${l}`)))})}))}return o.then(()=>t()).catch(s=>{const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=s,window.dispatchEvent(l),!l.defaultPrevented)throw s})},Md={"v-8daa1a0e":()=>ie(()=>import("./index.html-SgfpfqAF.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-712c96ac":()=>ie(()=>import("./temp.html-mJuis2h8.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-2b686fa9":()=>ie(()=>import("./index.html-qMHFXmIa.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-1ef620e5":()=>ie(()=>import("./townhall.html-hfvW79OU.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-384502bc":()=>ie(()=>import("./index.html-5FyXhD0v.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-7d932540":()=>ie(()=>import("./gdlauncher.html-LPHvh2kO.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3631dba2":()=>ie(()=>import("./hmcl.html-nuGELm3C.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-0932ecbb":()=>ie(()=>import("./java.html-b4gnrsFa.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-f45ff45a":()=>ie(()=>import("./index.html-QIJUgJxO.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-117ff75c":()=>ie(()=>import("./datapacks.html-XoM--KFN.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3d245998":()=>ie(()=>import("./getting-started.html-cmKU-xSg.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-f61210c0":()=>ie(()=>import("./schematics.html-ZIiwWZQs.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-dd87a1e0":()=>ie(()=>import("./worldgencolonies.html-lvv6_fgg.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3706649a":()=>ie(()=>import("./404.html-FzwsIe5I.js"),__vite__mapDeps([])).then(({data:e})=>e)},$d=JSON.parse('{"base":"/Minecolonies-Chinese-Wiki/","lang":"zh-CN","title":"模拟殖民地 中文Wiki","description":"由爱好者建立的模拟殖民地非官方中文Wiki","head":[["link",{"rel":"manifest","href":"/Minecolonies-Chinese-Wiki/manifest.webmanifest","crossorigin":"use-credentials"}],["meta",{"name":"theme-color","content":"#46bd87"}],["meta",{"name":"viewport","content":"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover"}]],"locales":{}}');var Nd=([e,t,n])=>e==="meta"&&t.name?`${e}.${t.name}`:["title","base"].includes(e)?e:e==="template"&&t.id?`${e}.${t.id}`:JSON.stringify([e,t,n]),Hd=e=>{const t=new Set,n=[];return e.forEach(r=>{const o=Nd(r);t.has(o)||(t.add(o),n.push(r))}),n},Dd=e=>e[0]==="/"?e:`/${e}`,si=e=>e[e.length-1]==="/"||e.endsWith(".html")?e:`${e}/`,Tn=e=>/^(https?:)?\/\//.test(e),Fd=/.md((\?|#).*)?$/,Mr=(e,t="/")=>!!(Tn(e)||e.startsWith("/")&&!e.startsWith(t)&&!Fd.test(e)),li=e=>/^[a-z][a-z0-9+.-]*:/.test(e),fs=e=>Object.prototype.toString.call(e)==="[object Object]",ds=e=>e[e.length-1]==="/"?e.slice(0,-1):e,ai=e=>e[0]==="/"?e.slice(1):e,Bd=(e,t)=>{const n=Object.keys(e).sort((r,o)=>{const s=o.split("/").length-r.split("/").length;return s!==0?s:o.length-r.length});for(const r of n)if(t.startsWith(r))return r;return"/"};const ii={"v-8daa1a0e":Me(()=>ie(()=>import("./index.html-Gvxye8Fe.js"),__vite__mapDeps([0,1]))),"v-712c96ac":Me(()=>ie(()=>import("./temp.html-KkJJgK1Y.js"),__vite__mapDeps([2,1]))),"v-2b686fa9":Me(()=>ie(()=>import("./index.html-pFrUCak5.js"),__vite__mapDeps([3,1]))),"v-1ef620e5":Me(()=>ie(()=>import("./townhall.html-f05QP5j6.js"),__vite__mapDeps([4,1]))),"v-384502bc":Me(()=>ie(()=>import("./index.html-26zp0mBY.js"),__vite__mapDeps([5,1]))),"v-7d932540":Me(()=>ie(()=>import("./gdlauncher.html-gLJsbJFe.js"),__vite__mapDeps([6,1]))),"v-3631dba2":Me(()=>ie(()=>import("./hmcl.html-XybsHrXO.js"),__vite__mapDeps([7,1]))),"v-0932ecbb":Me(()=>ie(()=>import("./java.html-cvzZEkzf.js"),__vite__mapDeps([8,1]))),"v-f45ff45a":Me(()=>ie(()=>import("./index.html-iGaRDsYP.js"),__vite__mapDeps([9,1]))),"v-117ff75c":Me(()=>ie(()=>import("./datapacks.html-XY14g8Fx.js"),__vite__mapDeps([10,1]))),"v-3d245998":Me(()=>ie(()=>import("./getting-started.html-K6-kH37m.js"),__vite__mapDeps([11,1]))),"v-f61210c0":Me(()=>ie(()=>import("./schematics.html-xW3zIrup.js"),__vite__mapDeps([12,1]))),"v-dd87a1e0":Me(()=>ie(()=>import("./worldgencolonies.html-hBZXKTdx.js"),__vite__mapDeps([13,1]))),"v-3706649a":Me(()=>ie(()=>import("./404.html-YbRkGhD2.js"),__vite__mapDeps([14,1])))};var Vd=Symbol(""),ci=Symbol(""),zd=tn({key:"",path:"",title:"",lang:"",frontmatter:{},headers:[]}),pe=()=>{const e=he(ci);if(!e)throw new Error("pageData() is called without provider.");return e},ui=Symbol(""),xe=()=>{const e=he(ui);if(!e)throw new Error("usePageFrontmatter() is called without provider.");return e},fi=Symbol(""),Wd=()=>{const e=he(fi);if(!e)throw new Error("usePageHead() is called without provider.");return e},jd=Symbol(""),di=Symbol(""),pi=()=>{const e=he(di);if(!e)throw new Error("usePageLang() is called without provider.");return e},hi=Symbol(""),Kd=()=>{const e=he(hi);if(!e)throw new Error("usePageLayout() is called without provider.");return e},Gd=X(Md),ps=Symbol(""),nn=()=>{const e=he(ps);if(!e)throw new Error("useRouteLocale() is called without provider.");return e},cn=X($d),vi=()=>cn,mi=Symbol(""),Gr=()=>{const e=he(mi);if(!e)throw new Error("useSiteLocaleData() is called without provider.");return e},Ud=Symbol(""),Zd="Layout",Yd="NotFound",mt=qn({resolveLayouts:e=>e.reduce((t,n)=>({...t,...n.layouts}),{}),resolvePageData:async e=>{const t=Gd.value[e];return await(t==null?void 0:t())??zd},resolvePageFrontmatter:e=>e.frontmatter,resolvePageHead:(e,t,n)=>{const r=ae(t.description)?t.description:n.description,o=[...q(t.head)?t.head:[],...n.head,["title",{},e],["meta",{name:"description",content:r}]];return Hd(o)},resolvePageHeadTitle:(e,t)=>[e.title,t.title].filter(n=>!!n).join(" | "),resolvePageLang:(e,t)=>e.lang||t.lang||"en-US",resolvePageLayout:(e,t)=>{let n;if(e.path){const r=e.frontmatter.layout;ae(r)?n=r:n=Zd}else n=Yd;return t[n]},resolveRouteLocale:(e,t)=>Bd(e,t),resolveSiteLocaleData:(e,t)=>({...e,...e.locales[t]})}),Ur=W({name:"ClientOnly",setup(e,t){const n=X(!1);return ge(()=>{n.value=!0}),()=>{var r,o;return n.value?(o=(r=t.slots).default)==null?void 0:o.call(r):null}}}),gi=W({name:"Content",props:{pageKey:{type:String,required:!1,default:""}},setup(e){const t=pe(),n=k(()=>ii[e.pageKey||t.value.key]);return()=>n.value?c(n.value):c("div","404 Not Found")}}),nt=(e={})=>e,Oe=e=>Tn(e)?e:`/Minecolonies-Chinese-Wiki/${ai(e)}`;const qd={};/*! + * vue-router v4.2.5 + * (c) 2023 Eduardo San Martin Morote + * @license MIT + */const ln=typeof window<"u";function Xd(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const fe=Object.assign;function co(e,t){const n={};for(const r in t){const o=t[r];n[r]=it(o)?o.map(e):e(o)}return n}const Fn=()=>{},it=Array.isArray,Jd=/\/$/,Qd=e=>e.replace(Jd,"");function uo(e,t,n="/"){let r,o={},s="",l="";const a=t.indexOf("#");let i=t.indexOf("?");return a=0&&(i=-1),i>-1&&(r=t.slice(0,i),s=t.slice(i+1,a>-1?a:t.length),o=e(s)),a>-1&&(r=r||t.slice(0,a),l=t.slice(a,t.length)),r=rp(r??t,n),{fullPath:r+(s&&"?")+s+l,path:r,query:o,hash:l}}function ep(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function yl(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function tp(e,t,n){const r=t.matched.length-1,o=n.matched.length-1;return r>-1&&r===o&&yn(t.matched[r],n.matched[o])&&bi(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function yn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function bi(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!np(e[n],t[n]))return!1;return!0}function np(e,t){return it(e)?wl(e,t):it(t)?wl(t,e):e===t}function wl(e,t){return it(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function rp(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),o=r[r.length-1];(o===".."||o===".")&&r.push("");let s=n.length-1,l,a;for(l=0;l1&&s--;else break;return n.slice(0,s).join("/")+"/"+r.slice(l-(l===r.length?1:0)).join("/")}var Un;(function(e){e.pop="pop",e.push="push"})(Un||(Un={}));var Bn;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Bn||(Bn={}));function op(e){if(!e)if(ln){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Qd(e)}const sp=/^[^#]+#/;function lp(e,t){return e.replace(sp,"#")+t}function ap(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const Zr=()=>({left:window.pageXOffset,top:window.pageYOffset});function ip(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),o=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=ap(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.pageXOffset,t.top!=null?t.top:window.pageYOffset)}function _l(e,t){return(history.state?history.state.position-t:-1)+e}const Ro=new Map;function cp(e,t){Ro.set(e,t)}function up(e){const t=Ro.get(e);return Ro.delete(e),t}let fp=()=>location.protocol+"//"+location.host;function yi(e,t){const{pathname:n,search:r,hash:o}=t,s=e.indexOf("#");if(s>-1){let a=o.includes(e.slice(s))?e.slice(s).length:1,i=o.slice(a);return i[0]!=="/"&&(i="/"+i),yl(i,"")}return yl(n,e)+r+o}function dp(e,t,n,r){let o=[],s=[],l=null;const a=({state:p})=>{const v=yi(e,location),g=n.value,_=t.value;let E=0;if(p){if(n.value=v,t.value=p,l&&l===g){l=null;return}E=_?p.position-_.position:0}else r(v);o.forEach(b=>{b(n.value,g,{delta:E,type:Un.pop,direction:E?E>0?Bn.forward:Bn.back:Bn.unknown})})};function i(){l=n.value}function f(p){o.push(p);const v=()=>{const g=o.indexOf(p);g>-1&&o.splice(g,1)};return s.push(v),v}function u(){const{history:p}=window;p.state&&p.replaceState(fe({},p.state,{scroll:Zr()}),"")}function d(){for(const p of s)p();s=[],window.removeEventListener("popstate",a),window.removeEventListener("beforeunload",u)}return window.addEventListener("popstate",a),window.addEventListener("beforeunload",u,{passive:!0}),{pauseListeners:i,listen:f,destroy:d}}function El(e,t,n,r=!1,o=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:o?Zr():null}}function pp(e){const{history:t,location:n}=window,r={value:yi(e,n)},o={value:t.state};o.value||s(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function s(i,f,u){const d=e.indexOf("#"),p=d>-1?(n.host&&document.querySelector("base")?e:e.slice(d))+i:fp()+e+i;try{t[u?"replaceState":"pushState"](f,"",p),o.value=f}catch(v){console.error(v),n[u?"replace":"assign"](p)}}function l(i,f){const u=fe({},t.state,El(o.value.back,i,o.value.forward,!0),f,{position:o.value.position});s(i,u,!0),r.value=i}function a(i,f){const u=fe({},o.value,t.state,{forward:i,scroll:Zr()});s(u.current,u,!0);const d=fe({},El(r.value,i,null),{position:u.position+1},f);s(i,d,!1),r.value=i}return{location:r,state:o,push:a,replace:l}}function hp(e){e=op(e);const t=pp(e),n=dp(e,t.state,t.location,t.replace);function r(s,l=!0){l||n.pauseListeners(),history.go(s)}const o=fe({location:"",base:e,go:r,createHref:lp.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}function vp(e){return typeof e=="string"||e&&typeof e=="object"}function wi(e){return typeof e=="string"||typeof e=="symbol"}const gt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},_i=Symbol("");var Cl;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Cl||(Cl={}));function wn(e,t){return fe(new Error,{type:e,[_i]:!0},t)}function ht(e,t){return e instanceof Error&&_i in e&&(t==null||!!(e.type&t))}const Sl="[^/]+?",mp={sensitive:!1,strict:!1,start:!0,end:!0},gp=/[.+*?^${}()[\]/\\]/g;function bp(e,t){const n=fe({},mp,t),r=[];let o=n.start?"^":"";const s=[];for(const f of e){const u=f.length?[]:[90];n.strict&&!f.length&&(o+="/");for(let d=0;dt.length?t.length===1&&t[0]===80?1:-1:0}function wp(e,t){let n=0;const r=e.score,o=t.score;for(;n0&&t[t.length-1]<0}const _p={type:0,value:""},Ep=/[a-zA-Z0-9_]/;function Cp(e){if(!e)return[[]];if(e==="/")return[[_p]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(v){throw new Error(`ERR (${n})/"${f}": ${v}`)}let n=0,r=n;const o=[];let s;function l(){s&&o.push(s),s=[]}let a=0,i,f="",u="";function d(){f&&(n===0?s.push({type:0,value:f}):n===1||n===2||n===3?(s.length>1&&(i==="*"||i==="+")&&t(`A repeatable param (${f}) must be alone in its segment. eg: '/:ids+.`),s.push({type:1,value:f,regexp:u,repeatable:i==="*"||i==="+",optional:i==="*"||i==="?"})):t("Invalid state to consume buffer"),f="")}function p(){f+=i}for(;a{l(L)}:Fn}function l(u){if(wi(u)){const d=r.get(u);d&&(r.delete(u),n.splice(n.indexOf(d),1),d.children.forEach(l),d.alias.forEach(l))}else{const d=n.indexOf(u);d>-1&&(n.splice(d,1),u.record.name&&r.delete(u.record.name),u.children.forEach(l),u.alias.forEach(l))}}function a(){return n}function i(u){let d=0;for(;d=0&&(u.record.path!==n[d].record.path||!Ei(u,n[d]));)d++;n.splice(d,0,u),u.record.name&&!xl(u)&&r.set(u.record.name,u)}function f(u,d){let p,v={},g,_;if("name"in u&&u.name){if(p=r.get(u.name),!p)throw wn(1,{location:u});_=p.record.name,v=fe(kl(d.params,p.keys.filter(L=>!L.optional).map(L=>L.name)),u.params&&kl(u.params,p.keys.map(L=>L.name))),g=p.stringify(v)}else if("path"in u)g=u.path,p=n.find(L=>L.re.test(g)),p&&(v=p.parse(g),_=p.record.name);else{if(p=d.name?r.get(d.name):n.find(L=>L.re.test(d.path)),!p)throw wn(1,{location:u,currentLocation:d});_=p.record.name,v=fe({},d.params,u.params),g=p.stringify(v)}const E=[];let b=p;for(;b;)E.unshift(b.record),b=b.parent;return{name:_,path:g,params:v,matched:E,meta:Lp(E)}}return e.forEach(u=>s(u)),{addRoute:s,resolve:f,removeRoute:l,getRoutes:a,getRecordMatcher:o}}function kl(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function kp(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:xp(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function xp(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function xl(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Lp(e){return e.reduce((t,n)=>fe(t,n.meta),{})}function Ll(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function Ei(e,t){return t.children.some(n=>n===e||Ei(e,n))}const Ci=/#/g,Ap=/&/g,Pp=/\//g,Ip=/=/g,Rp=/\?/g,Si=/\+/g,Op=/%5B/g,Mp=/%5D/g,Ti=/%5E/g,$p=/%60/g,ki=/%7B/g,Np=/%7C/g,xi=/%7D/g,Hp=/%20/g;function hs(e){return encodeURI(""+e).replace(Np,"|").replace(Op,"[").replace(Mp,"]")}function Dp(e){return hs(e).replace(ki,"{").replace(xi,"}").replace(Ti,"^")}function Oo(e){return hs(e).replace(Si,"%2B").replace(Hp,"+").replace(Ci,"%23").replace(Ap,"%26").replace($p,"`").replace(ki,"{").replace(xi,"}").replace(Ti,"^")}function Fp(e){return Oo(e).replace(Ip,"%3D")}function Bp(e){return hs(e).replace(Ci,"%23").replace(Rp,"%3F")}function Vp(e){return e==null?"":Bp(e).replace(Pp,"%2F")}function $r(e){try{return decodeURIComponent(""+e)}catch{}return""+e}function zp(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let o=0;os&&Oo(s)):[r&&Oo(r)]).forEach(s=>{s!==void 0&&(t+=(t.length?"&":"")+n,s!=null&&(t+="="+s))})}return t}function Wp(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=it(r)?r.map(o=>o==null?null:""+o):r==null?r:""+r)}return t}const jp=Symbol(""),Pl=Symbol(""),Yr=Symbol(""),vs=Symbol(""),Mo=Symbol("");function Pn(){let e=[];function t(r){return e.push(r),()=>{const o=e.indexOf(r);o>-1&&e.splice(o,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Nt(e,t,n,r,o){const s=r&&(r.enterCallbacks[o]=r.enterCallbacks[o]||[]);return()=>new Promise((l,a)=>{const i=d=>{d===!1?a(wn(4,{from:n,to:t})):d instanceof Error?a(d):vp(d)?a(wn(2,{from:t,to:d})):(s&&r.enterCallbacks[o]===s&&typeof d=="function"&&s.push(d),l())},f=e.call(r&&r.instances[o],t,n,i);let u=Promise.resolve(f);e.length<3&&(u=u.then(i)),u.catch(d=>a(d))})}function fo(e,t,n,r){const o=[];for(const s of e)for(const l in s.components){let a=s.components[l];if(!(t!=="beforeRouteEnter"&&!s.instances[l]))if(Kp(a)){const f=(a.__vccOpts||a)[t];f&&o.push(Nt(f,n,r,s,l))}else{let i=a();o.push(()=>i.then(f=>{if(!f)return Promise.reject(new Error(`Couldn't resolve component "${l}" at "${s.path}"`));const u=Xd(f)?f.default:f;s.components[l]=u;const p=(u.__vccOpts||u)[t];return p&&Nt(p,n,r,s,l)()}))}}return o}function Kp(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function $o(e){const t=he(Yr),n=he(vs),r=k(()=>t.resolve(Xt(e.to))),o=k(()=>{const{matched:i}=r.value,{length:f}=i,u=i[f-1],d=n.matched;if(!u||!d.length)return-1;const p=d.findIndex(yn.bind(null,u));if(p>-1)return p;const v=Il(i[f-2]);return f>1&&Il(u)===v&&d[d.length-1].path!==v?d.findIndex(yn.bind(null,i[f-2])):p}),s=k(()=>o.value>-1&&Yp(n.params,r.value.params)),l=k(()=>o.value>-1&&o.value===n.matched.length-1&&bi(n.params,r.value.params));function a(i={}){return Zp(i)?t[Xt(e.replace)?"replace":"push"](Xt(e.to)).catch(Fn):Promise.resolve()}return{route:r,href:k(()=>r.value.href),isActive:s,isExactActive:l,navigate:a}}const Gp=W({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:$o,setup(e,{slots:t}){const n=qn($o(e)),{options:r}=he(Yr),o=k(()=>({[Rl(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[Rl(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const s=t.default&&t.default(n);return e.custom?s:c("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},s)}}}),Up=Gp;function Zp(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Yp(e,t){for(const n in t){const r=t[n],o=e[n];if(typeof r=="string"){if(r!==o)return!1}else if(!it(o)||o.length!==r.length||r.some((s,l)=>s!==o[l]))return!1}return!0}function Il(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Rl=(e,t,n)=>e??t??n,qp=W({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=he(Mo),o=k(()=>e.route||r.value),s=he(Pl,0),l=k(()=>{let f=Xt(s);const{matched:u}=o.value;let d;for(;(d=u[f])&&!d.components;)f++;return f}),a=k(()=>o.value.matched[l.value]);Ft(Pl,k(()=>l.value+1)),Ft(jp,a),Ft(Mo,o);const i=X();return ce(()=>[i.value,a.value,e.name],([f,u,d],[p,v,g])=>{u&&(u.instances[d]=f,v&&v!==u&&f&&f===p&&(u.leaveGuards.size||(u.leaveGuards=v.leaveGuards),u.updateGuards.size||(u.updateGuards=v.updateGuards))),f&&u&&(!v||!yn(u,v)||!p)&&(u.enterCallbacks[d]||[]).forEach(_=>_(f))},{flush:"post"}),()=>{const f=o.value,u=e.name,d=a.value,p=d&&d.components[u];if(!p)return Ol(n.default,{Component:p,route:f});const v=d.props[u],g=v?v===!0?f.params:typeof v=="function"?v(f):v:null,E=c(p,fe({},g,t,{onVnodeUnmounted:b=>{b.component.isUnmounted&&(d.instances[u]=null)},ref:i}));return Ol(n.default,{Component:E,route:f})||E}}});function Ol(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Li=qp;function Xp(e){const t=Tp(e.routes,e),n=e.parseQuery||zp,r=e.stringifyQuery||Al,o=e.history,s=Pn(),l=Pn(),a=Pn(),i=tt(gt);let f=gt;ln&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=co.bind(null,x=>""+x),d=co.bind(null,Vp),p=co.bind(null,$r);function v(x,V){let F,K;return wi(x)?(F=t.getRecordMatcher(x),K=V):K=x,t.addRoute(K,F)}function g(x){const V=t.getRecordMatcher(x);V&&t.removeRoute(V)}function _(){return t.getRoutes().map(x=>x.record)}function E(x){return!!t.getRecordMatcher(x)}function b(x,V){if(V=fe({},V||i.value),typeof x=="string"){const m=uo(n,x,V.path),w=t.resolve({path:m.path},V),A=o.createHref(m.fullPath);return fe(m,w,{params:p(w.params),hash:$r(m.hash),redirectedFrom:void 0,href:A})}let F;if("path"in x)F=fe({},x,{path:uo(n,x.path,V.path).path});else{const m=fe({},x.params);for(const w in m)m[w]==null&&delete m[w];F=fe({},x,{params:d(m)}),V.params=d(V.params)}const K=t.resolve(F,V),ue=x.hash||"";K.params=u(p(K.params));const be=ep(r,fe({},x,{hash:Dp(ue),path:K.path})),h=o.createHref(be);return fe({fullPath:be,hash:ue,query:r===Al?Wp(x.query):x.query||{}},K,{redirectedFrom:void 0,href:h})}function L(x){return typeof x=="string"?uo(n,x,i.value.path):fe({},x)}function y(x,V){if(f!==x)return wn(8,{from:V,to:x})}function S(x){return j(x)}function $(x){return S(fe(L(x),{replace:!0}))}function C(x){const V=x.matched[x.matched.length-1];if(V&&V.redirect){const{redirect:F}=V;let K=typeof F=="function"?F(x):F;return typeof K=="string"&&(K=K.includes("?")||K.includes("#")?K=L(K):{path:K},K.params={}),fe({query:x.query,hash:x.hash,params:"path"in K?{}:x.params},K)}}function j(x,V){const F=f=b(x),K=i.value,ue=x.state,be=x.force,h=x.replace===!0,m=C(F);if(m)return j(fe(L(m),{state:typeof m=="object"?fe({},ue,m.state):ue,force:be,replace:h}),V||F);const w=F;w.redirectedFrom=V;let A;return!be&&tp(r,K,F)&&(A=wn(16,{to:w,from:K}),ct(K,K,!0,!1)),(A?Promise.resolve(A):H(w,K)).catch(T=>ht(T)?ht(T,2)?T:xt(T):G(T,w,K)).then(T=>{if(T){if(ht(T,2))return j(fe({replace:h},L(T.to),{state:typeof T.to=="object"?fe({},ue,T.to.state):ue,force:be}),V||w)}else T=D(w,K,!0,h,ue);return ee(w,K,T),T})}function N(x,V){const F=y(x,V);return F?Promise.reject(F):Promise.resolve()}function O(x){const V=on.values().next().value;return V&&typeof V.runWithContext=="function"?V.runWithContext(x):x()}function H(x,V){let F;const[K,ue,be]=Jp(x,V);F=fo(K.reverse(),"beforeRouteLeave",x,V);for(const m of K)m.leaveGuards.forEach(w=>{F.push(Nt(w,x,V))});const h=N.bind(null,x,V);return F.push(h),Ie(F).then(()=>{F=[];for(const m of s.list())F.push(Nt(m,x,V));return F.push(h),Ie(F)}).then(()=>{F=fo(ue,"beforeRouteUpdate",x,V);for(const m of ue)m.updateGuards.forEach(w=>{F.push(Nt(w,x,V))});return F.push(h),Ie(F)}).then(()=>{F=[];for(const m of be)if(m.beforeEnter)if(it(m.beforeEnter))for(const w of m.beforeEnter)F.push(Nt(w,x,V));else F.push(Nt(m.beforeEnter,x,V));return F.push(h),Ie(F)}).then(()=>(x.matched.forEach(m=>m.enterCallbacks={}),F=fo(be,"beforeRouteEnter",x,V),F.push(h),Ie(F))).then(()=>{F=[];for(const m of l.list())F.push(Nt(m,x,V));return F.push(h),Ie(F)}).catch(m=>ht(m,8)?m:Promise.reject(m))}function ee(x,V,F){a.list().forEach(K=>O(()=>K(x,V,F)))}function D(x,V,F,K,ue){const be=y(x,V);if(be)return be;const h=V===gt,m=ln?history.state:{};F&&(K||h?o.replace(x.fullPath,fe({scroll:h&&m&&m.scroll},ue)):o.push(x.fullPath,ue)),i.value=x,ct(x,V,F,h),xt()}let J;function Ee(){J||(J=o.listen((x,V,F)=>{if(!lr.listening)return;const K=b(x),ue=C(K);if(ue){j(fe(ue,{replace:!0}),K).catch(Fn);return}f=K;const be=i.value;ln&&cp(_l(be.fullPath,F.delta),Zr()),H(K,be).catch(h=>ht(h,12)?h:ht(h,2)?(j(h.to,K).then(m=>{ht(m,20)&&!F.delta&&F.type===Un.pop&&o.go(-1,!1)}).catch(Fn),Promise.reject()):(F.delta&&o.go(-F.delta,!1),G(h,K,be))).then(h=>{h=h||D(K,be,!1),h&&(F.delta&&!ht(h,8)?o.go(-F.delta,!1):F.type===Un.pop&&ht(h,20)&&o.go(-1,!1)),ee(K,be,h)}).catch(Fn)}))}let Ce=Pn(),U=Pn(),ne;function G(x,V,F){xt(x);const K=U.list();return K.length?K.forEach(ue=>ue(x,V,F)):console.error(x),Promise.reject(x)}function ot(){return ne&&i.value!==gt?Promise.resolve():new Promise((x,V)=>{Ce.add([x,V])})}function xt(x){return ne||(ne=!x,Ee(),Ce.list().forEach(([V,F])=>x?F(x):V()),Ce.reset()),x}function ct(x,V,F,K){const{scrollBehavior:ue}=e;if(!ln||!ue)return Promise.resolve();const be=!F&&up(_l(x.fullPath,0))||(K||!F)&&history.state&&history.state.scroll||null;return zt().then(()=>ue(x,V,be)).then(h=>h&&ip(h)).catch(h=>G(h,x,V))}const Ne=x=>o.go(x);let rn;const on=new Set,lr={currentRoute:i,listening:!0,addRoute:v,removeRoute:g,hasRoute:E,getRoutes:_,resolve:b,options:e,push:S,replace:$,go:Ne,back:()=>Ne(-1),forward:()=>Ne(1),beforeEach:s.add,beforeResolve:l.add,afterEach:a.add,onError:U.add,isReady:ot,install(x){const V=this;x.component("RouterLink",Up),x.component("RouterView",Li),x.config.globalProperties.$router=V,Object.defineProperty(x.config.globalProperties,"$route",{enumerable:!0,get:()=>Xt(i)}),ln&&!rn&&i.value===gt&&(rn=!0,S(o.location).catch(ue=>{}));const F={};for(const ue in gt)Object.defineProperty(F,ue,{get:()=>i.value[ue],enumerable:!0});x.provide(Yr,V),x.provide(vs,va(F)),x.provide(Mo,i);const K=x.unmount;on.add(x),x.unmount=function(){on.delete(x),on.size<1&&(f=gt,J&&J(),J=null,i.value=gt,rn=!1,ne=!1),K()}}};function Ie(x){return x.reduce((V,F)=>V.then(()=>O(F)),Promise.resolve())}return lr}function Jp(e,t){const n=[],r=[],o=[],s=Math.max(t.matched.length,e.matched.length);for(let l=0;lyn(f,a))?r.push(a):n.push(a));const i=e.matched[l];i&&(t.matched.find(f=>yn(f,i))||o.push(i))}return[n,r,o]}function rt(){return he(Yr)}function Tt(){return he(vs)}const ve=({name:e="",color:t="currentColor"},{slots:n})=>{var r;return c("svg",{xmlns:"http://www.w3.org/2000/svg",class:["icon",`${e}-icon`],viewBox:"0 0 1024 1024",fill:t,"aria-label":`${e} icon`},(r=n.default)==null?void 0:r.call(n))};ve.displayName="IconBase";const Ai=(e,{slots:t})=>{var n;return(n=t.default)==null?void 0:n.call(t)},Qp=e=>[/\((ipad);[-\w),; ]+apple/i,/applecoremedia\/[\w.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i].some(t=>t.test(e)),eh=e=>[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/cfnetwork\/.+darwin/i].some(t=>t.test(e)),th=e=>[/(mac os x) ?([\w. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i].some(t=>t.test(e)),nh=(e="")=>{if(e){if(typeof e=="number")return new Date(e);const t=Date.parse(e.toString());if(!Number.isNaN(t))return new Date(t)}return null},Pi=(e,t)=>{let n=1;for(let r=0;r>6;return n+=n<<3,n^=n>>11,n%t},Ii=Array.isArray,rh=e=>typeof e=="function",oh=e=>typeof e=="string";var ms=e=>/^(https?:)?\/\//.test(e),sh=/.md((\?|#).*)?$/,lh=(e,t="/")=>!!(ms(e)||e.startsWith("/")&&!e.startsWith(t)&&!sh.test(e)),Ri=e=>Object.prototype.toString.call(e)==="[object Object]";function ah(){const e=X(!1);return Sn()&&ge(()=>{e.value=!0}),e}function ih(e){return ah(),k(()=>!!e())}const po=e=>typeof e=="number",Ct=e=>typeof e=="string",Jt=(e,t)=>Ct(e)&&e.startsWith(t),mr=(e,t)=>Ct(e)&&e.endsWith(t),Oi=Object.entries,ch=Object.fromEntries,tr=Object.keys,uh=e=>(e.endsWith(".md")&&(e=`${e.slice(0,-3)}.html`),!e.endsWith("/")&&!e.endsWith(".html")&&(e=`${e}.html`),e=e.replace(/(^|\/)(?:README|index).html$/i,"$1"),e),Mi=e=>{const[t,n=""]=e.split("#");return t?`${uh(t)}${n?`#${n}`:""}`:e},Ml=e=>Ri(e)&&Ct(e.name),$l=(e,t=!1)=>e?Ii(e)?e.map(n=>Ct(n)?{name:n}:Ml(n)?n:null).filter(n=>n!==null):Ct(e)?[{name:e}]:Ml(e)?[e]:(console.error(`Expect "author" to be \`AuthorInfo[] | AuthorInfo | string[] | string ${t?"":"| false"} | undefined\`, but got`,e),[]):[],$i=(e,t)=>{if(e){if(Ii(e)&&e.every(Ct))return e;if(Ct(e))return[e];console.error(`Expect ${t||"value"} to be \`string[] | string | undefined\`, but got`,e)}return[]},fh=e=>$i(e,"category"),dh=e=>$i(e,"tag"),qr=e=>Jt(e,"/"),Ni=/#.*$/u,ph=e=>{const t=Ni.exec(e);return t?t[0]:""},Nl=e=>decodeURI(e).replace(Ni,"").replace(/(index)?\.html$/i,"").replace(/(README|index)?\.md$/i,""),Hi=(e,t)=>{if(t===void 0)return!1;const n=Nl(e.path),r=Nl(t),o=ph(t);return o?o===e.hash&&(!r||n===r):n===r},hh=e=>ms(e)?e:`https://github.com/${e}`,Di=e=>!ms(e)||/github\.com/.test(e)?"GitHub":/bitbucket\.org/.test(e)?"Bitbucket":/gitlab\.com/.test(e)?"GitLab":/gitee\.com/.test(e)?"Gitee":null,Nr=(e,...t)=>{const n=e.resolve(...t),r=n.matched[n.matched.length-1];if(!(r!=null&&r.redirect))return n;const{redirect:o}=r,s=rh(o)?o(n):o,l=oh(s)?{path:s}:s;return Nr(e,{hash:n.hash,query:n.query,params:n.params,...l})},vh=e=>{var t;if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)&&!(e.currentTarget&&((t=e.currentTarget.getAttribute("target"))!=null&&t.match(/\b_blank\b/i))))return e.preventDefault(),!0},qe=({to:e="",class:t="",...n},{slots:r})=>{var a;const o=rt(),s=Mi(e),l=(i={})=>vh(i)?o.push(e).catch():Promise.resolve();return c("a",{...n,class:["vp-link",t],href:Jt(s,"/")?Oe(s):s,onClick:l},(a=r.default)==null?void 0:a.call(r))};qe.displayName="VPLink";const Fi=()=>c(ve,{name:"github"},()=>c("path",{d:"M511.957 21.333C241.024 21.333 21.333 240.981 21.333 512c0 216.832 140.544 400.725 335.574 465.664 24.49 4.395 32.256-10.07 32.256-23.083 0-11.69.256-44.245 0-85.205-136.448 29.61-164.736-64.64-164.736-64.64-22.315-56.704-54.4-71.765-54.4-71.765-44.587-30.464 3.285-29.824 3.285-29.824 49.195 3.413 75.179 50.517 75.179 50.517 43.776 75.008 114.816 53.333 142.762 40.79 4.523-31.66 17.152-53.377 31.19-65.537-108.971-12.458-223.488-54.485-223.488-242.602 0-53.547 19.114-97.323 50.517-131.67-5.035-12.33-21.93-62.293 4.779-129.834 0 0 41.258-13.184 134.912 50.346a469.803 469.803 0 0 1 122.88-16.554c41.642.213 83.626 5.632 122.88 16.554 93.653-63.488 134.784-50.346 134.784-50.346 26.752 67.541 9.898 117.504 4.864 129.834 31.402 34.347 50.474 78.123 50.474 131.67 0 188.586-114.73 230.016-224.042 242.09 17.578 15.232 33.578 44.672 33.578 90.454v135.85c0 13.142 7.936 27.606 32.854 22.87C862.25 912.597 1002.667 728.747 1002.667 512c0-271.019-219.648-490.667-490.71-490.667z"}));Fi.displayName="GitHubIcon";const Bi=()=>c(ve,{name:"gitlab"},()=>c("path",{d:"M229.333 78.688C223.52 62 199.895 62 193.895 78.688L87.958 406.438h247.5c-.188 0-106.125-327.75-106.125-327.75zM33.77 571.438c-4.875 15 .563 31.687 13.313 41.25l464.812 345L87.77 406.438zm301.5-165 176.813 551.25 176.812-551.25zm655.125 165-54-165-424.312 551.25 464.812-345c12.938-9.563 18.188-26.25 13.5-41.25zM830.27 78.688c-5.812-16.688-29.437-16.688-35.437 0l-106.125 327.75h247.5z"}));Bi.displayName="GitLabIcon";const Vi=()=>c(ve,{name:"gitee"},()=>c("path",{d:"M512 992C246.92 992 32 777.08 32 512S246.92 32 512 32s480 214.92 480 480-214.92 480-480 480zm242.97-533.34H482.39a23.7 23.7 0 0 0-23.7 23.7l-.03 59.28c0 13.08 10.59 23.7 23.7 23.7h165.96a23.7 23.7 0 0 1 23.7 23.7v11.85a71.1 71.1 0 0 1-71.1 71.1H375.71a23.7 23.7 0 0 1-23.7-23.7V423.11a71.1 71.1 0 0 1 71.1-71.1h331.8a23.7 23.7 0 0 0 23.7-23.7l.06-59.25a23.73 23.73 0 0 0-23.7-23.73H423.11a177.78 177.78 0 0 0-177.78 177.75v331.83c0 13.08 10.62 23.7 23.7 23.7h349.62a159.99 159.99 0 0 0 159.99-159.99V482.33a23.7 23.7 0 0 0-23.7-23.7z"}));Vi.displayName="GiteeIcon";const zi=()=>c(ve,{name:"bitbucket"},()=>c("path",{d:"M575.256 490.862c6.29 47.981-52.005 85.723-92.563 61.147-45.714-20.004-45.714-92.562-1.133-113.152 38.29-23.442 93.696 7.424 93.696 52.005zm63.451-11.996c-10.276-81.152-102.29-134.839-177.152-101.156-47.433 21.138-79.433 71.424-77.129 124.562 2.853 69.705 69.157 126.866 138.862 120.576S647.3 548.571 638.708 478.83zm136.558-309.723c-25.161-33.134-67.986-38.839-105.728-45.13-106.862-17.151-216.576-17.7-323.438 1.134-35.438 5.706-75.447 11.996-97.719 43.996 36.572 34.304 88.576 39.424 135.424 45.129 84.553 10.862 171.447 11.447 256 .585 47.433-5.705 99.987-10.276 135.424-45.714zm32.585 591.433c-16.018 55.99-6.839 131.438-66.304 163.986-102.29 56.576-226.304 62.867-338.87 42.862-59.43-10.862-129.135-29.696-161.72-85.723-14.3-54.858-23.442-110.848-32.585-166.84l3.438-9.142 10.276-5.157c170.277 112.567 408.576 112.567 579.438 0 26.844 8.01 6.84 40.558 6.29 60.014zm103.424-549.157c-19.42 125.148-41.728 249.71-63.415 374.272-6.29 36.572-41.728 57.162-71.424 72.558-106.862 53.724-231.424 62.866-348.562 50.286-79.433-8.558-160.585-29.696-225.134-79.433-30.28-23.443-30.28-63.415-35.986-97.134-20.005-117.138-42.862-234.277-57.161-352.585 6.839-51.42 64.585-73.728 107.447-89.71 57.16-21.138 118.272-30.866 178.87-36.571 129.134-12.58 261.157-8.01 386.304 28.562 44.581 13.13 92.563 31.415 122.844 69.705 13.714 17.7 9.143 40.01 6.29 60.014z"}));zi.displayName="BitbucketIcon";const Wi=()=>c(ve,{name:"source"},()=>c("path",{d:"M601.92 475.2c0 76.428-8.91 83.754-28.512 99.594-14.652 11.88-43.956 14.058-78.012 16.434-18.81 1.386-40.392 2.97-62.172 6.534-18.612 2.97-36.432 9.306-53.064 17.424V299.772c37.818-21.978 63.36-62.766 63.36-109.692 0-69.894-56.826-126.72-126.72-126.72S190.08 120.186 190.08 190.08c0 46.926 25.542 87.714 63.36 109.692v414.216c-37.818 21.978-63.36 62.766-63.36 109.692 0 69.894 56.826 126.72 126.72 126.72s126.72-56.826 126.72-126.72c0-31.086-11.286-59.598-29.7-81.576 13.266-9.504 27.522-17.226 39.996-19.206 16.038-2.574 32.868-3.762 50.688-5.148 48.312-3.366 103.158-7.326 148.896-44.55 61.182-49.698 74.25-103.158 75.24-187.902V475.2h-126.72zM316.8 126.72c34.848 0 63.36 28.512 63.36 63.36s-28.512 63.36-63.36 63.36-63.36-28.512-63.36-63.36 28.512-63.36 63.36-63.36zm0 760.32c-34.848 0-63.36-28.512-63.36-63.36s28.512-63.36 63.36-63.36 63.36 28.512 63.36 63.36-28.512 63.36-63.36 63.36zM823.68 158.4h-95.04V63.36h-126.72v95.04h-95.04v126.72h95.04v95.04h126.72v-95.04h95.04z"}));Wi.displayName="SourceIcon";const wt=(e,t)=>{var r;const n=(r=(t==null?void 0:t._instance)||Sn())==null?void 0:r.appContext.components;return n?e in n||et(e)in n||Yn(et(e))in n:!1},mh=()=>ih(()=>typeof window<"u"&&window.navigator&&"userAgent"in window.navigator),ji=()=>{const e=mh();return k(()=>e.value&&/\b(?:Android|iPhone)/i.test(navigator.userAgent))},kt=e=>{const t=nn();return k(()=>e[t.value])},Ki=({type:e="info",text:t="",vertical:n,color:r},{slots:o})=>{var s;return c("span",{class:["vp-badge",e,{diy:r}],style:{verticalAlign:n??!1,backgroundColor:r??!1}},((s=o.default)==null?void 0:s.call(o))||t)};Ki.displayName="Badge";var gh=W({name:"FontIcon",props:{icon:{type:String,default:""},color:{type:String,default:""},size:{type:[String,Number],default:""}},setup(e){const t=k(()=>{const r=["font-icon icon"],o=`${e.icon}`;return r.push(o),r}),n=k(()=>{const r={};return e.color&&(r.color=e.color),e.size&&(r["font-size"]=Number.isNaN(Number(e.size))?e.size:`${e.size}px`),tr(r).length?r:null});return()=>e.icon?c("span",{key:e.icon,class:t.value,style:n.value}):null}});function Hl(e,t){var n;const r=tt();return Aa(()=>{r.value=e()},{...t,flush:(n=t==null?void 0:t.flush)!=null?n:"sync"}),tn(r)}function gs(e,t){let n,r,o;const s=X(!0),l=()=>{s.value=!0,o()};ce(e,l,{flush:"sync"});const a=typeof t=="function"?t:t.get,i=typeof t=="function"?void 0:t.set,f=_a((u,d)=>(r=u,o=d,{get(){return s.value&&(n=a(),s.value=!1),r(),n},set(p){i==null||i(p)}}));return Object.isExtensible(f)&&(f.trigger=l),f}function kn(e){return ra()?(pu(e),!0):!1}function De(e){return typeof e=="function"?e():Xt(e)}const nr=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const bh=Object.prototype.toString,yh=e=>bh.call(e)==="[object Object]",_t=()=>{},No=wh();function wh(){var e,t;return nr&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function bs(e,t){function n(...r){return new Promise((o,s)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(o).catch(s)})}return n}const Gi=e=>e();function _h(e,t={}){let n,r,o=_t;const s=a=>{clearTimeout(a),o(),o=_t};return a=>{const i=De(e),f=De(t.maxWait);return n&&s(n),i<=0||f!==void 0&&f<=0?(r&&(s(r),r=null),Promise.resolve(a())):new Promise((u,d)=>{o=t.rejectOnCancel?d:u,f&&!r&&(r=setTimeout(()=>{n&&s(n),r=null,u(a())},f)),n=setTimeout(()=>{r&&s(r),r=null,u(a())},i)})}}function Eh(e,t=!0,n=!0,r=!1){let o=0,s,l=!0,a=_t,i;const f=()=>{s&&(clearTimeout(s),s=void 0,a(),a=_t)};return d=>{const p=De(e),v=Date.now()-o,g=()=>i=d();return f(),p<=0?(o=Date.now(),g()):(v>p&&(n||!l)?(o=Date.now(),g()):t&&(i=new Promise((_,E)=>{a=r?E:_,s=setTimeout(()=>{o=Date.now(),l=!0,_(g()),f()},Math.max(0,p-v))})),!n&&!s&&(s=setTimeout(()=>l=!0,p)),l=!1,i)}}function Ch(e=Gi){const t=X(!0);function n(){t.value=!1}function r(){t.value=!0}const o=(...s)=>{t.value&&e(...s)};return{isActive:tn(t),pause:n,resume:r,eventFilter:o}}function Sh(e){let t;function n(){return t||(t=e()),t}return n.reset=async()=>{const r=t;t=void 0,r&&await r},n}function Th(e){return e||Sn()}function kh(...e){if(e.length!==1)return Vr(...e);const t=e[0];return typeof t=="function"?tn(_a(()=>({get:t,set:_t}))):X(t)}function xh(e,t=200,n={}){return bs(_h(t,n),e)}function Lh(e,t=200,n=!1,r=!0,o=!1){return bs(Eh(t,n,r,o),e)}function Ah(e,t,n={}){const{eventFilter:r=Gi,...o}=n;return ce(e,bs(r,t),o)}function Ph(e,t,n={}){const{eventFilter:r,...o}=n,{eventFilter:s,pause:l,resume:a,isActive:i}=Ch(r);return{stop:Ah(e,t,{...o,eventFilter:s}),pause:l,resume:a,isActive:i}}function ys(e,t=!0,n){Th()?ge(e,n):t?e():zt(e)}function Ih(e,t,n={}){const{immediate:r=!0}=n,o=X(!1);let s=null;function l(){s&&(clearTimeout(s),s=null)}function a(){o.value=!1,l()}function i(...f){l(),o.value=!0,s=setTimeout(()=>{o.value=!1,s=null,e(...f)},De(t))}return r&&(o.value=!0,nr&&i()),kn(a),{isPending:tn(o),start:i,stop:a}}function Dl(e=!1,t={}){const{truthyValue:n=!0,falsyValue:r=!1}=t,o=Pe(e),s=X(e);function l(a){if(arguments.length)return s.value=a,s.value;{const i=De(n);return s.value=s.value===i?De(r):i,s.value}}return o?l:[s,l]}function Ke(e){var t;const n=De(e);return(t=n==null?void 0:n.$el)!=null?t:n}const pt=nr?window:void 0,Rh=nr?window.document:void 0,Ui=nr?window.navigator:void 0;function Te(...e){let t,n,r,o;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,o]=e,t=pt):[t,n,r,o]=e,!t)return _t;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const s=[],l=()=>{s.forEach(u=>u()),s.length=0},a=(u,d,p,v)=>(u.addEventListener(d,p,v),()=>u.removeEventListener(d,p,v)),i=ce(()=>[Ke(t),De(o)],([u,d])=>{if(l(),!u)return;const p=yh(d)?{...d}:d;s.push(...n.flatMap(v=>r.map(g=>a(u,v,g,p))))},{immediate:!0,flush:"post"}),f=()=>{i(),l()};return kn(f),f}let Fl=!1;function Oh(e,t,n={}){const{window:r=pt,ignore:o=[],capture:s=!0,detectIframe:l=!1}=n;if(!r)return _t;No&&!Fl&&(Fl=!0,Array.from(r.document.body.children).forEach(p=>p.addEventListener("click",_t)),r.document.documentElement.addEventListener("click",_t));let a=!0;const i=p=>o.some(v=>{if(typeof v=="string")return Array.from(r.document.querySelectorAll(v)).some(g=>g===p.target||p.composedPath().includes(g));{const g=Ke(v);return g&&(p.target===g||p.composedPath().includes(g))}}),u=[Te(r,"click",p=>{const v=Ke(e);if(!(!v||v===p.target||p.composedPath().includes(v))){if(p.detail===0&&(a=!i(p)),!a){a=!0;return}t(p)}},{passive:!0,capture:s}),Te(r,"pointerdown",p=>{const v=Ke(e);a=!i(p)&&!!(v&&!p.composedPath().includes(v))},{passive:!0}),l&&Te(r,"blur",p=>{setTimeout(()=>{var v;const g=Ke(e);((v=r.document.activeElement)==null?void 0:v.tagName)==="IFRAME"&&!(g!=null&&g.contains(r.document.activeElement))&&t(p)},0)})].filter(Boolean);return()=>u.forEach(p=>p())}function Mh(){const e=X(!1);return Sn()&&ge(()=>{e.value=!0}),e}function rr(e){const t=Mh();return k(()=>(t.value,!!e()))}function Zi(e,t={}){const{window:n=pt}=t,r=rr(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let o;const s=X(!1),l=f=>{s.value=f.matches},a=()=>{o&&("removeEventListener"in o?o.removeEventListener("change",l):o.removeListener(l))},i=Aa(()=>{r.value&&(a(),o=n.matchMedia(De(e)),"addEventListener"in o?o.addEventListener("change",l):o.addListener(l),s.value=o.matches)});return kn(()=>{i(),a(),o=void 0}),s}function Bl(e,t={}){const{controls:n=!1,navigator:r=Ui}=t,o=rr(()=>r&&"permissions"in r);let s;const l=typeof e=="string"?{name:e}:e,a=X(),i=()=>{s&&(a.value=s.state)},f=Sh(async()=>{if(o.value){if(!s)try{s=await r.permissions.query(l),Te(s,"change",i),i()}catch{a.value="prompt"}return s}});return f(),n?{state:a,isSupported:o,query:f}:a}function $h(e={}){const{navigator:t=Ui,read:n=!1,source:r,copiedDuring:o=1500,legacy:s=!1}=e,l=rr(()=>t&&"clipboard"in t),a=Bl("clipboard-read"),i=Bl("clipboard-write"),f=k(()=>l.value||s),u=X(""),d=X(!1),p=Ih(()=>d.value=!1,o);function v(){l.value&&a.value!=="denied"?t.clipboard.readText().then(b=>{u.value=b}):u.value=E()}f.value&&n&&Te(["copy","cut"],v);async function g(b=De(r)){f.value&&b!=null&&(l.value&&i.value!=="denied"?await t.clipboard.writeText(b):_(b),u.value=b,d.value=!0,p.start())}function _(b){const L=document.createElement("textarea");L.value=b??"",L.style.position="absolute",L.style.opacity="0",document.body.appendChild(L),L.select(),document.execCommand("copy"),L.remove()}function E(){var b,L,y;return(y=(L=(b=document==null?void 0:document.getSelection)==null?void 0:b.call(document))==null?void 0:L.toString())!=null?y:""}return{isSupported:f,text:u,copied:d,copy:g}}const gr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},br="__vueuse_ssr_handlers__",Nh=Hh();function Hh(){return br in gr||(gr[br]=gr[br]||{}),gr[br]}function Dh(e,t){return Nh[e]||t}function Fh(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Bh={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Vl="vueuse-storage";function Yi(e,t,n,r={}){var o;const{flush:s="pre",deep:l=!0,listenToStorageChanges:a=!0,writeDefaults:i=!0,mergeDefaults:f=!1,shallow:u,window:d=pt,eventFilter:p,onError:v=O=>{console.error(O)},initOnMounted:g}=r,_=(u?tt:X)(typeof t=="function"?t():t);if(!n)try{n=Dh("getDefaultStorage",()=>{var O;return(O=pt)==null?void 0:O.localStorage})()}catch(O){v(O)}if(!n)return _;const E=De(t),b=Fh(E),L=(o=r.serializer)!=null?o:Bh[b],{pause:y,resume:S}=Ph(_,()=>$(_.value),{flush:s,deep:l,eventFilter:p});return d&&a&&ys(()=>{Te(d,"storage",N),Te(d,Vl,j),g&&N()}),g||N(),_;function $(O){try{if(O==null)n.removeItem(e);else{const H=L.write(O),ee=n.getItem(e);ee!==H&&(n.setItem(e,H),d&&d.dispatchEvent(new CustomEvent(Vl,{detail:{key:e,oldValue:ee,newValue:H,storageArea:n}})))}}catch(H){v(H)}}function C(O){const H=O?O.newValue:n.getItem(e);if(H==null)return i&&E!=null&&n.setItem(e,L.write(E)),E;if(!O&&f){const ee=L.read(H);return typeof f=="function"?f(ee,E):b==="object"&&!Array.isArray(ee)?{...E,...ee}:ee}else return typeof H!="string"?H:L.read(H)}function j(O){N(O.detail)}function N(O){if(!(O&&O.storageArea!==n)){if(O&&O.key==null){_.value=E;return}if(!(O&&O.key!==e)){y();try{(O==null?void 0:O.newValue)!==L.write(_.value)&&(_.value=C(O))}catch(H){v(H)}finally{O?zt(S):S()}}}}}function Vh(e){return Zi("(prefers-color-scheme: dark)",e)}function zh(e,t,n={}){const{window:r=pt,...o}=n;let s;const l=rr(()=>r&&"ResizeObserver"in r),a=()=>{s&&(s.disconnect(),s=void 0)},i=k(()=>Array.isArray(e)?e.map(d=>Ke(d)):[Ke(e)]),f=ce(i,d=>{if(a(),l.value&&r){s=new ResizeObserver(t);for(const p of d)p&&s.observe(p,o)}},{immediate:!0,flush:"post",deep:!0}),u=()=>{a(),f()};return kn(u),{isSupported:l,stop:u}}function Wh(e,t={width:0,height:0},n={}){const{window:r=pt,box:o="content-box"}=n,s=k(()=>{var d,p;return(p=(d=Ke(e))==null?void 0:d.namespaceURI)==null?void 0:p.includes("svg")}),l=X(t.width),a=X(t.height),{stop:i}=zh(e,([d])=>{const p=o==="border-box"?d.borderBoxSize:o==="content-box"?d.contentBoxSize:d.devicePixelContentBoxSize;if(r&&s.value){const v=Ke(e);if(v){const g=r.getComputedStyle(v);l.value=Number.parseFloat(g.width),a.value=Number.parseFloat(g.height)}}else if(p){const v=Array.isArray(p)?p:[p];l.value=v.reduce((g,{inlineSize:_})=>g+_,0),a.value=v.reduce((g,{blockSize:_})=>g+_,0)}else l.value=d.contentRect.width,a.value=d.contentRect.height},n);ys(()=>{const d=Ke(e);d&&(l.value="offsetWidth"in d?d.offsetWidth:t.width,a.value="offsetHeight"in d?d.offsetHeight:t.height)});const f=ce(()=>Ke(e),d=>{l.value=d?t.width:0,a.value=d?t.height:0});function u(){i(),f()}return{width:l,height:a,stop:u}}const zl=["fullscreenchange","webkitfullscreenchange","webkitendfullscreen","mozfullscreenchange","MSFullscreenChange"];function ws(e,t={}){const{document:n=Rh,autoExit:r=!1}=t,o=k(()=>{var b;return(b=Ke(e))!=null?b:n==null?void 0:n.querySelector("html")}),s=X(!1),l=k(()=>["requestFullscreen","webkitRequestFullscreen","webkitEnterFullscreen","webkitEnterFullScreen","webkitRequestFullScreen","mozRequestFullScreen","msRequestFullscreen"].find(b=>n&&b in n||o.value&&b in o.value)),a=k(()=>["exitFullscreen","webkitExitFullscreen","webkitExitFullScreen","webkitCancelFullScreen","mozCancelFullScreen","msExitFullscreen"].find(b=>n&&b in n||o.value&&b in o.value)),i=k(()=>["fullScreen","webkitIsFullScreen","webkitDisplayingFullscreen","mozFullScreen","msFullscreenElement"].find(b=>n&&b in n||o.value&&b in o.value)),f=["fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement"].find(b=>n&&b in n),u=rr(()=>o.value&&n&&l.value!==void 0&&a.value!==void 0&&i.value!==void 0),d=()=>f?(n==null?void 0:n[f])===o.value:!1,p=()=>{if(i.value){if(n&&n[i.value]!=null)return n[i.value];{const b=o.value;if((b==null?void 0:b[i.value])!=null)return!!b[i.value]}}return!1};async function v(){if(!(!u.value||!s.value)){if(a.value)if((n==null?void 0:n[a.value])!=null)await n[a.value]();else{const b=o.value;(b==null?void 0:b[a.value])!=null&&await b[a.value]()}s.value=!1}}async function g(){if(!u.value||s.value)return;p()&&await v();const b=o.value;l.value&&(b==null?void 0:b[l.value])!=null&&(await b[l.value](),s.value=!0)}async function _(){await(s.value?v():g())}const E=()=>{const b=p();(!b||b&&d())&&(s.value=b)};return Te(n,zl,E,!1),Te(()=>Ke(o),zl,E,!1),r&&kn(v),{isSupported:u,isFullscreen:s,enter:g,exit:v,toggle:_}}function ho(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function nm(e,t,n={}){const{window:r=pt}=n;return Yi(e,t,r==null?void 0:r.localStorage,n)}function qi(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const yr=new WeakMap;function _s(e,t=!1){const n=X(t);let r=null,o;ce(kh(e),a=>{const i=ho(De(a));if(i){const f=i;yr.get(f)||yr.set(f,o),n.value&&(f.style.overflow="hidden")}},{immediate:!0});const s=()=>{const a=ho(De(e));!a||n.value||(No&&(r=Te(a,"touchmove",i=>{jh(i)},{passive:!1})),a.style.overflow="hidden",n.value=!0)},l=()=>{var a;const i=ho(De(e));!i||!n.value||(No&&(r==null||r()),i.style.overflow=(a=yr.get(i))!=null?a:"",yr.delete(i),n.value=!1)};return kn(l),k({get(){return n.value},set(a){a?s():l()}})}function Kh(e={}){const{window:t=pt,behavior:n="auto"}=e;if(!t)return{x:X(0),y:X(0)};const r=X(t.scrollX),o=X(t.scrollY),s=k({get(){return r.value},set(a){scrollTo({left:a,behavior:n})}}),l=k({get(){return o.value},set(a){scrollTo({top:a,behavior:n})}});return Te(t,"scroll",()=>{r.value=t.scrollX,o.value=t.scrollY},{capture:!1,passive:!0}),{x:s,y:l}}function Gh(e={}){const{window:t=pt,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:r=Number.POSITIVE_INFINITY,listenOrientation:o=!0,includeScrollbar:s=!0}=e,l=X(n),a=X(r),i=()=>{t&&(s?(l.value=t.innerWidth,a.value=t.innerHeight):(l.value=t.document.documentElement.clientWidth,a.value=t.document.documentElement.clientHeight))};if(i(),ys(i),Te("resize",i,{passive:!0}),o){const f=Zi("(orientation: portrait)");ce(f,()=>i())}return{width:l,height:a}}const Xi=()=>c(ve,{name:"back-to-top"},()=>[c("path",{d:"M512 843.2c-36.2 0-66.4-13.6-85.8-21.8-10.8-4.6-22.6 3.6-21.8 15.2l7 102c.4 6.2 7.6 9.4 12.6 5.6l29-22c3.6-2.8 9-1.8 11.4 2l41 64.2c3 4.8 10.2 4.8 13.2 0l41-64.2c2.4-3.8 7.8-4.8 11.4-2l29 22c5 3.8 12.2.6 12.6-5.6l7-102c.8-11.6-11-20-21.8-15.2-19.6 8.2-49.6 21.8-85.8 21.8z"}),c("path",{d:"m795.4 586.2-96-98.2C699.4 172 513 32 513 32S324.8 172 324.8 488l-96 98.2c-3.6 3.6-5.2 9-4.4 14.2L261.2 824c1.8 11.4 14.2 17 23.6 10.8L419 744s41.4 40 94.2 40c52.8 0 92.2-40 92.2-40l134.2 90.8c9.2 6.2 21.6.6 23.6-10.8l37-223.8c.4-5.2-1.2-10.4-4.8-14zM513 384c-34 0-61.4-28.6-61.4-64s27.6-64 61.4-64c34 0 61.4 28.6 61.4 64S547 384 513 384z"})]);Xi.displayName="BackToTopIcon";var Uh={"/":{backToTop:"返回顶部"}},Zh=W({name:"BackToTop",props:{threshold:{type:Number,default:100},noProgress:Boolean},setup(e){const t=xe(),n=kt(Uh),r=tt(),{height:o}=Wh(r),{height:s}=Gh(),{y:l}=Kh(),a=k(()=>t.value.backToTop!==!1&&l.value>e.threshold),i=k(()=>l.value/(o.value-s.value)*100);return ge(()=>{r.value=document.body}),()=>c(Et,{name:"fade"},()=>a.value?c("button",{type:"button",class:"vp-back-to-top-button","aria-label":n.value.backToTop,"data-balloon-pos":"left",onClick:()=>{window.scrollTo({top:0,behavior:"smooth"})}},[e.noProgress?null:c("span",{class:"vp-scroll-progress",role:"progressbar","aria-labelledby":"loadinglabel","aria-valuenow":i.value},c("svg",c("circle",{cx:"50%",cy:"50%",style:{"stroke-dasharray":`calc(${Math.PI*i.value}% - ${4*Math.PI}px) calc(${Math.PI*100}% - ${4*Math.PI}px)`}}))),c(Xi)]):null)}});const Yh=nt({enhance:({app:e})=>{wt("Badge")||e.component("Badge",Ki),wt("FontIcon")||e.component("FontIcon",gh)},setup:()=>{},rootComponents:[()=>c(Zh,{})]});function qh(e,t,n){var r,o,s;t===void 0&&(t=50),n===void 0&&(n={});var l=(r=n.isImmediate)!=null&&r,a=(o=n.callback)!=null&&o,i=n.maxWait,f=Date.now(),u=[];function d(){if(i!==void 0){var v=Date.now()-f;if(v+t>=i)return i-v}return t}var p=function(){var v=[].slice.call(arguments),g=this;return new Promise(function(_,E){var b=l&&s===void 0;if(s!==void 0&&clearTimeout(s),s=setTimeout(function(){if(s=void 0,f=Date.now(),!l){var y=e.apply(g,v);a&&a(y),u.forEach(function(S){return(0,S.resolve)(y)}),u=[]}},d()),b){var L=e.apply(g,v);return a&&a(L),_(L)}u.push({resolve:_,reject:E})})};return p.cancel=function(v){s!==void 0&&clearTimeout(s),u.forEach(function(g){return(0,g.reject)(v)}),u=[]},p}const Xh=({headerLinkSelector:e,headerAnchorSelector:t,delay:n,offset:r=5})=>{const o=rt(),l=qh(()=>{var _,E;const a=Math.max(window.scrollY,document.documentElement.scrollTop,document.body.scrollTop);if(Math.abs(a-0)p.some(L=>L.hash===b.hash));for(let b=0;b=(((_=L.parentElement)==null?void 0:_.offsetTop)??0)-r,$=!y||a<(((E=y.parentElement)==null?void 0:E.offsetTop)??0)-r;if(!(S&&$))continue;const j=decodeURIComponent(o.currentRoute.value.hash),N=decodeURIComponent(L.hash);if(j===N)return;if(d){for(let O=b+1;O{window.addEventListener("scroll",l)}),ls(()=>{window.removeEventListener("scroll",l)})},Wl=async(e,t)=>{const{scrollBehavior:n}=e.options;e.options.scrollBehavior=void 0,await e.replace({query:e.currentRoute.value.query,hash:t}).finally(()=>e.options.scrollBehavior=n)},Jh=".vp-sidebar-link, .toc-link",Qh=".header-anchor",e1=200,t1=5,n1=nt({setup(){Xh({headerLinkSelector:Jh,headerAnchorSelector:Qh,delay:e1,offset:t1})}});let Ji=e=>ae(e.title)?{title:e.title}:null;const Qi=Symbol(""),r1=e=>{Ji=e},o1=()=>he(Qi),s1=e=>{e.provide(Qi,Ji)};var l1={"/":{title:"目录",empty:"暂无目录"}},a1=W({name:"AutoCatalog",props:{base:{type:String,default:""},level:{type:Number,default:3},index:Boolean,hideHeading:Boolean},setup(e){const t=o1(),n=kt(l1),r=pe(),o=rt(),s=vi(),l=X(o.getRoutes().map(({meta:f,path:u})=>{const d=t(f);if(!d)return null;const p=u.split("/").length;return{level:mr(u,"/")?p-2:p-1,base:u.replace(/\/[^/]+\/?$/,"/"),path:u,...d}}).filter(f=>Ri(f)&&ae(f.title))),a=()=>{const f=e.base?Dd(si(e.base)):r.value.path.replace(/\/[^/]+$/,"/"),u=f.split("/").length-2,d=[];return l.value.filter(({level:p,path:v})=>{if(!Jt(v,f)||v===f)return!1;if(f==="/"){const g=tr(s.value.locales).filter(_=>_!=="/");if(v==="/404.html"||g.some(_=>Jt(v,_)))return!1}return p-u<=e.level&&(mr(v,".html")&&!mr(v,"/index.html")||mr(v,"/"))}).sort(({title:p,level:v,order:g},{title:_,level:E,order:b})=>v-E||(po(g)?po(b)?g>0?b>0?g-b:-1:b<0?g-b:1:g:po(b)?b:p.localeCompare(_))).forEach(p=>{var _;const{base:v,level:g}=p;switch(g-u){case 1:d.push(p);break;case 2:{const E=d.find(b=>b.path===v);E&&(E.children??(E.children=[])).push(p);break}default:{const E=d.find(b=>b.path===v.replace(/\/[^/]+\/$/,"/"));if(E){const b=(_=E.children)==null?void 0:_.find(L=>L.path===v);b&&(b.children??(b.children=[])).push(p)}}}}),d},i=k(()=>a());return()=>{const f=i.value.some(u=>u.children);return c("div",{class:["vp-catalog-wrapper",{index:e.index}]},[e.hideHeading?null:c("h2",{class:"vp-catalog-main-title"},n.value.title),i.value.length?c(e.index?"ol":"ul",{class:["vp-catalogs",{deep:f}]},i.value.map(({children:u=[],title:d,path:p,content:v})=>{const g=c(qe,{class:"vp-catalog-title",to:p},()=>v?c(v):d);return c("li",{class:"vp-catalog"},f?[c("h3",{id:d,class:["vp-catalog-child-title",{"has-children":u.length}]},[c("a",{href:`#${d}`,class:"header-anchor","aria-hidden":!0},"#"),g]),u.length?c(e.index?"ol":"ul",{class:"vp-child-catalogs"},u.map(({children:_=[],content:E,path:b,title:L})=>c("li",{class:"vp-child-catalog"},[c("div",{class:["vp-catalog-sub-title",{"has-children":_.length}]},[c("a",{href:`#${L}`,class:"header-anchor"},"#"),c(qe,{class:"vp-catalog-title",to:b},()=>E?c(E):L)]),_.length?c(e.index?"ol":"div",{class:e.index?"vp-sub-catalogs":"vp-sub-catalogs-wrapper"},_.map(({content:y,path:S,title:$})=>e.index?c("li",{class:"vp-sub-catalog"},c(qe,{to:S},()=>y?c(y):$)):c(qe,{class:"vp-sub-catalog-link",to:S},()=>y?c(y):$))):null]))):null]:c("div",{class:"vp-catalog-child-title"},g))})):c("p",{class:"vp-empty-catalog"},n.value.empty)])}}}),i1=nt({enhance:({app:e})=>{s1(e),wt("AutoCatalog",e)||e.component("AutoCatalog",a1)}});const c1=c("svg",{class:"external-link-icon",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"},[c("path",{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}),c("polygon",{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"})]),ec=W({name:"ExternalLinkIcon",props:{locales:{type:Object,required:!1,default:()=>({})}},setup(e){const t=nn(),n=k(()=>e.locales[t.value]??{openInNewWindow:"open in new window"});return()=>c("span",[c1,c("span",{class:"external-link-icon-sr-only"},n.value.openInNewWindow)])}});var u1={};const f1=u1,d1=nt({enhance({app:e}){e.component("ExternalLinkIcon",c(ec,{locales:f1}))}});/** + * NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress + * @license MIT + */const se={settings:{minimum:.08,easing:"ease",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,barSelector:'[role="bar"]',parent:"body",template:'
'},status:null,set:e=>{const t=se.isStarted();e=vo(e,se.settings.minimum,1),se.status=e===1?null:e;const n=se.render(!t),r=n.querySelector(se.settings.barSelector),o=se.settings.speed,s=se.settings.easing;return n.offsetWidth,p1(l=>{wr(r,{transform:"translate3d("+jl(e)+"%,0,0)",transition:"all "+o+"ms "+s}),e===1?(wr(n,{transition:"none",opacity:"1"}),n.offsetWidth,setTimeout(function(){wr(n,{transition:"all "+o+"ms linear",opacity:"0"}),setTimeout(function(){se.remove(),l()},o)},o)):setTimeout(()=>l(),o)}),se},isStarted:()=>typeof se.status=="number",start:()=>{se.status||se.set(0);const e=()=>{setTimeout(()=>{se.status&&(se.trickle(),e())},se.settings.trickleSpeed)};return se.settings.trickle&&e(),se},done:e=>!e&&!se.status?se:se.inc(.3+.5*Math.random()).set(1),inc:e=>{let t=se.status;return t?(typeof e!="number"&&(e=(1-t)*vo(Math.random()*t,.1,.95)),t=vo(t+e,0,.994),se.set(t)):se.start()},trickle:()=>se.inc(Math.random()*se.settings.trickleRate),render:e=>{if(se.isRendered())return document.getElementById("nprogress");Kl(document.documentElement,"nprogress-busy");const t=document.createElement("div");t.id="nprogress",t.innerHTML=se.settings.template;const n=t.querySelector(se.settings.barSelector),r=e?"-100":jl(se.status||0),o=document.querySelector(se.settings.parent);return wr(n,{transition:"all 0 linear",transform:"translate3d("+r+"%,0,0)"}),o!==document.body&&Kl(o,"nprogress-custom-parent"),o==null||o.appendChild(t),t},remove:()=>{Gl(document.documentElement,"nprogress-busy"),Gl(document.querySelector(se.settings.parent),"nprogress-custom-parent");const e=document.getElementById("nprogress");e&&h1(e)},isRendered:()=>!!document.getElementById("nprogress")},vo=(e,t,n)=>en?n:e,jl=e=>(-1+e)*100,p1=function(){const e=[];function t(){const n=e.shift();n&&n(t)}return function(n){e.push(n),e.length===1&&t()}}(),wr=function(){const e=["Webkit","O","Moz","ms"],t={};function n(l){return l.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(a,i){return i.toUpperCase()})}function r(l){const a=document.body.style;if(l in a)return l;let i=e.length;const f=l.charAt(0).toUpperCase()+l.slice(1);let u;for(;i--;)if(u=e[i]+f,u in a)return u;return l}function o(l){return l=n(l),t[l]??(t[l]=r(l))}function s(l,a,i){a=o(a),l.style[a]=i}return function(l,a){for(const i in a){const f=a[i];f!==void 0&&Object.prototype.hasOwnProperty.call(a,i)&&s(l,i,f)}}}(),tc=(e,t)=>(typeof e=="string"?e:Es(e)).indexOf(" "+t+" ")>=0,Kl=(e,t)=>{const n=Es(e),r=n+t;tc(n,t)||(e.className=r.substring(1))},Gl=(e,t)=>{const n=Es(e);if(!tc(e,t))return;const r=n.replace(" "+t+" "," ");e.className=r.substring(1,r.length-1)},Es=e=>(" "+(e.className||"")+" ").replace(/\s+/gi," "),h1=e=>{e&&e.parentNode&&e.parentNode.removeChild(e)},v1=()=>{ge(()=>{const e=rt(),t=new Set;t.add(e.currentRoute.value.path),e.beforeEach(n=>{t.has(n.path)||se.start()}),e.afterEach(n=>{t.add(n.path),se.done()})})},m1=nt({setup(){v1()}}),g1=JSON.parse('{"encrypt":{},"logo":"./assets/image/minecolonies_wiki.png","pageInfo":["Original","Date","Category","Tag","Word","ReadingTime"],"locales":{"/":{"lang":"zh-CN","navbarLocales":{"langName":"简体中文","selectLangAriaLabel":"选择语言"},"metaLocales":{"author":"作者","date":"写作日期","origin":"原创","views":"访问量","category":"分类","tag":"标签","readingTime":"阅读时间","words":"字数","toc":"此页内容","prev":"上一页","next":"下一页","lastUpdated":"上次编辑于","contributors":"贡献者","editLink":"编辑此页","print":"打印"},"outlookLocales":{"themeColor":"主题色","darkmode":"外观","fullscreen":"全屏"},"routeLocales":{"skipToContent":"跳至主要內容","notFoundTitle":"页面不存在","notFoundMsg":["这里什么也没有","我们是怎么来到这儿的?","这 是 四 零 四 !","看起来你访问了一个失效的链接"],"back":"返回上一页","home":"带我回家","openInNewWindow":"Open in new window"},"navbar":[{"text":"主页","link":"/","icon":"home"},{"text":"安装","link":"Installation/"},{"text":"教程","link":"Tutorials/"},{"text":"建筑","link":"Buildings/"}],"sidebar":{"/Installation/":"structure","/Tutorials/":"structure","/Buildings/":"structure","/":["start"]}}}}'),b1=X(g1),nc=()=>b1,rc=Symbol(""),y1=()=>{const e=he(rc);if(!e)throw new Error("useThemeLocaleData() is called without provider.");return e},w1=(e,t)=>{const{locales:n,...r}=e;return{...r,...n==null?void 0:n[t]}},_1=nt({enhance({app:e}){const t=nc(),n=e._context.provides[ps],r=k(()=>w1(t.value,n.value));e.provide(rc,r),Object.defineProperties(e.config.globalProperties,{$theme:{get(){return t.value}},$themeLocale:{get(){return r.value}}})}});var E1={"/":{copy:"复制代码",copied:"已复制",hint:"复制成功"}},C1=['.theme-hope-content div[class*="language-"] pre'];const S1=800,T1=2e3,k1=E1,x1=C1,Ul=!1,mo=new Map,L1=()=>{const{copy:e}=$h({legacy:!0}),t=kt(k1),n=pe(),r=ji(),o=a=>{if(!a.hasAttribute("copy-code-registered")){const i=document.createElement("button");i.type="button",i.classList.add("copy-code-button"),i.innerHTML='
',i.setAttribute("aria-label",t.value.copy),i.setAttribute("data-copied",t.value.copied),a.parentElement&&a.parentElement.insertBefore(i,a),a.setAttribute("copy-code-registered","")}},s=()=>zt().then(()=>new Promise(a=>{setTimeout(()=>{x1.forEach(i=>{document.querySelectorAll(i).forEach(o)}),a()},S1)})),l=(a,i,f)=>{let{innerText:u=""}=i;/language-(shellscript|shell|bash|sh|zsh)/.test(a.classList.toString())&&(u=u.replace(/^ *(\$|>) /gm,"")),e(u).then(()=>{f.classList.add("copied"),clearTimeout(mo.get(f));const d=setTimeout(()=>{f.classList.remove("copied"),f.blur(),mo.delete(f)},T1);mo.set(f,d)})};ge(()=>{(!r.value||Ul)&&s(),Te("click",a=>{const i=a.target;if(i.matches('div[class*="language-"] > button.copy')){const f=i.parentElement,u=i.nextElementSibling;u&&l(f,u,i)}else if(i.matches('div[class*="language-"] div.copy-icon')){const f=i.parentElement,u=f.parentElement,d=f.nextElementSibling;d&&l(u,d,f)}}),ce(()=>n.value.path,()=>{(!r.value||Ul)&&s()})})};var A1=nt({setup:()=>{L1()}});const P1=()=>{Te("beforeprint",()=>{document.querySelectorAll("details").forEach(e=>{e.open=!0})})},I1=nt({enhance:({app:e})=>{},setup:()=>{P1()}});let R1={};const oc=Symbol(""),O1=()=>he(oc),M1=e=>{e.provide(oc,R1)};var $1={"/":{closeTitle:"关闭",downloadTitle:"下载图片",fullscreenTitle:"切换全屏",zoomTitle:"缩放",arrowPrevTitle:"上一个 (左箭头)",arrowNextTitle:"下一个 (右箭头)"}};const N1=".theme-hope-content :not(a) > img:not([no-view])",H1=$1,D1=800,F1='
',B1=e=>ae(e)?Array.from(document.querySelectorAll(e)):e.map(t=>Array.from(document.querySelectorAll(t))).flat(),sc=e=>new Promise((t,n)=>{e.complete?t({type:"image",element:e,src:e.src,width:e.naturalWidth,height:e.naturalHeight,alt:e.alt,msrc:e.src}):(e.onload=()=>t(sc(e)),e.onerror=r=>n(r))}),V1=()=>{const e=kt(H1),t=xe(),n=pe(),{isSupported:r,toggle:o}=ws(),s=O1();let l;const a=k(()=>t.value.photoSwipe===!1?!1:t.value.photoSwipe||N1),i=u=>{u.on("uiRegister",()=>{r&&u.ui.registerElement({name:"fullscreen",order:7,isButton:!0,html:'',onClick:()=>{o()}}),u.ui.registerElement({name:"download",order:8,isButton:!0,tagName:"a",html:{isCustomSVG:!0,inner:'',outlineID:"pswp__icn-download"},onInit:(d,p)=>{d.setAttribute("download",""),d.setAttribute("target","_blank"),d.setAttribute("rel","noopener"),p.on("change",()=>{d.setAttribute("href",p.currSlide.data.src)})}}),u.ui.registerElement({name:"bulletsIndicator",className:"photo-swipe-bullets-indicator",appendTo:"wrapper",onInit:(d,p)=>{const v=[];let g=-1;for(let _=0;_{p.goTo(v.indexOf(b.target))},v.push(E),d.appendChild(E)}p.on("change",()=>{g>=0&&v[g].classList.remove("active"),v[p.currIndex].classList.add("active"),g=p.currIndex})}})})},f=async()=>{if(a.value)return Promise.all([ie(()=>import("./photoswipe.esm-08_zHRDQ.js"),__vite__mapDeps([])),zt().then(()=>new Promise(u=>setTimeout(u,D1)).then(()=>B1(a.value)))]).then(([{default:u},d])=>{const p=d.map(v=>({html:F1,element:v,msrc:v.src}));d.forEach((v,g)=>{const _=()=>{l=new u({preloaderDelay:0,showHideAnimationType:"zoom",...e.value,...s,dataSource:p,index:g,closeOnVerticalDrag:!0,wheelToZoom:!1}),i(l),l.addFilter("thumbEl",()=>v),l.addFilter("placeholderSrc",()=>v.src),l.init()};v.style.cursor="zoom-in",v.addEventListener("click",()=>{_()}),v.addEventListener("keypress",({key:E})=>{E==="Enter"&&_()})}),d.forEach((v,g)=>{sc(v).then(_=>{p.splice(g,1,_),l==null||l.refreshSlideContent(g)})})})};ge(()=>{Te("wheel",()=>{l==null||l.close()}),ce(()=>n.value.path,f,{immediate:!0})})};var z1=nt({enhance:({app:e})=>{M1(e)},setup:()=>{V1()}});function W1(e){return{all:e=e||new Map,on:function(t,n){var r=e.get(t);r?r.push(n):e.set(t,[n])},off:function(t,n){var r=e.get(t);r&&(n?r.splice(r.indexOf(n)>>>0,1):e.set(t,[]))},emit:function(t,n){var r=e.get(t);r&&r.slice().map(function(o){o(n)}),(r=e.get("*"))&&r.slice().map(function(o){o(t,n)})}}}const lc=Symbol(""),j1=()=>{const e=he(lc);if(!e)throw new Error("usePWAEvent() is called without provider.");return e},K1=async(e,t={},n=!0)=>{const{register:r}=await ie(()=>import("./index-7SG8bi1h.js"),__vite__mapDeps([]));r(e,{ready(o){var s;n&&console.info("[Service Worker]: active"),(s=t.ready)==null||s.call(t,o)},registered(o){var s;n&&console.log("[Service Worker]: registered"),(s=t.registered)==null||s.call(t,o)},cached(o){var s;n&&console.log("[Service Worker]: cached"),(s=t.cached)==null||s.call(t,o)},async updatefound(o){var s;await navigator.serviceWorker.getRegistration()&&(n&&console.log("[Service Worker]: update found"),(s=t.updatefound)==null||s.call(t,o))},updated(o){var s;n&&console.log("[Service Worker]: updated"),(s=t.updated)==null||s.call(t,o)},offline(){var o;n&&console.log("[Service Worker]: offline"),(o=t.offline)==null||o.call(t)},error(o){var s;n&&console.error("[Service Worker]: ",o),(s=t.error)==null||s.call(t,o)}})},G1=async e=>K1(Oe("service-worker.js"),{ready(t){e.emit("ready",t)},registered(t){e.emit("registered",t)},cached(t){e.emit("cached",t)},updatefound(t){e.emit("updatefound",t)},updated(t){const n="service-worker-version",r=Number(localStorage.getItem(n)||0);localStorage.setItem(n,(r+1).toString()),localStorage.removeItem("manifest"),e.emit("updated",t)},offline(){e.emit("offline")},error(t){e.emit("error",t)}}),U1=()=>{const e=W1();Ft(lc,e),ge(async()=>{var n;let t=!1;(n=navigator.serviceWorker)!=null&&n.controller&&navigator.serviceWorker.addEventListener("controllerchange",()=>{t||(t=!0,window.location.reload())}),await G1(e)})};var Z1={"/":{install:"安装",iOSInstall:"点击分享按钮然后点击“添加到主屏幕”",cancel:"取消",close:"关闭",prevImage:"上一张图片",nextImage:"下一张图片",desc:"详情",feature:"主要特色",explain:"该应用可以安装在你的 PC 或移动设备上。这将使该 Web 应用程序外观和行为与其他应用程序相同。它将在出现在应用程序列表中,并可以固定到主屏幕,开始菜单或任务栏。此 Web 应用程序还将能够与其他应用程序和你的操作系统安全地进行交互。",hint:"发现新内容可用",update:"新内容已就绪"}};const ac=()=>c(ve,{name:"update"},()=>c("path",{d:"M949.949 146.25v255.826c0 21.981-13.989 35.97-35.97 35.97H658.154c-13.988 0-25.983-7.992-33.973-21.981-5.997-13.989-4-27.977 7.991-39.97l79.942-77.946c-55.954-51.973-121.918-77.955-199.863-77.955-37.975 0-75.95 8.002-113.924 21.99-37.975 15.985-67.948 37.976-91.934 63.957-25.982 23.987-47.973 53.96-63.957 91.934-29.983 73.955-29.983 153.895 0 227.85 15.984 37.976 37.975 67.947 63.957 91.934 23.986 25.982 53.959 47.973 91.934 63.956 37.974 13.989 75.95 21.991 113.924 21.991 45.967 0 87.942-9.998 127.913-29.982 41.976-17.99 75.951-45.967 101.931-83.943 7.993-4 11.994-5.995 13.989-5.995 5.997 0 9.998 1.994 13.988 5.995l77.958 77.946c3.989 4 5.986 7.993 5.986 11.994 0 1.994-1.996 5.995-3.99 11.994-43.973 51.962-93.941 91.934-151.9 117.914-53.958 25.983-115.92 39.972-185.874 39.972-61.961 0-119.921-11.984-169.89-33.973-57.96-25.985-105.923-57.963-139.896-93.943-35.98-33.972-67.958-81.936-93.94-139.897-45.967-101.93-45.967-237.846 0-339.777 25.982-57.96 57.96-105.923 93.94-139.896 33.973-35.98 81.936-67.958 139.896-93.94 49.968-21.99 107.928-33.974 169.89-33.974 55.963 0 109.923 9.988 161.885 29.973 53.97 21.99 101.933 51.963 139.908 89.938l73.954-73.944c9.987-9.998 23.987-13.988 39.971-8.002 13.988 8.002 21.98 19.995 21.98 33.984z"}));ac.displayName="UpdateIcon";const Y1=Z1,q1=e=>{const t=e.waiting;if(!t)return;const n=new MessageChannel;t.postMessage({type:"SKIP_WAITING"},[n.port2])};var X1=W({name:"SWUpdatePopup",slots:Object,setup(e,{slots:t}){const n=kt(Y1),r=tt(),o=k(()=>!!r.value),s=()=>{r.value&&(q1(r.value),r.value=void 0)};return ge(()=>{j1().on("updated",l=>{l&&(r.value=l)})}),()=>c(Et,{name:"popup"},()=>{var l;return((l=t.default)==null?void 0:l.call(t,{enabled:o.value,reload:s}))||(o.value?c("button",{type:"button",class:"sw-update-popup",tabindex:0,onClick:()=>s()},[n.value.update,c("span",{class:"icon-wrapper"},c(ac))]):null)})}});const J1=nt({setup:()=>{U1()},rootComponents:[X1]}),Q1=()=>c(ve,{name:"heading"},()=>c("path",{d:"M250.4 704.6H64V595.4h202.4l26.2-166.6H94V319.6h214.4L352 64h127.8l-43.6 255.4h211.2L691 64h126.2l-43.6 255.4H960v109.2H756.2l-24.6 166.6H930v109.2H717L672 960H545.8l43.6-255.4H376.6L333 960H206.8l43.6-255.4zm168.4-276L394 595.4h211.2l24.6-166.6h-211z"}));Q1.displayName="HeadingIcon";const ev=()=>c(ve,{name:"heart"},()=>c("path",{d:"M1024 358.156C1024 195.698 892.3 64 729.844 64c-86.362 0-164.03 37.218-217.844 96.49C458.186 101.218 380.518 64 294.156 64 131.698 64 0 195.698 0 358.156 0 444.518 37.218 522.186 96.49 576H96l320 320c32 32 64 64 96 64s64-32 96-64l320-320h-.49c59.272-53.814 96.49-131.482 96.49-217.844zM841.468 481.232 517.49 805.49a2981.962 2981.962 0 0 1-5.49 5.48c-1.96-1.95-3.814-3.802-5.49-5.48L182.532 481.234C147.366 449.306 128 405.596 128 358.156 128 266.538 202.538 192 294.156 192c47.44 0 91.15 19.366 123.076 54.532L512 350.912l94.768-104.378C638.696 211.366 682.404 192 729.844 192 821.462 192 896 266.538 896 358.156c0 47.44-19.368 91.15-54.532 123.076z"}));ev.displayName="HeartIcon";const tv=()=>c(ve,{name:"history"},()=>c("path",{d:"M512 1024a512 512 0 1 1 512-512 512 512 0 0 1-512 512zm0-896a384 384 0 1 0 384 384 384 384 0 0 0-384-384zm192 448H512a64 64 0 0 1-64-64V320a64 64 0 0 1 128 0v128h128a64 64 0 0 1 0 128z"}));tv.displayName="HistoryIcon";const nv=()=>c(ve,{name:"title"},()=>c("path",{d:"M512 256c70.656 0 134.656 28.672 180.992 75.008A254.933 254.933 0 0 1 768 512c0 83.968-41.024 157.888-103.488 204.48C688.96 748.736 704 788.48 704 832c0 105.984-86.016 192-192 192-106.048 0-192-86.016-192-192h128a64 64 0 1 0 128 0 64 64 0 0 0-64-64 255.19 255.19 0 0 1-181.056-75.008A255.403 255.403 0 0 1 256 512c0-83.968 41.024-157.824 103.488-204.544C335.04 275.264 320 235.584 320 192A192 192 0 0 1 512 0c105.984 0 192 85.952 192 192H576a64.021 64.021 0 0 0-128 0c0 35.328 28.672 64 64 64zM384 512c0 70.656 57.344 128 128 128s128-57.344 128-128-57.344-128-128-128-128 57.344-128 128z"}));nv.displayName="TitleIcon";const Cs=()=>c(ve,{name:"search"},()=>c("path",{d:"M192 480a256 256 0 1 1 512 0 256 256 0 0 1-512 0m631.776 362.496-143.2-143.168A318.464 318.464 0 0 0 768 480c0-176.736-143.264-320-320-320S128 303.264 128 480s143.264 320 320 320a318.016 318.016 0 0 0 184.16-58.592l146.336 146.368c12.512 12.48 32.768 12.48 45.28 0 12.48-12.512 12.48-32.768 0-45.28"}));Cs.displayName="SearchIcon";const ic=()=>c("svg",{xmlns:"http://www.w3.org/2000/svg",width:"32",height:"32",preserveAspectRatio:"xMidYMid",viewBox:"0 0 100 100"},[c("circle",{cx:"28",cy:"75",r:"11",fill:"currentColor"},c("animate",{attributeName:"fill-opacity",begin:"0s",dur:"1s",keyTimes:"0;0.2;1",repeatCount:"indefinite",values:"0;1;1"})),c("path",{fill:"none",stroke:"#88baf0","stroke-width":"10",d:"M28 47a28 28 0 0 1 28 28"},c("animate",{attributeName:"stroke-opacity",begin:"0.1s",dur:"1s",keyTimes:"0;0.2;1",repeatCount:"indefinite",values:"0;1;1"})),c("path",{fill:"none",stroke:"#88baf0","stroke-width":"10",d:"M28 25a50 50 0 0 1 50 50"},c("animate",{attributeName:"stroke-opacity",begin:"0.2s",dur:"1s",keyTimes:"0;0.2;1",repeatCount:"indefinite",values:"0;1;1"}))]);ic.displayName="LoadingIcon";const cc=({hint:e})=>c("div",{class:"search-pro-result-wrapper loading"},[c(ic),e]);cc.displayName="SearchLoading";const rv='';var ov={0:{"/":{0:"分",1:"类",2:":",3:" ",4:"$",5:"c",6:"o",7:"n",8:"t",9:"e",10:"n",11:"t"}},1:{"/":{0:"标",1:"签",2:":",3:" ",4:"$",5:"c",6:"o",7:"n",8:"t",9:"e",10:"n",11:"t"}}},sv={"/":{cancel:"取消",placeholder:"搜索",search:"搜索",searching:"搜索中",defaultTitle:"文档",select:"选择",navigate:"切换",autocomplete:"自动补全",exit:"关闭",queryHistory:"搜索历史",resultHistory:"历史结果",emptyHistory:"无搜索历史",emptyResult:"没有找到结果",loading:"正在加载搜索索引..."}},lv={searchDelay:150,suggestDelay:0,queryHistoryCount:5,resultHistoryCount:5,hotKeys:[{key:"k",ctrl:!0},{key:"/",ctrl:!0}],worker:"search-pro.worker.js"};const Ss=lv,rm=ov,uc=Ss.hotKeys,Ts=sv;new URL("data:application/javascript;base64,aW1wb3J0e3NlYXJjaCBhcyBDLGdldFN0b3JlZEZpZWxkcyBhcyBSLGF1dG9TdWdnZXN0IGFzIFQsbG9hZEpTT05JbmRleCBhcyB3fWZyb20ic2xpbXNlYXJjaCI7aW1wb3J0ICQgZnJvbSJAdGVtcC9zZWFyY2gtcHJvL2luZGV4IjtpbXBvcnR7ZW50cmllcyBhcyBFfWZyb20idnVlcHJlc3Mtc2hhcmVkL2NsaWVudCI7Y29uc3QgeD0obCxlKT0+e2NvbnN0IG49bC50b0xvd2VyQ2FzZSgpLHM9ZS50b0xvd2VyQ2FzZSgpLG89W107bGV0IHQ9MCxyPTA7Y29uc3QgaT0oYyxnPSExKT0+e2xldCBwPSIiO3I9PT0wP3A9Yy5sZW5ndGg+MjA/YOKApiAke2Muc2xpY2UoLTIwKX1gOmM6Zz9wPWMubGVuZ3RoK3I+MTAwP2Ake2Muc2xpY2UoMCwxMDAtcil94oCmIGA6YzpwPWMubGVuZ3RoPjIwP2Ake2Muc2xpY2UoMCwyMCl9IOKApiAke2Muc2xpY2UoLTIwKX1gOmMscCYmby5wdXNoKHApLHIrPXAubGVuZ3RoLGd8fChvLnB1c2goWyJtYXJrIixlXSkscis9ZS5sZW5ndGgscj49MTAwJiZvLnB1c2goIiDigKYiKSl9O2xldCBoPW4uaW5kZXhPZihzLHQpO2lmKGg9PT0tMSlyZXR1cm4gbnVsbDtmb3IoO2g+PTA7KXtjb25zdCBjPWgrcy5sZW5ndGg7aWYoaShsLnNsaWNlKHQsaCkpLHQ9YyxyPjEwMClicmVhaztoPW4uaW5kZXhPZihzLHQpfXJldHVybiByPDEwMCYmaShsLnNsaWNlKHQpLCEwKSxvfSxTPS9bXHU0ZTAwLVx1OWZhNV0vZyxNPShsPXt9KT0+KHtmdXp6eTouMixwcmVmaXg6ITAscHJvY2Vzc1Rlcm06ZT0+e2NvbnN0IG49ZS5tYXRjaChTKXx8W10scz1lLnJlcGxhY2UoUywiIikudG9Mb3dlckNhc2UoKTtyZXR1cm4gcz9bcywuLi5uXTpbLi4ubl19LC4uLmx9KSxGPShsLGUpPT5lLmNvbnRlbnRzLnJlZHVjZSgobixbLHNdKT0+bitzLDApLWwuY29udGVudHMucmVkdWNlKChuLFssc10pPT5uK3MsMCksXz0obCxlKT0+TWF0aC5tYXgoLi4uZS5jb250ZW50cy5tYXAoKFssbl0pPT5uKSktTWF0aC5tYXgoLi4ubC5jb250ZW50cy5tYXAoKFssbl0pPT5uKSksTz0obCxlLG49e30pPT57Y29uc3Qgcz17fTtyZXR1cm4gQyhlLGwsTSh7Ym9vc3Q6e2g6Mix0OjEsYzo0fSwuLi5ufSkpLmZvckVhY2gobz0+e2NvbnN0e2lkOnQsdGVybXM6cixzY29yZTppfT1vLGg9dC5pbmNsdWRlcygiQCIpLGM9dC5pbmNsdWRlcygiIyIpLFtnLHBdPXQuc3BsaXQoL1sjQF0vKSxtPXIuc29ydCgodSxhKT0+dS5sZW5ndGgtYS5sZW5ndGgpLmZpbHRlcigodSxhKT0+ci5zbGljZShhKzEpLmV2ZXJ5KGY9PiFmLmluY2x1ZGVzKHUpKSkse2NvbnRlbnRzOmR9PXNbZ10/Pz17dGl0bGU6IiIsY29udGVudHM6W119O2lmKGgpZC5wdXNoKFt7dHlwZToiY3VzdG9tRmllbGQiLGtleTpnLGluZGV4OnAsZGlzcGxheTptLm1hcCh1PT5vLmMubWFwKGE9PngoYSx1KSkpLmZsYXQoKS5maWx0ZXIodT0+dSE9PW51bGwpfSxpXSk7ZWxzZXtjb25zdCB1PW0ubWFwKGE9Pngoby5oLGEpKS5maWx0ZXIoYT0+YSE9PW51bGwpO2lmKHUubGVuZ3RoJiZkLnB1c2goW3t0eXBlOmM/ImhlYWRpbmciOiJ0aXRsZSIsa2V5OmcsLi4uYyYme2FuY2hvcjpwfSxkaXNwbGF5OnV9LGldKSwidCJpbiBvKWZvcihjb25zdCBhIG9mIG8udCl7Y29uc3QgZj1tLm1hcCh5PT54KGEseSkpLmZpbHRlcih5PT55IT09bnVsbCk7Zi5sZW5ndGgmJmQucHVzaChbe3R5cGU6InRleHQiLGtleTpnLC4uLmMmJnthbmNob3I6cH0sZGlzcGxheTpmfSxpXSl9fX0pLEUocykuc29ydCgoWyxvXSxbLHRdKT0+U0VBUkNIX1BST19TT1JUX1NUUkFURUdZPT09InRvdGFsIj9GKG8sdCk6XyhvLHQpKS5tYXAoKFtvLHt0aXRsZTp0LGNvbnRlbnRzOnJ9XSk9PntpZighdCl7Y29uc3QgaT1SKGUsbyk7aSYmKHQ9aS5oKX1yZXR1cm57dGl0bGU6dCxjb250ZW50czpyLm1hcCgoW2ldKT0+aSl9fSl9LGs9KGwsZSxuPXt9KT0+VChlLGwsTShuKSkubWFwKCh7c3VnZ2VzdGlvbjpzfSk9PnMpO3NlbGYub25tZXNzYWdlPWFzeW5jKHtkYXRhOnt0eXBlOmw9ImFsbCIscXVlcnk6ZSxsb2NhbGU6bixvcHRpb25zOnN9fSk9Pntjb25zdHtkZWZhdWx0Om99PWF3YWl0ICRbbl0oKSx0PXcobyx7ZmllbGRzOlsiaCIsInQiLCJjIl0sc3RvcmVGaWVsZHM6WyJoIiwidCIsImMiXX0pO2w9PT0ic3VnZ2VzdCI/c2VsZi5wb3N0TWVzc2FnZShrKGUsdCxzKSk6bD09PSJzZWFyY2giP3NlbGYucG9zdE1lc3NhZ2UoTyhlLHQscykpOnNlbGYucG9zdE1lc3NhZ2Uoe3N1Z2dlc3Rpb25zOmsoZSx0LHMpLHJlc3VsdHM6TyhlLHQscyl9KX07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcAo=",import.meta.url);let av={};const fc=Symbol(""),iv=()=>he(fc),cv=e=>{e.provide(fc,av)},uv=()=>{const e=new Worker(`/Minecolonies-Chinese-Wiki/${Ss.worker}`,{}),t=[];return e.addEventListener("message",({data:n})=>{const{resolve:r}=t.shift();r(n)}),{search:n=>new Promise((r,o)=>{e.postMessage(n),t.push({resolve:r,reject:o})}),terminate:()=>{e.terminate(),t.forEach(({reject:n})=>n(new Error("Worker has been terminated.")))}}},fv=(e,t=!1)=>{const n=X(0),r=k(()=>e.value[n.value]),o=()=>{n.value=n.value>0?n.value-1:e.value.length-1},s=()=>{n.value=n.value{t||(n.value=0)}),{index:n,item:r,prev:o,next:s}},ks=Symbol(""),dv=()=>{const e=X(!1);Ft(ks,e)},pv=e=>e instanceof Element?document.activeElement===e&&(["TEXTAREA","SELECT","INPUT"].includes(e.tagName)||e.hasAttribute("contenteditable")):!1,hv=e=>uc.some(t=>{const{key:n,ctrl:r=!1,shift:o=!1,alt:s=!1,meta:l=!1}=t;return n===e.key&&r===e.ctrlKey&&o===e.shiftKey&&s===e.altKey&&l===e.metaKey}),vv='',mv='',gv='',bv='',yv=e=>{const t=X([]);{const n=iv(),r=nn();ge(()=>{const o=xh(a=>{a?s({type:"suggest",query:a,locale:r.value,options:n}).then(i=>{t.value=i.length?Jt(i[0],a)&&!i[0].slice(a.length).includes(" ")?i:[a,...i]:[]}).catch(i=>{console.error(i)}):t.value=[]},Ss.suggestDelay),{search:s,terminate:l}=uv();ce([e,r],()=>o(e.value),{immediate:!0}),Cn(()=>{l()})})}return{suggestions:t}},go=uc[0];var wv=W({name:"SearchBox",setup(){const e=kt(Ts),t=he(ks),n=X(!1),r=k(()=>go?[(n.value?["⌃","⇧","⌥","⌘"]:["Ctrl","Shift","Alt","Win"]).filter((o,s)=>go[["ctrl","shift","alt","meta"][s]]),go.key.toUpperCase()]:null);return Te("keydown",o=>{!t.value&&hv(o)&&!pv(o.target)&&(o.preventDefault(),t.value=!0)}),ge(()=>{const{userAgent:o}=navigator;n.value=th(o)||eh(o)||Qp(o)}),()=>[c("button",{type:"button",class:"search-pro-button","aria-label":e.value.search,onClick:()=>{t.value=!0}},[c(Cs),c("div",{class:"search-pro-placeholder"},e.value.search),r.value?c("div",{class:"search-pro-key-hints"},r.value.map(o=>c("kbd",{class:"search-pro-key"},o))):null])]}});const _v=Me({loader:()=>ie(()=>import("./SearchResult-IzeXNURa.js"),__vite__mapDeps([])),loadingComponent:()=>{const e=kt(Ts);return c(cc,{hint:e.value.loading})}});var Ev=W({name:"SearchModal",setup(){const e=he(ks),t=Gr(),n=ji(),r=kt(Ts),o=X(""),{suggestions:s}=yv(o),l=X(!1),{index:a,prev:i,next:f}=fv(s),u=tt(),d=tt(),p=(v=a.value)=>{o.value=s.value[v],l.value=!1};return Te("keydown",v=>{l.value?v.key==="ArrowUp"?i():v.key==="ArrowDown"?f():v.key==="Enter"?p():v.key==="Escape"&&(l.value=!1):v.key==="Escape"&&(e.value=!1)}),ge(()=>{const v=_s(document.body);ce(e,async g=>{var _;v.value=g,g&&(await zt(),(_=u.value)==null||_.focus())}),Oh(d,()=>{l.value=!1}),Cn(()=>{v.value=!1})}),()=>e.value?c("div",{class:"search-pro-modal-wrapper"},[c("div",{class:"search-pro-mask",onClick:()=>{e.value=!1,o.value=""}}),c("div",{class:"search-pro-modal"},[c("div",{class:"search-pro-box"},[c("form",[c("label",{for:"search-pro","aria-label":r.value.search},c(Cs)),c("input",{ref:u,type:"search",class:"search-pro-input",id:"search-pro",placeholder:r.value.placeholder,spellcheck:"false",autocapitalize:"off",autocomplete:"off",autocorrect:"off",name:`${t.value.title}-search`,value:o.value,"aria-controls":"search-pro-results",onKeydown:v=>{const{key:g}=v;s.value.length&&(g==="Tab"?(p(),v.preventDefault()):(g==="ArrowDown"||g==="ArrowUp"||g==="Escape")&&v.preventDefault())},onInput:({target:v})=>{o.value=v.value,l.value=!0,a.value=0}}),o.value?c("button",{type:"reset",class:"search-pro-clear-button",innerHTML:rv,onClick:()=>{o.value=""}}):null,l.value&&s.value.length?c("ul",{class:"search-pro-suggestions",ref:d},s.value.map((v,g)=>c("li",{class:["search-pro-suggestion",{active:g===a.value}],onClick:()=>{p(g)}},[c("kbd",{class:"search-pro-auto-complete",title:`Tab ${r.value.autocomplete}`},"Tab"),v]))):null]),c("button",{type:"button",class:"search-pro-close-button",onClick:()=>{e.value=!1,o.value=""}},r.value.cancel)]),c(_v,{query:o.value,isFocusing:!l.value,onClose:()=>{e.value=!1},onUpdateQuery:v=>{o.value=v}}),n.value?null:c("div",{class:"search-pro-hints"},[c("span",{class:"search-pro-hint"},[c("kbd",{innerHTML:vv}),r.value.select]),c("span",{class:"search-pro-hint"},[c("kbd",{innerHTML:gv}),c("kbd",{innerHTML:mv}),r.value.navigate]),c("span",{class:"search-pro-hint"},[c("kbd",{innerHTML:bv}),r.value.exit])])])]):null}}),Cv=nt({enhance({app:e}){cv(e),e.component("SearchBox",wv)},setup(){dv()},rootComponents:[Ev]}),Zl={"/":{word:"约 $word 字",less1Minute:"小于 1 分钟",time:"大约 $time 分钟"}};const dc=()=>{const e=pe();return k(()=>e.value.readingTime??null)},Ho=typeof Zl>"u"?null:Zl,Sv=(e,t)=>{const{minutes:n,words:r}=e,{less1Minute:o,word:s,time:l}=t;return{time:n<1?o:l.replace("$time",Math.round(n).toString()),words:s.replace("$word",r.toString())}},Yl={words:"",time:""},Tv=()=>Ho?kt(Ho):k(()=>null),kv=()=>{if(typeof Ho>"u")return k(()=>Yl);const e=dc(),t=Tv();return k(()=>e.value&&t.value?Sv(e.value,t.value):Yl)},xn=()=>nc(),me=()=>y1(),or=()=>k(()=>!!xn().value.pure);var bo=W({name:"EmptyComponent",setup:()=>()=>null});const xv="719px",Lv="1440px",Av="false",xs={mobileBreakPoint:xv,pcBreakPoint:Lv,enableThemeColor:Av},Ls={"/Installation/":["gdlauncher","hmcl","java"],"/Tutorials/":["worldgencolonies","getting-started","schematics","datapacks"],"/Buildings/":["townhall"]},pc=e=>{const{icon:t="",color:n,size:r}=e,o={};return n&&(o.color=n),r&&(o.height=Number.isNaN(Number(r))?r:`${r}px`),Tn(t)?c("img",{class:"icon",src:t,"no-view":"",style:o}):qr(t)?c("img",{class:"icon",src:Oe(t),"aria-hidden":"","no-view":"",style:o}):c(Je("FontIcon"),e)};pc.displayName="HopeIcon";var Ve=pc;const Pv=()=>{const e=rt(),t=Tt();return n=>{if(n)if(qr(n))t.path!==n&&e.push(n);else if(li(n))window&&window.open(n);else{const r=t.path.slice(0,t.path.lastIndexOf("/"));e.push(`${r}/${encodeURI(n)}`)}}},hc=()=>{const e=me(),t=xe();return k(()=>{const{author:n}=t.value;return n?$l(n):n===!1?[]:$l(e.value.author,!1)})},Iv=()=>{const e=xe();return k(()=>fh(e.value.category).map(t=>({name:t,path:""})))},Rv=()=>{const e=xe();return k(()=>dh(e.value.tag).map(t=>({name:t,path:""})))},Ov=()=>{const e=xe(),t=pe();return k(()=>{const n=nh(e.value.date);if(n)return n;const{createdTime:r}=t.value.git||{};return r?new Date(r):null})},Mv=()=>{const e=me(),t=pe(),n=xe(),r=hc(),o=Iv(),s=Rv(),l=Ov(),a=dc(),i=kv(),f=k(()=>({author:r.value,category:o.value,date:l.value,localizedDate:t.value.localizedDate,tag:s.value,isOriginal:n.value.isOriginal||!1,readingTime:a.value,readingTimeLocale:i.value,pageview:"pageview"in n.value?n.value.pageview:!0})),u=k(()=>"pageInfo"in n.value?n.value.pageInfo:"pageInfo"in e.value?e.value.pageInfo:null);return{info:f,items:u}},{mobileBreakPoint:$v,pcBreakPoint:Nv}=xs,ql=e=>e.endsWith("px")?Number(e.slice(0,-2)):null,Xr=()=>{const e=X(!1),t=X(!1),n=()=>{e.value=window.innerWidth<=(ql($v)??719),t.value=window.innerWidth>=(ql(Nv)??1440)};return ge(()=>{n(),Te("resize",n,!1),Te("orientationchange",n,!1)}),{isMobile:e,isPC:t}},vc=Symbol(""),sr=()=>{const e=he(vc);if(!e)throw new Error("useDarkmode() is called without provider.");return e},Hv=e=>{const t=xn(),n=Vh(),r=Yi("vuepress-theme-hope-scheme","auto"),o=k(()=>t.value.darkmode||"switch"),s=k(()=>{const a=o.value;return a==="disable"?!1:a==="enable"?!0:a==="auto"?n.value:a==="toggle"?r.value==="dark":r.value==="dark"||r.value==="auto"&&n.value}),l=k(()=>{const a=o.value;return a==="switch"||a==="toggle"});e.provide(vc,{canToggle:l,config:o,isDarkmode:s,status:r}),Object.defineProperties(e.config.globalProperties,{$isDarkmode:{get:()=>s.value}})},Dv=()=>{const{isDarkmode:e}=sr(),t=(n=e.value)=>document.documentElement.setAttribute("data-theme",n?"dark":"light");ge(()=>{ce(e,t,{immediate:!0})})};var Fe=W({name:"AutoLink",inheritAttrs:!1,props:{config:{type:Object,required:!0},exact:Boolean,noExternalLinkIcon:Boolean},emits:["focusout"],slots:Object,setup(e,{attrs:t,emit:n,slots:r}){const o=Tt(),s=vi(),l=Vr(e,"config"),a=k(()=>Tn(l.value.link)),i=k(()=>!a.value&&li(l.value.link)),f=k(()=>l.value.target||(a.value?"_blank":void 0)),u=k(()=>f.value==="_blank"),d=k(()=>!a.value&&!i.value&&!u.value),p=k(()=>l.value.rel||(u.value?"noopener noreferrer":void 0)),v=k(()=>l.value.ariaLabel||l.value.text),g=k(()=>{if(e.exact)return!1;const E=tr(s.value.locales);return E.length?E.every(b=>b!==l.value.link):l.value.link!=="/"}),_=k(()=>d.value?l.value.activeMatch?new RegExp(l.value.activeMatch).test(o.path):g.value?Jt(o.path,l.value.link):o.path===l.value.link:!1);return()=>{const{before:E,after:b,default:L}=r,{text:y,icon:S,link:$}=l.value;return d.value?c(qe,{to:$,"aria-label":v.value,...t,class:["nav-link",{active:_.value},t.class],onFocusout:()=>n("focusout")},()=>L?L():[E?E():c(Ve,{icon:S}),y,b==null?void 0:b()]):c("a",{href:$,rel:p.value,target:f.value,"aria-label":v.value,...t,class:["nav-link",t.class],onFocusout:()=>n("focusout")},L?L():[E?E():c(Ve,{icon:S}),y,e.noExternalLinkIcon?null:c(ec),b==null?void 0:b()])}}});const _n=(e,t,n=!1)=>"activeMatch"in t?new RegExp(t.activeMatch).test(e.path):Hi(e,t.link)?!0:t.children&&!n?t.children.some(r=>_n(e,r)):!1,mc=(e,t)=>t.type==="group"?t.children.some(n=>n.type==="group"?mc(e,n):n.type==="page"&&_n(e,n,!0))||"prefix"in t&&Hi(e,t.prefix):!1,gc=(e,t)=>ae(e.link)?c(Fe,{...t,config:e}):c("p",t,[c(Ve,{icon:e.icon}),e.text]),bc=e=>{const t=Tt();return e?c("ul",{class:"vp-sidebar-sub-headers"},e.map(n=>c("li",{class:"vp-sidebar-sub-header"},[gc(n,{class:["vp-sidebar-link","vp-heading",{active:_n(t,n,!0)}]}),bc(n.children)]))):null};var bt=(e=>(e.type="y",e.title="t",e.shortTitle="s",e.icon="i",e.author="a",e.date="d",e.localizedDate="l",e.category="c",e.tag="g",e.isEncrypted="n",e.isOriginal="o",e.readingTime="r",e.excerpt="e",e.sticky="u",e.cover="v",e.index="I",e.order="O",e))(bt||{}),Fv=(e=>(e.article="a",e.home="h",e.slide="s",e.page="p",e))(Fv||{});const Zt=(e="",t="")=>qr(t)?t:`${si(e)}${t}`,hn=(e,t,n=!1)=>{let r=Nr(e,Mi(encodeURI(t)));r.name==="404"&&(r=Nr(e,t));const{fullPath:o,meta:s,name:l}=r;return{text:!n&&s[bt.shortTitle]?s[bt.shortTitle]:s[bt.title]||t,link:l==="404"?t:o,...s[bt.icon]?{icon:s[bt.icon]}:{}}},Bv=(e,t)=>{const n=pe();return{type:"heading",text:e.title,link:`${n.value.path}#${e.slug}`,children:As(e.children,t)}},As=(e,t)=>t>0?e.map(n=>Bv(n,t-1)):[],yc=e=>{const t=pe();return As(t.value.headers,e)},Do=(e,t,n="")=>{const r=rt(),o=pe(),s=(l,a=n)=>{var f;const i=ae(l)?hn(r,Zt(a,l)):l.link?{...l,...Mr(l.link)?{}:{link:hn(r,Zt(a,l.link)).link}}:l;if("children"in i){const u=Zt(a,i.prefix),d=i.children==="structure"?Ls[u]:i.children;return{type:"group",...i,prefix:u,children:d.map(p=>s(p,u))}}return{type:"page",...i,children:i.link===o.value.path?As(((f=o.value.headers[0])==null?void 0:f.level)===1?o.value.headers[0].children:o.value.headers,t):[]}};return e.map(l=>s(l))},Vv=(e,t)=>{const n=pe(),r=tr(e).sort((o,s)=>s.length-o.length);for(const o of r)if(Jt(decodeURI(n.value.path),o)){const s=e[o];return s?Do(s==="structure"?Ls[o]:s==="heading"?yc(t):s,t,o):[]}return console.warn(`${n.value.path} is missing sidebar config.`),[]},zv=(e,t)=>{const n=nn();return e===!1?[]:e==="heading"?yc(t):e==="structure"?Do(Ls[n.value],t,n.value):q(e)?Do(e,t):fs(e)?Vv(e,t):[]},wc=Symbol(""),Wv=()=>{const e=xe(),t=me(),n=pe(),r=k(()=>e.value.home?!1:e.value.sidebar??t.value.sidebar??"structure"),o=k(()=>e.value.headerDepth??t.value.headerDepth??2),s=gs(()=>[r.value,o.value,n.value.path,null],()=>zv(r.value,o.value));Ft(wc,s)},Ps=()=>{const e=he(wc);if(!e)throw new Error("useSidebarItems() is called without provider.");return e};var jv=W({name:"PageFooter",setup(){const e=xn(),t=me(),n=xe(),r=hc(),o=k(()=>{const{copyright:f,footer:u}=n.value;return u!==!1&&!!(f||u||t.value.displayFooter)}),s=k(()=>{const{footer:f}=n.value;return f===!1?!1:ae(f)?f:t.value.footer||""}),l=k(()=>r.value.map(({name:f})=>f).join(", ")),a=f=>`Copyright © ${new Date().getFullYear()} ${l.value} ${f?`${f} Licensed`:""}`,i=k(()=>{const{copyright:f,license:u=""}=n.value,{license:d}=e.value,{copyright:p}=t.value;return f??(u?a(u):ae(p)?p:l.value||d?a(d):!1)});return()=>o.value?c("footer",{class:"vp-footer-wrapper"},[s.value?c("div",{class:"vp-footer",innerHTML:s.value}):null,i.value?c("div",{class:"vp-copyright",innerHTML:i.value}):null]):null}}),Kv=W({name:"NavbarDropdownLink",props:{config:{type:Object,required:!0}},slots:Object,setup(e,{slots:t}){const n=pe(),r=Vr(e,"config"),o=k(()=>r.value.ariaLabel||r.value.text),s=X(!1);ce(()=>n.value.path,()=>{s.value=!1});const l=a=>{a.detail===0&&(s.value=!s.value)};return()=>{var a;return c("div",{class:["dropdown-wrapper",{open:s.value}]},[c("button",{type:"button",class:"dropdown-title","aria-label":o.value,onClick:l},[((a=t.title)==null?void 0:a.call(t))||c("span",{class:"title"},[c(Ve,{icon:r.value.icon}),e.config.text]),c("span",{class:"arrow"}),c("ul",{class:"nav-dropdown"},r.value.children.map((i,f)=>{const u=f===r.value.children.length-1;return c("li",{class:"dropdown-item"},"children"in i?[c("h4",{class:"dropdown-subtitle"},i.link?c(Fe,{config:i,onFocusout:()=>{i.children.length===0&&u&&(s.value=!1)}}):c("span",i.text)),c("ul",{class:"dropdown-subitem-wrapper"},i.children.map((d,p)=>c("li",{class:"dropdown-subitem"},c(Fe,{config:d,onFocusout:()=>{p===i.children.length-1&&u&&(s.value=!1)}}))))]:c(Fe,{config:i,onFocusout:()=>{u&&(s.value=!1)}}))}))])])}}});const _c=(e,t,n="")=>ae(t)?hn(e,Zt(n,t)):"children"in t?{...t,...t.link&&!Mr(t.link)?hn(e,Zt(n,t.link)):{},children:t.children.map(r=>_c(e,r,Zt(n,t.prefix)))}:{...t,link:Mr(t.link)?t.link:hn(e,Zt(n,t.link)).link},Ec=()=>{const e=me(),t=rt(),n=()=>(e.value.navbar||[]).map(r=>_c(t,r));return gs(()=>e.value.navbar,()=>n())},Gv=()=>{const e=me(),t=k(()=>e.value.repo||null),n=k(()=>t.value?hh(t.value):null),r=k(()=>t.value?Di(t.value):null),o=k(()=>n.value?e.value.repoLabel??(r.value===null?"Source":r.value):null);return k(()=>!n.value||!o.value||e.value.repoDisplay===!1?null:{type:r.value||"Source",label:o.value,link:n.value})};var Uv=W({name:"NavScreenDropdown",props:{config:{type:Object,required:!0}},setup(e){const t=pe(),n=Vr(e,"config"),r=k(()=>n.value.ariaLabel||n.value.text),o=X(!1);ce(()=>t.value.path,()=>{o.value=!1});const s=(l,a)=>a[a.length-1]===l;return()=>[c("button",{type:"button",class:["nav-screen-dropdown-title",{active:o.value}],"aria-label":r.value,onClick:()=>{o.value=!o.value}},[c("span",{class:"title"},[c(Ve,{icon:n.value.icon}),e.config.text]),c("span",{class:["arrow",o.value?"down":"end"]})]),c("ul",{class:["nav-screen-dropdown",{hide:!o.value}]},n.value.children.map(l=>c("li",{class:"dropdown-item"},"children"in l?[c("h4",{class:"dropdown-subtitle"},l.link?c(Fe,{config:l,onFocusout:()=>{s(l,n.value.children)&&l.children.length===0&&(o.value=!1)}}):c("span",l.text)),c("ul",{class:"dropdown-subitem-wrapper"},l.children.map(a=>c("li",{class:"dropdown-subitem"},c(Fe,{config:a,onFocusout:()=>{s(a,l.children)&&s(l,n.value.children)&&(o.value=!1)}}))))]:c(Fe,{config:l,onFocusout:()=>{s(l,n.value.children)&&(o.value=!1)}}))))]}}),Zv=W({name:"NavScreenLinks",setup(){const e=Ec();return()=>e.value.length?c("nav",{class:"nav-screen-links"},e.value.map(t=>c("div",{class:"navbar-links-item"},"children"in t?c(Uv,{config:t}):c(Fe,{config:t})))):null}});const Cc=()=>c(ve,{name:"dark"},()=>c("path",{d:"M524.8 938.667h-4.267a439.893 439.893 0 0 1-313.173-134.4 446.293 446.293 0 0 1-11.093-597.334A432.213 432.213 0 0 1 366.933 90.027a42.667 42.667 0 0 1 45.227 9.386 42.667 42.667 0 0 1 10.24 42.667 358.4 358.4 0 0 0 82.773 375.893 361.387 361.387 0 0 0 376.747 82.774 42.667 42.667 0 0 1 54.187 55.04 433.493 433.493 0 0 1-99.84 154.88 438.613 438.613 0 0 1-311.467 128z"}));Cc.displayName="DarkIcon";const Sc=()=>c(ve,{name:"light"},()=>c("path",{d:"M952 552h-80a40 40 0 0 1 0-80h80a40 40 0 0 1 0 80zM801.88 280.08a41 41 0 0 1-57.96-57.96l57.96-58a41.04 41.04 0 0 1 58 58l-58 57.96zM512 752a240 240 0 1 1 0-480 240 240 0 0 1 0 480zm0-560a40 40 0 0 1-40-40V72a40 40 0 0 1 80 0v80a40 40 0 0 1-40 40zm-289.88 88.08-58-57.96a41.04 41.04 0 0 1 58-58l57.96 58a41 41 0 0 1-57.96 57.96zM192 512a40 40 0 0 1-40 40H72a40 40 0 0 1 0-80h80a40 40 0 0 1 40 40zm30.12 231.92a41 41 0 0 1 57.96 57.96l-57.96 58a41.04 41.04 0 0 1-58-58l58-57.96zM512 832a40 40 0 0 1 40 40v80a40 40 0 0 1-80 0v-80a40 40 0 0 1 40-40zm289.88-88.08 58 57.96a41.04 41.04 0 0 1-58 58l-57.96-58a41 41 0 0 1 57.96-57.96z"}));Sc.displayName="LightIcon";const Tc=()=>c(ve,{name:"auto"},()=>c("path",{d:"M512 992C246.92 992 32 777.08 32 512S246.92 32 512 32s480 214.92 480 480-214.92 480-480 480zm0-840c-198.78 0-360 161.22-360 360 0 198.84 161.22 360 360 360s360-161.16 360-360c0-198.78-161.22-360-360-360zm0 660V212c165.72 0 300 134.34 300 300 0 165.72-134.28 300-300 300z"}));Tc.displayName="AutoIcon";const kc=()=>c(ve,{name:"enter-fullscreen"},()=>c("path",{d:"M762.773 90.24h-497.28c-96.106 0-174.4 78.293-174.4 174.4v497.28c0 96.107 78.294 174.4 174.4 174.4h497.28c96.107 0 175.04-78.293 174.4-174.4V264.64c0-96.213-78.186-174.4-174.4-174.4zm-387.2 761.173H215.04c-21.867 0-40.427-17.92-41.067-41.066V649.92c0-22.507 17.92-40.427 40.427-40.427 11.307 0 21.227 4.694 28.48 11.947 7.253 7.253 11.947 17.92 11.947 28.48v62.293l145.28-145.28c15.893-15.893 41.813-15.893 57.706 0 15.894 15.894 15.894 41.814 0 57.707l-145.28 145.28h62.294c22.506 0 40.426 17.92 40.426 40.427s-17.173 41.066-39.68 41.066zM650.24 165.76h160.427c21.866 0 40.426 17.92 41.066 41.067v160.426c0 22.507-17.92 40.427-40.426 40.427-11.307 0-21.227-4.693-28.48-11.947-7.254-7.253-11.947-17.92-11.947-28.48v-62.186L625.6 450.347c-15.893 15.893-41.813 15.893-57.707 0-15.893-15.894-15.893-41.814 0-57.707l145.28-145.28H650.88c-22.507 0-40.427-17.92-40.427-40.427s17.174-41.173 39.787-41.173z"}));kc.displayName="EnterFullScreenIcon";const xc=()=>c(ve,{name:"cancel-fullscreen"},()=>c("path",{d:"M778.468 78.62H247.922c-102.514 0-186.027 83.513-186.027 186.027V795.08c0 102.514 83.513 186.027 186.027 186.027h530.432c102.514 0 186.71-83.513 186.026-186.027V264.647C964.494 162.02 880.981 78.62 778.468 78.62zM250.88 574.35h171.122c23.324 0 43.122 19.115 43.804 43.805v171.121c0 24.008-19.114 43.122-43.122 43.122-12.06 0-22.641-5.006-30.378-12.743s-12.743-19.115-12.743-30.379V722.83L224.597 877.91c-16.953 16.952-44.6 16.952-61.553 0-16.953-16.954-16.953-44.602 0-61.554L318.009 661.39h-66.446c-24.007 0-43.122-19.114-43.122-43.122 0-24.12 18.432-43.918 42.439-43.918zm521.899-98.873H601.657c-23.325 0-43.122-19.114-43.805-43.804V260.55c0-24.007 19.115-43.122 43.122-43.122 12.06 0 22.642 5.007 30.379 12.743s12.743 19.115 12.743 30.38v66.445l154.965-154.965c16.953-16.953 44.601-16.953 61.554 0 16.953 16.953 16.953 44.6 0 61.554L705.536 388.55h66.446c24.007 0 43.122 19.115 43.122 43.122.114 24.007-18.318 43.804-42.325 43.804z"}));xc.displayName="CancelFullScreenIcon";const Lc=()=>c(ve,{name:"outlook"},()=>[c("path",{d:"M224 800c0 9.6 3.2 44.8 6.4 54.4 6.4 48-48 76.8-48 76.8s80 41.6 147.2 0 134.4-134.4 38.4-195.2c-22.4-12.8-41.6-19.2-57.6-19.2C259.2 716.8 227.2 761.6 224 800zM560 675.2l-32 51.2c-51.2 51.2-83.2 32-83.2 32 25.6 67.2 0 112-12.8 128 25.6 6.4 51.2 9.6 80 9.6 54.4 0 102.4-9.6 150.4-32l0 0c3.2 0 3.2-3.2 3.2-3.2 22.4-16 12.8-35.2 6.4-44.8-9.6-12.8-12.8-25.6-12.8-41.6 0-54.4 60.8-99.2 137.6-99.2 6.4 0 12.8 0 22.4 0 12.8 0 38.4 9.6 48-25.6 0-3.2 0-3.2 3.2-6.4 0-3.2 3.2-6.4 3.2-6.4 6.4-16 6.4-16 6.4-19.2 9.6-35.2 16-73.6 16-115.2 0-105.6-41.6-198.4-108.8-268.8C704 396.8 560 675.2 560 675.2zM224 419.2c0-28.8 22.4-51.2 51.2-51.2 28.8 0 51.2 22.4 51.2 51.2 0 28.8-22.4 51.2-51.2 51.2C246.4 470.4 224 448 224 419.2zM320 284.8c0-22.4 19.2-41.6 41.6-41.6 22.4 0 41.6 19.2 41.6 41.6 0 22.4-19.2 41.6-41.6 41.6C339.2 326.4 320 307.2 320 284.8zM457.6 208c0-12.8 12.8-25.6 25.6-25.6 12.8 0 25.6 12.8 25.6 25.6 0 12.8-12.8 25.6-25.6 25.6C470.4 233.6 457.6 220.8 457.6 208zM128 505.6C128 592 153.6 672 201.6 736c28.8-60.8 112-60.8 124.8-60.8-16-51.2 16-99.2 16-99.2l316.8-422.4c-48-19.2-99.2-32-150.4-32C297.6 118.4 128 291.2 128 505.6zM764.8 86.4c-22.4 19.2-390.4 518.4-390.4 518.4-22.4 28.8-12.8 76.8 22.4 99.2l9.6 6.4c35.2 22.4 80 12.8 99.2-25.6 0 0 6.4-12.8 9.6-19.2 54.4-105.6 275.2-524.8 288-553.6 6.4-19.2-3.2-32-19.2-32C777.6 76.8 771.2 80 764.8 86.4z"})]);Lc.displayName="OutlookIcon";var Ac=W({name:"AppearanceSwitch",setup(){const{config:e,isDarkmode:t,status:n}=sr(),r=or(),o=()=>{e.value==="switch"?n.value={light:"dark",dark:"auto",auto:"light"}[n.value]:n.value=n.value==="light"?"dark":"light"},s=async l=>{if(!(document.startViewTransition&&!window.matchMedia("(prefers-reduced-motion: reduce)").matches&&!r.value)||!l){o();return}const a=l.clientX,i=l.clientY,f=Math.hypot(Math.max(a,innerWidth-a),Math.max(i,innerHeight-i)),u=t.value;await document.startViewTransition(async()=>{o(),await zt()}).ready,t.value!==u&&document.documentElement.animate({clipPath:t.value?[`circle(${f}px at ${a}px ${i}px)`,`circle(0px at ${a}px ${i}px)`]:[`circle(0px at ${a}px ${i}px)`,`circle(${f}px at ${a}px ${i}px)`]},{duration:400,pseudoElement:t.value?"::view-transition-old(root)":"::view-transition-new(root)"})};return()=>c("button",{type:"button",id:"appearance-switch",onClick:s},[c(Tc,{style:{display:n.value==="auto"?"block":"none"}}),c(Cc,{style:{display:n.value==="dark"?"block":"none"}}),c(Sc,{style:{display:n.value==="light"?"block":"none"}})])}}),Yv=W({name:"AppearanceMode",setup(){const e=me(),{canToggle:t}=sr(),n=k(()=>e.value.outlookLocales.darkmode);return()=>t.value?c("div",{class:"appearance-wrapper"},[c("label",{class:"appearance-title",for:"appearance-switch"},n.value),c(Ac)]):null}});const yo="VUEPRESS_THEME_COLOR";var qv=W({name:"ThemeColorPicker",props:{themeColor:{type:Object,required:!0}},setup(e){const t=(n="")=>{const r=document.documentElement.classList,o=tr(e.themeColor);if(!n){localStorage.removeItem(yo),r.remove(...o);return}r.remove(...o.filter(s=>s!==n)),r.add(n),localStorage.setItem(yo,n)};return ge(()=>{const n=localStorage.getItem(yo);n&&t(n)}),()=>c("ul",{id:"theme-color-picker"},[c("li",c("span",{class:"theme-color",onClick:()=>t()})),Oi(e.themeColor).map(([n,r])=>c("li",c("span",{style:{background:r},onClick:()=>t(n)})))])}});const vn=xs.enableThemeColor==="true",Xv=vn?ch(Oi(xs).filter(([e])=>e.startsWith("theme-"))):{};var Jv=W({name:"ThemeColor",setup(){const e=me(),t=k(()=>e.value.outlookLocales.themeColor);return()=>vn?c("div",{class:"theme-color-wrapper"},[c("label",{class:"theme-color-title",for:"theme-color-picker"},t.value),c(qv,{themeColor:Xv})]):null}}),Pc=W({name:"ToggleFullScreenButton",setup(){const e=me(),{isSupported:t,isFullscreen:n,toggle:r}=ws(),o=k(()=>e.value.outlookLocales.fullscreen);return()=>t?c("div",{class:"full-screen-wrapper"},[c("label",{class:"full-screen-title",for:"full-screen-switch"},o.value),c("button",{type:"button",id:"full-screen-switch",class:"full-screen",ariaPressed:n.value,onClick:()=>r()},n.value?c(xc):c(kc))]):null}}),Ic=W({name:"OutlookSettings",setup(){const e=xn(),t=or(),n=k(()=>!t.value&&e.value.fullscreen);return()=>c(Ur,()=>[vn?c(Jv):null,c(Yv),n.value?c(Pc):null])}}),Qv=W({name:"NavScreen",props:{show:Boolean},emits:["close"],slots:Object,setup(e,{emit:t,slots:n}){const r=pe(),{isMobile:o}=Xr(),s=tt(),l=_s(s);return ge(()=>{s.value=document.body,ce(o,a=>{!a&&e.show&&(l.value=!1,t("close"))}),ce(()=>r.value.path,()=>{l.value=!1,t("close")})}),Cn(()=>{l.value=!1}),()=>c(Et,{name:"fade",onEnter:()=>{l.value=!0},onAfterLeave:()=>{l.value=!1}},()=>{var a,i;return e.show?c("div",{id:"nav-screen"},c("div",{class:"vp-nav-screen-container"},[(a=n.before)==null?void 0:a.call(n),c(Zv),c("div",{class:"vp-outlook-wrapper"},c(Ic)),(i=n.after)==null?void 0:i.call(n)])):null})}}),e0=W({name:"NavbarBrand",setup(){const e=nn(),t=Gr(),n=me(),r=k(()=>n.value.home||e.value),o=k(()=>t.value.title),s=k(()=>n.value.navTitle??o.value),l=k(()=>n.value.logo?Oe(n.value.logo):null),a=k(()=>n.value.logoDark?Oe(n.value.logoDark):null);return()=>c(qe,{to:r.value,class:"vp-brand"},()=>[l.value?c("img",{class:["vp-nav-logo",{light:!!a.value}],src:l.value,alt:""}):null,a.value?c("img",{class:["vp-nav-logo dark"],src:a.value,alt:""}):null,s.value?c("span",{class:["vp-site-name",{"hide-in-pad":l.value&&n.value.hideSiteNameOnMobile!==!1}]},s.value):null])}}),t0=W({name:"NavbarLinks",setup(){const e=Ec();return()=>e.value.length?c("nav",{class:"vp-nav-links"},e.value.map(t=>c("div",{class:"nav-item hide-in-mobile"},"children"in t?c(Kv,{config:t}):c(Fe,{config:t})))):null}}),n0=W({name:"RepoLink",components:{BitbucketIcon:zi,GiteeIcon:Vi,GitHubIcon:Fi,GitLabIcon:Bi,SourceIcon:Wi},setup(){const e=Gv();return()=>e.value?c("div",{class:"nav-item vp-repo"},c("a",{class:"vp-repo-link",href:e.value.link,target:"_blank",rel:"noopener noreferrer","aria-label":e.value.label},c(Je(`${e.value.type}Icon`),{style:{width:"1.25rem",height:"1.25rem",verticalAlign:"middle"}}))):null}});const Rc=({active:e=!1},{emit:t})=>c("button",{type:"button",class:["vp-toggle-navbar-button",{"is-active":e}],"aria-label":"Toggle Navbar","aria-expanded":e,"aria-controls":"nav-screen",onClick:()=>t("toggle")},c("span",[c("span",{class:"vp-top"}),c("span",{class:"vp-middle"}),c("span",{class:"vp-bottom"})]));Rc.displayName="ToggleNavbarButton";var r0=Rc;const Fo=(e,{emit:t})=>c("button",{type:"button",class:"vp-toggle-sidebar-button",title:"Toggle Sidebar",onClick:()=>t("toggle")},c("span",{class:"icon"}));Fo.displayName="ToggleSidebarButton",Fo.emits=["toggle"];var o0=Fo,s0=W({name:"OutlookButton",setup(){const{isSupported:e}=ws(),t=xn(),n=or(),r=pe(),{canToggle:o}=sr(),s=X(!1),l=k(()=>!n.value&&t.value.fullscreen&&e);return ce(()=>r.value.path,()=>{s.value=!1}),()=>o.value||l.value||vn?c("div",{class:"nav-item hide-in-mobile"},o.value&&!l.value&&!vn?c(Ac):l.value&&!o.value&&!vn?c(Pc):c("button",{type:"button",class:["outlook-button",{open:s.value}],tabindex:"-1","aria-hidden":!0},[c(Lc),c("div",{class:"outlook-dropdown"},c(Ic))])):null}}),l0=W({name:"NavBar",emits:["toggleSidebar"],slots:Object,setup(e,{emit:t,slots:n}){const r=me(),{isMobile:o}=Xr(),s=X(!1),l=k(()=>{const{navbarAutoHide:u="mobile"}=r.value;return u!=="none"&&(u==="always"||o.value)}),a=k(()=>r.value.navbarLayout||{start:["Brand"],center:["Links"],end:["Language","Repo","Outlook","Search"]}),i={Brand:e0,Language:bo,Links:t0,Repo:n0,Outlook:s0,Search:wt("Docsearch")?Je("Docsearch"):wt("SearchBox")?Je("SearchBox"):bo},f=u=>i[u]??(wt(u)?Je(u):bo);return()=>{var u,d,p,v,g,_;return[c("header",{id:"navbar",class:["vp-navbar",{"auto-hide":l.value,"hide-icon":r.value.navbarIcon===!1}]},[c("div",{class:"vp-navbar-start"},[c(o0,{onToggle:()=>{s.value&&(s.value=!1),t("toggleSidebar")}}),(u=n.startBefore)==null?void 0:u.call(n),(a.value.start||[]).map(E=>c(f(E))),(d=n.startAfter)==null?void 0:d.call(n)]),c("div",{class:"vp-navbar-center"},[(p=n.centerBefore)==null?void 0:p.call(n),(a.value.center||[]).map(E=>c(f(E))),(v=n.centerAfter)==null?void 0:v.call(n)]),c("div",{class:"vp-navbar-end"},[(g=n.endBefore)==null?void 0:g.call(n),(a.value.end||[]).map(E=>c(f(E))),(_=n.endAfter)==null?void 0:_.call(n),c(r0,{active:s.value,onToggle:()=>{s.value=!s.value}})])]),c(Qv,{show:s.value,onClose:()=>{s.value=!1}},{before:()=>{var E;return(E=n.screenTop)==null?void 0:E.call(n)},after:()=>{var E;return(E=n.screenBottom)==null?void 0:E.call(n)}})]}}}),a0=W({name:"SidebarChild",props:{config:{type:Object,required:!0}},setup(e){const t=Tt();return()=>[gc(e.config,{class:["vp-sidebar-link",`vp-sidebar-${e.config.type}`,{active:_n(t,e.config,!0)}],exact:!0}),bc(e.config.children)]}}),i0=W({name:"SidebarGroup",props:{config:{type:Object,required:!0},open:{type:Boolean,required:!0}},emits:["toggle"],setup(e,{emit:t}){const n=Tt(),r=k(()=>_n(n,e.config)),o=k(()=>_n(n,e.config,!0));return()=>{const{collapsible:s,children:l=[],icon:a,prefix:i,link:f,text:u}=e.config;return c("section",{class:"vp-sidebar-group"},[c(s?"button":"p",{class:["vp-sidebar-heading",{clickable:s||f,exact:o.value,active:r.value}],...s?{type:"button",onClick:()=>t("toggle"),onKeydown:d=>{d.key==="Enter"&&t("toggle")}}:{}},[c(Ve,{icon:a}),f?c(Fe,{class:"vp-sidebar-title",config:{text:u,link:f},noExternalLinkIcon:!0}):c("span",{class:"vp-sidebar-title"},u),s?c("span",{class:["vp-arrow",e.open?"down":"end"]}):null]),e.open||!s?c(Oc,{key:i,config:l}):null])}}}),Oc=W({name:"SidebarLinks",props:{config:{type:Array,required:!0}},setup(e){const t=Tt(),n=X(-1),r=o=>{n.value=o===n.value?-1:o};return ce(()=>t.path,()=>{const o=e.config.findIndex(s=>mc(t,s));n.value=o},{immediate:!0,flush:"post"}),()=>c("ul",{class:"vp-sidebar-links"},e.config.map((o,s)=>c("li",o.type==="group"?c(i0,{config:o,open:s===n.value,onToggle:()=>r(s)}):c(a0,{config:o}))))}}),c0=W({name:"SideBar",slots:Object,setup(e,{slots:t}){const n=Tt(),r=me(),o=Ps(),s=tt();return ge(()=>{ce(()=>n.hash,l=>{const a=document.querySelector(`.vp-sidebar a.vp-sidebar-link[href="${n.path}${l}"]`);if(!a)return;const{top:i,height:f}=s.value.getBoundingClientRect(),{top:u,height:d}=a.getBoundingClientRect();ui+f&&a.scrollIntoView(!1)},{immediate:!0})}),()=>{var l,a,i;return c("aside",{ref:s,id:"sidebar",class:["vp-sidebar",{"hide-icon":r.value.sidebarIcon===!1}]},[(l=t.top)==null?void 0:l.call(t),((a=t.default)==null?void 0:a.call(t))||c(Oc,{config:o.value}),(i=t.bottom)==null?void 0:i.call(t)])}}}),Mc=W({name:"CommonWrapper",props:{containerClass:{type:String,default:""},noNavbar:Boolean,noSidebar:Boolean,noToc:Boolean},slots:Object,setup(e,{slots:t}){const n=rt(),r=pe(),o=xe(),s=me(),{isMobile:l,isPC:a}=Xr(),[i,f]=Dl(!1),[u,d]=Dl(!1),p=Ps(),v=X(!1),g=k(()=>e.noNavbar||o.value.navbar===!1||s.value.navbar===!1?!1:!!(r.value.title||s.value.logo||s.value.repo||s.value.navbar)),_=k(()=>e.noSidebar?!1:o.value.sidebar!==!1&&p.value.length!==0&&!o.value.home),E=k(()=>e.noToc||o.value.home?!1:o.value.toc||s.value.toc!==!1&&o.value.toc!==!1),b={x:0,y:0},L=C=>{b.x=C.changedTouches[0].clientX,b.y=C.changedTouches[0].clientY},y=C=>{const j=C.changedTouches[0].clientX-b.x,N=C.changedTouches[0].clientY-b.y;Math.abs(j)>Math.abs(N)*1.5&&Math.abs(j)>40&&(j>0&&b.x<=80?f(!0):f(!1))},S=()=>window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;let $=0;return Te("scroll",Lh(()=>{const C=S();C<=58||C<$?v.value=!1:$+200{C||f(!1)}),ge(()=>{const C=_s(document.body);ce(i,N=>{C.value=N});const j=n.afterEach(()=>{f(!1)});Cn(()=>{C.value=!1,j()})}),()=>c(wt("GlobalEncrypt")?Je("GlobalEncrypt"):Ai,()=>c("div",{class:["theme-container",{"no-navbar":!g.value,"no-sidebar":!_.value&&!(t.sidebar||t.sidebarTop||t.sidebarBottom),"has-toc":E.value,"hide-navbar":v.value,"sidebar-collapsed":!l.value&&!a.value&&u.value,"sidebar-open":l.value&&i.value},e.containerClass,o.value.containerClass||""],onTouchStart:L,onTouchEnd:y},[g.value?c(l0,{onToggleSidebar:()=>f()},{startBefore:()=>{var C;return(C=t.navbarStartBefore)==null?void 0:C.call(t)},startAfter:()=>{var C;return(C=t.navbarStartAfter)==null?void 0:C.call(t)},centerBefore:()=>{var C;return(C=t.navbarCenterBefore)==null?void 0:C.call(t)},centerAfter:()=>{var C;return(C=t.navbarCenterAfter)==null?void 0:C.call(t)},endBefore:()=>{var C;return(C=t.navbarEndBefore)==null?void 0:C.call(t)},endAfter:()=>{var C;return(C=t.navbarEndAfter)==null?void 0:C.call(t)},screenTop:()=>{var C;return(C=t.navScreenTop)==null?void 0:C.call(t)},screenBottom:()=>{var C;return(C=t.navScreenBottom)==null?void 0:C.call(t)}}):null,c(Et,{name:"fade"},()=>i.value?c("div",{class:"vp-sidebar-mask",onClick:()=>f(!1)}):null),c(Et,{name:"fade"},()=>l.value?null:c("div",{class:"toggle-sidebar-wrapper",onClick:()=>d()},c("span",{class:["arrow",u.value?"end":"start"]}))),c(c0,{},{...t.sidebar?{default:()=>t.sidebar()}:{},top:()=>{var C;return(C=t.sidebarTop)==null?void 0:C.call(t)},bottom:()=>{var C;return(C=t.sidebarBottom)==null?void 0:C.call(t)}}),t.default(),c(jv)]))}}),un=W({name:"DropTransition",props:{type:{type:String,default:"single"},delay:{type:Number,default:0},duration:{type:Number,default:.25},appear:Boolean},slots:Object,setup(e,{slots:t}){const n=o=>{o.style.transition=`transform ${e.duration}s ease-in-out ${e.delay}s, opacity ${e.duration}s ease-in-out ${e.delay}s`,o.style.transform="translateY(-20px)",o.style.opacity="0"},r=o=>{o.style.transform="translateY(0)",o.style.opacity="1"};return()=>c(e.type==="single"?Et:Ed,{name:"drop",appear:e.appear,onAppear:n,onAfterAppear:r,onEnter:n,onAfterEnter:r,onBeforeLeave:n},()=>t.default())}});const Bo=({custom:e})=>c(gi,{class:["theme-hope-content",{custom:e}]});Bo.displayName="MarkdownContent",Bo.props={custom:Boolean};var $c=Bo;const Nc=()=>c(ve,{name:"author"},()=>c("path",{d:"M649.6 633.6c86.4-48 147.2-144 147.2-249.6 0-160-128-288-288-288s-288 128-288 288c0 108.8 57.6 201.6 147.2 249.6-121.6 48-214.4 153.6-240 288-3.2 9.6 0 19.2 6.4 25.6 3.2 9.6 12.8 12.8 22.4 12.8h704c9.6 0 19.2-3.2 25.6-12.8 6.4-6.4 9.6-16 6.4-25.6-25.6-134.4-121.6-240-243.2-288z"}));Nc.displayName="AuthorIcon";const Hc=()=>c(ve,{name:"calendar"},()=>c("path",{d:"M716.4 110.137c0-18.753-14.72-33.473-33.472-33.473-18.753 0-33.473 14.72-33.473 33.473v33.473h66.993v-33.473zm-334.87 0c0-18.753-14.72-33.473-33.473-33.473s-33.52 14.72-33.52 33.473v33.473h66.993v-33.473zm468.81 33.52H716.4v100.465c0 18.753-14.72 33.473-33.472 33.473a33.145 33.145 0 01-33.473-33.473V143.657H381.53v100.465c0 18.753-14.72 33.473-33.473 33.473a33.145 33.145 0 01-33.473-33.473V143.657H180.6A134.314 134.314 0 0046.66 277.595v535.756A134.314 134.314 0 00180.6 947.289h669.74a134.36 134.36 0 00133.94-133.938V277.595a134.314 134.314 0 00-133.94-133.938zm33.473 267.877H147.126a33.145 33.145 0 01-33.473-33.473c0-18.752 14.72-33.473 33.473-33.473h736.687c18.752 0 33.472 14.72 33.472 33.473a33.145 33.145 0 01-33.472 33.473z"}));Hc.displayName="CalendarIcon";const Dc=()=>c(ve,{name:"category"},()=>c("path",{d:"M148.41 106.992h282.176c22.263 0 40.31 18.048 40.31 40.31V429.48c0 22.263-18.047 40.31-40.31 40.31H148.41c-22.263 0-40.311-18.047-40.311-40.31V147.302c0-22.263 18.048-40.31 40.311-40.31zM147.556 553.478H429.73c22.263 0 40.311 18.048 40.311 40.31v282.176c0 22.263-18.048 40.312-40.31 40.312H147.555c-22.263 0-40.311-18.049-40.311-40.312V593.79c0-22.263 18.048-40.311 40.31-40.311zM593.927 106.992h282.176c22.263 0 40.31 18.048 40.31 40.31V429.48c0 22.263-18.047 40.31-40.31 40.31H593.927c-22.263 0-40.311-18.047-40.311-40.31V147.302c0-22.263 18.048-40.31 40.31-40.31zM730.22 920.502H623.926c-40.925 0-74.22-33.388-74.22-74.425V623.992c0-41.038 33.387-74.424 74.425-74.424h222.085c41.038 0 74.424 33.226 74.424 74.067v114.233c0 10.244-8.304 18.548-18.547 18.548s-18.548-8.304-18.548-18.548V623.635c0-20.388-16.746-36.974-37.33-36.974H624.13c-20.585 0-37.331 16.747-37.331 37.33v222.086c0 20.585 16.654 37.331 37.126 37.331H730.22c10.243 0 18.547 8.304 18.547 18.547 0 10.244-8.304 18.547-18.547 18.547z"}));Dc.displayName="CategoryIcon";const Fc=()=>c(ve,{name:"print"},()=>c("path",{d:"M819.2 364.8h-44.8V128c0-17.067-14.933-32-32-32H281.6c-17.067 0-32 14.933-32 32v236.8h-44.8C145.067 364.8 96 413.867 96 473.6v192c0 59.733 49.067 108.8 108.8 108.8h44.8V896c0 17.067 14.933 32 32 32h460.8c17.067 0 32-14.933 32-32V774.4h44.8c59.733 0 108.8-49.067 108.8-108.8v-192c0-59.733-49.067-108.8-108.8-108.8zM313.6 160h396.8v204.8H313.6V160zm396.8 704H313.6V620.8h396.8V864zM864 665.6c0 25.6-19.2 44.8-44.8 44.8h-44.8V588.8c0-17.067-14.933-32-32-32H281.6c-17.067 0-32 14.933-32 32v121.6h-44.8c-25.6 0-44.8-19.2-44.8-44.8v-192c0-25.6 19.2-44.8 44.8-44.8h614.4c25.6 0 44.8 19.2 44.8 44.8v192z"}));Fc.displayName="PrintIcon";const Bc=()=>c(ve,{name:"tag"},()=>c("path",{d:"M939.902 458.563L910.17 144.567c-1.507-16.272-14.465-29.13-30.737-30.737L565.438 84.098h-.402c-3.215 0-5.726 1.005-7.634 2.913l-470.39 470.39a10.004 10.004 0 000 14.164l365.423 365.424c1.909 1.908 4.42 2.913 7.132 2.913s5.223-1.005 7.132-2.913l470.39-470.39c2.01-2.11 3.014-5.023 2.813-8.036zm-240.067-72.121c-35.458 0-64.286-28.828-64.286-64.286s28.828-64.285 64.286-64.285 64.286 28.828 64.286 64.285-28.829 64.286-64.286 64.286z"}));Bc.displayName="TagIcon";const Vc=()=>c(ve,{name:"timer"},()=>c("path",{d:"M799.387 122.15c4.402-2.978 7.38-7.897 7.38-13.463v-1.165c0-8.933-7.38-16.312-16.312-16.312H256.33c-8.933 0-16.311 7.38-16.311 16.312v1.165c0 5.825 2.977 10.874 7.637 13.592 4.143 194.44 97.22 354.963 220.201 392.763-122.204 37.542-214.893 196.511-220.2 389.397-4.661 5.049-7.638 11.651-7.638 19.03v5.825h566.49v-5.825c0-7.379-2.849-13.981-7.509-18.9-5.049-193.016-97.867-351.985-220.2-389.527 123.24-37.67 216.446-198.453 220.588-392.892zM531.16 450.445v352.632c117.674 1.553 211.787 40.778 211.787 88.676H304.097c0-48.286 95.149-87.382 213.728-88.676V450.445c-93.077-3.107-167.901-81.297-167.901-177.093 0-8.803 6.99-15.793 15.793-15.793 8.803 0 15.794 6.99 15.794 15.793 0 80.261 63.69 145.635 142.01 145.635s142.011-65.374 142.011-145.635c0-8.803 6.99-15.793 15.794-15.793s15.793 6.99 15.793 15.793c0 95.019-73.789 172.82-165.96 177.093z"}));Vc.displayName="TimerIcon";const zc=()=>c(ve,{name:"word"},()=>[c("path",{d:"M518.217 432.64V73.143A73.143 73.143 0 01603.43 1.097a512 512 0 01419.474 419.474 73.143 73.143 0 01-72.046 85.212H591.36a73.143 73.143 0 01-73.143-73.143z"}),c("path",{d:"M493.714 566.857h340.297a73.143 73.143 0 0173.143 85.577A457.143 457.143 0 11371.566 117.76a73.143 73.143 0 0185.577 73.143v339.383a36.571 36.571 0 0036.571 36.571z"})]);zc.displayName="WordIcon";const Wt=()=>{const e=me();return k(()=>e.value.metaLocales)};var u0=W({name:"AuthorInfo",inheritAttrs:!1,props:{author:{type:Array,required:!0},pure:Boolean},setup(e){const t=Wt();return()=>e.author.length?c("span",{class:"page-author-info","aria-label":`${t.value.author}${e.pure?"":"🖊"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[c(Nc),c("span",e.author.map(n=>n.url?c("a",{class:"page-author-item",href:n.url,target:"_blank",rel:"noopener noreferrer"},n.name):c("span",{class:"page-author-item"},n.name))),c("span",{property:"author",content:e.author.map(n=>n.name).join(", ")})]):null}}),f0=W({name:"CategoryInfo",inheritAttrs:!1,props:{category:{type:Array,required:!0},pure:Boolean},setup(e){const t=rt(),n=pe(),r=Wt(),o=(s,l="")=>{l&&n.value.path!==l&&(s.preventDefault(),t.push(l))};return()=>e.category.length?c("span",{class:"page-category-info","aria-label":`${r.value.category}${e.pure?"":"🌈"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[c(Dc),e.category.map(({name:s,path:l})=>c("span",{class:["page-category-item",{[`category${Pi(s,9)}`]:!e.pure,clickable:l}],role:l?"navigation":"",onClick:a=>o(a,l)},s)),c("meta",{property:"articleSection",content:e.category.map(({name:s})=>s).join(",")})]):null}}),d0=W({name:"DateInfo",inheritAttrs:!1,props:{date:{type:Object,default:null},localizedDate:{type:String,default:""},pure:Boolean},setup(e){const t=pi(),n=Wt();return()=>e.date?c("span",{class:"page-date-info","aria-label":`${n.value.date}${e.pure?"":"📅"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[c(Hc),c("span",c(Ur,()=>e.localizedDate||e.date.toLocaleDateString(t.value))),c("meta",{property:"datePublished",content:e.date.toISOString()||""})]):null}}),p0=W({name:"OriginalInfo",inheritAttrs:!1,props:{isOriginal:Boolean},setup(e){const t=Wt();return()=>e.isOriginal?c("span",{class:"page-original-info"},t.value.origin):null}}),h0=W({name:"ReadingTimeInfo",inheritAttrs:!1,props:{readingTime:{type:Object,default:()=>null},readingTimeLocale:{type:Object,default:()=>null},pure:Boolean},setup(e){const t=Wt(),n=k(()=>{if(!e.readingTime)return null;const{minutes:r}=e.readingTime;return r<1?"PT1M":`PT${Math.round(r)}M`});return()=>{var r,o;return(r=e.readingTimeLocale)!=null&&r.time?c("span",{class:"page-reading-time-info","aria-label":`${t.value.readingTime}${e.pure?"":"⌛"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[c(Vc),c("span",(o=e.readingTimeLocale)==null?void 0:o.time),c("meta",{property:"timeRequired",content:n.value})]):null}}}),v0=W({name:"TagInfo",inheritAttrs:!1,props:{tag:{type:Array,default:()=>[]},pure:Boolean},setup(e){const t=rt(),n=pe(),r=Wt(),o=(s,l="")=>{l&&n.value.path!==l&&(s.preventDefault(),t.push(l))};return()=>e.tag.length?c("span",{class:"page-tag-info","aria-label":`${r.value.tag}${e.pure?"":"🏷"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[c(Bc),e.tag.map(({name:s,path:l})=>c("span",{class:["page-tag-item",{[`tag${Pi(s,9)}`]:!e.pure,clickable:l}],role:l?"navigation":"",onClick:a=>o(a,l)},s)),c("meta",{property:"keywords",content:e.tag.map(({name:s})=>s).join(",")})]):null}}),m0=W({name:"ReadTimeInfo",inheritAttrs:!1,props:{readingTime:{type:Object,default:()=>null},readingTimeLocale:{type:Object,default:()=>null},pure:Boolean},setup(e){const t=Wt();return()=>{var n,r,o;return(n=e.readingTimeLocale)!=null&&n.words?c("span",{class:"page-word-info","aria-label":`${t.value.words}${e.pure?"":"🔠"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[c(zc),c("span",(r=e.readingTimeLocale)==null?void 0:r.words),c("meta",{property:"wordCount",content:(o=e.readingTime)==null?void 0:o.words})]):null}}}),g0=W({name:"PageInfo",components:{AuthorInfo:u0,CategoryInfo:f0,DateInfo:d0,OriginalInfo:p0,PageViewInfo:()=>null,ReadingTimeInfo:h0,TagInfo:v0,WordInfo:m0},props:{items:{type:[Array,Boolean],default:()=>["Author","Original","Date","PageView","ReadingTime","Category","Tag"]},info:{type:Object,required:!0}},setup(e){const t=or();return()=>e.items?c("div",{class:"page-info"},e.items.map(n=>c(Je(`${n}Info`),{...e.info,pure:t.value}))):null}}),b0=W({name:"PrintButton",setup(){const e=xn(),t=me();return()=>e.value.print===!1?null:c("button",{type:"button",class:"print-button",title:t.value.metaLocales.print,onClick:()=>{window.print()}},c(Fc))}});const y0=({title:e,level:t,slug:n})=>c(qe,{to:`#${n}`,class:["toc-link",`level${t}`]},()=>e),Vo=(e,t)=>{const n=Tt();return e.length&&t>0?c("ul",{class:"toc-list"},e.map(r=>{const o=Vo(r.children,t-1);return[c("li",{class:["toc-item",{active:n.hash===`#${r.slug}`}]},y0(r)),o?c("li",o):null]})):null};var w0=W({name:"TOC",props:{items:{type:Array,default:()=>[]},headerDepth:{type:Number,default:2}},slots:Object,setup(e,{slots:t}){const n=Tt(),r=pe(),o=Wt(),s=tt(),l=X("-1.7rem"),a=f=>{var u;(u=s.value)==null||u.scrollTo({top:f,behavior:"smooth"})},i=()=>{if(s.value){const f=document.querySelector(".toc-item.active");f?l.value=`${f.getBoundingClientRect().top-s.value.getBoundingClientRect().top+s.value.scrollTop}px`:l.value="-1.7rem"}else l.value="-1.7rem"};return ge(()=>{ce(()=>n.hash,f=>{if(s.value){const u=document.querySelector(`#toc a.toc-link[href$="${f}"]`);if(!u)return;const{top:d,height:p}=s.value.getBoundingClientRect(),{top:v,height:g}=u.getBoundingClientRect();vd+p&&a(s.value.scrollTop+v+g-d-p)}}),ce(()=>n.fullPath,i,{flush:"post",immediate:!0})}),()=>{var u,d;const f=e.items.length?Vo(e.items,e.headerDepth):r.value.headers?Vo(r.value.headers,e.headerDepth):null;return f?c("div",{class:"toc-place-holder"},[c("aside",{id:"toc"},[(u=t.before)==null?void 0:u.call(t),c("div",{class:"toc-header"},[o.value.toc,c(b0)]),c("div",{class:"toc-wrapper",ref:s},[f,c("div",{class:"toc-marker",style:{top:l.value}})]),(d=t.after)==null?void 0:d.call(t)])]):null}}}),Wc=W({name:"SkipLink",props:{content:{type:String,default:"main-content"}},setup(e){const t=pe(),n=me(),r=tt(),o=({target:s})=>{const l=document.querySelector(s.hash);if(l){const a=()=>{l.removeAttribute("tabindex"),l.removeEventListener("blur",a)};l.setAttribute("tabindex","-1"),l.addEventListener("blur",a),l.focus(),window.scrollTo(0,0)}};return ge(()=>{ce(()=>t.value.path,()=>r.value.focus())}),()=>[c("span",{ref:r,tabindex:"-1"}),c("a",{href:`#${e.content}`,class:"vp-skip-link sr-only",onClick:o},n.value.routeLocales.skipToContent)]}});let wo=null,In=null;const _0={wait:()=>wo,pending:()=>{wo=new Promise(e=>In=e)},resolve:()=>{In==null||In(),wo=null,In=null}},jc=()=>_0;var E0=W({name:"FadeSlideY",slots:Object,setup(e,{slots:t}){const{resolve:n,pending:r}=jc();return()=>c(Et,{name:"fade-slide-y",mode:"out-in",onBeforeEnter:n,onBeforeLeave:r},()=>{var o;return(o=t.default)==null?void 0:o.call(t)})}});const C0=(e,t)=>{const n=e.replace(t,"/").split("/"),r=[];let o=ds(t);return n.forEach((s,l)=>{l!==n.length-1?(o+=`${s}/`,r.push({link:o,name:s||"Home"})):s!==""&&(o+=s,r.push({link:o,name:s}))}),r},Kc=(e,{slots:t})=>{var d,p;const{bgImage:n,bgImageDark:r,bgImageStyle:o,color:s,description:l,image:a,imageDark:i,header:f,features:u=[]}=e;return c("div",{class:"vp-feature-wrapper"},[n?c("div",{class:["vp-feature-bg",{light:r}],style:[{"background-image":`url(${n})`},o]}):null,r?c("div",{class:"vp-feature-bg dark",style:[{"background-image":`url(${r})`},o]}):null,c("div",{class:"vp-feature",style:s?{color:s}:{}},[((d=t.image)==null?void 0:d.call(t,e))||[a?c("img",{class:["vp-feature-image",{light:i}],src:Oe(a),alt:""}):null,i?c("img",{class:"vp-feature-image dark",src:Oe(i),alt:""}):null],((p=t.info)==null?void 0:p.call(t,e))||[f?c("h2",{class:"vp-feature-header"},f):null,l?c("p",{class:"vp-feature-description",innerHTML:l}):null],u.length?c("div",{class:"vp-features"},u.map(({icon:v,title:g,details:_,link:E})=>{const b=[c("h3",{class:"vp-feature-title"},[c(Ve,{icon:v}),c("span",{innerHTML:g})]),c("p",{class:"vp-feature-details",innerHTML:_})];return E?Mr(E)?c("a",{class:"vp-feature-item link",href:E,"aria-label":g,target:"_blank"},b):c(qe,{class:"vp-feature-item link",to:E,"aria-label":g},()=>b):c("div",{class:"vp-feature-item"},b)})):null])])};Kc.displayName="FeaturePanel";var Xl=Kc;const Gc=e=>{const{icon:t="",color:n,size:r}=e,o={};return n&&(o.color=n),r&&(o.height=Number.isNaN(Number(r))?r:`${r}px`),Tn(t)?c("img",{class:"icon",src:t,"no-view":"",style:o}):qr(t)?c("img",{class:"icon",src:Oe(t),"aria-hidden":"","no-view":"",style:o}):c(Je("FontIcon"),e)};Gc.displayName="HopeIcon";var S0=Gc,T0=W({name:"HeroInfo",slots:Object,setup(e,{slots:t}){const n=xe(),r=Gr(),o=k(()=>n.value.heroFullScreen??!1),s=k(()=>{const{heroText:f,tagline:u}=n.value;return{text:f??r.value.title??"Hello",tagline:u??r.value.description??"",isFullScreen:o.value}}),l=k(()=>{const{heroText:f,heroImage:u,heroImageDark:d,heroAlt:p,heroImageStyle:v}=n.value;return{image:u?Oe(u):null,imageDark:d?Oe(d):null,heroStyle:v,alt:p||f||"",isFullScreen:o.value}}),a=k(()=>{const{bgImage:f,bgImageDark:u,bgImageStyle:d}=n.value;return{image:Ct(f)?Oe(f):null,imageDark:Ct(u)?Oe(u):null,bgStyle:d,isFullScreen:o.value}}),i=k(()=>n.value.actions??[]);return()=>{var f,u,d;return c("header",{class:["vp-hero-info-wrapper",{fullscreen:o.value}]},[((f=t.heroBg)==null?void 0:f.call(t,a.value))||[a.value.image?c("div",{class:["vp-hero-mask",{light:a.value.imageDark}],style:[{"background-image":`url(${a.value.image})`},a.value.bgStyle]}):null,a.value.imageDark?c("div",{class:"vp-hero-mask dark",style:[{"background-image":`url(${a.value.imageDark})`},a.value.bgStyle]}):null],c("div",{class:"vp-hero-info"},[((u=t.heroImage)==null?void 0:u.call(t,l.value))||c(un,{appear:!0,type:"group"},()=>[l.value.image?c("img",{key:"light",class:["vp-hero-image",{light:l.value.imageDark}],style:l.value.heroStyle,src:l.value.image,alt:l.value.alt}):null,l.value.imageDark?c("img",{key:"dark",class:"vp-hero-image dark",style:l.value.heroStyle,src:l.value.imageDark,alt:l.value.alt}):null]),((d=t.heroInfo)==null?void 0:d.call(t,s.value))??c("div",{class:"vp-hero-infos"},[s.value.text?c(un,{appear:!0,delay:.04},()=>c("h1",{id:"main-title"},s.value.text)):null,s.value.tagline?c(un,{appear:!0,delay:.08},()=>c("p",{id:"main-description",innerHTML:s.value.tagline})):null,i.value.length?c(un,{appear:!0,delay:.12},()=>c("p",{class:"vp-hero-actions"},i.value.map(p=>c(Fe,{class:["vp-hero-action",p.type||"default"],config:p,noExternalLinkIcon:!0},p.icon?{before:()=>c(S0,{icon:p.icon})}:{})))):null])])])}}});const Uc=(e,{slots:t})=>{var p,v,g;const{bgImage:n,bgImageDark:r,bgImageStyle:o,color:s,description:l,image:a,imageDark:i,header:f,highlights:u=[],type:d="un-order"}=e;return c("div",{class:"vp-highlight-wrapper",style:s?{color:s}:{}},[n?c("div",{class:["vp-highlight-bg",{light:r}],style:[{"background-image":`url(${n})`},o]}):null,r?c("div",{class:"vp-highlight-bg dark",style:[{"background-image":`url(${r})`},o]}):null,c("div",{class:"vp-highlight"},[((p=t.image)==null?void 0:p.call(t,e))||[a?c("img",{class:["vp-highlight-image",{light:i}],src:Oe(a),alt:""}):null,i?c("img",{class:"vp-highlight-image dark",src:Oe(i),alt:""}):null],((v=t.info)==null?void 0:v.call(t,e))||[c("div",{class:"vp-highlight-info-wrapper"},c("div",{class:"vp-highlight-info"},[f?c("h2",{class:"vp-highlight-header",innerHTML:f}):null,l?c("p",{class:"vp-highlight-description",innerHTML:l}):null,((g=t.highlights)==null?void 0:g.call(t,u))||c(d==="order"?"ol":d==="no-order"?"dl":"ul",{class:"vp-highlights"},u.map(({icon:_,title:E,details:b,link:L})=>{const y=[c(d==="no-order"?"dt":"h3",{class:"vp-highlight-title"},[_?c(Ve,{class:"vp-highlight-icon",icon:_}):null,c("span",{innerHTML:E})]),b?c(d==="no-order"?"dd":"p",{class:"vp-highlight-details",innerHTML:b}):null];return c(d==="no-order"?"div":"li",{class:["vp-highlight-item-wrapper",{link:L}]},L?lh(L)?c("a",{class:"vp-highlight-item link",href:L,"aria-label":E,target:"_blank"},y):c(qe,{class:"vp-highlight-item link",to:L,"aria-label":E},()=>y):c("div",{class:"vp-highlight-item"},y))}))]))]])])};Uc.displayName="HighlightPanel";var k0=Uc,x0=W({name:"HomePage",slots:Object,setup(e,{slots:t}){const n=or(),r=xe(),o=k(()=>{const{features:l}=r.value;return q(l)?l:null}),s=k(()=>{const{highlights:l}=r.value;return q(l)?l:null});return()=>{var l,a,i,f;return c("main",{id:"main-content",class:["vp-project-home ",{pure:n.value}],"aria-labelledby":r.value.heroText===null?"":"main-title"},[(l=t.top)==null?void 0:l.call(t),c(T0),((a=s.value)==null?void 0:a.map(u=>"features"in u?c(Xl,u):c(k0,u)))||(o.value?c(un,{appear:!0,delay:.24},()=>c(Xl,{features:o.value})):null),(i=t.center)==null?void 0:i.call(t),c(un,{appear:!0,delay:.32},()=>c($c)),(f=t.bottom)==null?void 0:f.call(t)])}}}),L0=W({name:"BreadCrumb",setup(){const e=rt(),t=pe(),n=nn(),r=xe(),o=me(),s=tt([]),l=k(()=>(r.value.breadcrumb||r.value.breadcrumb!==!1&&o.value.breadcrumb!==!1)&&s.value.length>1),a=k(()=>r.value.breadcrumbIcon||r.value.breadcrumbIcon!==!1&&o.value.breadcrumbIcon!==!1),i=()=>{const f=e.getRoutes(),u=C0(t.value.path,n.value).map(({link:d,name:p})=>{const v=f.find(g=>g.path===d);if(v){const{meta:g,path:_}=Nr(e,v.path);return{title:g[bt.shortTitle]||g[bt.title]||p,icon:g[bt.icon],path:_}}return null}).filter(d=>d!==null);u.length>1&&(s.value=u)};return ge(()=>{ce(()=>t.value.path,i,{immediate:!0})}),()=>c("nav",{class:["vp-breadcrumb",{disable:!l.value}]},l.value?c("ol",{vocab:"https://schema.org/",typeof:"BreadcrumbList"},s.value.map((f,u)=>c("li",{class:{"is-active":s.value.length-1===u},property:"itemListElement",typeof:"ListItem"},[c(qe,{to:f.path,property:"item",typeof:"WebPage"},()=>[a.value?c(Ve,{icon:f.icon}):null,c("span",{property:"name"},f.title||"Unknown")]),c("meta",{property:"position",content:u+1})]))):[])}});const Jl=e=>{const t=rt();return e===!1?!1:ae(e)?hn(t,e,!0):fs(e)?e:null},zo=(e,t,n)=>{const r=e.findIndex(o=>o.link===t);if(r!==-1){const o=e[r+n];return o!=null&&o.link?o:null}for(const o of e)if(o.children){const s=zo(o.children,t,n);if(s)return s}return null};var A0=W({name:"PageNav",setup(){const e=me(),t=xe(),n=Ps(),r=pe(),o=Pv(),s=k(()=>{const a=Jl(t.value.prev);return a===!1?null:a||(e.value.prevLink===!1?null:zo(n.value,r.value.path,-1))}),l=k(()=>{const a=Jl(t.value.next);return a===!1?null:a||(e.value.nextLink===!1?null:zo(n.value,r.value.path,1))});return Te("keydown",a=>{a.altKey&&(a.key==="ArrowRight"?l.value&&(o(l.value.link),a.preventDefault()):a.key==="ArrowLeft"&&s.value&&(o(s.value.link),a.preventDefault()))}),()=>s.value||l.value?c("nav",{class:"vp-page-nav"},[s.value?c(Fe,{class:"prev",config:s.value},()=>{var a,i;return[c("div",{class:"hint"},[c("span",{class:"arrow start"}),e.value.metaLocales.prev]),c("div",{class:"link"},[c(Ve,{icon:(a=s.value)==null?void 0:a.icon}),(i=s.value)==null?void 0:i.text])]}):null,l.value?c(Fe,{class:"next",config:l.value},()=>{var a,i;return[c("div",{class:"hint"},[e.value.metaLocales.next,c("span",{class:"arrow end"})]),c("div",{class:"link"},[(a=l.value)==null?void 0:a.text,c(Ve,{icon:(i=l.value)==null?void 0:i.icon})])]}):null]):null}});const P0={GitHub:":repo/edit/:branch/:path",GitLab:":repo/-/edit/:branch/:path",Gitee:":repo/edit/:branch/:path",Bitbucket:":repo/src/:branch/:path?mode=edit&spa=0&at=:branch&fileviewer=file-view-default"},I0=({docsRepo:e,docsBranch:t,docsDir:n,filePathRelative:r,editLinkPattern:o})=>{if(!r)return null;const s=Di(e);let l;return o?l=o:s!==null&&(l=P0[s]),l?l.replace(/:repo/,Tn(e)?e:`https://github.com/${e}`).replace(/:branch/,t).replace(/:path/,ai(`${ds(n)}/${r}`)):null},R0=()=>{const e=me(),t=pe(),n=xe();return k(()=>{const{repo:r,docsRepo:o=r,docsBranch:s="main",docsDir:l="",editLink:a,editLinkPattern:i=""}=e.value;if(!(n.value.editLink??a??!0)||!o)return null;const f=I0({docsRepo:o,docsBranch:s,docsDir:l,editLinkPattern:i,filePathRelative:t.value.filePathRelative});return f?{text:e.value.metaLocales.editLink,link:f}:null})},O0=()=>{const e=Gr(),t=me(),n=pe(),r=xe();return k(()=>{var o,s;return!(r.value.lastUpdated??t.value.lastUpdated??!0)||!((o=n.value.git)!=null&&o.updatedTime)?null:new Date((s=n.value.git)==null?void 0:s.updatedTime).toLocaleString(e.value.lang)})},M0=()=>{const e=me(),t=pe(),n=xe();return k(()=>{var r;return n.value.contributors??e.value.contributors??!0?((r=t.value.git)==null?void 0:r.contributors)??null:null})};var $0=W({name:"PageTitle",setup(){const e=pe(),t=xe(),n=me(),{info:r,items:o}=Mv();return()=>c("div",{class:"vp-page-title"},[c("h1",[n.value.titleIcon===!1?null:c(Ve,{icon:t.value.icon}),e.value.title]),c(g0,{info:r.value,...o.value===null?{}:{items:o.value}}),c("hr")])}});const Zc=()=>c(ve,{name:"edit"},()=>[c("path",{d:"M430.818 653.65a60.46 60.46 0 0 1-50.96-93.281l71.69-114.012 7.773-10.365L816.038 80.138A60.46 60.46 0 0 1 859.225 62a60.46 60.46 0 0 1 43.186 18.138l43.186 43.186a60.46 60.46 0 0 1 0 86.373L588.879 565.55l-8.637 8.637-117.466 68.234a60.46 60.46 0 0 1-31.958 11.229z"}),c("path",{d:"M728.802 962H252.891A190.883 190.883 0 0 1 62.008 771.98V296.934a190.883 190.883 0 0 1 190.883-192.61h267.754a60.46 60.46 0 0 1 0 120.92H252.891a69.962 69.962 0 0 0-69.098 69.099V771.98a69.962 69.962 0 0 0 69.098 69.098h475.911A69.962 69.962 0 0 0 797.9 771.98V503.363a60.46 60.46 0 1 1 120.922 0V771.98A190.883 190.883 0 0 1 728.802 962z"})]);Zc.displayName="EditIcon";var N0=W({name:"PageMeta",setup(){const e=me(),t=R0(),n=O0(),r=M0();return()=>{const{metaLocales:o}=e.value;return c("footer",{class:"page-meta"},[t.value?c("div",{class:"meta-item edit-link"},c(Fe,{class:"label",config:t.value},{before:()=>c(Zc)})):null,c("div",{class:"meta-item git-info"},[n.value?c("div",{class:"update-time"},[c("span",{class:"label"},`${o.lastUpdated}: `),c(Ur,()=>c("span",{class:"info"},n.value))]):null,r.value&&r.value.length?c("div",{class:"contributors"},[c("span",{class:"label"},`${o.contributors}: `),r.value.map(({email:s,name:l},a)=>[c("span",{class:"contributor",title:`email: ${s}`},l),a!==r.value.length-1?",":""])]):null])])}}}),H0=W({name:"NormalPage",slots:Object,setup(e,{slots:t}){const n=xe(),{isDarkmode:r}=sr(),o=me(),s=k(()=>n.value.toc||n.value.toc!==!1&&o.value.toc!==!1);return()=>c("main",{id:"main-content",class:"vp-page"},c(wt("LocalEncrypt")?Je("LocalEncrypt"):Ai,()=>{var l,a,i,f;return[(l=t.top)==null?void 0:l.call(t),n.value.cover?c("div",{class:"page-cover"},c("img",{src:Oe(n.value.cover),alt:"","no-view":""})):null,c(L0),c($0),s.value?c(w0,{headerDepth:n.value.headerDepth??o.value.headerDepth??2},{before:()=>{var u;return(u=t.tocBefore)==null?void 0:u.call(t)},after:()=>{var u;return(u=t.tocAfter)==null?void 0:u.call(t)}}):null,(a=t.contentBefore)==null?void 0:a.call(t),c($c),(i=t.contentAfter)==null?void 0:i.call(t),c(N0),c(A0),wt("CommentService")?c(Je("CommentService"),{darkmode:r.value}):null,(f=t.bottom)==null?void 0:f.call(t)]}))}}),D0=W({name:"Layout",slots:Object,setup(e,{slots:t}){me();const n=pe(),r=xe(),{isMobile:o}=Xr(),s=k(()=>"none");return()=>[c(Wc),c(Mc,{},{default:()=>{var l;return((l=t.default)==null?void 0:l.call(t))||(r.value.home?c(x0):c(E0,()=>c(H0,{key:n.value.path},{top:()=>{var a;return(a=t.top)==null?void 0:a.call(t)},bottom:()=>{var a;return(a=t.bottom)==null?void 0:a.call(t)},contentBefore:()=>{var a;return(a=t.contentBefore)==null?void 0:a.call(t)},contentAfter:()=>{var a;return(a=t.contentAfter)==null?void 0:a.call(t)},tocBefore:()=>{var a;return(a=t.tocBefore)==null?void 0:a.call(t)},tocAfter:()=>{var a;return(a=t.tocAfter)==null?void 0:a.call(t)}})))},...s.value!=="none"?{navScreenBottom:()=>c(Je("BloggerInfo"))}:{},...!o.value&&s.value==="always"?{sidebar:()=>c(Je("BloggerInfo"))}:{}})]}}),F0=W({name:"NotFoundHint",setup(){const e=me(),t=()=>{const n=e.value.routeLocales.notFoundMsg;return n[Math.floor(Math.random()*n.length)]};return()=>c("div",{class:"not-found-hint"},[c("p",{class:"error-code"},"404"),c("h1",{class:"error-title"},e.value.routeLocales.notFoundTitle),c("p",{class:"error-hint"},t())])}}),B0=W({name:"NotFound",slots:Object,setup(e,{slots:t}){const n=nn(),r=me(),{navigate:o}=$o({to:r.value.home??n.value});return()=>[c(Wc),c(Mc,{noSidebar:!0},()=>{var s;return c("main",{id:"main-content",class:"vp-page not-found"},((s=t.default)==null?void 0:s.call(t))||[c(F0),c("div",{class:"actions"},[c("button",{type:"button",class:"action-button",onClick:()=>{window.history.go(-1)}},r.value.routeLocales.back),c("button",{type:"button",class:"action-button",onClick:()=>o()},r.value.routeLocales.home)])])})]}});r1(e=>{const t=e.t,n=e.I!==!1,r=e.i;return n?{title:t,content:r?()=>[c(Ve,{icon:r}),t]:null,order:e.O,index:e.I}:null});const V0=nt({enhance:({app:e,router:t})=>{const{scrollBehavior:n}=t.options;t.options.scrollBehavior=async(...r)=>(await jc().wait(),n(...r)),Hv(e),e.component("HopeIcon",Ve),e.component("VPLink",qe)},setup:()=>{Dv(),Wv()},layouts:{Layout:D0,NotFound:B0}}),_r=[qd,Yh,n1,i1,d1,m1,_1,A1,I1,z1,J1,Cv,V0],z0=[["v-8daa1a0e","/",{y:"h",t:"开始"},["/README.md"]],["v-712c96ac","/temp.html",{y:"a",t:""},[":md"]],["v-2b686fa9","/Buildings/",{y:"a",t:"建筑"},["/Buildings/README.md"]],["v-1ef620e5","/Buildings/townhall.html",{y:"a",t:"市政厅"},[":md"]],["v-384502bc","/Installation/",{y:"a",t:"安装"},["/Installation/README.md"]],["v-7d932540","/Installation/gdlauncher.html",{y:"a",t:"GDLauncher 安装"},[":md"]],["v-3631dba2","/Installation/hmcl.html",{y:"a",t:"HMCL 启动器"},[":md"]],["v-0932ecbb","/Installation/java.html",{y:"a",t:"Minecraft Java版"},[":md"]],["v-f45ff45a","/Tutorials/",{y:"a",t:"教程"},["/Tutorials/README.md"]],["v-117ff75c","/Tutorials/datapacks.html",{y:"a",t:"数据包"},[":md"]],["v-3d245998","/Tutorials/getting-started.html",{y:"a",t:"入门"},[":md"]],["v-f61210c0","/Tutorials/schematics.html",{y:"a",t:"原理图"},[":md"]],["v-dd87a1e0","/Tutorials/worldgencolonies.html",{y:"a",t:"世界生成"},[":md"]],["v-3706649a","/404.html",{y:"p",t:""},[]]];var Ql=W({name:"Vuepress",setup(){const e=Kd();return()=>c(e.value)}}),W0=()=>z0.reduce((e,[t,n,r,o])=>(e.push({name:t,path:n,component:Ql,meta:r},{path:n.endsWith("/")?n+"index.html":n.substring(0,n.length-5),redirect:n},...o.map(s=>({path:s===":md"?n.substring(0,n.length-5)+".md":s,redirect:n}))),e),[{name:"404",path:"/:catchAll(.*)",component:Ql}]),j0=hp,K0=()=>{const e=Xp({history:j0(ds("/Minecolonies-Chinese-Wiki/")),routes:W0(),scrollBehavior:(t,n,r)=>r||(t.hash?{el:t.hash}:{top:0})});return e.beforeResolve(async(t,n)=>{var r;(t.path!==n.path||n===gt)&&([t.meta._data]=await Promise.all([mt.resolvePageData(t.name),(r=ii[t.name])==null?void 0:r.__asyncLoader()]))}),e},G0=e=>{e.component("ClientOnly",Ur),e.component("Content",gi)},U0=(e,t,n)=>{const r=Hl(()=>t.currentRoute.value.path),o=Hl(()=>mt.resolveRouteLocale(cn.value.locales,r.value)),s=gs(r,()=>t.currentRoute.value.meta._data),l=k(()=>mt.resolveLayouts(n)),a=k(()=>mt.resolveSiteLocaleData(cn.value,o.value)),i=k(()=>mt.resolvePageFrontmatter(s.value)),f=k(()=>mt.resolvePageHeadTitle(s.value,a.value)),u=k(()=>mt.resolvePageHead(f.value,i.value,a.value)),d=k(()=>mt.resolvePageLang(s.value,a.value)),p=k(()=>mt.resolvePageLayout(s.value,l.value));return e.provide(Vd,l),e.provide(ci,s),e.provide(ui,i),e.provide(jd,f),e.provide(fi,u),e.provide(di,d),e.provide(hi,p),e.provide(ps,o),e.provide(mi,a),Object.defineProperties(e.config.globalProperties,{$frontmatter:{get:()=>i.value},$head:{get:()=>u.value},$headTitle:{get:()=>f.value},$lang:{get:()=>d.value},$page:{get:()=>s.value},$routeLocale:{get:()=>o.value},$site:{get:()=>cn.value},$siteLocale:{get:()=>a.value},$withBase:{get:()=>Oe}}),{layouts:l,pageData:s,pageFrontmatter:i,pageHead:u,pageHeadTitle:f,pageLang:d,pageLayout:p,routeLocale:o,siteData:cn,siteLocaleData:a}},Z0=()=>{const e=Wd(),t=pi(),n=X([]),r=()=>{e.value.forEach(s=>{const l=Y0(s);l&&n.value.push(l)})},o=()=>{document.documentElement.lang=t.value,n.value.forEach(s=>{s.parentNode===document.head&&document.head.removeChild(s)}),n.value.splice(0,n.value.length),e.value.forEach(s=>{const l=q0(s);l!==null&&(document.head.appendChild(l),n.value.push(l))})};Ft(Ud,o),ge(()=>{r(),o(),ce(()=>e.value,o)})},Y0=([e,t,n=""])=>{const r=Object.entries(t).map(([a,i])=>ae(i)?`[${a}=${JSON.stringify(i)}]`:i===!0?`[${a}]`:"").join(""),o=`head > ${e}${r}`;return Array.from(document.querySelectorAll(o)).find(a=>a.innerText===n)||null},q0=([e,t,n])=>{if(!ae(e))return null;const r=document.createElement(e);return fs(t)&&Object.entries(t).forEach(([o,s])=>{ae(s)?r.setAttribute(o,s):s===!0&&r.setAttribute(o,"")}),ae(n)&&r.appendChild(document.createTextNode(n)),r},X0=Ad,J0=async()=>{var n;const e=X0({name:"VuepressApp",setup(){var r;Z0();for(const o of _r)(r=o.setup)==null||r.call(o);return()=>[c(Li),..._r.flatMap(({rootComponents:o=[]})=>o.map(s=>c(s)))]}}),t=K0();G0(e),U0(e,t,_r);for(const r of _r)await((n=r.enhance)==null?void 0:n.call(r,{app:e,router:t,siteData:cn}));return e.use(t),{app:e,router:t}};J0().then(({app:e,router:t})=>{t.isReady().then(()=>{e.mount("#app")})});export{ev as A,tt as B,ge as C,Cn as D,ae as E,rm as F,fs as G,Ss as H,xh as I,kt as J,uv as O,iv as R,tm as a,Za as b,Q0 as c,J0 as createVueApp,Ya as d,Se as e,em as f,W as g,rt as h,nn as i,Ts as j,X as k,k as l,Te as m,ce as n,Nf as o,c as p,tv as q,Je as r,rv as s,Vr as t,nm as u,qe as v,Uu as w,cc as x,nv as y,Q1 as z}; +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = ["assets/index.html-Gvxye8Fe.js","assets/plugin-vue_export-helper-x3n3nnut.js","assets/temp.html-KkJJgK1Y.js","assets/index.html-pFrUCak5.js","assets/townhall.html-f05QP5j6.js","assets/index.html-26zp0mBY.js","assets/gdlauncher.html-gLJsbJFe.js","assets/hmcl.html-XybsHrXO.js","assets/java.html-cvzZEkzf.js","assets/index.html-iGaRDsYP.js","assets/datapacks.html-XY14g8Fx.js","assets/getting-started.html-K6-kH37m.js","assets/schematics.html-xW3zIrup.js","assets/worldgencolonies.html-hBZXKTdx.js","assets/404.html-YbRkGhD2.js"] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +} diff --git a/assets/datapacks.html-b79FIvJC.js b/assets/datapacks.html-XY14g8Fx.js similarity index 99% rename from assets/datapacks.html-b79FIvJC.js rename to assets/datapacks.html-XY14g8Fx.js index dfe0872..cdc527b 100644 --- a/assets/datapacks.html-b79FIvJC.js +++ b/assets/datapacks.html-XY14g8Fx.js @@ -1,4 +1,4 @@ -import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o,c as t,f as a}from"./app-DfwSKz3Q.js";const n={};function i(s,r){return o(),t("div",null,[a(` +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o,c as t,a}from"./app-rX80dX-Q.js";const n={};function i(s,r){return o(),t("div",null,[a(` # Data Pack [[toc]] diff --git a/assets/gdlauncher.html-GCJ8v77L.js b/assets/gdlauncher.html-gLJsbJFe.js similarity index 98% rename from assets/gdlauncher.html-GCJ8v77L.js rename to assets/gdlauncher.html-gLJsbJFe.js index 4c4ed1b..8e697f2 100644 --- a/assets/gdlauncher.html-GCJ8v77L.js +++ b/assets/gdlauncher.html-gLJsbJFe.js @@ -1 +1 @@ -import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as n,c as t,d as o}from"./app-DfwSKz3Q.js";const a={},i=o('

GDLauncher 安装

Installing MineColonies via GDLauncher, a custom Minecraft launcher, is the recommended method.

GDLauncher Installation
Getting GDLauncher
Setting Up GDLauncher
Account
Create an Instance
Installing MineColonies Mod Only
Installing MineColonies Official Modpacks
Getting the Modpack
Installing the Modpack
Getting GDLauncher
GDLauncher can be downloaded here. Simply choose the version for your operating system and run the file.

GDLauncher Download

Setting Up GDLauncher
Once you’ve installed GDLauncher, setting it up is simple.

Account
When you first open GDLauncher, it’ll ask you to log in to your Minecraft account. Enter your account information and click Sign In.

Log In

Create an Instance
Once you’re logged in, you’ll be able to create an “instance.” Instances are GDLauncher’s way of separating each version of Minecraft and each different set of mods you wish to install.

To create an instance, click the + button in the bottom left.

Instance Button

The steps past this point differ, depending on whether you’re installing the mod or the modpack.

Installing MineColonies Mod Only
Change the dropdowns to select the latest Forge version for the latest version of Minecraft. (At the time of this writing, the latest Minecraft version is 1.16.5.)

Changing Dropdowns

Next, click the white arrow in the bottom right. It’ll prompt you to enter a name for your instance; enter whatever you’d like.

Instance Name

Once you’re done choosing a name, click the bottom-right arrow again. Wait for GDLauncher to finish installing Forge. Once it’s done, you should see the instance in the main menu (along with any other instances). Right-click it and click Manage.

Manage Button

Once you’re in the Manage Instance menu, go to the Mods tab and click the Add Mod button at the top.

Mods Tab

Search for “MineColonies” at the top, then click Install. (You can click elsewhere on the mod’s icon to read the description.) GDLauncher will automatically install Structurize, a dependency of MineColonies.

MineColonies Search

You’re ready to play! To launch Minecraft, close out of the instance manager and left-click on the instance icon (in the main menu).

Installing MineColonies Official Modpack
When creating an instance, change from Vanilla to Twitch at the top. Search for “MineColonies Official”.

Searching in Twitch Tab

Hover over the top result and click Download Latest (or Explore / Versions to read the description). It’ll prompt you to choose a name for your instance.

Instance Name

When you’re done, click the white arrow in the bottom left. GDLauncher will start installing the modpack.

Once GDLauncher is finished, you’re done! Just click on the instance icon to launch Minecraft. Have fun!

',29),c=[i];function r(l,s){return n(),t("div",null,c)}const u=e(a,[["render",r],["__file","gdlauncher.html.vue"]]);export{u as default}; +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as n,c as t,f as o}from"./app-rX80dX-Q.js";const a={},i=o('

GDLauncher 安装

Installing MineColonies via GDLauncher, a custom Minecraft launcher, is the recommended method.

GDLauncher Installation
Getting GDLauncher
Setting Up GDLauncher
Account
Create an Instance
Installing MineColonies Mod Only
Installing MineColonies Official Modpacks
Getting the Modpack
Installing the Modpack
Getting GDLauncher
GDLauncher can be downloaded here. Simply choose the version for your operating system and run the file.

GDLauncher Download

Setting Up GDLauncher
Once you’ve installed GDLauncher, setting it up is simple.

Account
When you first open GDLauncher, it’ll ask you to log in to your Minecraft account. Enter your account information and click Sign In.

Log In

Create an Instance
Once you’re logged in, you’ll be able to create an “instance.” Instances are GDLauncher’s way of separating each version of Minecraft and each different set of mods you wish to install.

To create an instance, click the + button in the bottom left.

Instance Button

The steps past this point differ, depending on whether you’re installing the mod or the modpack.

Installing MineColonies Mod Only
Change the dropdowns to select the latest Forge version for the latest version of Minecraft. (At the time of this writing, the latest Minecraft version is 1.16.5.)

Changing Dropdowns

Next, click the white arrow in the bottom right. It’ll prompt you to enter a name for your instance; enter whatever you’d like.

Instance Name

Once you’re done choosing a name, click the bottom-right arrow again. Wait for GDLauncher to finish installing Forge. Once it’s done, you should see the instance in the main menu (along with any other instances). Right-click it and click Manage.

Manage Button

Once you’re in the Manage Instance menu, go to the Mods tab and click the Add Mod button at the top.

Mods Tab

Search for “MineColonies” at the top, then click Install. (You can click elsewhere on the mod’s icon to read the description.) GDLauncher will automatically install Structurize, a dependency of MineColonies.

MineColonies Search

You’re ready to play! To launch Minecraft, close out of the instance manager and left-click on the instance icon (in the main menu).

Installing MineColonies Official Modpack
When creating an instance, change from Vanilla to Twitch at the top. Search for “MineColonies Official”.

Searching in Twitch Tab

Hover over the top result and click Download Latest (or Explore / Versions to read the description). It’ll prompt you to choose a name for your instance.

Instance Name

When you’re done, click the white arrow in the bottom left. GDLauncher will start installing the modpack.

Once GDLauncher is finished, you’re done! Just click on the instance icon to launch Minecraft. Have fun!

',29),c=[i];function r(l,s){return n(),t("div",null,c)}const u=e(a,[["render",r],["__file","gdlauncher.html.vue"]]);export{u as default}; diff --git a/assets/getting-started.html-K6-kH37m.js b/assets/getting-started.html-K6-kH37m.js new file mode 100644 index 0000000..1b83d5d --- /dev/null +++ b/assets/getting-started.html-K6-kH37m.js @@ -0,0 +1 @@ +import{_ as h}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o as d,c,a as n,b as e,e as i,w as r,d as a,f as s}from"./app-rX80dX-Q.js";const p="/Minecolonies-Chinese-Wiki/assets/image/tutorial/achievements.png",u="/Minecolonies-Chinese-Wiki/assets/image/tutorial/next_colony.png",f="/Minecolonies-Chinese-Wiki/assets/image/tutorial/players_colony.png",_="/Minecolonies-Chinese-Wiki/assets/image/tutorial/no_colony.png",m="/Minecolonies-Chinese-Wiki/assets/image/gui/buildings/builder/main.png",g={},b=e("h1",{id:"入门",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#入门","aria-hidden":"true"},"#"),a(" 入门")],-1),x={class:"table-of-contents"},k={href:"https://www.curseforge.com/minecraft/modpacks/minecolonies-testpack",target:"_blank",rel:"noopener noreferrer"},I=e("a",{href:"../Installation/java"},"Java (Forge)",-1),v=e("a",{href:"../Installation/gdlauncher"},"GDLauncher",-1),w=e("a",{href:"../Installation/curseforge"},"Curseforge Launcher",-1),y=s('

快速指南

在开始新的殖民地之前,你应该找到一个理想的位置。你需要足够大的空间来建设一个完整的城市,至少8x8区块大小,并且地形较为平坦。

你还应该尽可能多的收集资源,包括木材、石头、煤炭、铁矿石、花朵、线、皮革、羊毛、树苗和食物等。

第1步:补给营地/补给船

一旦你选择了殖民地的位置,你必须放置一个补给船或者补给营地。在同一个世界中你只能放置其中一个。补给营地/船提供了你正式启动殖民地所需的市政厅方块。它们还提供了在建设殖民地过程中可能需要的一些其他物资。一旦你获得了市政厅方块和建筑工具,剩下的营地/船就只是个装饰物了。你可以选择保留或拆除它。

第2步:市政厅

市政厅方块实际上是创建殖民地的核心。它还充当殖民地的中心。这是你开始使用建筑工具放置建筑的地方。使用建筑工具可以确保你能够清楚地看到建筑将在哪里,朝向哪个方向,以及它是否位于正确的Y层级(一些建筑需要抬升到正确的Y层级)。

一旦放置了市政厅方块,你将开始获得最初的4名居民。

第3步:建筑工

在开始建设殖民地之前,你需要一个建筑工。建筑工必须先建造他们自己的建筑工小屋,然后才能建造其他小屋,而且他们不能将小屋建造或升级到高于他们自己小屋的等级。

第4步:酒馆

你的市民需要一个居住和睡觉的地方,因此建议接下来建造一个酒馆。酒馆还允许游客来到你的殖民地,你可以招募他们留下成为居民。

第5步:食物

你的殖民地需要的下一个重要物资是食物。获得食物的最快方式是建造一个渔夫小屋。你也可以建造农场或其中一种牲畜饲养工,但是建造一个渔夫小屋更快。如果你不想亲自为殖民者喂食(或烹饪食物),建造一个餐厅也是明智的选择。

第6步:护林员

如果你更青睐木材,建议接下来建造一个护林员小屋。这样,你的新护林员就可以开始为你的下一个建筑和工具等项目采集木材。

第7步:矿工

石材和矿石是殖民地的另一个主要需求,因此建造一个矿井是下一个合乎逻辑的步骤。

第8步:仓库和快递员

在这一点上,你可能已经厌倦了将所有资源交给建筑师,然后再从渔夫、林业师、矿工等处取回。你可能还想将物品存放在一个地方。好吧,{% building_link warehouse %} 和 {% building_link courier %} 就是你正在寻找的解决方案!{% worker_link courier %} 在仓库和所有工作场所之间传送物品。剪贴板资源卷轴可能会有帮助!

第9步:其余的殖民地

在这一步,你需要根据你的游戏方式和殖民地的需求来决定下一步做什么。但是你有几个方向可供选择。一旦获得七名居民,你可能会受到袭击,因此可能想要建造一个卫兵塔,或者可能有一名生病的居民,想要建造一个医院,或者可能决定建造一个锯木厂来为工人制作所需的物品。或者你可能只是想拥有一个特定的工人,或者找到了一个适合建造特定小屋的好地方。你决定你的殖民地将如何发展!

详细步骤

如果你已经到达这里,恭喜你! 你已经安装了模拟殖民地,并准备好踏上一场探险之旅,探索、征服并建立自己的殖民地。努力工作,将其打造成一个繁荣的城镇。磨练你的领导技能,不断壮大成为一个城市!最后,你能成为一位宏伟的领导者,最终实现大都市的目标吗?(查看游戏中的模拟殖民地成就。)

Achievements

为了避免错误和挫折,在开始游戏之前,请仔细阅读整个指南。

放置补给船或补给营地

要放置补给船,你需要拥有足够大的水域(至少32x20)。
要放置补给营地,你需要拥有足够大、平坦、清晰的土地(至少16x17方块)。

当你放置供给船/营地时,它将生成一个包含市政厅方块和建筑工具的箱子。 一旦放置了补给船/营地,就不能在同一个世界中放置另一个了。

通过直接右键单击水域/地面上的物品来放置供给船/营地 - 如果你已经有一个建筑工具,请不要在此时使用它(你预计从营地/船中获取工具,而不是已经拥有一个)。

提示

如果你无法放置供给营地/船,请逐块尝试:向右、向左、更近或更远离你清理的区域。该区域不能包含任何洞穴,也不能有花朵、草、蕨类、海藻、珊瑚等。

市政厅

一旦放置了市政厅,你殖民地的受保护区域将成为以你第一次放置市政厅方块的区块为中心的半径为4个区块的正方形(使用默认配置)。因此,请仔细规划你想要放置市政厅的位置。从该区块向每个方向延伸64个方块(4x4区块)将是你受保护的城镇区域,包括山脉、丘陵、湖泊、海洋、洞穴、世界生成的结构等,从基岩到天际限制。

提示

你在整个模组中最需要的工具是建筑工具(请查看我们的建筑工具页面)。从补给船/营地获取一个,或者制作另一个,以便你可以将所有小屋(包括市政厅)放置在完美的位置。

建筑工具的教学视频(过时)

',35),B=e("div",{class:"embed-responsive embed-responsive-16by9 mx-auto"},[e("iframe",{class:"embed-responsive-item",src:"https://www.youtube.com/embed/DVGGDUXbTOY",allow:"autoplay; encrypted-media",allowfullscreen:""})],-1),C=s('

由于每个殖民地的受保护区域,你必须仔细勘察周围环境,确保你周围没有其他殖民地,以防止你放置市政厅或在该方向上限制你的殖民地区域(在多人游戏等情况下)。如果另一个殖民地离你当前位置太近,你将无法放置市政厅。

关于下一个最近殖民地的位置信息存在于调试屏幕中(按下F3键时显示)。如果有一个殖民地靠近你当前的位置,它还会显示你需要远离的距离以放置市政厅。

Next Colony

Player's Colony

No Colony

例如,在官方MineColonies服务器上,它将是默认的4块半径(4 + 4 + 1 {放置市政厅的中心区块} = 9块或144总共所需的方块)。因此,它会告诉你:下一个殖民地距离为XXX方块。 (放置殖民地所需的方块为272)。

现在,在你已经探索、深思熟虑、规划并找到了开始殖民地的完美地点之后,让我们看一下让你的殖民地运行起来的步骤!

设置你的殖民地

第1步

获得足够的材料并制作你的供给船/营地,然后通过右键单击一个方块将其放置(如果你已经拥有建筑工具,请不要使用建筑工具)。放置的船/营地内将有一个箱子(或架子),其中包含一个市政厅方块和一个建筑工具。

提示

尽可能多地收集材料,以便在建筑工小屋开始建造时提供给他们。他们会根据你选择的建筑风格,为每个建筑或升级向你索要各种材料。大多数风格所需的材料主要是木材、石头和火把,用于较低级别。进一步的升级将需要更复杂的材料。

第2步

在你仔细决定放置市政厅的位置后(记住,你首次放置市政厅方块的位置将是你殖民地受保护区域的中心。一旦放置,该区域将被确定,无法更改),使用你的建筑工具来放置市政厅。一旦你确认放置市政厅(绿色的对勾),市政厅方块将被放置。要正式启动殖民地,你需要右键单击该方块,然后选择“创建新殖民地”。一旦你完成了这个步骤,你的最初的四名居民将开始出现!

你现在可以再次右键单击市政厅方块,查看你在殖民地中可以配置的其他内容,比如你的殖民地名称!

你可以在这里查看GUI的完整布局。

第3步

在建造任何其他建筑之前,你必须制作[建筑工小屋]方块并使用你的建筑工具将其放置。一旦你确认放置建筑师小屋(绿色的对勾),方块将被放置,并且将自动分配一个建筑师((或者你可以在市政厅GUI的设置选项卡中手动分配一个拥有最佳特质的建筑师,如果你在其中更改了此设置)。

你现在正式拥有一个[建筑工小屋]!恭喜!

通过右键单击[建筑工小屋]方块访问它时,你将看到一个具有不同选项的GUI:

建筑工小屋GUI

你将点击[建筑工小屋]上的“建造选项”,然后点击“建造建筑”。这将为你的新建筑工提供建造任务,以便他们首先建造自己的小屋。如果[建筑工小屋]没有建造,建筑工将无法建造任何其他建筑。

建筑工将询问他们需要的材料。当他们头顶上方有红色图标时,右键单击他们以查看他们当前所需的材料。

提示

如果你发现建筑师没有完成建造任务并且你看不到他们正在请求任何材料,请前往建筑师小屋,召回建筑师,并等待一段时间以查看他们需要什么。此外,检查建筑师小屋 GUI 的第二页,查看哪些资源是红色的(这些是缺少的资源)。

第4步

一旦建筑师完成了他们的小屋,你就可以开始建造任何其他你想要的建筑了!只需制作所需的方块,并使用你的建筑工具将其放置。一旦放置,进入新方块的GUI,点击“建造选项”,然后点击“建造建筑”。就是这么简单!

提示

考虑尽早将建筑师小屋升级到第2级,这样建筑师就可以升级其他建筑物。

最后说明

你现在已经完成了开始和创建殖民地的最重要步骤!

你现在可能的问题是,接下来要建造什么?市政厅、[矿场]、[伐木工]、农场、渔夫、卫兵塔、{% building_link courier %}、面包房、餐厅等可能是一个不错的开始。

但是你只有4名居民!现在怎么办呢?嗯,在你的4名居民就业并努力工作之后,下一个步骤是计划并放置[住宅]。这将为你的殖民地每建造一个房屋的每个级别(在你的最初四名居民得到住宿后)提供额外的居民!那么,对于这么多居民,你该怎么办呢?你不能为每个小屋分配超过1名工人。因此,考虑建造更多的小屋,以获取更多的矿工、林业师、建筑师、农民、渔夫等!如果你难以跟踪每个人的需求,请考虑制作一个剪贴板资源卷轴。尽管你只需要一个剪贴板,但你可以为每位建筑师制作一个资源卷轴,以跟踪他们的需求!

提示

将你的小屋升级到最高可能的级别(除了[酒馆],它的最高级别为5)以获得成就,并提高工人等级的升级速度。

',31);function G(W,M){const t=l("router-link"),o=l("ExternalLinkIcon");return d(),c("div",null,[n(" buildings "),n(" items "),n(" workers "),b,e("nav",x,[e("ul",null,[e("li",null,[i(t,{to:"#快速指南"},{default:r(()=>[a("快速指南")]),_:1}),e("ul",null,[e("li",null,[i(t,{to:"#第1步-补给营地-补给船"},{default:r(()=>[a("第1步:补给营地/补给船")]),_:1})]),e("li",null,[i(t,{to:"#第2步-市政厅"},{default:r(()=>[a("第2步:市政厅")]),_:1})]),e("li",null,[i(t,{to:"#第3步-建筑工"},{default:r(()=>[a("第3步:建筑工")]),_:1})]),e("li",null,[i(t,{to:"#第4步-酒馆"},{default:r(()=>[a("第4步:酒馆")]),_:1})]),e("li",null,[i(t,{to:"#第5步-食物"},{default:r(()=>[a("第5步:食物")]),_:1})]),e("li",null,[i(t,{to:"#第6步-护林员"},{default:r(()=>[a("第6步:护林员")]),_:1})]),e("li",null,[i(t,{to:"#第7步-矿工"},{default:r(()=>[a("第7步:矿工")]),_:1})]),e("li",null,[i(t,{to:"#第8步-仓库和快递员"},{default:r(()=>[a("第8步:仓库和快递员")]),_:1})]),e("li",null,[i(t,{to:"#第9步-其余的殖民地"},{default:r(()=>[a("第9步:其余的殖民地")]),_:1})])])]),e("li",null,[i(t,{to:"#详细步骤"},{default:r(()=>[a("详细步骤")]),_:1}),e("ul",null,[e("li",null,[i(t,{to:"#放置补给船或补给营地"},{default:r(()=>[a("放置补给船或补给营地")]),_:1})]),e("li",null,[i(t,{to:"#市政厅"},{default:r(()=>[a("市政厅")]),_:1})])])]),e("li",null,[i(t,{to:"#设置你的殖民地"},{default:r(()=>[a("设置你的殖民地")]),_:1}),e("ul",null,[e("li",null,[i(t,{to:"#第1步"},{default:r(()=>[a("第1步")]),_:1})]),e("li",null,[i(t,{to:"#第2步"},{default:r(()=>[a("第2步")]),_:1})]),e("li",null,[i(t,{to:"#第3步"},{default:r(()=>[a("第3步")]),_:1})]),e("li",null,[i(t,{to:"#第4步"},{default:r(()=>[a("第4步")]),_:1})]),e("li",null,[i(t,{to:"#最后说明"},{default:r(()=>[a("最后说明")]),_:1})])])])])]),e("p",null,[a("本教程假设你已经安装了mod。如果你想了解如何安装"),e("a",k,[a("官方整合包"),i(o)]),a(", 你可以在"),I,a("、"),v,a("以及"),w,a("上找到相应的安装说明。")]),y,B,C])}const V=h(g,[["render",G],["__file","getting-started.html.vue"]]);export{V as default}; diff --git a/assets/getting-started.html-YUNoi4Ak.js b/assets/getting-started.html-YUNoi4Ak.js deleted file mode 100644 index db71b5a..0000000 --- a/assets/getting-started.html-YUNoi4Ak.js +++ /dev/null @@ -1 +0,0 @@ -const l=JSON.parse('{"key":"v-3d245998","path":"/Tutorials/getting-started.html","title":"入门","lang":"zh-CN","frontmatter":{"title":"入门"},"headers":[{"level":2,"title":"快速指南","slug":"快速指南","link":"#快速指南","children":[{"level":3,"title":"第1步:补给营地/补给船","slug":"第1步-补给营地-补给船","link":"#第1步-补给营地-补给船","children":[]},{"level":3,"title":"第2步:市政厅","slug":"第2步-市政厅","link":"#第2步-市政厅","children":[]},{"level":3,"title":"第3步:建筑工","slug":"第3步-建筑工","link":"#第3步-建筑工","children":[]},{"level":3,"title":"第4步:酒馆","slug":"第4步-酒馆","link":"#第4步-酒馆","children":[]},{"level":3,"title":"第5步:食物","slug":"第5步-食物","link":"#第5步-食物","children":[]},{"level":3,"title":"第6步:林业师","slug":"第6步-林业师","link":"#第6步-林业师","children":[]},{"level":3,"title":"第7步:矿工","slug":"第7步-矿工","link":"#第7步-矿工","children":[]},{"level":3,"title":"第8步:仓库和信使","slug":"第8步-仓库和信使","link":"#第8步-仓库和信使","children":[]},{"level":3,"title":"第9步: 其余的殖民地","slug":"第9步-其余的殖民地","link":"#第9步-其余的殖民地","children":[]}]},{"level":2,"title":"详细步骤","slug":"详细步骤","link":"#详细步骤","children":[{"level":3,"title":"放置补给船或补给营地","slug":"放置补给船或补给营地","link":"#放置补给船或补给营地","children":[]},{"level":3,"title":"市政厅","slug":"市政厅","link":"#市政厅","children":[]}]},{"level":2,"title":"Setting Up Your Colony","slug":"setting-up-your-colony","link":"#setting-up-your-colony","children":[{"level":3,"title":"Step 1","slug":"step-1","link":"#step-1","children":[]},{"level":3,"title":"Step 2","slug":"step-2","link":"#step-2","children":[]},{"level":3,"title":"Step 3","slug":"step-3","link":"#step-3","children":[]},{"level":3,"title":"Step 4","slug":"step-4","link":"#step-4","children":[]},{"level":3,"title":"Final Notes","slug":"final-notes","link":"#final-notes","children":[]}]}],"git":{"createdTime":1705157278000,"updatedTime":1705432116000,"contributors":[{"name":"ddaodan","email":"731882332@qq.com","commits":3}]},"readingTime":{"minutes":9.29,"words":2786},"filePathRelative":"Tutorials/getting-started.md","localizedDate":"2024年1月13日","excerpt":""}');export{l as data}; diff --git a/assets/getting-started.html-cmKU-xSg.js b/assets/getting-started.html-cmKU-xSg.js new file mode 100644 index 0000000..b835de6 --- /dev/null +++ b/assets/getting-started.html-cmKU-xSg.js @@ -0,0 +1 @@ +const l=JSON.parse('{"key":"v-3d245998","path":"/Tutorials/getting-started.html","title":"入门","lang":"zh-CN","frontmatter":{"title":"入门"},"headers":[{"level":2,"title":"快速指南","slug":"快速指南","link":"#快速指南","children":[{"level":3,"title":"第1步:补给营地/补给船","slug":"第1步-补给营地-补给船","link":"#第1步-补给营地-补给船","children":[]},{"level":3,"title":"第2步:市政厅","slug":"第2步-市政厅","link":"#第2步-市政厅","children":[]},{"level":3,"title":"第3步:建筑工","slug":"第3步-建筑工","link":"#第3步-建筑工","children":[]},{"level":3,"title":"第4步:酒馆","slug":"第4步-酒馆","link":"#第4步-酒馆","children":[]},{"level":3,"title":"第5步:食物","slug":"第5步-食物","link":"#第5步-食物","children":[]},{"level":3,"title":"第6步:护林员","slug":"第6步-护林员","link":"#第6步-护林员","children":[]},{"level":3,"title":"第7步:矿工","slug":"第7步-矿工","link":"#第7步-矿工","children":[]},{"level":3,"title":"第8步:仓库和快递员","slug":"第8步-仓库和快递员","link":"#第8步-仓库和快递员","children":[]},{"level":3,"title":"第9步:其余的殖民地","slug":"第9步-其余的殖民地","link":"#第9步-其余的殖民地","children":[]}]},{"level":2,"title":"详细步骤","slug":"详细步骤","link":"#详细步骤","children":[{"level":3,"title":"放置补给船或补给营地","slug":"放置补给船或补给营地","link":"#放置补给船或补给营地","children":[]},{"level":3,"title":"市政厅","slug":"市政厅","link":"#市政厅","children":[]}]},{"level":2,"title":"设置你的殖民地","slug":"设置你的殖民地","link":"#设置你的殖民地","children":[{"level":3,"title":"第1步","slug":"第1步","link":"#第1步","children":[]},{"level":3,"title":"第2步","slug":"第2步","link":"#第2步","children":[]},{"level":3,"title":"第3步","slug":"第3步","link":"#第3步","children":[]},{"level":3,"title":"第4步","slug":"第4步","link":"#第4步","children":[]},{"level":3,"title":"最后说明","slug":"最后说明","link":"#最后说明","children":[]}]}],"git":{"createdTime":1705157278000,"updatedTime":1706029671000,"contributors":[{"name":"ddaodan","email":"731882332@qq.com","commits":5}]},"readingTime":{"minutes":11,"words":3299},"filePathRelative":"Tutorials/getting-started.md","localizedDate":"2024年1月13日","excerpt":""}');export{l as data}; diff --git a/assets/getting-started.html-e9ywOSFJ.js b/assets/getting-started.html-e9ywOSFJ.js deleted file mode 100644 index 26d2e6c..0000000 --- a/assets/getting-started.html-e9ywOSFJ.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o as h,c as d,a as e,e as a,w as o,b as t,d as n}from"./app-DfwSKz3Q.js";const u="/Minecolonies-Chinese-Wiki/assets/image/tutorial/achievements.png",c={},p=e("h1",{id:"入门",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#入门","aria-hidden":"true"},"#"),t(" 入门")],-1),f={class:"table-of-contents"},g={href:"https://www.curseforge.com/minecraft/modpacks/minecolonies-testpack",target:"_blank",rel:"noopener noreferrer"},b=e("a",{href:"../Installation/java"},"Java (Forge)",-1),y=e("a",{href:"../Installation/gdlauncher"},"GDLauncher",-1),m=e("a",{href:"../Installation/curseforge"},"Curseforge Launcher",-1),w=n('

快速指南

在开始新的殖民地之前,你应该找到一个理想的位置。你需要足够大的空间来建设一个完整的城市,至少8x8区块大小,并且地形较为平坦。

你还应该尽可能多的收集资源,包括木材、石头、煤炭、铁矿石、花朵、线、皮革、羊毛、树苗和食物等。

第1步:补给营地/补给船

一旦你选择了殖民地的位置,你必须放置一个补给船或者补给营地。在同一个世界中你只能放置其中一个。补给营地/船提供了你正式启动殖民地所需的市政厅方块。它们还提供了在建设殖民地过程中可能需要的一些其他物资。一旦你获得了市政厅方块和建筑工具,剩下的营地/船就只是个装饰物了。你可以选择保留或拆除它。

第2步:市政厅

市政厅方块实际上是创建殖民地的核心。它还充当殖民地的中心。这是你开始使用建筑工具放置建筑的地方。使用建筑工具可以确保你能够清楚地看到建筑将在哪里,朝向哪个方向,以及它是否位于正确的Y层级(一些建筑需要抬升到正确的Y层级)。

一旦放置了市政厅方块,你将开始获得最初的4名居民。

第3步:建筑工

在开始建设殖民地之前,你需要一个建筑工。建筑工必须先建造他们自己的建筑工小屋,然后才能建造其他小屋,而且他们不能将小屋建造或升级到高于他们自己小屋的等级。

第4步:酒馆

你的市民需要一个居住和睡觉的地方,因此建议接下来建造一个酒馆。酒馆还允许游客来到你的殖民地,你可以招募他们留下成为居民。

第5步:食物

你的殖民地需要的下一个重要物资是食物。获得食物的最快方式是建造一个渔夫小屋。你也可以建造农场或其中一种牲畜饲养工,但是建造一个渔夫小屋更快。如果你不想亲自为殖民者喂食(或烹饪食物),建造一个餐厅也是明智的选择。

第6步:林业师

如果您更青睐木材,建议接下来建造一个护林员小屋。这样,您的新护林员就可以开始为您的下一个建筑和工具等项目采集木材。

第7步:矿工

石材和矿石是殖民地的另一个主要需求,因此建造一个矿井是下一个合乎逻辑的步骤。

第8步:仓库和信使

在这一点上,您可能已经厌倦了将所有资源交给建筑师,然后再从渔夫、林业师、矿工等处取回。您可能还想将物品存放在一个地方。好吧,{% building_link warehouse %} 和 {% building_link courier %} 就是您正在寻找的解决方案!{% worker_link courier %} 在仓库和所有工作场所之间传送物品。剪贴板资源卷轴可能会有帮助!

第9步: 其余的殖民地

在这一步,您需要根据您的游戏方式和殖民地的需求来决定下一步做什么。但是您有几个方向可供选择。一旦获得七名居民,您可能会受到袭击,因此可能想要建造一个卫兵塔,或者可能有一名生病的居民,想要建造一个医院,或者可能决定建造一个锯木厂来为工人制作所需的物品。或者您可能只是想拥有一个特定的工人,或者找到了一个适合建造特定小屋的好地方。您决定您的殖民地将如何发展!

详细步骤

如果您已经到达这里,恭喜你! 您已经安装了模拟殖民地,并准备好踏上一场探险之旅,探索、征服并建立自己的殖民地。努力工作,将其打造成一个繁荣的城镇。磨练您的领导技能,不断壮大成为一个城市!最后,您能成为一位宏伟的领导者,最终实现大都市的目标吗?(查看游戏中的模拟殖民地成就。)

Achievements

为了避免错误和挫折,在开始游戏之前,请仔细阅读整个指南。

放置补给船或补给营地

要放置补给船,您需要拥有足够大的水域(至少32x20)。
要放置补给营地 ,您需要拥有足够大、平坦、清晰的土地(至少16x17方块)。

当您放置供给船/营地时,它将生成一个包含市政厅方块和建筑工具的箱子。 一旦放置了补给船/营地,就不能在同一个世界中放置另一个了。

通过直接右键单击水域/地面上的物品来放置供给船/营地 - 如果您已经有一个建筑工具,请不要在此时使用它(您预计从营地/船中获取工具,而不是已经拥有一个)。

提示

如果您无法放置供给营地/船,请逐块尝试:向右、向左、更近或更远离您清理的区域。该区域不能包含任何洞穴,也不能有花朵、草、蕨类、海藻、珊瑚等。

市政厅

一旦放置了市政厅,您殖民地的受保护区域将成为以您第一次放置市政厅方块的区块为中心的半径为4个区块的正方形(使用默认配置)。因此,请仔细规划您想要放置市政厅的位置。从该区块向每个方向延伸64个方块(4x4区块)将是您受保护的城镇区域,包括山脉、丘陵、湖泊、海洋、洞穴、世界生成的结构等,从基岩到天际限制。

提示

您在整个模组中最需要的工具是建筑工具(请查看我们的建筑工具页面)。从补给船/营地获取一个,或者制作另一个,以便您可以将所有小屋(包括市政厅)放置在完美的位置。

建筑工具的教学视频(过时)

',35),k=e("div",{class:"embed-responsive embed-responsive-16by9 mx-auto"},[e("iframe",{class:"embed-responsive-item",src:"https://www.youtube.com/embed/DVGGDUXbTOY",allow:"autoplay; encrypted-media",allowfullscreen:""})],-1),_=n('

Due to the protected area of each colony, you have to carefully scout your surrounding to make sure you are clear of any other colonies nearby preventing you from placing your {% building townhall %} or limiting your colony area in that direction (in multiplayer, etc.). If there is another colony too close to your current position, you won't be able to place a {% building townhall %}.

Location info of the next closest colony exists in the debug screen (displayed when you press F3). If there is a colony close to your current position, it will also show you the required distance away to place your {% building townhall %}.

Next Colony

Player's Colony

No Colony

For example, in the official MineColonies server it will be the default 4 chunk radius (4 + 4 + 1 {center Chunk where {% building townhall %} was placed} = 9 chunks or 144 total blocks required). It therefore, will tell you: "Next colony is XXX blocks away. (272 required to place a colony)."

Now, after you have explored, thought carefully, planned, and found the perfect spot to start your colony, let's take a look at the steps to get your colony running!

Setting Up Your Colony

Step 1

Get enough materials and craft your Supply Ship/Camp, then place it by right-clicking a block with it (do not use the build tool, if you happen to already have one). There will be a chest (or rack) inside the placed Ship/Camp with a {% building townhall %} block and a build tool.

Hint: Gather as many materials as possible to give to your {% worker_link builder %} when they start building. They will ask you for all kinds of materials for each building or upgrade, depending on the style of building you have chosen. The materials needed for most styles will be mainly wood, cobblestone, and torches for the lower levels. Further upgrades will require more elaborate materials.

Step 2

After you have carefully decided where you want to place your 市政厅 (remember, the position where you placed the {% building townhall %} block at first will be the center of your colony's protected area. Once placed, the area will be set and cannot be changed), use your build tool to place the {% building townhall %}. Once you commit to the placement of the {% building townhall %} (the green checkmark), the {% building townhall %} block will be placed. To officially start a colony, you need to right-click on the block, then select Create New Colony. Once you've done this, your initial four citizens will start appearing!

You can now right-click the {% building townhall %} block again to look what else you can configure in your colony, like your colony name!

You can see the full layout of the GUI here.

Step 3

Before any other building can be built, you must craft the {% building_link builder %} block and use your build tool to place it. Once you commit to the placement of the Builder's Hut (the green checkmark), the block will be placed and a Builder will be automatically assigned (or you can manually assign one with the best traits for a Builder if you changed this in the setting tab in the {% building townhall %} its GUI).

You now officially have a {% worker_link builder %}! CONGRATULATIONS!

When accessing the {% building builder %} block by right-clicking on it, you will see a GUI with different options:

Builder's hut GUI

You will have to click Build Options on the {% building builder %}, then click Build Building. This will give your new {% worker builder %} the build assignment so they can build their own hut first. If the {% building builder %} is not built, the {% worker builder %} cannot build any other buildings.

The {% worker builder %} will ask for the materials they need. Right-click on them when they have a red icon above their head to see the materials they currently need.

Hint: If you see that the Builder hasn't finished a build order and you don't see them asking for any materials, go to the Builder's Hut, recall the Builder, and wait a bit to see what they need. Also, check page 2 of the Builder's Hut GUI and see what resources are in red (those are missing resources).

Step 4

Once the Builder has finished their hut, you're ready to start building any other building you want! Just craft the desired block and use your build tool to place the building. Once it's placed, go into the GUI for the new block, click Build Options, and then click Build Building. It's that simple!

Hint: Consider upgrading the Builder's Hut to level 2 as soon as you can so the Builder can upgrade other buildings.

Final Notes

You have now completed the most important steps to start and create your colony!

Your question now is probably, "What to build next?" The 市政厅, {% building_link mine %}, {% building_link lumberjack %}, {% building_link farm %}, {% building_link fisher %}, {% building_link guardtower %}, {% building_link courier %}, {% building_link bakery %}, {% building_link restaurant %}, and more are probably good places to start.

But you start with only 4 citizens! Now what? Well, the next step after your 4 citizens are employed and are working hard is to plan and place the {% building_link house %}. This will give you additional citizens for each level of a House you build in your colony (after your inital four citizens are housed)! Now, what do you do with so many citizens? You cannot assign more than 1 worker per hut. Therefore, consider building additional huts for more Miners, Foresters, Builders, Farmers, Fishers, and many more! If you struggle with keeping track of what everyone needs, consider making a Clipboard and Resource Scroll. Though you only need one Clipboard, you can make a Resource Scroll for each Builder to keep track of their needs!

Hint: Upgrade your huts to the highest level possible (level 5 for all of them except the {% building_link tavern %}) to get achievements (and increase the speed at which the worker levels).

',31);function x(v,B){const i=l("router-link"),r=l("ExternalLinkIcon");return h(),d("div",null,[p,e("nav",f,[e("ul",null,[e("li",null,[a(i,{to:"#快速指南"},{default:o(()=>[t("快速指南")]),_:1}),e("ul",null,[e("li",null,[a(i,{to:"#第1步-补给营地-补给船"},{default:o(()=>[t("第1步:补给营地/补给船")]),_:1})]),e("li",null,[a(i,{to:"#第2步-市政厅"},{default:o(()=>[t("第2步:市政厅")]),_:1})]),e("li",null,[a(i,{to:"#第3步-建筑工"},{default:o(()=>[t("第3步:建筑工")]),_:1})]),e("li",null,[a(i,{to:"#第4步-酒馆"},{default:o(()=>[t("第4步:酒馆")]),_:1})]),e("li",null,[a(i,{to:"#第5步-食物"},{default:o(()=>[t("第5步:食物")]),_:1})]),e("li",null,[a(i,{to:"#第6步-林业师"},{default:o(()=>[t("第6步:林业师")]),_:1})]),e("li",null,[a(i,{to:"#第7步-矿工"},{default:o(()=>[t("第7步:矿工")]),_:1})]),e("li",null,[a(i,{to:"#第8步-仓库和信使"},{default:o(()=>[t("第8步:仓库和信使")]),_:1})]),e("li",null,[a(i,{to:"#第9步-其余的殖民地"},{default:o(()=>[t("第9步: 其余的殖民地")]),_:1})])])]),e("li",null,[a(i,{to:"#详细步骤"},{default:o(()=>[t("详细步骤")]),_:1}),e("ul",null,[e("li",null,[a(i,{to:"#放置补给船或补给营地"},{default:o(()=>[t("放置补给船或补给营地")]),_:1})]),e("li",null,[a(i,{to:"#市政厅"},{default:o(()=>[t("市政厅")]),_:1})])])]),e("li",null,[a(i,{to:"#setting-up-your-colony"},{default:o(()=>[t("Setting Up Your Colony")]),_:1}),e("ul",null,[e("li",null,[a(i,{to:"#step-1"},{default:o(()=>[t("Step 1")]),_:1})]),e("li",null,[a(i,{to:"#step-2"},{default:o(()=>[t("Step 2")]),_:1})]),e("li",null,[a(i,{to:"#step-3"},{default:o(()=>[t("Step 3")]),_:1})]),e("li",null,[a(i,{to:"#step-4"},{default:o(()=>[t("Step 4")]),_:1})]),e("li",null,[a(i,{to:"#final-notes"},{default:o(()=>[t("Final Notes")]),_:1})])])])])]),e("p",null,[t("本教程假设你已经安装了mod。如果你想了解如何安装"),e("a",g,[t("官方整合包"),a(r)]),t(", 你可以在"),b,t("、"),y,t("以及"),m,t("上找到相应的安装说明。")]),w,k,_])}const S=s(c,[["render",x],["__file","getting-started.html.vue"]]);export{S as default}; diff --git a/assets/hmcl.html-DJuZyzNI.js b/assets/hmcl.html-DJuZyzNI.js deleted file mode 100644 index 7597752..0000000 --- a/assets/hmcl.html-DJuZyzNI.js +++ /dev/null @@ -1 +0,0 @@ -const t=JSON.parse('{"key":"v-3631dba2","path":"/Installation/hmcl.html","title":"HMCL 启动器","lang":"zh-CN","frontmatter":{"title":"HMCL 启动器"},"headers":[],"git":{"createdTime":1705157278000,"updatedTime":1705237307000,"contributors":[{"name":"ddaodan","email":"731882332@qq.com","commits":2}]},"readingTime":{"minutes":0.06,"words":19},"filePathRelative":"Installation/hmcl.md","localizedDate":"2024年1月13日","excerpt":""}');export{t as data}; diff --git a/assets/hmcl.html-XybsHrXO.js b/assets/hmcl.html-XybsHrXO.js new file mode 100644 index 0000000..b2d68f5 --- /dev/null +++ b/assets/hmcl.html-XybsHrXO.js @@ -0,0 +1 @@ +import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r,o as l,c as d,b as e,e as t,w as c,d as n,f as h}from"./app-rX80dX-Q.js";const s={},p=e("h1",{id:"hmcl-启动器",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#hmcl-启动器","aria-hidden":"true"},"#"),n(" HMCL 启动器")],-1),u={class:"table-of-contents"},f={href:"https://hmcl.huangyuhui.net/",target:"_blank",rel:"noopener noreferrer"},_=e("h2",{id:"下载hello-minecraft-launcher",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#下载hello-minecraft-launcher","aria-hidden":"true"},"#"),n(" 下载Hello Minecraft! Launcher")],-1),m={href:"https://hmcl.huangyuhui.net/download/",target:"_blank",rel:"noopener noreferrer"},x=h('

安装Minecraft 1.20.1

打开启动器,在左侧选择游戏-下载->新游戏-游戏,游戏版本选择1.20.1正式版,安装最新版本的Forge。

提示

你可以重命名这个版本,例如模拟殖民地,以便于识别。

警告

不要安装Optifine!这可能会导致出现一些莫名其妙的问题!

安装模拟殖民地

返回主页,在左侧选择游戏-下载->游戏内容-模组,在名称处输入Minecolonies,选择游戏版本为1.20.1,点击搜索。

提示

你也可以搜索模拟殖民地,正常情况下也是可以搜索到的。

搜索结果出现后,选择对应的结果,下拉找到1.20.1,点击展开后选择最新的版本(日期最接近现在的),确认安装。

安装前置

下载完成后,点击上方对应的前置模组,重复上述步骤,安装全部的前置模组。

警告

所有的前置模组缺一不可,缺少任何一个都无法启动游戏!

启动游戏

当以上步骤完成后就可以启动游戏了!不过在这之前记得添加一个游戏账户哦!

',13);function v(b,k){const a=r("router-link"),o=r("ExternalLinkIcon");return l(),d("div",null,[p,e("nav",u,[e("ul",null,[e("li",null,[t(a,{to:"#下载hello-minecraft-launcher"},{default:c(()=>[n("下载Hello Minecraft! Launcher")]),_:1})]),e("li",null,[t(a,{to:"#安装minecraft-1-20-1"},{default:c(()=>[n("安装Minecraft 1.20.1")]),_:1})]),e("li",null,[t(a,{to:"#安装模拟殖民地"},{default:c(()=>[n("安装模拟殖民地")]),_:1})]),e("li",null,[t(a,{to:"#安装前置"},{default:c(()=>[n("安装前置")]),_:1})]),e("li",null,[t(a,{to:"#启动游戏"},{default:c(()=>[n("启动游戏")]),_:1})])])]),e("p",null,[n("本教程将通过使用"),e("a",f,[n("Hello Minecraft! Launcher"),t(o)]),n("下载并安装模拟殖民地。")]),_,e("p",null,[n("点击"),e("a",m,[n("这里"),t(o)]),n("前往官方下载页面")]),x])}const L=i(s,[["render",v],["__file","hmcl.html.vue"]]);export{L as default}; diff --git a/assets/hmcl.html-hOzTwKg8.js b/assets/hmcl.html-hOzTwKg8.js deleted file mode 100644 index 456aeec..0000000 --- a/assets/hmcl.html-hOzTwKg8.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as c}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as o,a as e,b as t}from"./app-DfwSKz3Q.js";const n={},s=e("h1",{id:"hmcl-启动器",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#hmcl-启动器","aria-hidden":"true"},"#"),t(" HMCL 启动器")],-1),r=e("div",{class:"hint-container tip"},[e("p",{class:"hint-container-title"},"提示"),e("p",null,[t("本文为中文Wiki原创"),e("br"),t(" [[toc]]")])],-1),i=[s,r];function l(_,h){return a(),o("div",null,i)}const f=c(n,[["render",l],["__file","hmcl.html.vue"]]);export{f as default}; diff --git a/assets/hmcl.html-nuGELm3C.js b/assets/hmcl.html-nuGELm3C.js new file mode 100644 index 0000000..d9af3e2 --- /dev/null +++ b/assets/hmcl.html-nuGELm3C.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-3631dba2","path":"/Installation/hmcl.html","title":"HMCL 启动器","lang":"zh-CN","frontmatter":{"title":"HMCL 启动器"},"headers":[{"level":2,"title":"下载Hello Minecraft! Launcher","slug":"下载hello-minecraft-launcher","link":"#下载hello-minecraft-launcher","children":[]},{"level":2,"title":"安装Minecraft 1.20.1","slug":"安装minecraft-1-20-1","link":"#安装minecraft-1-20-1","children":[]},{"level":2,"title":"安装模拟殖民地","slug":"安装模拟殖民地","link":"#安装模拟殖民地","children":[]},{"level":2,"title":"安装前置","slug":"安装前置","link":"#安装前置","children":[]},{"level":2,"title":"启动游戏","slug":"启动游戏","link":"#启动游戏","children":[]}],"git":{"createdTime":1705157278000,"updatedTime":1705669699000,"contributors":[{"name":"ddaodan","email":"731882332@qq.com","commits":3}]},"readingTime":{"minutes":1.16,"words":349},"filePathRelative":"Installation/hmcl.md","localizedDate":"2024年1月13日","excerpt":""}');export{e as data}; diff --git a/assets/index-7SG8bi1h.js b/assets/index-7SG8bi1h.js new file mode 100644 index 0000000..6932654 --- /dev/null +++ b/assets/index-7SG8bi1h.js @@ -0,0 +1 @@ +var v=function(){return!!(window.location.hostname==="localhost"||window.location.hostname==="[::1]"||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/))},c;typeof window<"u"&&(typeof Promise<"u"?c=new Promise(function(t){return window.addEventListener("load",t)}):c={then:function(t){return window.addEventListener("load",t)}});function s(t,n){n===void 0&&(n={});var i=n.registrationOptions;i===void 0&&(i={}),delete n.registrationOptions;var e=function(r){for(var f=[],a=arguments.length-1;a-- >0;)f[a]=arguments[a+1];n&&n[r]&&n[r].apply(n,f)};"serviceWorker"in navigator&&c.then(function(){v()?(l(t,e,i),navigator.serviceWorker.ready.then(function(r){e("ready",r)}).catch(function(r){return o(e,r)})):(u(t,e,i),navigator.serviceWorker.ready.then(function(r){e("ready",r)}).catch(function(r){return o(e,r)}))})}function o(t,n){navigator.onLine||t("offline"),t("error",n)}function u(t,n,i){navigator.serviceWorker.register(t,i).then(function(e){if(n("registered",e),e.waiting){n("updated",e);return}e.onupdatefound=function(){n("updatefound",e);var r=e.installing;r.onstatechange=function(){r.state==="installed"&&(navigator.serviceWorker.controller?n("updated",e):n("cached",e))}}}).catch(function(e){return o(n,e)})}function l(t,n,i){fetch(t).then(function(e){e.status===404?(n("error",new Error("Service worker not found at "+t)),d()):e.headers.get("content-type").indexOf("javascript")===-1?(n("error",new Error("Expected "+t+" to have javascript content-type, but received "+e.headers.get("content-type"))),d()):u(t,n,i)}).catch(function(e){return o(n,e)})}function d(){"serviceWorker"in navigator&&navigator.serviceWorker.ready.then(function(t){t.unregister()}).catch(function(t){return o(emit,t)})}export{s as register,d as unregister}; diff --git a/assets/index.html-26zp0mBY.js b/assets/index.html-26zp0mBY.js new file mode 100644 index 0000000..8a577f7 --- /dev/null +++ b/assets/index.html-26zp0mBY.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c as a,e as c}from"./app-rX80dX-Q.js";const r={};function s(l,_){const e=t("AutoCatalog");return n(),a("div",null,[c(e,{base:"/Installation/"})])}const f=o(r,[["render",s],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-4_SvwSbq.js b/assets/index.html-4_SvwSbq.js deleted file mode 100644 index 4c77b3c..0000000 --- a/assets/index.html-4_SvwSbq.js +++ /dev/null @@ -1 +0,0 @@ -const e=JSON.parse('{"key":"v-f45ff45a","path":"/Tutorials/","title":"Tutorials","lang":"zh-CN","frontmatter":{"title":"Tutorials","article":false,"feed":false,"sitemap":false},"headers":[],"git":{},"readingTime":{"minutes":0,"words":1},"filePathRelative":null,"excerpt":""}');export{e as data}; diff --git a/assets/index.html-5FyXhD0v.js b/assets/index.html-5FyXhD0v.js new file mode 100644 index 0000000..fb6e95d --- /dev/null +++ b/assets/index.html-5FyXhD0v.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-384502bc","path":"/Installation/","title":"安装","lang":"zh-CN","frontmatter":{"index":false,"title":"安装"},"headers":[],"git":{"createdTime":1705669699000,"updatedTime":1705669699000,"contributors":[{"name":"ddaodan","email":"731882332@qq.com","commits":1}]},"readingTime":{"minutes":0.03,"words":9},"filePathRelative":"Installation/README.md","localizedDate":"2024年1月19日","excerpt":""}');export{e as data}; diff --git a/assets/index.html-Ds4LqAQv.js b/assets/index.html-Ds4LqAQv.js deleted file mode 100644 index d3dca92..0000000 --- a/assets/index.html-Ds4LqAQv.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,e as r}from"./app-DfwSKz3Q.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-EmnQAaQ8.js b/assets/index.html-EmnQAaQ8.js deleted file mode 100644 index 2e36985..0000000 --- a/assets/index.html-EmnQAaQ8.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as r,c as t,a as e,b as s}from"./app-DfwSKz3Q.js";const a={},n=e("h1",{id:"欢迎来到模拟殖民地wiki",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#欢迎来到模拟殖民地wiki","aria-hidden":"true"},"#"),s(" 欢迎来到模拟殖民地Wiki!")],-1),o=e("p",null,[s("模拟殖民地是一个交互式建筑模组,可让你在 Minecraft 中创建自己的繁荣城镇。它通过提供一切你需要的工具,让你的领导技能得以发挥。模拟殖民地提供了灵活性,让你创建一个与其他玩家独一无二的殖民地。有了如此多的选择,你每次都会打造一个不同的殖民地,适应任何生态区域,建在山内、山顶、海底,或是天空中。"),e("br"),s(" 唯一的限制就是你的想象力!"),e("br"),s(" 模拟殖民地拥有 NPC 工人,例如 Builders, Farmers, Fishers, Foresters, Miners, Smelters, Bakers, Cooks, Couriers, five types of animal herders, Composters, and many more,随着模组的发展,更多内容正在开发和添加。"),e("br"),s(" It also includes specialized buildings such as the Warehouse, Residence, Town Hall, Barracks, Library, University, and even the School.")],-1),c=e("div",{class:"hint-container tip"},[e("p",{class:"hint-container-title"},"提示"),e("p",null,"目前Wiki正处于起步阶段,当前的进度是将英文Wiki的内容搬运过来后进行本地化。")],-1),l=[n,o,c];function d(h,_){return r(),t("div",null,l)}const f=i(a,[["render",d],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-Gvxye8Fe.js b/assets/index.html-Gvxye8Fe.js new file mode 100644 index 0000000..e10a6b5 --- /dev/null +++ b/assets/index.html-Gvxye8Fe.js @@ -0,0 +1 @@ +import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as s,o as a,c,a as n,b as e,d as o,e as t}from"./app-rX80dX-Q.js";const l={},d=e("h1",{id:"欢迎来到模拟殖民地wiki",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#欢迎来到模拟殖民地wiki","aria-hidden":"true"},"#"),o(" 欢迎来到模拟殖民地Wiki!")],-1),h=e("p",null,[o("模拟殖民地是一个交互式建筑模组,可让你在Minecraft中创建自己的繁荣城镇。它通过提供一切你需要的工具,让你的领导技能得以发挥。模拟殖民地提供了灵活性,让你创建一个与其他玩家独一无二的殖民地。有了如此多的选择,你每次都会打造一个不同的殖民地,适应任何生态区域,建在山内、山顶、海底,或是天空中。"),e("br"),o(" 唯一的限制就是你的想象力!"),e("br"),o(" 模拟殖民地拥有NPC工人,例如 "),e("a",{href:"../Workers/builder"},"建筑工"),o(", [Farmers], [渔夫], [护林员], [矿工], [Smelters], [Bakers], [Cooks], C[ouriers], 五种牧民, [Composters]等等,随着模组的发展,更多内容正在开发和添加。"),e("br"),o(" It also includes specialized buildings such as the [Warehouse], [Residence], "),e("a",{href:"../Buildings/townhall"},"市政厅"),o(", [Barracks], [图书馆], [大学], and even the School.")],-1),u={href:"https://github.com/ldtteam/minecolonies",target:"_blank",rel:"noopener noreferrer"},p={href:"https://www.patreon.com/minecolonies",target:"_blank",rel:"noopener noreferrer"},m={href:"https://github.com/ldtteam/minecolonies/issues/new/choose",target:"_blank",rel:"noopener noreferrer"},_={href:"https://discord.minecolonies.com",target:"_blank",rel:"noopener noreferrer"},f=e("h2",{id:"让我们开始吧",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#让我们开始吧","aria-hidden":"true"},"#"),o(" 让我们开始吧!")],-1),k=e("p",null,"在导航栏中选择你要查看的页面。",-1),b=e("div",{class:"hint-container tip"},[e("p",{class:"hint-container-title"},"提示"),e("p",null,"目前Wiki正处于起步阶段,当前的进度是将英文Wiki的内容搬运过来后进行本地化。")],-1);function g(w,v){const r=s("ExternalLinkIcon");return a(),c("div",null,[n(" buildings "),n(" items "),n(" workers "),d,h,e("p",null,[o("MineColonies is a free and open-source mod developed by Let's Dev Together (LDT), a non-profit community. The source code is available on "),e("a",u,[o("GitHub"),t(r)]),o(". Our developers are a hard-working, well-integrated coding team, continuously adding more content to make the MineColonies experience even greater. However, we are always looking for more people to contribute to the mod, whether as a coder, builder, artist, voice actor, wiki editor, tester, or simply supporting us on "),e("a",p,[o("Patreon"),t(r)]),o("!")]),e("p",null,[o("Found a bug? Report it as an "),e("a",m,[o("issue"),t(r)]),o(" to help us give you the best gaming experience. If you require any help or just want to join the conversation, check us out on "),e("a",_,[o("Discord"),t(r)]),o("!")]),f,k,b])}const C=i(l,[["render",g],["__file","index.html.vue"]]);export{C as default}; diff --git a/assets/index.html-QIJUgJxO.js b/assets/index.html-QIJUgJxO.js new file mode 100644 index 0000000..ca6e177 --- /dev/null +++ b/assets/index.html-QIJUgJxO.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-f45ff45a","path":"/Tutorials/","title":"教程","lang":"zh-CN","frontmatter":{"index":false,"title":"教程"},"headers":[],"git":{"createdTime":1705669699000,"updatedTime":1705669699000,"contributors":[{"name":"ddaodan","email":"731882332@qq.com","commits":1}]},"readingTime":{"minutes":0.03,"words":9},"filePathRelative":"Tutorials/README.md","localizedDate":"2024年1月19日","excerpt":""}');export{e as data}; diff --git a/assets/index.html-SgfpfqAF.js b/assets/index.html-SgfpfqAF.js new file mode 100644 index 0000000..906ed4b --- /dev/null +++ b/assets/index.html-SgfpfqAF.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-8daa1a0e","path":"/","title":"开始","lang":"zh-CN","frontmatter":{"home":true,"heroImage":"./assets/image/minecolonies_wiki.png","actions":[{"text":"开始阅读","link":"/Installation","type":"primary"}],"features":null,"title":"开始"},"headers":[{"level":2,"title":"让我们开始吧!","slug":"让我们开始吧","link":"#让我们开始吧","children":[]}],"git":{"createdTime":1705157278000,"updatedTime":1705669699000,"contributors":[{"name":"ddaodan","email":"731882332@qq.com","commits":4}]},"readingTime":{"minutes":1.4,"words":420},"filePathRelative":"README.md","localizedDate":"2024年1月13日","excerpt":""}');export{e as data}; diff --git a/assets/index.html-VMcSGSDB.js b/assets/index.html-VMcSGSDB.js deleted file mode 100644 index ce421e1..0000000 --- a/assets/index.html-VMcSGSDB.js +++ /dev/null @@ -1 +0,0 @@ -const t=JSON.parse('{"key":"v-384502bc","path":"/Installation/","title":"Installation","lang":"zh-CN","frontmatter":{"title":"Installation","article":false,"feed":false,"sitemap":false},"headers":[],"git":{},"readingTime":{"minutes":0,"words":1},"filePathRelative":null,"excerpt":""}');export{t as data}; diff --git a/assets/index.html-iGaRDsYP.js b/assets/index.html-iGaRDsYP.js new file mode 100644 index 0000000..8cc0181 --- /dev/null +++ b/assets/index.html-iGaRDsYP.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c as a,e as r}from"./app-rX80dX-Q.js";const c={};function s(_,l){const e=t("AutoCatalog");return n(),a("div",null,[r(e,{base:"/Tutorials/"})])}const f=o(c,[["render",s],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-nt6y7cdN.js b/assets/index.html-nt6y7cdN.js deleted file mode 100644 index d3dca92..0000000 --- a/assets/index.html-nt6y7cdN.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,e as r}from"./app-DfwSKz3Q.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-pFrUCak5.js b/assets/index.html-pFrUCak5.js new file mode 100644 index 0000000..3f0562a --- /dev/null +++ b/assets/index.html-pFrUCak5.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c as a,e as c}from"./app-rX80dX-Q.js";const r={};function s(_,l){const e=t("AutoCatalog");return n(),a("div",null,[c(e,{base:"/Buildings/"})])}const d=o(r,[["render",s],["__file","index.html.vue"]]);export{d as default}; diff --git a/assets/index.html-qMHFXmIa.js b/assets/index.html-qMHFXmIa.js new file mode 100644 index 0000000..bf02aac --- /dev/null +++ b/assets/index.html-qMHFXmIa.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-2b686fa9","path":"/Buildings/","title":"建筑","lang":"zh-CN","frontmatter":{"index":false,"title":"建筑"},"headers":[],"git":{"createdTime":1705669699000,"updatedTime":1705669699000,"contributors":[{"name":"ddaodan","email":"731882332@qq.com","commits":1}]},"readingTime":{"minutes":0.03,"words":9},"filePathRelative":"Buildings/README.md","localizedDate":"2024年1月19日","excerpt":""}');export{e as data}; diff --git a/assets/index.html-yqP3NtEM.js b/assets/index.html-yqP3NtEM.js deleted file mode 100644 index dcbdfa0..0000000 --- a/assets/index.html-yqP3NtEM.js +++ /dev/null @@ -1 +0,0 @@ -const e=JSON.parse('{"key":"v-8daa1a0e","path":"/","title":"开始","lang":"zh-CN","frontmatter":{"home":true,"heroImage":"./assets/image/minecolonies_wiki.png","actions":[{"text":"开始阅读","link":"/Installation","type":"primary"}],"features":null,"title":"开始"},"headers":[],"git":{"createdTime":1705157278000,"updatedTime":1705432116000,"contributors":[{"name":"ddaodan","email":"731882332@qq.com","commits":3}]},"readingTime":{"minutes":0.9,"words":269},"filePathRelative":"README.md","localizedDate":"2024年1月13日","excerpt":""}');export{e as data}; diff --git a/assets/java.html-7czWNuwa.js b/assets/java.html-cvzZEkzf.js similarity index 98% rename from assets/java.html-7czWNuwa.js rename to assets/java.html-cvzZEkzf.js index 6656e26..8b3192d 100644 --- a/assets/java.html-7czWNuwa.js +++ b/assets/java.html-cvzZEkzf.js @@ -1 +1 @@ -import{_ as s}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as i,o as d,c,a as e,e as n,w as a,b as o,d as l}from"./app-DfwSKz3Q.js";const h={},u=e("h1",{id:"minecraft-java版",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#minecraft-java版","aria-hidden":"true"},"#"),o(" Minecraft Java版")],-1),f={class:"table-of-contents"},m=e("h2",{id:"installing-minecolonies-mod-on-your-original-minecraft-launcher",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#installing-minecolonies-mod-on-your-original-minecraft-launcher","aria-hidden":"true"},"#"),o(" Installing MineColonies Mod on your original Minecraft Launcher")],-1),g=e("li",null,[e("p",null,[o("This process is for installing only the MineColonies mod in your original Minecraft launcher. You will "),e("em",null,"not"),o(" be able to connect to the "),e("strong",null,"MineColonies Official Servers"),o(" due to the servers having a balanced variety of other mods as well.")])],-1),p=e("a",{href:"../installation/gdlauncher"},"GDLauncher",-1),_={href:"https://www.curseforge.com/minecraft/modpacks/minecolonies-testpack",target:"_blank",rel:"noopener noreferrer"},w=e("li",null,[e("p",null,"Installation of the MineColonies mod is very simple. It does require Minecraft Forge to be able to integrate mods into the Minecraft game, though.")],-1),y=e("p",null,[e("em",null,"We cannot offer support on the installation of Minecraft Forge, however, there are many excellent (and more in-depth) tutorials online. Just Google 'how to install minecraft forge' to find some.")],-1),v=e("hr",null,null,-1),M=e("h3",{id:"download-forge",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#download-forge","aria-hidden":"true"},"#"),o(" Download Forge")],-1),b={href:"http://files.minecraftforge.net",target:"_blank",rel:"noopener noreferrer"},k=e("em",null,"installer",-1),C=l('

Run Forge Installer

Run the downloaded version and make sure it's on Install Client (or Server if you plan to run a Minecraft server). The installation path is preset according to Minecraft's standard installation path. If you have it installed in a different directory, change the installation directory. When it's done installing, you will see a complete message.

Forge installer Forge installed

Download MineColonies

',4),x={href:"https://curseforge.com/minecraft/mc-mods/minecolonies/files/all",target:"_blank",rel:"noopener noreferrer"},F=l('

On your computer, go to the .minecraft/mods folder. To be able to find this folder, just click on the start button and in the search box type: %appdata% and hit "search". It will open the folder where you can find the .minecraft folder. Open this folder and inside you will find the mods folder.

Copy MineColonies to Mods

Once you are in the .minecraft/mods folder, copy the downloaded MineColonies file you downloaded in the Download MineColonies step and paste it here. Note: DO NOT extract the file if the option appears. Just put the .jar file in here without extracting its contents.

Do the Same Thing for Structurize

',5),D={href:"https://www.curseforge.com/minecraft/mc-mods/structurize/files/all",target:"_blank",rel:"noopener noreferrer"},I=e("p",null,"MineColonies doesn't always accept the latest version of Structurize. To ensure you have the required version, first, click on the MineColonies file name (on the Curseforge website). You'll be taken to the changelog, where it should say the accepted Structurize version at the top. Download that exact version.",-1),S=e("h4",{id:"cannot-add-modpack-without-external-installer",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#cannot-add-modpack-without-external-installer","aria-hidden":"true"},"#"),o(" Cannot Add Modpack Without External Installer")],-1),z=e("a",{href:"../../source/installation/curseforge"},"Curseforge launcher",-1),L=e("a",{href:"../../source/installation/gdlauncher"},"GDlauncher",-1),T={href:"https://multimc.org/#Download",target:"_blank",rel:"noopener noreferrer"},O={href:"https://github.com/Vazkii/CMPDL",target:"_blank",rel:"noopener noreferrer"},N=e("p",null,"Unfortunately, manually 'installing' modpacks is no longer an option as Curseforge no longer distributes mods in the downloaded zip files for modpacks due to licensing issues.",-1),j=e("h3",{id:"run-minecraft-and-select-profile",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#run-minecraft-and-select-profile","aria-hidden":"true"},"#"),o(" Run Minecraft and Select Profile")],-1),q=e("p",null,[o("Run your original Minecraft launcher. Make sure you have the "),e("strong",null,"Forge"),o(" profile loaded and hit play. (You might need to go to Installations and create a new installation first.)")],-1),R=e("p",null,[e("img",{src:"https://wiki.minecolonies.ldtteam.com/assets/images/installation/forge_3.png",alt:"Minecraft Launcher"})],-1),G=e("p",null,"That's it. If you followed these steps, you are ready to play MineColonies!",-1);function V(W,E){const t=i("router-link"),r=i("ExternalLinkIcon");return d(),c("div",null,[u,e("nav",f,[e("ul",null,[e("li",null,[n(t,{to:"#installing-minecolonies-mod-on-your-original-minecraft-launcher"},{default:a(()=>[o("Installing MineColonies Mod on your original Minecraft Launcher")]),_:1}),e("ul",null,[e("li",null,[n(t,{to:"#download-forge"},{default:a(()=>[o("Download Forge")]),_:1})]),e("li",null,[n(t,{to:"#run-forge-installer"},{default:a(()=>[o("Run Forge Installer")]),_:1})]),e("li",null,[n(t,{to:"#download-minecolonies"},{default:a(()=>[o("Download MineColonies")]),_:1})]),e("li",null,[n(t,{to:"#navigate-to-mods-folder"},{default:a(()=>[o("Navigate to Mods Folder")]),_:1})]),e("li",null,[n(t,{to:"#copy-minecolonies-to-mods"},{default:a(()=>[o("Copy MineColonies to Mods")]),_:1})]),e("li",null,[n(t,{to:"#do-the-same-thing-for-structurize"},{default:a(()=>[o("Do the Same Thing for Structurize")]),_:1})]),e("li",null,[n(t,{to:"#run-minecraft-and-select-profile"},{default:a(()=>[o("Run Minecraft and Select Profile")]),_:1})])])])])]),m,e("ul",null,[g,e("li",null,[e("p",null,[o("For connecting to the official server, install "),p,o(" or the Curseforge Launcher. You can visit the "),e("a",_,[o("CurseForge"),n(r)]),o(" site for a zip file containing all mods (with the correct versions) we are currently using on the official server, as well as all the appropriate configs, scripts, and the server.dat file for our modpack official server. If all these additional mods, configs, scripts, and the server.dat are downloaded and installed manually, you will be able to connect to our official server.")])]),w]),y,v,M,e("p",null,[o("Go to the "),e("a",b,[o("Minecraft Forge Download page"),n(r)]),o(" and download the latest version's "),k,o(" (not the recommended version).")]),C,e("p",null,[o("Go to the "),e("a",x,[o("MineColonies CurseForge Download page"),n(r)]),o(" site and download the latest 1.16.5 alpha version of MineColonies.")]),F,e("p",null,[o("Follow the last three steps, except for Structurize (which MineColonies needs to work). Find the download page for Structurize "),e("a",D,[o("here"),n(r)]),o(".")]),I,S,e("p",null,[o("If you are adding the entire modpack to be able to play on the official server, you will require an external launcher to download the pack. The "),z,o(" works on Windows or macOS. Other options include "),L,o(" or "),e("a",T,[o("MultiMC"),n(r)]),o(", both offering Windows, macOS and Linux support. Finally, if you can not or do not wish to 'install' a launcher you can use "),e("a",O,[o("CMPDL"),n(r)]),o(" that will run a small Java program to download the required modpack.")]),N,j,q,R,G])}const Y=s(h,[["render",V],["__file","java.html.vue"]]);export{Y as default}; +import{_ as s}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as i,o as d,c,b as e,e as n,w as a,d as o,f as l}from"./app-rX80dX-Q.js";const h={},u=e("h1",{id:"minecraft-java版",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#minecraft-java版","aria-hidden":"true"},"#"),o(" Minecraft Java版")],-1),f={class:"table-of-contents"},m=e("h2",{id:"installing-minecolonies-mod-on-your-original-minecraft-launcher",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#installing-minecolonies-mod-on-your-original-minecraft-launcher","aria-hidden":"true"},"#"),o(" Installing MineColonies Mod on your original Minecraft Launcher")],-1),g=e("li",null,[e("p",null,[o("This process is for installing only the MineColonies mod in your original Minecraft launcher. You will "),e("em",null,"not"),o(" be able to connect to the "),e("strong",null,"MineColonies Official Servers"),o(" due to the servers having a balanced variety of other mods as well.")])],-1),p=e("a",{href:"../installation/gdlauncher"},"GDLauncher",-1),_={href:"https://www.curseforge.com/minecraft/modpacks/minecolonies-testpack",target:"_blank",rel:"noopener noreferrer"},w=e("li",null,[e("p",null,"Installation of the MineColonies mod is very simple. It does require Minecraft Forge to be able to integrate mods into the Minecraft game, though.")],-1),y=e("p",null,[e("em",null,"We cannot offer support on the installation of Minecraft Forge, however, there are many excellent (and more in-depth) tutorials online. Just Google 'how to install minecraft forge' to find some.")],-1),v=e("hr",null,null,-1),M=e("h3",{id:"download-forge",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#download-forge","aria-hidden":"true"},"#"),o(" Download Forge")],-1),b={href:"http://files.minecraftforge.net",target:"_blank",rel:"noopener noreferrer"},k=e("em",null,"installer",-1),C=l('

Run Forge Installer

Run the downloaded version and make sure it's on Install Client (or Server if you plan to run a Minecraft server). The installation path is preset according to Minecraft's standard installation path. If you have it installed in a different directory, change the installation directory. When it's done installing, you will see a complete message.

Forge installer Forge installed

Download MineColonies

',4),x={href:"https://curseforge.com/minecraft/mc-mods/minecolonies/files/all",target:"_blank",rel:"noopener noreferrer"},F=l('

On your computer, go to the .minecraft/mods folder. To be able to find this folder, just click on the start button and in the search box type: %appdata% and hit "search". It will open the folder where you can find the .minecraft folder. Open this folder and inside you will find the mods folder.

Copy MineColonies to Mods

Once you are in the .minecraft/mods folder, copy the downloaded MineColonies file you downloaded in the Download MineColonies step and paste it here. Note: DO NOT extract the file if the option appears. Just put the .jar file in here without extracting its contents.

Do the Same Thing for Structurize

',5),D={href:"https://www.curseforge.com/minecraft/mc-mods/structurize/files/all",target:"_blank",rel:"noopener noreferrer"},I=e("p",null,"MineColonies doesn't always accept the latest version of Structurize. To ensure you have the required version, first, click on the MineColonies file name (on the Curseforge website). You'll be taken to the changelog, where it should say the accepted Structurize version at the top. Download that exact version.",-1),S=e("h4",{id:"cannot-add-modpack-without-external-installer",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#cannot-add-modpack-without-external-installer","aria-hidden":"true"},"#"),o(" Cannot Add Modpack Without External Installer")],-1),z=e("a",{href:"../../source/installation/curseforge"},"Curseforge launcher",-1),L=e("a",{href:"../../source/installation/gdlauncher"},"GDlauncher",-1),T={href:"https://multimc.org/#Download",target:"_blank",rel:"noopener noreferrer"},O={href:"https://github.com/Vazkii/CMPDL",target:"_blank",rel:"noopener noreferrer"},N=e("p",null,"Unfortunately, manually 'installing' modpacks is no longer an option as Curseforge no longer distributes mods in the downloaded zip files for modpacks due to licensing issues.",-1),j=e("h3",{id:"run-minecraft-and-select-profile",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#run-minecraft-and-select-profile","aria-hidden":"true"},"#"),o(" Run Minecraft and Select Profile")],-1),q=e("p",null,[o("Run your original Minecraft launcher. Make sure you have the "),e("strong",null,"Forge"),o(" profile loaded and hit play. (You might need to go to Installations and create a new installation first.)")],-1),R=e("p",null,[e("img",{src:"https://wiki.minecolonies.ldtteam.com/assets/images/installation/forge_3.png",alt:"Minecraft Launcher"})],-1),G=e("p",null,"That's it. If you followed these steps, you are ready to play MineColonies!",-1);function V(W,E){const t=i("router-link"),r=i("ExternalLinkIcon");return d(),c("div",null,[u,e("nav",f,[e("ul",null,[e("li",null,[n(t,{to:"#installing-minecolonies-mod-on-your-original-minecraft-launcher"},{default:a(()=>[o("Installing MineColonies Mod on your original Minecraft Launcher")]),_:1}),e("ul",null,[e("li",null,[n(t,{to:"#download-forge"},{default:a(()=>[o("Download Forge")]),_:1})]),e("li",null,[n(t,{to:"#run-forge-installer"},{default:a(()=>[o("Run Forge Installer")]),_:1})]),e("li",null,[n(t,{to:"#download-minecolonies"},{default:a(()=>[o("Download MineColonies")]),_:1})]),e("li",null,[n(t,{to:"#navigate-to-mods-folder"},{default:a(()=>[o("Navigate to Mods Folder")]),_:1})]),e("li",null,[n(t,{to:"#copy-minecolonies-to-mods"},{default:a(()=>[o("Copy MineColonies to Mods")]),_:1})]),e("li",null,[n(t,{to:"#do-the-same-thing-for-structurize"},{default:a(()=>[o("Do the Same Thing for Structurize")]),_:1})]),e("li",null,[n(t,{to:"#run-minecraft-and-select-profile"},{default:a(()=>[o("Run Minecraft and Select Profile")]),_:1})])])])])]),m,e("ul",null,[g,e("li",null,[e("p",null,[o("For connecting to the official server, install "),p,o(" or the Curseforge Launcher. You can visit the "),e("a",_,[o("CurseForge"),n(r)]),o(" site for a zip file containing all mods (with the correct versions) we are currently using on the official server, as well as all the appropriate configs, scripts, and the server.dat file for our modpack official server. If all these additional mods, configs, scripts, and the server.dat are downloaded and installed manually, you will be able to connect to our official server.")])]),w]),y,v,M,e("p",null,[o("Go to the "),e("a",b,[o("Minecraft Forge Download page"),n(r)]),o(" and download the latest version's "),k,o(" (not the recommended version).")]),C,e("p",null,[o("Go to the "),e("a",x,[o("MineColonies CurseForge Download page"),n(r)]),o(" site and download the latest 1.16.5 alpha version of MineColonies.")]),F,e("p",null,[o("Follow the last three steps, except for Structurize (which MineColonies needs to work). Find the download page for Structurize "),e("a",D,[o("here"),n(r)]),o(".")]),I,S,e("p",null,[o("If you are adding the entire modpack to be able to play on the official server, you will require an external launcher to download the pack. The "),z,o(" works on Windows or macOS. Other options include "),L,o(" or "),e("a",T,[o("MultiMC"),n(r)]),o(", both offering Windows, macOS and Linux support. Finally, if you can not or do not wish to 'install' a launcher you can use "),e("a",O,[o("CMPDL"),n(r)]),o(" that will run a small Java program to download the required modpack.")]),N,j,q,R,G])}const Y=s(h,[["render",V],["__file","java.html.vue"]]);export{Y as default}; diff --git a/assets/schematics.html-SSffZR-9.js b/assets/schematics.html-xW3zIrup.js similarity index 99% rename from assets/schematics.html-SSffZR-9.js rename to assets/schematics.html-xW3zIrup.js index c654808..b314b82 100644 --- a/assets/schematics.html-SSffZR-9.js +++ b/assets/schematics.html-xW3zIrup.js @@ -1 +1 @@ -import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as o,o as d,c as h,a as t,e as a,w as i,b as e,d as s}from"./app-DfwSKz3Q.js";const c="/Minecolonies-Chinese-Wiki/assets/image/tutorial/testbuilding.png",u="/Minecolonies-Chinese-Wiki/assets/image/tutorial/scan1.png",p="/Minecolonies-Chinese-Wiki/assets/image/tutorial/scan2.png",m="/Minecolonies-Chinese-Wiki/assets/image/tutorial/scan3.png",f="/Minecolonies-Chinese-Wiki/assets/image/tutorial/schematic.png",y="/Minecolonies-Chinese-Wiki/assets/image/buildings/plantation/planter_kelp_explanation.png",g="/Minecolonies-Chinese-Wiki/assets/image/buildings/plantation/planter_seagrass_explanation.png",b="/Minecolonies-Chinese-Wiki/assets/image/buildings/plantation/planter_seapickles_explanation.png",w="/Minecolonies-Chinese-Wiki/assets/image/tutorial/upgradabledecos.png",v={},k=t("h1",{id:"schematics",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#schematics","aria-hidden":"true"},"#"),e(" Schematics")],-1),x=t("p",null,[e("Schematics are files containing block and entity information of a certain area a player scanned with the "),t("a",{href:"../items/scantool"},"Scan Tool"),e(" in-game. You can use the scan tool and scan ANY building or structure you like in singleplayer or multiplayer and then have your {% worker_link builder %} build it for you (provided that you give them all the materials needed, of course).")],-1),q={class:"table-of-contents"},_=s('

Scanning a New Structure

Once you have a structure or area you want to scan to have your Builder build, you need to determine the exact area that needs to be scanned.

TestBuilding

Take your Scan Tool and left-click the lowest left block of the area and then place a block (it can be a placeholder block in the top right corner and right-click on it.

ScanPoint1

ScanPoint2

Then click in the air to see the entire structure.

ScanFull

Once you have the full area set, you can press Escape and the white outline of the scan area will stay in place. Go around it to double-check that everything you want is in the scan area. If the area contains multiple eligible anchor blocks (hut blocks, tag anchors or decoration controllers), you need to shift+left click the correct anchor block (e.g. the barracks hut block in a barracks schematic). When you are ready, you can right-click in the air again to get the GUI to display where you can enter your scan name. Then press the green checkmark to save the scan.

SPECIAL NOTE: Do not rename the file after scanning. It MUST be scanned with the correct name.

{% version "1.18.2" before=true %}
Scans are saved in ../minecolonies/scan/new/....


Once the scans are saved, they need to be moved to the ../structurize/schematics/(folder)/file if they are a custom hut.
{% endversion %}

{% version "1.19" after=true %}
Scans are saved in */blueprints/<yourplayername>/scans.


Once the scans are saved, they need to be placed in a style pack, preferably in the correct folder. See the style packs chapter for more details.
{% endversion %}

Placing a Schematic.

{% version "1.18.2" before=true %}
Once you have scanned a structure, you can use the build tool to have your {% worker_link farmer %} build it for you. Once you right-click with the build tool, you will have to select "My Schematics" (in the left dropdown menu) and on the right dropdown menu you will see the scans that you have made. There is also a Rename button where you can change the name of the scan. You can also delete any of your saved scans.
{% endversion %}

Schematic

{% version "1.19" after=true %}
The scanned structure can be found in the build tool under the style pack with your own name. Click "Switch Pack" -> "<yourplayername>" (icon looks like the scan tool) -> "scans".
{% endversion %}

{% version "1.19" after=true %}

Style packs

Styles are now structured in so-called style packs. This is similar to a resource pack or data pack, in that it has a file with some metadata about the style (the name, a description, optionally a link to an image, etc.), and a folder structure with the actual files.

Stylepacks live in the blueprints folder, within your Minecraft folder. This folder already contains one style pack: One with your player's name. This style pack will contain your scanned files, and can be used to test schematics. In order to make a new style, you need to make a new schematic pack.

The pack.json

This json file contains metadata describing the style:

Key NameTypeDescription
"version"numberPack version, start at 1, increase it whenever you make a new version of the pack
"pack-format"numberDescriptor for the pack format, needs to be 1 at the moment
"desc"stringDescription of the style. This will be visible in the build tool to explain what your style is about
"authors"array of stringsNames of the authors, in order to credit them. This is visible in the build tool
"mods"array of stringsNames of used mods (ids). The style is not visible if one of those mods is not installed, to prevent broken schematics
"name"stringThe name of the style pack
"icon"stringThe name of the file with an icon which is showed in the style packs selection screen

You have to increase the version number whenever you release your pack for others to use, or whenever you install a new version onto a server. You don't need to increase it when testing changes purely in single-player.

The folder structure

There are several folders, separating the buildings and decorations in categories.
Each of the folders at the highest level can have a couple of icons, named icon.png and icon_disabled.png. Those are shown in the button bar right above the hot bar.

',26),T={href:"https://github.com/ldtteam/minecolonies/tree/version/1.19/src/main/resources/blueprints/minecolonies",target:"_blank",rel:"noopener noreferrer"},S=t("br",null,null,-1),H=t("br",null,null,-1),N={href:"https://airtable.com/shruNNUKhTNk0saz5",target:"_blank",rel:"noopener noreferrer"},C=s('

With a few specific exceptions, you don't have to strictly follow the standard folder structure -- but it's recommended to stick to it when possible to make it easier for others to find specific buildings and decorations. But you're free to make extra folders to help group separate but related sets together, especially if you don't want them to appear directly as alternate buildings. E.g. if you have two styles of roads, one for early game and one for later game, you could put them in infrastructure/roads/simple/ and infrastructure/roads/nice/.

Note: It's strongly recommended to have each folder only contain files or subfolders, but not both. While it is possible to mix them, the build tool doesn't display it as nicely.
{% endversion %}

FAQ

This is a FAQ section to answer common questions regarding schematics in MineColonies.

How do I install custom schematics I just downloaded?

{% version "1.18.2" before=true %}
Those custom schematics go in */structurize/schematics. Unzip the zip you downloaded, and put all subfolders in the schematics folder. That folder should contain folders like <stylename>, decorations, walls, supplycamps etc. (depending on which style you installed)
{% endversion %}

{% version "1.19" after=true %}
The style pack goes in the "blueprints" folder. Unzip the zip, and find the folder containing the pack.json (either the unzipped folder, or a folder directly in it, depending on how the zip was made). This folder needs to be placed in */blueprints directly, not any subfolder thereof.
{% endversion %}

What and where is the scans folder?

The scans folder is where the schematics are saved after performing a scan using the scan tool in MineColonies.
{% version "1.18.2" before=true %}
This is a client-side-only directory which is located in Minecraft's folder under: */structurize/scans/. Freshly scanned schematics can be found in */structurize/scans/new/ unless they have been renamed in-game. (If they aren't there, look in */minecolonies/scans/new.) This directory is shared between all your singleplayer games and multiplayer games.
{% endversion %}

{% version "1.19" after=true %}
This is located in your own style pack in Minecraft's folder under: */blueprints/<yourplayername>/scans/. This folder is shared between all your singleylayer and multiplayer games.
{% endversion %}

Where is the schematic folder?

{% version "1.18.2" before=true %}
Custom schematics need to be copied inside the schematic folder. For both singleplayer and multiplayer games, the folder is under */structurize/schematics/.
{% endversion %}

{% version "1.19" after=true %}
Custom schematics need to be placed in a (custom) style pack. For more information about that, look there.
{% endversion %}

I have a "*/minecolonies/01e6a291-8a01-4763-bcae-f3a8797b1d52/cache/" folder, what is that for?

{% version "1.18.2" before=true %}
When playing on a server, the server needs to send the schematics to the players so that the build tool's preview works. Those schematics are saved in Minecraft's directory under */structurize/{ServerUUID}/cache/, where ServerUUID is the unique identifier of the server. Those directories can be safely removed as they are automatically created by the server when needed.
{% endversion %}

{% version "1.19.2" after=true %}
This was previously used to save schematics from a server and was automatically created as needed. However, this is no longer needed in 1.19.2 and later, so this folder can be removed safely.
{% endversion %}

{% version "1.19.2" after=true %}

I have a "/blueprints/clients/" folder, what is that for?

On a server, this folder holds a cached copy of the decorations and shapes used by your players -- possibly even including entire style packs that they've installed themselves (though note that for game balance purposes they won't be able to make functional buildings this way; these must be installed "properly" on the server to be usable).

You can delete these folders at any time (though preferably when the player is not logged in); they will be re-created as needed.
{% endversion %}

Can I just build my own buildings and then get the colonists to "move in"?

No. Functional buildings must be constructed by the Builder. You have to either use one of the prefabs provided by existing style packs (either included in the mod or via various addons installed separately), or design your own custom huts as an explicitly separate step (typically in a special creative designing world), before getting the builder to place them in your real colony. MineColonies is more like an RTS than it is like classic Minecraft building.

How to create custom huts?

To create new schematics, there are some guidelines that you must follow: the scans MUST have the same footprint for each level of the hut; the scans must contain the hut's block, for example the Builder's Hut block for the {% building_link builder %}; the hut block need to be exactly at the same place and have the same rotation for each level.

Ensure you are building your custom hut outside of any colony borders. When placing the hut block inside the custom hut, shift+right click to place it without activating it. Then you can scan and save the schematic.

{% version "1.18.2" before=true %}
The scans' filenames need to follow the naming convention: {StyleName}/{HutName}{HutLevel}.blueprint. For example, for the Builder's Huts with the MyOwn style, we would have:

myown/builder1.blueprint
myown/builder2.blueprint
myown/builder3.blueprint
myown/builder4.blueprint
myown/builder5.blueprint

  • Note: In the build tool, the extension is hidden. HutName can be any of the listed huts below. The maximum level is 5 (except for the Tavern; its max level is 3).

Alternative designs can be placed under a style name like "myownalternative", or a subfolder like myown/alt/*.
{% endversion %}

Once ready, move the myown folder into the blueprints folder and start your game. You should be able to see it with the the build tool.

Note: Remember that you need the appropriate hut in your inventory to be able to see the schematics in the build tool.

{% version "1.19" after=true %}
The naming for the buildings is not strict anymore. The only things that are important are that they are named consistently, that their names end with the hut level, and that you only use lowercase letters in the hut names (avoid capitals, spaces, or other punctuation).
Alternate designs can just have a different name than the primary one. E.g. if you named the level 1 builder's hut "builder1", an alternative version could be called "altbuilder1" or "builderalt1" or even something completely different ("constructionworker1").
Don't use numbers anywhere in the name except right at the end for the level. E.g. "alt1builder1" won't work as expected.

Once ready, you need to make a style pack out of them.
The schematics are visible in the build tool without the hut block, but you can't view them in survival mode (their button is greyed out, with an error message that you need to have the hut block).
{% endversion %}

[1.18] Custom Hut Filenames

Here is a full list, up-to-date as of 14 October 2022, of the building names. Please note do not use capital letters in hut names.

Level 1Level 2Level 3Level 4Level 5
archery1archery2archery3archery4archery5
alchemist1alchemist2alchemist3alchemist4alchemist5
baker1baker2baker3baker4baker5
barracks1barracks2barracks3barracks4barracks5
barrackstower1barrackstower2barrackstower3barrackstower4barrackstower5
beekeeper1beekeeper2beekeeper3beekeeper4beekeeper5
blacksmith1blacksmith2blacksmith3blacksmith4blacksmith5
builder1builder2builder3builder4builder5
chickenherder1chickenherder2chickenherder3chickenherder4chickenherder5
citizen1citizen2citizen3citizen4citizen5
combatacademy1combatacademy2combatacademy3combatacademy4combatacademy5
composter1composter2composter3composter4composter5
concretemixer1concretemixer2concretemixer3concretemixer4concretemixer5
cook1cook2cook3cook4cook5
cowboy1cowboy2cowboy3cowboy4cowboy5
crusher1crusher2crusher3crusher4crusher5
deliveryman1deliveryman2deliveryman3deliveryman4deliveryman5
dyer1dyer2dyer3dyer4dyer5
enchanter1enchanter2enchanter3enchanter4enchanter5
farmer1farmer2farmer3farmer4farmer5
fisherman1fisherman2fisherman3fisherman4fisherman5
fletcher1fletcher2fletcher3fletcher4fletcher5
florist1florist2florist3florist4florist5
glassblower1glassblower2glassblower3glassblower4glassblower5
graveyard1graveyard2graveyard3graveyard4graveyard5
guardtower1guardtower2guardtower3guardtower4guardtower5
hospital1hospital2hospital3hospital4hospital5
library1library2library3library4library5
lumberjack1lumberjack2lumberjack3lumberjack4lumberjack5
mechanic1mechanic2mechanic3mechanic4mechanic5
miner1miner2miner3miner4miner5
mysticalsite1mysticalsite2mysticalsite3mysticalsite4mysticalsite5
netherworker1netherworker2netherworker3netherworker4netherworker5
plantation1plantation2plantation3plantation4plantation5
rabbithutch1rabbithutch2rabbithutch3rabbithutch4rabbithutch5
sawmill1sawmill2sawmill3sawmill4sawmill5
school1school2school3school4school5
shepherd1shepherd2shepherd3shepherd4shepherd5
sifter1sifter2sifter3sifter4sifter5
smeltery1smeltery2smeltery3smeltery4smeltery5
stonemason1stonemason2stonemason3stonemason4stonemason5
stonesmeltery1stonesmeltery2stonesmeltery3stonesmeltery4stonesmeltery5
swineherder1swineherder2swineherder3swineherder4swineherder5
tavern1tavern2tavern3N/AN/A
townhall1townhall2townhall3townhall4townhall5
university1university2university3university4university5
warehouse1warehouse2warehouse3warehouse4warehouse5

Custom Supply Ships and Camps

The process for custom supply ships and camps is slightly different:

{% version "1.18.2" before=true %}

Camp or ShipFile Name and Path
Campstructurize/schematics/supplycamp/myownsupplycamp
Shipstructurize/schematics/supplyship/myownsupplyship

So, for example, the path would be structurize/schematics/wildwest/builder1 for the Builder's Hut level 1 and structurize/schematics/supplycamp/wildwestsupplycamp for the supply camp.
{% endversion %}

{% version "1.19" after=true %}

Camp or ShipFile Name and Path
Campblueprints/<myownstyle>/decorations/supplies/supplycamp
Shipblueprints/<myownstyle>/decorations/supplies/supplyship
Nether Shipblueprints/<myownstyle>/decorations/supplies/nethership

So, for example, the path would be blueprints/wildwest/fundamentals/builder1 for the Builder's Hut level 1 and blueprints/wildwest/decorations/supplies/supplycamp for the supply camp.
{% endversion %}

You should always apply a groundlevel tag when making a supply camp/ship. The rules for guessing where the ground level is without the tag change depending whether they're placed by the build tool or the supply item, for legacy reasons.

Hut Requirements

BuildingRequirementsSuggested
{% building_link archery %}1 archery dummy (a hay bale with a button on it); 1 bed per levelat least 1 standing position per level (a glowstone block, or any block tagged with work)
{% building_link alchemist %}1 brewing stand per level; 2 soul sand per level starting at level 2 (with 4 soul sand); leaves next to logs, i.e. "trees"
{% building_link bakery %}1 furnace
{% building_link barracks %}1 Barracks Tower per level (up to level 4)
{% building_link barrackstower %}1 bed per level
{% building_link builder %}1 rack per level
{% building_link combatacademy %}1 combat dummy per level (a pumpkin on top of a bale of hay); 1 bed per level
{% building_link composter %}1 compost barrel per level
{% building_link concretemixer %}3 blocks of flowing water with solid blocks below and air blocks above
{% building_link dyer %}1 furnace
{% building_link fisher %}Hut block placed on a block at water levelAt least 6x5x1 unobstructed body of water if integrating fishing location in the schematic
{% building_link flowershop %}4 compost blocks per level
{% building_link glassblower %}1 furnace per level
{% building_link graveyard %}Named Graves, with the amount increasing per level14 named graves at level 1, 18 named graves at level 2, 27 named graves at level 3, 36 named graves at level 4, 50 named graves at level 5
{% building_link guardtower %}1 bed for aesthetics
{% building_link hospital %}1 bed per level
{% building_link house %}1 bed per level
{% building_link library %}Bookshelves
{% building_link mine %}A few starting ladders where the shaft's ladders will go with the tags [cobble] and [ladder]
{% building_link nethermine %}A nether portal, and an enclosed 1x1x2 room
{% building_link plantation %}12 per level, 4 for each of sugar cane, cactus and bamboo
{% building_link restaurant %}1 furnace per level
{% building_link school %}2 carpets per level4 carpets per level
{% building_link smeltery %}1 furnace per level
{% building_link stonesmeltery %}1 furnace per level
{% building_link tavern %}4 beds and a dining roomHorizontal barrels and/or vertical barrels
{% building_link university %}Bookshelves
{% building_link warehouse %}Racks (more each level)

Some buildings may also require tags to be set on certain blocks using the tag tool.

Level Requirements for Overworld Styles

LevelRequirements
Level 1Very Easy - Wooden
Level 2Easy - Iron
Level 3Medium - Nether
Level 4Difficult - Ocean
Level 5Very Difficult - End

Level Requirements for Nether Styles

LevelRequirements
Level 1Very Easy - Nether
Level 2Easy - Rarer Nether
Level 3Medium - Overworld
Level 4Difficult - Ocean
Level 5Very Difficult - End

{% version "1.19.2" after=true %}

Plantation Fields

In 1.19.2 and beyond, the plantation has been changed to include fields, just like the {% worker_link farmer %}. However, unlike the {% worker_link farmer %}, these fields can be completely free-form and created by the style designers. Each field has certain requirements for the {% worker_link planter %} to do their work successfully.

Each plant has 2 separate tags: a field tag and a work tag.
The field tags are given to the plantation field block to define what plants this field handles. The work tag is given based on the implementation of the field.

A field can have as many field tags as you want, but not 2 of the same.

PlantField tagWork tagMaximum work tags
Sugar canesugar_fieldsugar20
Cactuscactus_fieldcactus20
Bamboobamboo_fieldbamboo20
Cocoacocoa_fieldcocoa5 (totalling 20 positions; details below)
Vinevine_fieldvine20
Kelpkelp_fieldkelp20
Seagrassseagrass_fieldseagrass121 (11 x 11 area)
Sea Picklesseapickle_fieldseapickle10
Glow Berriesglowb_fieldglowb_vine20
Weeping Vinesweepv_fieldweepv_vine20
Twisting Vinestwistv_fieldtwistv_vine20
Crimson Plantscrimsonp_fieldcrimsonp_ground121 (11 x 11 area)
Warped Plantswarpedp_fieldwarpedp_ground121 (11 x 11 area)

The {% worker_link planter %} will always attempt to walk to any adjacent air block around the planting position. If none of the adjacent positions are air, the planter will attempt to walk to the block itself. This prevents the {% worker_link planter %} from standing on the block itself whilst, for example, placing a block down like cactus, after which the {% worker_link planter %} would be standing inside of the plant.
Note: Make sure that the {% worker_link planter %} can always get within about 4 blocks of the desired position. If not, they will teleport around to reach the position, which may not always work.

X
XPX
X

X = walking position

P = planting position

Note: Kelp is an exception to this behaviour. To prevent planters from diving into the water, the planter will walk to the first air block above the work tagged block and look up 26 blocks from the work tagged block. If this is not possible, they will not be able to harvest this plant, so ensure there is air above the water above the work tagged block.

Kelp field movement explanation

  • The red X is the position where the planter will walk to in the example image.
  • The blue X is the position where the work tag of the block is.

For downwards-growing plants, the planter will attempt to stand above the work tagged block and harvest below them. Make sure the planter can reach the top of the stem.

Vertically Growing Plants (Upwards and Downwards)

A "vertically growing plant" is a plant that grows in a single line, either upwards or downwards; for example, Sugar Cane is a vertically growing plant that grows upwards. These plants always break fully when their root blocks are broken. The planter will break these at the second block from the root.

Each of these plants have a minimum and sometimes a maximum growth height.
The planter can only harvest them when they reach the minimum. If plants have a maximum height, the planter will have an increasingly higher chance to harvest the plant the taller it gets. Plants are only required to grow to the minimum height within the bounds of the schematic.

PlantMinimum heightMaximum height
Sugar cane3N/A
Cactus3N/A
Bamboo616
Kelp225
Glowberries3N/A
Weeping vines225
Twisting vines225

Treeside Plants

Treeside plants grow directly on the sides of trees. For these plants, you only need to tag the tree's stem; the working positions will automatically be set to every horizontally adjacent block of the tagged stem. Currently this is only used for Cocoa beans.

Note that this means that the amount of tags you can actually place is the amount of working positions divided by 4!

Bonemealed Fields

Bonemealed fields will tell the planter to use bonemeal somewhere on the ground to grow plants as if the player had used bonemeal.

The amount of planting positions on these fields are usually unlimited because bonemealing the ground has a set area of effect. However, it is suggested not to make the fields too big; an area around 7x7 is lightly suggested.

Every bonemealed plant works slightly differently.

PlantWork tag location
SeagrassThe block directly below the water should tagged; the planter will bonemeal the tagged block itself. Red Xs are where the planter will attempt to walk. Blue Xs are the blocks that are tagged with the work tag.Seagrass explanation
Sea picklesThe block directly below the water should tagged. The planter will initially place the pickles, then bonemeal the pickles to let them grow. Red Xs are where the planter will attempt to walk. Blue Xs are the blocks that are tagged with the work tag.Sea Pickle explanation
Crimson plantsTag all the nylium ground blocks where the plants are supposed to grow.
Warped plantsTag all the nylium ground blocks where the plants are supposed to grow.

Percentage-based Harvesting

Percentage based harvesting fields will attempt to place a minimum percentage of plants down on given spots. These plants — such as vines — should then naturally spread to their surroundings without the player's help. The planter has no involvement in this process.

PlantTag location
VineTag all the positions where the vines themselves can spread to, NOT the blocks where the vines are attached to.

{% endversion %}

Tips on Building

Do

  • Make all levels of a hut have the same footprint for x, y, and z
  • Place the hut block in the same location with the same rotation
  • Make sure all racks and furnaces are in the same location through all levels (to prevent the contents spilling out when they're getting moved)
  • Use placeholders where you want to keep any existing block (including from level to level), like the Barracks Towers in the Barracks schematic
  • Use solid placeholders at or below ground level
  • Place a groundlevel tag at ground level if your hut isn't sitting directly on the ground.
  • Use only vanilla blocks or Structurize blocks (for official styles)
  • Use Books and Quills instead of blank books, or written books on a lectern. (Keep a copy of the original book and quill somewhere, if it turns out you made a mistake!)

Don't

  • Use unobtainable items in builds (no command blocks, petrified wood, infested blocks, or mob heads (including player heads))
  • Change someone else's style (officially) unless specifically asked to do so
  • Rename schematics after scanning

Additional Information

How to override some built-in schematics?

{% version "1.18.2" before=true %}
Simply create a schematic file with the same style/name. For instance, to override the {% building_link builder %} wooden level 1, create a schematic file name called wooden/builder1.blueprint.
{% endversion %}

{% version "1.19" after=true %}
Unfortunately, this is not possible, unless you override the entire style (make a style pack with the same name as an existing style pack, in that case).
{% endversion %}

How to use custom huts?

{% version "1.18.2" before=true %}
The custom huts need to be copied in the schematics folder.
{% endversion %}

{% version "1.19" after=true %}
The custom huts need to be copied into a style pack.
{% endversion %}

Once copied, you can start your singleplayer or multiplayer game as usual. You should see them in the build tool (if you have the hut block in your inventory).

How to allow my players to use their own huts' schematics on my server?

You will have to copy them yourself in the blueprints folder on the server and restart it.

How to allow my players to use their scanned decoration schematics on my server?

Edit the Structurize configuration file at minecraft/config/structurize-common.toml and set allowPlayerSchematics to true. This allows the player to use their own decorations. It is not possible for the player to use their own huts' schematics. You can also limit the number of players' schematics at any given time by editing maxCachedSchematics (default is 100). When the limit is reached, the server will start deleting unused schematics.

How to disable built-in schematics completely?

Edit the Structurize configuration file at minecraft/config/structurize-common.toml and set ignoreSchematicsFromJar to true. Be aware: things will break if some huts' schematics are missing.

How to create upgradable decoration schematics?

{% version "1.18.2" before=true %}
Add the deco controller somewhere in the schematic with the name of the schematic, where you'll put it in the file directory, and its level. Make sure to actually put the decoration in that file path, but only after scanning - don't include the path in the scan name.
{% endversion %}

{% version "1.19" after=true %}
Put the deco controller somewhere in the schematic, and make sure the name of the schematic ends with a number while scanning. The decoration controller will automatically find the decoration in the same folder with the next number.
{% endversion %}

Upgradable Decos

How to use custom mineshafts in style packs?

The size must be 9 x 4 x 9 blocks. They must be named and oriented exactly the same (i.e. do not rotate at all) as in the default style pack (careful: the names aren't entirely consistent with the layout, so make careful note which is which!) Use an existing style pack as a template along with the scan tool to create the blueprints.

{% version "1.18.2" before=true %}
The custom mineshafts need to be at schematics/yourstyle/miner/*.
{% endversion %}

{% version "1.19" after=true %}
The custom mineshafts need to be at `blueprints/yourstyle/infrastructure/mineshafts/*.

It's recommended that you use the tag tool and Tag Anchor to make the mineshafts invisible. Take care that the anchor is in the same position as in the original mineshafts -- the very center bottom block.
{% endversion %}

How to make custom quarries in style packs?

The {% building_link quarry %} is split into a "top part" and a "bottom part". Both parts only have one level each.

The top part is constructed by the Builder and is the part outside of the quarry pit -- decorative walls, fences, cranes, racks, etc. This contains the actual quarry hut block itself, which should pretty much always be on the second y level up from the bottom (i.e. the bottom layer is the ground level, then the hut is on the next layer up), although with some caveats this is not absolutely required.

The bottom part is constructed by the Quarrier and is the actual quarry pit itself, consisting mostly of placeholders, air blocks, and decorative elements. While you can also set the anchor manually, it's recommended to use a Tag Anchor. The anchor should normally be at the very top layer, although with some caveats it can be elsewhere.

{% version "1.18.2" before=true %}
The top parts must be named simplequarry1 and mediumquarry1, and the corresponding bottom parts are simplequarryshaft1 and mediumquarryshaft1.
{% endversion %}

{% version "1.19" after=true %}
The top part can be in any folder and name that you like (and you can have more than one alternate), but the canonical names are infrastructure/mineshafts/simplequarry1 and infrastructure/mineshafts/mediumquarry1. (For reasons, it's currently best to avoid using different names.)

The bottom part can only be infrastructure/mineshafts/simplequarryshaft1 and infrastructure/mineshafts/mediumquarryshaft1, regardless of what or where the top part was. As such, you can only make one of each per style pack.
{% endversion %}

Importantly: when built, the two schematics are aligned such that the anchor of the bottom part is exactly two blocks below the anchor of the top part. You should carefully align them when designing.

It is permitted for the quarry to be a slightly different size from the default versions, but it's strongly encouraged (for game balance reasons) to make each one approximately the same size as the originals, and in particular to have the same amount of air blocks in the bottom part, since this affects the final yield of cobble or other stone.

How to create parent/child buildings or decorations?

The Barracks and Barracks Tower always have a parent/child relationship (i.e. the towers are embedded within the barracks, not directly built separately with the build tool). It's also possible to do the same with other buildings -- either putting one or more buildings into a containing decoration (e.g. a "district" of related buildings) or even embedding buildings within other buildings.

Some popular combinations are to embed couriers within the warehouse, and fields within the farmer. Others combinations are possible, depending on your goals for the style -- but don't go too overboard! Some players like combination buildings since they fit nicely together, but others don't like them since they can take away flexibility and creativity when building a colony.

When designing parent/child schematics, the key is the light placeholder. The parent schematic needs to contain the child hut block in the correct position and rotation, along with light placeholders wherever there should be a block from the child, and the parent's own blocks. Similarly, the child schematic needs its own hut block and other blocks, and light placeholders wherever there should be a block from the parent. It can be helpful to make a temporary scan of either the parent or child and overlay them over the other to help line things up, or to build both together and then duplicate it and split apart the designs.

While strictly speaking it's only mandatory to include the child hut at the level that it's introduced into the parent and you could put only a placeholder at higher levels, it's strongly recommended to always include the child hut in every higher level of the parent. This works better when someone moves or repairs the parent, or skips levels and pastes it directly at a higher level.

Also remember that the child building can't be upgraded to a higher level than the parent building. This limit doesn't apply if the parent is a non-upgradeable decoration.

Be careful of "research loops" -- if the player needs to build a child before they can unlock a parent, that's a problem (unless you also have an alternate standalone of the child).

Since the parent will contain multiple hut blocks, you will always need to explicitly specify the anchor block (the main parent hut block if a building, or a deco controller or tag anchor if it's a decoration) when you scan, otherwise you'll get an error that the anchor was ambiguous and it will not work correctly.

{% version "1.18.2" before=true %}
Since you can only have one version of each building in each folder, combinations should be used very sparingly. The parent and child need to be in the same folder.

To place the child hut in the parent, you can simply shift-click it, just like when placing it in the child itself. Be sure to get the location and rotation correct -- the child hut will be built with the matching orientation relative to that.
{% endversion %}

{% version "1.19" after=true %}
The parent and child need to be in the same folder. This doesn't mean that you can't combine buildings that are normally in different folders -- just that the version that's intended to be the child must be in the same folder as the parent. You may still have another version of the child (to be used by itself, not as a child) in the original folder if you like.

It's not supported to have a child contain additional children of its own -- you're limited to just the two layers (though the parent can contain multiple children of either the same or different types).

Regardless of which method you use to build, be sure to get the location and rotation of the child hut correct when placing it in the parent -- the building will be built with the matching orientation relative to that.

If you've used the default folder and filenames for your child, then you can simply shift-click the child hut to place it into the parent, similar to older versions. However this is not the most recommended way to do things any more.

The preferred method is to make another level of your child containing only the hut block, giving it the same folder and name as your actual child, but level 0 (e.g. craftsmanship/storage/mycourier0). You can make it the same size as your real child (surrounded by placeholders) if you wish, but scanning a 1x1x1 is fine too. After scanning, you need to move this to its final location in your actual style pack, and then paste it from there (not from your scans!) into your parent. It doesn't matter whether you use schematic or constructed paste. Paste the same level 0 into all levels of the parent. After it's pasted, you can delete the level 0 blueprint -- it should not be included in your final released style pack. (Note that when you go to paste it, the build tool labels it as "level 1" of 6. You can confirm you have the right one by checking the tooltip name.)

Another option is called "auto-levelling". This is where instead of making and pasting a level 0 into each level of the parent, you instead paste the actual matching child level (i.e. level 1 child in the level 1 parent, level 2 child in the level 2 parent, etc). Again it doesn't matter whether you use schematic or constructed paste, but either way you'll probably have to fix up some of the overlapping blocks afterward. You do still need to include the child hut's blueprints in your released style pack, and you do still have to paste it from your actual style pack and not your scans folder.

With auto-levelling, the builder will upgrade the child at the same time as upgrading the parent, instead of the player needing to explicitly build or upgrade one after the other. While this may sound simpler, there are some downsides: the biggest is that won't work well for child buildings that have required functional blocks (such as beds, furnaces, racks, etc), although purely decorative ones are fine. You also should not use this where the child is locked behind research, unless you can be absolutely certain that it's already unlocked (e.g. if the parent is unlocked after the child -- though still be careful of loops). The "level 0" method doesn't have these issues.

Since you can have multiple alternates of buildings (in the same or separate folders), it's possible to make a particular building type have both a standalone version as well as a version embedded as a child. It's strongly recommended to use the tag tool to mark any blueprint intended for use only as a child (in the child schematic itself) as invisible so that it doesn't show up for building standalone -- especially as child versions are often simpler or cheaper and may be missing walls or other things intended to be provided by the parent, so won't look good on their own or might break game balance. It's also possible to have each child of a parent be its own unique blueprint -- but that requires even more scans and more care when pasting to use the right alternate.
{% endversion %}

What if I have another question?

',136),I={href:"https://discord.minecolonies.com/",target:"_blank",rel:"noopener noreferrer"};function z(B,P){const l=o("router-link"),r=o("ExternalLinkIcon");return d(),h("div",null,[k,x,t("nav",q,[t("ul",null,[t("li",null,[a(l,{to:"#scanning-a-new-structure"},{default:i(()=>[e("Scanning a New Structure")]),_:1})]),t("li",null,[a(l,{to:"#placing-a-schematic"},{default:i(()=>[e("Placing a Schematic.")]),_:1})]),t("li",null,[a(l,{to:"#style-packs"},{default:i(()=>[e("Style packs")]),_:1}),t("ul",null,[t("li",null,[a(l,{to:"#the-pack-json"},{default:i(()=>[e("The pack.json")]),_:1})]),t("li",null,[a(l,{to:"#the-folder-structure"},{default:i(()=>[e("The folder structure")]),_:1})])])]),t("li",null,[a(l,{to:"#faq"},{default:i(()=>[e("FAQ")]),_:1})]),t("li",null,[a(l,{to:"#_1-18-custom-hut-filenames"},{default:i(()=>[e("[1.18] Custom Hut Filenames")]),_:1})]),t("li",null,[a(l,{to:"#custom-supply-ships-and-camps"},{default:i(()=>[e("Custom Supply Ships and Camps")]),_:1})]),t("li",null,[a(l,{to:"#hut-requirements"},{default:i(()=>[e("Hut Requirements")]),_:1})]),t("li",null,[a(l,{to:"#level-requirements-for-overworld-styles"},{default:i(()=>[e("Level Requirements for Overworld Styles")]),_:1})]),t("li",null,[a(l,{to:"#level-requirements-for-nether-styles"},{default:i(()=>[e("Level Requirements for Nether Styles")]),_:1})]),t("li",null,[a(l,{to:"#plantation-fields"},{default:i(()=>[e("Plantation Fields")]),_:1}),t("ul",null,[t("li",null,[a(l,{to:"#vertically-growing-plants-upwards-and-downwards"},{default:i(()=>[e("Vertically Growing Plants (Upwards and Downwards)")]),_:1})]),t("li",null,[a(l,{to:"#treeside-plants"},{default:i(()=>[e("Treeside Plants")]),_:1})]),t("li",null,[a(l,{to:"#bonemealed-fields"},{default:i(()=>[e("Bonemealed Fields")]),_:1})]),t("li",null,[a(l,{to:"#percentage-based-harvesting"},{default:i(()=>[e("Percentage-based Harvesting")]),_:1})])])]),t("li",null,[a(l,{to:"#tips-on-building"},{default:i(()=>[e("Tips on Building")]),_:1}),t("ul",null,[t("li",null,[a(l,{to:"#do"},{default:i(()=>[e("Do")]),_:1})]),t("li",null,[a(l,{to:"#don-t"},{default:i(()=>[e("Don't")]),_:1})])])]),t("li",null,[a(l,{to:"#additional-information"},{default:i(()=>[e("Additional Information")]),_:1}),t("ul",null,[t("li",null,[a(l,{to:"#how-to-override-some-built-in-schematics"},{default:i(()=>[e("How to override some built-in schematics?")]),_:1})]),t("li",null,[a(l,{to:"#how-to-use-custom-huts"},{default:i(()=>[e("How to use custom huts?")]),_:1})]),t("li",null,[a(l,{to:"#how-to-allow-my-players-to-use-their-own-huts-schematics-on-my-server"},{default:i(()=>[e("How to allow my players to use their own huts' schematics on my server?")]),_:1})]),t("li",null,[a(l,{to:"#how-to-allow-my-players-to-use-their-scanned-decoration-schematics-on-my-server"},{default:i(()=>[e("How to allow my players to use their scanned decoration schematics on my server?")]),_:1})]),t("li",null,[a(l,{to:"#how-to-disable-built-in-schematics-completely"},{default:i(()=>[e("How to disable built-in schematics completely?")]),_:1})]),t("li",null,[a(l,{to:"#how-to-create-upgradable-decoration-schematics"},{default:i(()=>[e("How to create upgradable decoration schematics?")]),_:1})]),t("li",null,[a(l,{to:"#how-to-use-custom-mineshafts-in-style-packs"},{default:i(()=>[e("How to use custom mineshafts in style packs?")]),_:1})]),t("li",null,[a(l,{to:"#how-to-make-custom-quarries-in-style-packs"},{default:i(()=>[e("How to make custom quarries in style packs?")]),_:1})]),t("li",null,[a(l,{to:"#how-to-create-parent-child-buildings-or-decorations"},{default:i(()=>[e("How to create parent/child buildings or decorations?")]),_:1})])])]),t("li",null,[a(l,{to:"#what-if-i-have-another-question"},{default:i(()=>[e("What if I have another question?")]),_:1})])])]),_,t("p",null,[e("You can download a template folder structure from "),t("a",T,[e("github"),a(r)]),e(" (template.zip), which contains the icons used for the official styles already."),S,e(" That github page also contains examples how different styles are structured."),H,e(" An overview with which buildings go into which folders can also be found "),t("a",N,[e("here"),a(r)]),e(".")]),C,t("p",null,[e("There's a channel in the "),t("a",I,[e("Discord server"),a(r)]),e(" specifically for asking questions about designing your own schematics.")])])}const A=n(v,[["render",z],["__file","schematics.html.vue"]]);export{A as default}; +import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as o,o as d,c as h,b as t,e as a,w as i,d as e,f as s}from"./app-rX80dX-Q.js";const c="/Minecolonies-Chinese-Wiki/assets/image/tutorial/testbuilding.png",u="/Minecolonies-Chinese-Wiki/assets/image/tutorial/scan1.png",p="/Minecolonies-Chinese-Wiki/assets/image/tutorial/scan2.png",m="/Minecolonies-Chinese-Wiki/assets/image/tutorial/scan3.png",f="/Minecolonies-Chinese-Wiki/assets/image/tutorial/schematic.png",y="/Minecolonies-Chinese-Wiki/assets/image/buildings/plantation/planter_kelp_explanation.png",g="/Minecolonies-Chinese-Wiki/assets/image/buildings/plantation/planter_seagrass_explanation.png",b="/Minecolonies-Chinese-Wiki/assets/image/buildings/plantation/planter_seapickles_explanation.png",w="/Minecolonies-Chinese-Wiki/assets/image/tutorial/upgradabledecos.png",v={},k=t("h1",{id:"schematics",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#schematics","aria-hidden":"true"},"#"),e(" Schematics")],-1),x=t("p",null,[e("Schematics are files containing block and entity information of a certain area a player scanned with the "),t("a",{href:"../items/scantool"},"Scan Tool"),e(" in-game. You can use the scan tool and scan ANY building or structure you like in singleplayer or multiplayer and then have your {% worker_link builder %} build it for you (provided that you give them all the materials needed, of course).")],-1),q={class:"table-of-contents"},_=s('

Scanning a New Structure

Once you have a structure or area you want to scan to have your Builder build, you need to determine the exact area that needs to be scanned.

TestBuilding

Take your Scan Tool and left-click the lowest left block of the area and then place a block (it can be a placeholder block in the top right corner and right-click on it.

ScanPoint1

ScanPoint2

Then click in the air to see the entire structure.

ScanFull

Once you have the full area set, you can press Escape and the white outline of the scan area will stay in place. Go around it to double-check that everything you want is in the scan area. If the area contains multiple eligible anchor blocks (hut blocks, tag anchors or decoration controllers), you need to shift+left click the correct anchor block (e.g. the barracks hut block in a barracks schematic). When you are ready, you can right-click in the air again to get the GUI to display where you can enter your scan name. Then press the green checkmark to save the scan.

SPECIAL NOTE: Do not rename the file after scanning. It MUST be scanned with the correct name.

{% version "1.18.2" before=true %}
Scans are saved in ../minecolonies/scan/new/....


Once the scans are saved, they need to be moved to the ../structurize/schematics/(folder)/file if they are a custom hut.
{% endversion %}

{% version "1.19" after=true %}
Scans are saved in */blueprints/<yourplayername>/scans.


Once the scans are saved, they need to be placed in a style pack, preferably in the correct folder. See the style packs chapter for more details.
{% endversion %}

Placing a Schematic.

{% version "1.18.2" before=true %}
Once you have scanned a structure, you can use the build tool to have your {% worker_link farmer %} build it for you. Once you right-click with the build tool, you will have to select "My Schematics" (in the left dropdown menu) and on the right dropdown menu you will see the scans that you have made. There is also a Rename button where you can change the name of the scan. You can also delete any of your saved scans.
{% endversion %}

Schematic

{% version "1.19" after=true %}
The scanned structure can be found in the build tool under the style pack with your own name. Click "Switch Pack" -> "<yourplayername>" (icon looks like the scan tool) -> "scans".
{% endversion %}

{% version "1.19" after=true %}

Style packs

Styles are now structured in so-called style packs. This is similar to a resource pack or data pack, in that it has a file with some metadata about the style (the name, a description, optionally a link to an image, etc.), and a folder structure with the actual files.

Stylepacks live in the blueprints folder, within your Minecraft folder. This folder already contains one style pack: One with your player's name. This style pack will contain your scanned files, and can be used to test schematics. In order to make a new style, you need to make a new schematic pack.

The pack.json

This json file contains metadata describing the style:

Key NameTypeDescription
"version"numberPack version, start at 1, increase it whenever you make a new version of the pack
"pack-format"numberDescriptor for the pack format, needs to be 1 at the moment
"desc"stringDescription of the style. This will be visible in the build tool to explain what your style is about
"authors"array of stringsNames of the authors, in order to credit them. This is visible in the build tool
"mods"array of stringsNames of used mods (ids). The style is not visible if one of those mods is not installed, to prevent broken schematics
"name"stringThe name of the style pack
"icon"stringThe name of the file with an icon which is showed in the style packs selection screen

You have to increase the version number whenever you release your pack for others to use, or whenever you install a new version onto a server. You don't need to increase it when testing changes purely in single-player.

The folder structure

There are several folders, separating the buildings and decorations in categories.
Each of the folders at the highest level can have a couple of icons, named icon.png and icon_disabled.png. Those are shown in the button bar right above the hot bar.

',26),T={href:"https://github.com/ldtteam/minecolonies/tree/version/1.19/src/main/resources/blueprints/minecolonies",target:"_blank",rel:"noopener noreferrer"},S=t("br",null,null,-1),H=t("br",null,null,-1),N={href:"https://airtable.com/shruNNUKhTNk0saz5",target:"_blank",rel:"noopener noreferrer"},C=s('

With a few specific exceptions, you don't have to strictly follow the standard folder structure -- but it's recommended to stick to it when possible to make it easier for others to find specific buildings and decorations. But you're free to make extra folders to help group separate but related sets together, especially if you don't want them to appear directly as alternate buildings. E.g. if you have two styles of roads, one for early game and one for later game, you could put them in infrastructure/roads/simple/ and infrastructure/roads/nice/.

Note: It's strongly recommended to have each folder only contain files or subfolders, but not both. While it is possible to mix them, the build tool doesn't display it as nicely.
{% endversion %}

FAQ

This is a FAQ section to answer common questions regarding schematics in MineColonies.

How do I install custom schematics I just downloaded?

{% version "1.18.2" before=true %}
Those custom schematics go in */structurize/schematics. Unzip the zip you downloaded, and put all subfolders in the schematics folder. That folder should contain folders like <stylename>, decorations, walls, supplycamps etc. (depending on which style you installed)
{% endversion %}

{% version "1.19" after=true %}
The style pack goes in the "blueprints" folder. Unzip the zip, and find the folder containing the pack.json (either the unzipped folder, or a folder directly in it, depending on how the zip was made). This folder needs to be placed in */blueprints directly, not any subfolder thereof.
{% endversion %}

What and where is the scans folder?

The scans folder is where the schematics are saved after performing a scan using the scan tool in MineColonies.
{% version "1.18.2" before=true %}
This is a client-side-only directory which is located in Minecraft's folder under: */structurize/scans/. Freshly scanned schematics can be found in */structurize/scans/new/ unless they have been renamed in-game. (If they aren't there, look in */minecolonies/scans/new.) This directory is shared between all your singleplayer games and multiplayer games.
{% endversion %}

{% version "1.19" after=true %}
This is located in your own style pack in Minecraft's folder under: */blueprints/<yourplayername>/scans/. This folder is shared between all your singleylayer and multiplayer games.
{% endversion %}

Where is the schematic folder?

{% version "1.18.2" before=true %}
Custom schematics need to be copied inside the schematic folder. For both singleplayer and multiplayer games, the folder is under */structurize/schematics/.
{% endversion %}

{% version "1.19" after=true %}
Custom schematics need to be placed in a (custom) style pack. For more information about that, look there.
{% endversion %}

I have a "*/minecolonies/01e6a291-8a01-4763-bcae-f3a8797b1d52/cache/" folder, what is that for?

{% version "1.18.2" before=true %}
When playing on a server, the server needs to send the schematics to the players so that the build tool's preview works. Those schematics are saved in Minecraft's directory under */structurize/{ServerUUID}/cache/, where ServerUUID is the unique identifier of the server. Those directories can be safely removed as they are automatically created by the server when needed.
{% endversion %}

{% version "1.19.2" after=true %}
This was previously used to save schematics from a server and was automatically created as needed. However, this is no longer needed in 1.19.2 and later, so this folder can be removed safely.
{% endversion %}

{% version "1.19.2" after=true %}

I have a "/blueprints/clients/" folder, what is that for?

On a server, this folder holds a cached copy of the decorations and shapes used by your players -- possibly even including entire style packs that they've installed themselves (though note that for game balance purposes they won't be able to make functional buildings this way; these must be installed "properly" on the server to be usable).

You can delete these folders at any time (though preferably when the player is not logged in); they will be re-created as needed.
{% endversion %}

Can I just build my own buildings and then get the colonists to "move in"?

No. Functional buildings must be constructed by the Builder. You have to either use one of the prefabs provided by existing style packs (either included in the mod or via various addons installed separately), or design your own custom huts as an explicitly separate step (typically in a special creative designing world), before getting the builder to place them in your real colony. MineColonies is more like an RTS than it is like classic Minecraft building.

How to create custom huts?

To create new schematics, there are some guidelines that you must follow: the scans MUST have the same footprint for each level of the hut; the scans must contain the hut's block, for example the Builder's Hut block for the {% building_link builder %}; the hut block need to be exactly at the same place and have the same rotation for each level.

Ensure you are building your custom hut outside of any colony borders. When placing the hut block inside the custom hut, shift+right click to place it without activating it. Then you can scan and save the schematic.

{% version "1.18.2" before=true %}
The scans' filenames need to follow the naming convention: {StyleName}/{HutName}{HutLevel}.blueprint. For example, for the Builder's Huts with the MyOwn style, we would have:

myown/builder1.blueprint
myown/builder2.blueprint
myown/builder3.blueprint
myown/builder4.blueprint
myown/builder5.blueprint

  • Note: In the build tool, the extension is hidden. HutName can be any of the listed huts below. The maximum level is 5 (except for the Tavern; its max level is 3).

Alternative designs can be placed under a style name like "myownalternative", or a subfolder like myown/alt/*.
{% endversion %}

Once ready, move the myown folder into the blueprints folder and start your game. You should be able to see it with the the build tool.

Note: Remember that you need the appropriate hut in your inventory to be able to see the schematics in the build tool.

{% version "1.19" after=true %}
The naming for the buildings is not strict anymore. The only things that are important are that they are named consistently, that their names end with the hut level, and that you only use lowercase letters in the hut names (avoid capitals, spaces, or other punctuation).
Alternate designs can just have a different name than the primary one. E.g. if you named the level 1 builder's hut "builder1", an alternative version could be called "altbuilder1" or "builderalt1" or even something completely different ("constructionworker1").
Don't use numbers anywhere in the name except right at the end for the level. E.g. "alt1builder1" won't work as expected.

Once ready, you need to make a style pack out of them.
The schematics are visible in the build tool without the hut block, but you can't view them in survival mode (their button is greyed out, with an error message that you need to have the hut block).
{% endversion %}

[1.18] Custom Hut Filenames

Here is a full list, up-to-date as of 14 October 2022, of the building names. Please note do not use capital letters in hut names.

Level 1Level 2Level 3Level 4Level 5
archery1archery2archery3archery4archery5
alchemist1alchemist2alchemist3alchemist4alchemist5
baker1baker2baker3baker4baker5
barracks1barracks2barracks3barracks4barracks5
barrackstower1barrackstower2barrackstower3barrackstower4barrackstower5
beekeeper1beekeeper2beekeeper3beekeeper4beekeeper5
blacksmith1blacksmith2blacksmith3blacksmith4blacksmith5
builder1builder2builder3builder4builder5
chickenherder1chickenherder2chickenherder3chickenherder4chickenherder5
citizen1citizen2citizen3citizen4citizen5
combatacademy1combatacademy2combatacademy3combatacademy4combatacademy5
composter1composter2composter3composter4composter5
concretemixer1concretemixer2concretemixer3concretemixer4concretemixer5
cook1cook2cook3cook4cook5
cowboy1cowboy2cowboy3cowboy4cowboy5
crusher1crusher2crusher3crusher4crusher5
deliveryman1deliveryman2deliveryman3deliveryman4deliveryman5
dyer1dyer2dyer3dyer4dyer5
enchanter1enchanter2enchanter3enchanter4enchanter5
farmer1farmer2farmer3farmer4farmer5
fisherman1fisherman2fisherman3fisherman4fisherman5
fletcher1fletcher2fletcher3fletcher4fletcher5
florist1florist2florist3florist4florist5
glassblower1glassblower2glassblower3glassblower4glassblower5
graveyard1graveyard2graveyard3graveyard4graveyard5
guardtower1guardtower2guardtower3guardtower4guardtower5
hospital1hospital2hospital3hospital4hospital5
library1library2library3library4library5
lumberjack1lumberjack2lumberjack3lumberjack4lumberjack5
mechanic1mechanic2mechanic3mechanic4mechanic5
miner1miner2miner3miner4miner5
mysticalsite1mysticalsite2mysticalsite3mysticalsite4mysticalsite5
netherworker1netherworker2netherworker3netherworker4netherworker5
plantation1plantation2plantation3plantation4plantation5
rabbithutch1rabbithutch2rabbithutch3rabbithutch4rabbithutch5
sawmill1sawmill2sawmill3sawmill4sawmill5
school1school2school3school4school5
shepherd1shepherd2shepherd3shepherd4shepherd5
sifter1sifter2sifter3sifter4sifter5
smeltery1smeltery2smeltery3smeltery4smeltery5
stonemason1stonemason2stonemason3stonemason4stonemason5
stonesmeltery1stonesmeltery2stonesmeltery3stonesmeltery4stonesmeltery5
swineherder1swineherder2swineherder3swineherder4swineherder5
tavern1tavern2tavern3N/AN/A
townhall1townhall2townhall3townhall4townhall5
university1university2university3university4university5
warehouse1warehouse2warehouse3warehouse4warehouse5

Custom Supply Ships and Camps

The process for custom supply ships and camps is slightly different:

{% version "1.18.2" before=true %}

Camp or ShipFile Name and Path
Campstructurize/schematics/supplycamp/myownsupplycamp
Shipstructurize/schematics/supplyship/myownsupplyship

So, for example, the path would be structurize/schematics/wildwest/builder1 for the Builder's Hut level 1 and structurize/schematics/supplycamp/wildwestsupplycamp for the supply camp.
{% endversion %}

{% version "1.19" after=true %}

Camp or ShipFile Name and Path
Campblueprints/<myownstyle>/decorations/supplies/supplycamp
Shipblueprints/<myownstyle>/decorations/supplies/supplyship
Nether Shipblueprints/<myownstyle>/decorations/supplies/nethership

So, for example, the path would be blueprints/wildwest/fundamentals/builder1 for the Builder's Hut level 1 and blueprints/wildwest/decorations/supplies/supplycamp for the supply camp.
{% endversion %}

You should always apply a groundlevel tag when making a supply camp/ship. The rules for guessing where the ground level is without the tag change depending whether they're placed by the build tool or the supply item, for legacy reasons.

Hut Requirements

BuildingRequirementsSuggested
{% building_link archery %}1 archery dummy (a hay bale with a button on it); 1 bed per levelat least 1 standing position per level (a glowstone block, or any block tagged with work)
{% building_link alchemist %}1 brewing stand per level; 2 soul sand per level starting at level 2 (with 4 soul sand); leaves next to logs, i.e. "trees"
{% building_link bakery %}1 furnace
{% building_link barracks %}1 Barracks Tower per level (up to level 4)
{% building_link barrackstower %}1 bed per level
{% building_link builder %}1 rack per level
{% building_link combatacademy %}1 combat dummy per level (a pumpkin on top of a bale of hay); 1 bed per level
{% building_link composter %}1 compost barrel per level
{% building_link concretemixer %}3 blocks of flowing water with solid blocks below and air blocks above
{% building_link dyer %}1 furnace
{% building_link fisher %}Hut block placed on a block at water levelAt least 6x5x1 unobstructed body of water if integrating fishing location in the schematic
{% building_link flowershop %}4 compost blocks per level
{% building_link glassblower %}1 furnace per level
{% building_link graveyard %}Named Graves, with the amount increasing per level14 named graves at level 1, 18 named graves at level 2, 27 named graves at level 3, 36 named graves at level 4, 50 named graves at level 5
{% building_link guardtower %}1 bed for aesthetics
{% building_link hospital %}1 bed per level
{% building_link house %}1 bed per level
{% building_link library %}Bookshelves
{% building_link mine %}A few starting ladders where the shaft's ladders will go with the tags [cobble] and [ladder]
{% building_link nethermine %}A nether portal, and an enclosed 1x1x2 room
{% building_link plantation %}12 per level, 4 for each of sugar cane, cactus and bamboo
{% building_link restaurant %}1 furnace per level
{% building_link school %}2 carpets per level4 carpets per level
{% building_link smeltery %}1 furnace per level
{% building_link stonesmeltery %}1 furnace per level
{% building_link tavern %}4 beds and a dining roomHorizontal barrels and/or vertical barrels
{% building_link university %}Bookshelves
{% building_link warehouse %}Racks (more each level)

Some buildings may also require tags to be set on certain blocks using the tag tool.

Level Requirements for Overworld Styles

LevelRequirements
Level 1Very Easy - Wooden
Level 2Easy - Iron
Level 3Medium - Nether
Level 4Difficult - Ocean
Level 5Very Difficult - End

Level Requirements for Nether Styles

LevelRequirements
Level 1Very Easy - Nether
Level 2Easy - Rarer Nether
Level 3Medium - Overworld
Level 4Difficult - Ocean
Level 5Very Difficult - End

{% version "1.19.2" after=true %}

Plantation Fields

In 1.19.2 and beyond, the plantation has been changed to include fields, just like the {% worker_link farmer %}. However, unlike the {% worker_link farmer %}, these fields can be completely free-form and created by the style designers. Each field has certain requirements for the {% worker_link planter %} to do their work successfully.

Each plant has 2 separate tags: a field tag and a work tag.
The field tags are given to the plantation field block to define what plants this field handles. The work tag is given based on the implementation of the field.

A field can have as many field tags as you want, but not 2 of the same.

PlantField tagWork tagMaximum work tags
Sugar canesugar_fieldsugar20
Cactuscactus_fieldcactus20
Bamboobamboo_fieldbamboo20
Cocoacocoa_fieldcocoa5 (totalling 20 positions; details below)
Vinevine_fieldvine20
Kelpkelp_fieldkelp20
Seagrassseagrass_fieldseagrass121 (11 x 11 area)
Sea Picklesseapickle_fieldseapickle10
Glow Berriesglowb_fieldglowb_vine20
Weeping Vinesweepv_fieldweepv_vine20
Twisting Vinestwistv_fieldtwistv_vine20
Crimson Plantscrimsonp_fieldcrimsonp_ground121 (11 x 11 area)
Warped Plantswarpedp_fieldwarpedp_ground121 (11 x 11 area)

The {% worker_link planter %} will always attempt to walk to any adjacent air block around the planting position. If none of the adjacent positions are air, the planter will attempt to walk to the block itself. This prevents the {% worker_link planter %} from standing on the block itself whilst, for example, placing a block down like cactus, after which the {% worker_link planter %} would be standing inside of the plant.
Note: Make sure that the {% worker_link planter %} can always get within about 4 blocks of the desired position. If not, they will teleport around to reach the position, which may not always work.

X
XPX
X

X = walking position

P = planting position

Note: Kelp is an exception to this behaviour. To prevent planters from diving into the water, the planter will walk to the first air block above the work tagged block and look up 26 blocks from the work tagged block. If this is not possible, they will not be able to harvest this plant, so ensure there is air above the water above the work tagged block.

Kelp field movement explanation

  • The red X is the position where the planter will walk to in the example image.
  • The blue X is the position where the work tag of the block is.

For downwards-growing plants, the planter will attempt to stand above the work tagged block and harvest below them. Make sure the planter can reach the top of the stem.

Vertically Growing Plants (Upwards and Downwards)

A "vertically growing plant" is a plant that grows in a single line, either upwards or downwards; for example, Sugar Cane is a vertically growing plant that grows upwards. These plants always break fully when their root blocks are broken. The planter will break these at the second block from the root.

Each of these plants have a minimum and sometimes a maximum growth height.
The planter can only harvest them when they reach the minimum. If plants have a maximum height, the planter will have an increasingly higher chance to harvest the plant the taller it gets. Plants are only required to grow to the minimum height within the bounds of the schematic.

PlantMinimum heightMaximum height
Sugar cane3N/A
Cactus3N/A
Bamboo616
Kelp225
Glowberries3N/A
Weeping vines225
Twisting vines225

Treeside Plants

Treeside plants grow directly on the sides of trees. For these plants, you only need to tag the tree's stem; the working positions will automatically be set to every horizontally adjacent block of the tagged stem. Currently this is only used for Cocoa beans.

Note that this means that the amount of tags you can actually place is the amount of working positions divided by 4!

Bonemealed Fields

Bonemealed fields will tell the planter to use bonemeal somewhere on the ground to grow plants as if the player had used bonemeal.

The amount of planting positions on these fields are usually unlimited because bonemealing the ground has a set area of effect. However, it is suggested not to make the fields too big; an area around 7x7 is lightly suggested.

Every bonemealed plant works slightly differently.

PlantWork tag location
SeagrassThe block directly below the water should tagged; the planter will bonemeal the tagged block itself. Red Xs are where the planter will attempt to walk. Blue Xs are the blocks that are tagged with the work tag.Seagrass explanation
Sea picklesThe block directly below the water should tagged. The planter will initially place the pickles, then bonemeal the pickles to let them grow. Red Xs are where the planter will attempt to walk. Blue Xs are the blocks that are tagged with the work tag.Sea Pickle explanation
Crimson plantsTag all the nylium ground blocks where the plants are supposed to grow.
Warped plantsTag all the nylium ground blocks where the plants are supposed to grow.

Percentage-based Harvesting

Percentage based harvesting fields will attempt to place a minimum percentage of plants down on given spots. These plants — such as vines — should then naturally spread to their surroundings without the player's help. The planter has no involvement in this process.

PlantTag location
VineTag all the positions where the vines themselves can spread to, NOT the blocks where the vines are attached to.

{% endversion %}

Tips on Building

Do

  • Make all levels of a hut have the same footprint for x, y, and z
  • Place the hut block in the same location with the same rotation
  • Make sure all racks and furnaces are in the same location through all levels (to prevent the contents spilling out when they're getting moved)
  • Use placeholders where you want to keep any existing block (including from level to level), like the Barracks Towers in the Barracks schematic
  • Use solid placeholders at or below ground level
  • Place a groundlevel tag at ground level if your hut isn't sitting directly on the ground.
  • Use only vanilla blocks or Structurize blocks (for official styles)
  • Use Books and Quills instead of blank books, or written books on a lectern. (Keep a copy of the original book and quill somewhere, if it turns out you made a mistake!)

Don't

  • Use unobtainable items in builds (no command blocks, petrified wood, infested blocks, or mob heads (including player heads))
  • Change someone else's style (officially) unless specifically asked to do so
  • Rename schematics after scanning

Additional Information

How to override some built-in schematics?

{% version "1.18.2" before=true %}
Simply create a schematic file with the same style/name. For instance, to override the {% building_link builder %} wooden level 1, create a schematic file name called wooden/builder1.blueprint.
{% endversion %}

{% version "1.19" after=true %}
Unfortunately, this is not possible, unless you override the entire style (make a style pack with the same name as an existing style pack, in that case).
{% endversion %}

How to use custom huts?

{% version "1.18.2" before=true %}
The custom huts need to be copied in the schematics folder.
{% endversion %}

{% version "1.19" after=true %}
The custom huts need to be copied into a style pack.
{% endversion %}

Once copied, you can start your singleplayer or multiplayer game as usual. You should see them in the build tool (if you have the hut block in your inventory).

How to allow my players to use their own huts' schematics on my server?

You will have to copy them yourself in the blueprints folder on the server and restart it.

How to allow my players to use their scanned decoration schematics on my server?

Edit the Structurize configuration file at minecraft/config/structurize-common.toml and set allowPlayerSchematics to true. This allows the player to use their own decorations. It is not possible for the player to use their own huts' schematics. You can also limit the number of players' schematics at any given time by editing maxCachedSchematics (default is 100). When the limit is reached, the server will start deleting unused schematics.

How to disable built-in schematics completely?

Edit the Structurize configuration file at minecraft/config/structurize-common.toml and set ignoreSchematicsFromJar to true. Be aware: things will break if some huts' schematics are missing.

How to create upgradable decoration schematics?

{% version "1.18.2" before=true %}
Add the deco controller somewhere in the schematic with the name of the schematic, where you'll put it in the file directory, and its level. Make sure to actually put the decoration in that file path, but only after scanning - don't include the path in the scan name.
{% endversion %}

{% version "1.19" after=true %}
Put the deco controller somewhere in the schematic, and make sure the name of the schematic ends with a number while scanning. The decoration controller will automatically find the decoration in the same folder with the next number.
{% endversion %}

Upgradable Decos

How to use custom mineshafts in style packs?

The size must be 9 x 4 x 9 blocks. They must be named and oriented exactly the same (i.e. do not rotate at all) as in the default style pack (careful: the names aren't entirely consistent with the layout, so make careful note which is which!) Use an existing style pack as a template along with the scan tool to create the blueprints.

{% version "1.18.2" before=true %}
The custom mineshafts need to be at schematics/yourstyle/miner/*.
{% endversion %}

{% version "1.19" after=true %}
The custom mineshafts need to be at `blueprints/yourstyle/infrastructure/mineshafts/*.

It's recommended that you use the tag tool and Tag Anchor to make the mineshafts invisible. Take care that the anchor is in the same position as in the original mineshafts -- the very center bottom block.
{% endversion %}

How to make custom quarries in style packs?

The {% building_link quarry %} is split into a "top part" and a "bottom part". Both parts only have one level each.

The top part is constructed by the Builder and is the part outside of the quarry pit -- decorative walls, fences, cranes, racks, etc. This contains the actual quarry hut block itself, which should pretty much always be on the second y level up from the bottom (i.e. the bottom layer is the ground level, then the hut is on the next layer up), although with some caveats this is not absolutely required.

The bottom part is constructed by the Quarrier and is the actual quarry pit itself, consisting mostly of placeholders, air blocks, and decorative elements. While you can also set the anchor manually, it's recommended to use a Tag Anchor. The anchor should normally be at the very top layer, although with some caveats it can be elsewhere.

{% version "1.18.2" before=true %}
The top parts must be named simplequarry1 and mediumquarry1, and the corresponding bottom parts are simplequarryshaft1 and mediumquarryshaft1.
{% endversion %}

{% version "1.19" after=true %}
The top part can be in any folder and name that you like (and you can have more than one alternate), but the canonical names are infrastructure/mineshafts/simplequarry1 and infrastructure/mineshafts/mediumquarry1. (For reasons, it's currently best to avoid using different names.)

The bottom part can only be infrastructure/mineshafts/simplequarryshaft1 and infrastructure/mineshafts/mediumquarryshaft1, regardless of what or where the top part was. As such, you can only make one of each per style pack.
{% endversion %}

Importantly: when built, the two schematics are aligned such that the anchor of the bottom part is exactly two blocks below the anchor of the top part. You should carefully align them when designing.

It is permitted for the quarry to be a slightly different size from the default versions, but it's strongly encouraged (for game balance reasons) to make each one approximately the same size as the originals, and in particular to have the same amount of air blocks in the bottom part, since this affects the final yield of cobble or other stone.

How to create parent/child buildings or decorations?

The Barracks and Barracks Tower always have a parent/child relationship (i.e. the towers are embedded within the barracks, not directly built separately with the build tool). It's also possible to do the same with other buildings -- either putting one or more buildings into a containing decoration (e.g. a "district" of related buildings) or even embedding buildings within other buildings.

Some popular combinations are to embed couriers within the warehouse, and fields within the farmer. Others combinations are possible, depending on your goals for the style -- but don't go too overboard! Some players like combination buildings since they fit nicely together, but others don't like them since they can take away flexibility and creativity when building a colony.

When designing parent/child schematics, the key is the light placeholder. The parent schematic needs to contain the child hut block in the correct position and rotation, along with light placeholders wherever there should be a block from the child, and the parent's own blocks. Similarly, the child schematic needs its own hut block and other blocks, and light placeholders wherever there should be a block from the parent. It can be helpful to make a temporary scan of either the parent or child and overlay them over the other to help line things up, or to build both together and then duplicate it and split apart the designs.

While strictly speaking it's only mandatory to include the child hut at the level that it's introduced into the parent and you could put only a placeholder at higher levels, it's strongly recommended to always include the child hut in every higher level of the parent. This works better when someone moves or repairs the parent, or skips levels and pastes it directly at a higher level.

Also remember that the child building can't be upgraded to a higher level than the parent building. This limit doesn't apply if the parent is a non-upgradeable decoration.

Be careful of "research loops" -- if the player needs to build a child before they can unlock a parent, that's a problem (unless you also have an alternate standalone of the child).

Since the parent will contain multiple hut blocks, you will always need to explicitly specify the anchor block (the main parent hut block if a building, or a deco controller or tag anchor if it's a decoration) when you scan, otherwise you'll get an error that the anchor was ambiguous and it will not work correctly.

{% version "1.18.2" before=true %}
Since you can only have one version of each building in each folder, combinations should be used very sparingly. The parent and child need to be in the same folder.

To place the child hut in the parent, you can simply shift-click it, just like when placing it in the child itself. Be sure to get the location and rotation correct -- the child hut will be built with the matching orientation relative to that.
{% endversion %}

{% version "1.19" after=true %}
The parent and child need to be in the same folder. This doesn't mean that you can't combine buildings that are normally in different folders -- just that the version that's intended to be the child must be in the same folder as the parent. You may still have another version of the child (to be used by itself, not as a child) in the original folder if you like.

It's not supported to have a child contain additional children of its own -- you're limited to just the two layers (though the parent can contain multiple children of either the same or different types).

Regardless of which method you use to build, be sure to get the location and rotation of the child hut correct when placing it in the parent -- the building will be built with the matching orientation relative to that.

If you've used the default folder and filenames for your child, then you can simply shift-click the child hut to place it into the parent, similar to older versions. However this is not the most recommended way to do things any more.

The preferred method is to make another level of your child containing only the hut block, giving it the same folder and name as your actual child, but level 0 (e.g. craftsmanship/storage/mycourier0). You can make it the same size as your real child (surrounded by placeholders) if you wish, but scanning a 1x1x1 is fine too. After scanning, you need to move this to its final location in your actual style pack, and then paste it from there (not from your scans!) into your parent. It doesn't matter whether you use schematic or constructed paste. Paste the same level 0 into all levels of the parent. After it's pasted, you can delete the level 0 blueprint -- it should not be included in your final released style pack. (Note that when you go to paste it, the build tool labels it as "level 1" of 6. You can confirm you have the right one by checking the tooltip name.)

Another option is called "auto-levelling". This is where instead of making and pasting a level 0 into each level of the parent, you instead paste the actual matching child level (i.e. level 1 child in the level 1 parent, level 2 child in the level 2 parent, etc). Again it doesn't matter whether you use schematic or constructed paste, but either way you'll probably have to fix up some of the overlapping blocks afterward. You do still need to include the child hut's blueprints in your released style pack, and you do still have to paste it from your actual style pack and not your scans folder.

With auto-levelling, the builder will upgrade the child at the same time as upgrading the parent, instead of the player needing to explicitly build or upgrade one after the other. While this may sound simpler, there are some downsides: the biggest is that won't work well for child buildings that have required functional blocks (such as beds, furnaces, racks, etc), although purely decorative ones are fine. You also should not use this where the child is locked behind research, unless you can be absolutely certain that it's already unlocked (e.g. if the parent is unlocked after the child -- though still be careful of loops). The "level 0" method doesn't have these issues.

Since you can have multiple alternates of buildings (in the same or separate folders), it's possible to make a particular building type have both a standalone version as well as a version embedded as a child. It's strongly recommended to use the tag tool to mark any blueprint intended for use only as a child (in the child schematic itself) as invisible so that it doesn't show up for building standalone -- especially as child versions are often simpler or cheaper and may be missing walls or other things intended to be provided by the parent, so won't look good on their own or might break game balance. It's also possible to have each child of a parent be its own unique blueprint -- but that requires even more scans and more care when pasting to use the right alternate.
{% endversion %}

What if I have another question?

',136),I={href:"https://discord.minecolonies.com/",target:"_blank",rel:"noopener noreferrer"};function z(B,P){const l=o("router-link"),r=o("ExternalLinkIcon");return d(),h("div",null,[k,x,t("nav",q,[t("ul",null,[t("li",null,[a(l,{to:"#scanning-a-new-structure"},{default:i(()=>[e("Scanning a New Structure")]),_:1})]),t("li",null,[a(l,{to:"#placing-a-schematic"},{default:i(()=>[e("Placing a Schematic.")]),_:1})]),t("li",null,[a(l,{to:"#style-packs"},{default:i(()=>[e("Style packs")]),_:1}),t("ul",null,[t("li",null,[a(l,{to:"#the-pack-json"},{default:i(()=>[e("The pack.json")]),_:1})]),t("li",null,[a(l,{to:"#the-folder-structure"},{default:i(()=>[e("The folder structure")]),_:1})])])]),t("li",null,[a(l,{to:"#faq"},{default:i(()=>[e("FAQ")]),_:1})]),t("li",null,[a(l,{to:"#_1-18-custom-hut-filenames"},{default:i(()=>[e("[1.18] Custom Hut Filenames")]),_:1})]),t("li",null,[a(l,{to:"#custom-supply-ships-and-camps"},{default:i(()=>[e("Custom Supply Ships and Camps")]),_:1})]),t("li",null,[a(l,{to:"#hut-requirements"},{default:i(()=>[e("Hut Requirements")]),_:1})]),t("li",null,[a(l,{to:"#level-requirements-for-overworld-styles"},{default:i(()=>[e("Level Requirements for Overworld Styles")]),_:1})]),t("li",null,[a(l,{to:"#level-requirements-for-nether-styles"},{default:i(()=>[e("Level Requirements for Nether Styles")]),_:1})]),t("li",null,[a(l,{to:"#plantation-fields"},{default:i(()=>[e("Plantation Fields")]),_:1}),t("ul",null,[t("li",null,[a(l,{to:"#vertically-growing-plants-upwards-and-downwards"},{default:i(()=>[e("Vertically Growing Plants (Upwards and Downwards)")]),_:1})]),t("li",null,[a(l,{to:"#treeside-plants"},{default:i(()=>[e("Treeside Plants")]),_:1})]),t("li",null,[a(l,{to:"#bonemealed-fields"},{default:i(()=>[e("Bonemealed Fields")]),_:1})]),t("li",null,[a(l,{to:"#percentage-based-harvesting"},{default:i(()=>[e("Percentage-based Harvesting")]),_:1})])])]),t("li",null,[a(l,{to:"#tips-on-building"},{default:i(()=>[e("Tips on Building")]),_:1}),t("ul",null,[t("li",null,[a(l,{to:"#do"},{default:i(()=>[e("Do")]),_:1})]),t("li",null,[a(l,{to:"#don-t"},{default:i(()=>[e("Don't")]),_:1})])])]),t("li",null,[a(l,{to:"#additional-information"},{default:i(()=>[e("Additional Information")]),_:1}),t("ul",null,[t("li",null,[a(l,{to:"#how-to-override-some-built-in-schematics"},{default:i(()=>[e("How to override some built-in schematics?")]),_:1})]),t("li",null,[a(l,{to:"#how-to-use-custom-huts"},{default:i(()=>[e("How to use custom huts?")]),_:1})]),t("li",null,[a(l,{to:"#how-to-allow-my-players-to-use-their-own-huts-schematics-on-my-server"},{default:i(()=>[e("How to allow my players to use their own huts' schematics on my server?")]),_:1})]),t("li",null,[a(l,{to:"#how-to-allow-my-players-to-use-their-scanned-decoration-schematics-on-my-server"},{default:i(()=>[e("How to allow my players to use their scanned decoration schematics on my server?")]),_:1})]),t("li",null,[a(l,{to:"#how-to-disable-built-in-schematics-completely"},{default:i(()=>[e("How to disable built-in schematics completely?")]),_:1})]),t("li",null,[a(l,{to:"#how-to-create-upgradable-decoration-schematics"},{default:i(()=>[e("How to create upgradable decoration schematics?")]),_:1})]),t("li",null,[a(l,{to:"#how-to-use-custom-mineshafts-in-style-packs"},{default:i(()=>[e("How to use custom mineshafts in style packs?")]),_:1})]),t("li",null,[a(l,{to:"#how-to-make-custom-quarries-in-style-packs"},{default:i(()=>[e("How to make custom quarries in style packs?")]),_:1})]),t("li",null,[a(l,{to:"#how-to-create-parent-child-buildings-or-decorations"},{default:i(()=>[e("How to create parent/child buildings or decorations?")]),_:1})])])]),t("li",null,[a(l,{to:"#what-if-i-have-another-question"},{default:i(()=>[e("What if I have another question?")]),_:1})])])]),_,t("p",null,[e("You can download a template folder structure from "),t("a",T,[e("github"),a(r)]),e(" (template.zip), which contains the icons used for the official styles already."),S,e(" That github page also contains examples how different styles are structured."),H,e(" An overview with which buildings go into which folders can also be found "),t("a",N,[e("here"),a(r)]),e(".")]),C,t("p",null,[e("There's a channel in the "),t("a",I,[e("Discord server"),a(r)]),e(" specifically for asking questions about designing your own schematics.")])])}const A=n(v,[["render",z],["__file","schematics.html.vue"]]);export{A as default}; diff --git a/assets/style-2jYd2gTU.css b/assets/style-2jYd2gTU.css deleted file mode 100644 index d132a07..0000000 --- a/assets/style-2jYd2gTU.css +++ /dev/null @@ -1 +0,0 @@ -html[data-theme=dark]{--text-color: #9e9e9e;--bg-color: #0d1117;--bg-color-secondary: #161b22;--bg-color-tertiary: #21262c;--border-color: #30363d;--box-shadow: #282a32;--card-shadow: rgba(0, 0, 0, .3);--black: #fff;--dark-grey: #999;--light-grey: #666;--white: #000;--grey3: #bbb;--grey12: #333;--grey14: #111;--bg-color-light: #161b22;--bg-color-back: #0d1117;--bg-color-float: #161b22;--bg-color-blur: rgba(13, 17, 23, .9);--bg-color-float-blur: rgba(22, 27, 34, .9);--text-color-light: #a8a8a8;--text-color-lighter: #b1b1b1;--text-color-bright: #c5c5c5;--border-color-light: #2e333a;--border-color-dark: #394048}:root{--theme-color: #3eaf7c;--text-color: #2c3e50;--bg-color: #fff;--bg-color-secondary: #f8f8f8;--bg-color-tertiary: #efeef4;--border-color: #eaecef;--box-shadow: #f0f1f2;--card-shadow: rgba(0, 0, 0, .15);--black: #000;--dark-grey: #666;--light-grey: #999;--white: #fff;--grey3: #333;--grey12: #bbb;--grey14: #eee;--navbar-height: 3.75rem;--navbar-horizontal-padding: 1.5rem;--navbar-vertical-padding: .7rem;--navbar-mobile-height: 3.25rem;--navbar-mobile-horizontal-padding: 1rem;--navbar-mobile-vertical-padding: .5rem;--sidebar-width: 18rem;--sidebar-mobile-width: 16rem;--content-width: 780px;--home-page-width: 1160px;--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", STHeiti, "Microsoft YaHei", SimSun, sans-serif;--font-family-heading: Georgia Pro, Crimson, Georgia, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", STHeiti, "Microsoft YaHei", SimSun, sans-serif;--font-family-mono: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace;--line-numbers-width: 2.5rem;--color-transition: .3s ease;--transform-transition: .3s ease;--vp-bg: var(--bg-color);--vp-bgl: var(--bg-color-light);--vp-bglt: var(--bg-color-tertiary);--vp-c: var(--text-color);--vp-cl: var(--text-color-light);--vp-clt: var(--text-color-lighter);--vp-brc: var(--border-color);--vp-brcd: var(--border-color-dark);--vp-tc: var(--theme-color);--vp-tcl: var(--theme-color-light);--vp-ct: var(--color-transition);--vp-tt: var(--transform-transition);--bg-color-light: #fff;--bg-color-back: #f8f8f8;--bg-color-float: #fff;--bg-color-blur: rgba(255, 255, 255, .9);--bg-color-float-blur: rgba(255, 255, 255, .9);--text-color-light: #3a5169;--text-color-lighter: #476582;--text-color-bright: #6a8bad;--border-color-light: #eceef1;--border-color-dark: #cfd4db;--theme-color-dark: #389e70;--theme-color-light: #4abf8a;--theme-color-mask: rgba(62, 175, 124, .15)}:root{--badge-tip-color: #42b983;--badge-warning-color: #f4cd00;--badge-danger-color: #f55;--badge-info-color: #0295ff;--badge-note-color: #666}.vp-badge{display:inline-block;vertical-align:center;height:18px;padding:0 6px;border-radius:3px;background:var(--vp-tc);color:var(--white);font-size:14px;line-height:18px;transition:background var(--vp-ct),color var(--vp-ct)}.vp-badge+.vp-badge{margin-inline-start:5px}h1 .vp-badge,h2 .vp-badge,h3 .vp-badge,h4 .vp-badge,h5 .vp-badge,h6 .vp-badge{vertical-align:top}.vp-badge.tip{background:var(--badge-tip-color)}.vp-badge.warning{background:var(--badge-warning-color)}.vp-badge.danger{background:var(--badge-danger-color)}.vp-badge.info{background:var(--badge-info-color)}.vp-badge.note{background:var(--badge-note-color)}.font-icon{display:inline-block}.theme-hope-content .font-icon{vertical-align:middle}:root{--balloon-border-radius: 2px;--balloon-color: rgba(16, 16, 16, .95);--balloon-text-color: #fff;--balloon-font-size: 12px;--balloon-move: 4px}button[aria-label][data-balloon-pos]{overflow:visible}[aria-label][data-balloon-pos]{position:relative;cursor:pointer}[aria-label][data-balloon-pos]:after{opacity:0;pointer-events:none;transition:all .18s ease-out .18s;text-indent:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-weight:400;font-style:normal;text-shadow:none;font-size:var(--balloon-font-size);background:var(--balloon-color);border-radius:2px;color:var(--balloon-text-color);border-radius:var(--balloon-border-radius);content:attr(aria-label);padding:.5em 1em;position:absolute;white-space:nowrap;z-index:10}[aria-label][data-balloon-pos]:before{width:0;height:0;border:5px solid transparent;border-top-color:var(--balloon-color);opacity:0;pointer-events:none;transition:all .18s ease-out .18s;content:"";position:absolute;z-index:10}[aria-label][data-balloon-pos]:hover:before,[aria-label][data-balloon-pos]:hover:after,[aria-label][data-balloon-pos][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-visible]:after,[aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:before,[aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:after{opacity:1;pointer-events:none}[aria-label][data-balloon-pos].font-awesome:after{font-family:FontAwesome,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}[aria-label][data-balloon-pos][data-balloon-break]:after{white-space:pre}[aria-label][data-balloon-pos][data-balloon-break][data-balloon-length]:after{white-space:pre-line;word-break:break-word}[aria-label][data-balloon-pos][data-balloon-blunt]:before,[aria-label][data-balloon-pos][data-balloon-blunt]:after{transition:none}[aria-label][data-balloon-pos][data-balloon-pos=up]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=up][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-pos=down]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=down][data-balloon-visible]:after{transform:translate(-50%)}[aria-label][data-balloon-pos][data-balloon-pos=up]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=up][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-pos=down]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=down][data-balloon-visible]:before{transform:translate(-50%)}[aria-label][data-balloon-pos][data-balloon-pos*=-left]:after{left:0}[aria-label][data-balloon-pos][data-balloon-pos*=-left]:before{left:5px}[aria-label][data-balloon-pos][data-balloon-pos*=-right]:after{right:0}[aria-label][data-balloon-pos][data-balloon-pos*=-right]:before{right:5px}[aria-label][data-balloon-pos][data-balloon-po*=-left]:hover:after,[aria-label][data-balloon-pos][data-balloon-po*=-left][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-pos*=-right]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos*=-right][data-balloon-visible]:after{transform:translate(0)}[aria-label][data-balloon-pos][data-balloon-po*=-left]:hover:before,[aria-label][data-balloon-pos][data-balloon-po*=-left][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-pos*=-right]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos*=-right][data-balloon-visible]:before{transform:translate(0)}[aria-label][data-balloon-pos][data-balloon-pos^=up]:before,[aria-label][data-balloon-pos][data-balloon-pos^=up]:after{bottom:100%;transform-origin:top;transform:translateY(var(--balloon-move))}[aria-label][data-balloon-pos][data-balloon-pos^=up]:after{margin-bottom:10px}[aria-label][data-balloon-pos][data-balloon-pos=up]:before,[aria-label][data-balloon-pos][data-balloon-pos=up]:after{left:50%;transform:translate(-50%,var(--balloon-move))}[aria-label][data-balloon-pos][data-balloon-pos^=down]:before,[aria-label][data-balloon-pos][data-balloon-pos^=down]:after{top:100%;transform:translateY(calc(var(--balloon-move) * -1))}[aria-label][data-balloon-pos][data-balloon-pos^=down]:after{margin-top:10px}[aria-label][data-balloon-pos][data-balloon-pos^=down]:before{width:0;height:0;border:5px solid transparent;border-bottom-color:var(--balloon-color)}[aria-label][data-balloon-pos][data-balloon-pos=down]:after,[aria-label][data-balloon-pos][data-balloon-pos=down]:before{left:50%;transform:translate(-50%,calc(var(--balloon-move) * -1))}[aria-label][data-balloon-pos][data-balloon-pos=left]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=left][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-pos=right]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=right][data-balloon-visible]:after{transform:translateY(-50%)}[aria-label][data-balloon-pos][data-balloon-pos=left]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=left][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-pos=right]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=right][data-balloon-visible]:before{transform:translateY(-50%)}[aria-label][data-balloon-pos][data-balloon-pos=left]:after,[aria-label][data-balloon-pos][data-balloon-pos=left]:before{right:100%;top:50%;transform:translate(var(--balloon-move),-50%)}[aria-label][data-balloon-pos][data-balloon-pos=left]:after{margin-right:10px}[aria-label][data-balloon-pos][data-balloon-pos=left]:before{width:0;height:0;border:5px solid transparent;border-left-color:var(--balloon-color)}[aria-label][data-balloon-pos][data-balloon-pos=right]:after,[aria-label][data-balloon-pos][data-balloon-pos=right]:before{left:100%;top:50%;transform:translate(calc(var(--balloon-move) * -1),-50%)}[aria-label][data-balloon-pos][data-balloon-pos=right]:after{margin-left:10px}[aria-label][data-balloon-pos][data-balloon-pos=right]:before{width:0;height:0;border:5px solid transparent;border-right-color:var(--balloon-color)}[aria-label][data-balloon-pos][data-balloon-length]:after{white-space:normal}[aria-label][data-balloon-pos][data-balloon-length=small]:after{width:80px}[aria-label][data-balloon-pos][data-balloon-length=medium]:after{width:150px}[aria-label][data-balloon-pos][data-balloon-length=large]:after{width:260px}[aria-label][data-balloon-pos][data-balloon-length=xlarge]:after{width:380px}@media screen and (max-width: 768px){[aria-label][data-balloon-pos][data-balloon-length=xlarge]:after{width:90vw}}[aria-label][data-balloon-pos][data-balloon-length=fit]:after{width:100%}.vp-back-to-top-button{border-width:0;background:transparent;cursor:pointer;position:fixed!important;bottom:64px;inset-inline-end:1rem;z-index:100;width:48px;height:48px;padding:8px;border-radius:50%;background:var(--vp-bg);color:var(--vp-tc);box-shadow:2px 2px 10px 4px var(--card-shadow);transition:background var(--vp-ct),color var(--vp-ct),box-shadow var(--vp-ct)}@media (max-width: 719px){.vp-back-to-top-button{width:36px;height:36px}}@media print{.vp-back-to-top-button{display:none}}.vp-back-to-top-button:hover{color:var(--vp-tcl)}.vp-back-to-top-button .back-to-top-icon{overflow:hidden;width:100%;border-radius:50%;fill:currentcolor}.vp-scroll-progress{position:absolute;right:-2px;bottom:-2px;width:52px;height:52px}@media (max-width: 719px){.vp-scroll-progress{width:40px;height:40px}}.vp-scroll-progress svg{width:100%;height:100%}.vp-scroll-progress circle{opacity:.9;fill:none;stroke:var(--vp-tc);transform:rotate(-90deg);transform-origin:50% 50%;r:22;stroke-dasharray:0% 314.1593%;stroke-width:3px}@media (max-width: 719px){.vp-scroll-progress circle{r:18}}.fade-enter-active,.fade-leave-active{transition:opacity var(--vp-ct)}.fade-enter-from,.fade-leave-to{opacity:0}@media screen{.sr-only{position:absolute;overflow:hidden;clip:rect 0,0,0,0;width:1px;height:1px;margin:-1px;padding:0;border:0}}@media print{.sr-only{display:none}}.vp-catalog-wrapper{margin-top:8px;margin-bottom:8px}.vp-catalog-wrapper.index ol{padding-inline-start:0}.vp-catalog-wrapper.index li{list-style-type:none}.vp-catalog-wrapper.index .vp-catalogs{padding-inline-start:0}.vp-catalog-wrapper.index .vp-catalog{list-style-type:none}.vp-catalog-wrapper.index .vp-catalog-title:before{content:"§" counter(catalog-item,upper-roman) " "}.vp-catalog-wrapper.index .vp-child-catalogs{counter-reset:child-catalog}.vp-catalog-wrapper.index .vp-child-catalog{counter-increment:child-catalog}.vp-catalog-wrapper.index .vp-child-catalog .vp-catalog-title:before{content:counter(catalog-item) "." counter(child-catalog) " "}.vp-catalog-wrapper.index .vp-sub-catalogs{padding-inline-start:.5rem}.vp-catalogs{margin:0;counter-reset:catalog-item}.vp-catalogs.deep{padding-inline-start:0}.vp-catalogs.deep .vp-catalog{list-style-type:none}.vp-catalogs .font-icon{vertical-align:baseline;margin-inline-end:.25rem}.vp-catalog{counter-increment:catalog-item}.vp-catalog-main-title{margin-top:calc(.5rem - var(--navbar-height, 3.6rem));margin-bottom:.5rem;padding-top:var(--navbar-height, 3.6rem);font-weight:500;font-size:1.75rem}.vp-catalog-main-title:first-child{margin-bottom:.5rem!important}.vp-catalog-main-title:only-child{margin-bottom:0!important}.vp-catalog-child-title{margin-bottom:.5rem!important}.vp-catalog-child-title.has-children{margin-top:calc(.5rem - var(--navbar-height, 3.6rem));padding-top:var(--navbar-height, 3.6rem);border-bottom:1px solid var(--vp-brc);font-weight:500;font-size:1.3rem;transition:border-color var(--vp-ct)}.vp-catalog-child-title.has-children:only-child{margin-bottom:0!important}.vp-catalog-sub-title{font-weight:500;font-size:1.1rem}.vp-catalog-sub-title:only-child{margin-bottom:0!important}.vp-catalog-title{color:inherit;text-decoration:none}.vp-catalog-title:hover{color:var(--vp-tc)}.vp-child-catalogs{margin:0}.vp-child-catalog{list-style-type:disc}.vp-sub-catalogs{counter-reset:sub-catalog}.vp-sub-catalog{counter-increment:sub-catalog}.vp-sub-catalog .vp-link:before{content:counter(catalog-item) "." counter(child-catalog) "." counter(sub-catalog) " "}.vp-sub-catalogs-wrapper{display:flex;flex-wrap:wrap}.vp-sub-catalog-link{display:inline-block;margin:4px 8px;padding:4px 8px;border-radius:6px;background-color:var(--vp-bgl);line-height:1.5;overflow-wrap:break-word;transition:background-color var(--vp-ct),color var(--vp-ct)}.vp-sub-catalog-link:hover{background-color:var(--vp-tcl);color:var(--vp-bg);text-decoration:none!important}.vp-empty-catalog{font-size:1.25rem;text-align:center}:root{--external-link-icon-color: #aaa}.external-link-icon{position:relative;display:inline-block;color:var(--external-link-icon-color);vertical-align:middle;top:-1px}@media print{.external-link-icon{display:none}}.external-link-icon-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}:root{--nprogress-color: #29d;--nprogress-z-index: 1031}#nprogress{pointer-events:none}#nprogress .bar{background:var(--nprogress-color);position:fixed;z-index:var(--nprogress-z-index);top:0;left:0;width:100%;height:2px}:root{--copy-icon: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2'/%3E%3C/svg%3E");--copied-icon: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2m-6 9 2 2 4-4'/%3E%3C/svg%3E")}div[class*=language-]>button.copy-code-button{border-width:0;background:transparent;position:absolute;outline:none;cursor:pointer}@media print{div[class*=language-]>button.copy-code-button{display:none}}div[class*=language-]>button.copy-code-button .copy-icon{background:currentcolor;-webkit-mask-image:var(--copy-icon);mask-image:var(--copy-icon);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:1em;mask-size:1em}div[class*=language-]>button.copy-code-button:not(.fancy){border-width:0;background:transparent;cursor:pointer;position:absolute;top:.5em;right:.5em;z-index:5;width:2.5rem;height:2.5rem;padding:0;border-radius:.5rem;opacity:0;transition:opacity .4s}div[class*=language-]>button.copy-code-button:not(.fancy):hover,div[class*=language-]>button.copy-code-button:not(.fancy).copied{background:var(--code-hl-bg-color, rgba(0, 0, 0, .66))}div[class*=language-]>button.copy-code-button:not(.fancy):focus,div[class*=language-]>button.copy-code-button:not(.fancy).copied{opacity:1}div[class*=language-]>button.copy-code-button:not(.fancy).copied:after{content:attr(data-copied);position:absolute;top:0;right:calc(100% + .25rem);display:block;height:1.25rem;padding:.625rem;border-radius:.5rem;background:var(--code-hl-bg-color, rgba(0, 0, 0, .66));color:var(--code-ln-color, #9e9e9e);font-weight:500;line-height:1.25rem;white-space:nowrap}div[class*=language-]>button.copy-code-button:not(.fancy) .copy-icon{width:1.25rem;height:1.25rem;padding:.625rem;color:var(--code-ln-color, #9e9e9e);font-size:1.25rem}div[class*=language-]>button.copy-code-button.fancy{right:-14px;bottom:-14px;z-index:5;width:2rem;height:2rem;padding:7px 8px;border-radius:50%;background:#339af0;color:#fff}@media (max-width: 419px){div[class*=language-]>button.copy-code-button.fancy{right:0;bottom:0;width:28px;height:28px;border-radius:50% 10% 0}}div[class*=language-]>button.copy-code-button.fancy:hover{background:#228be6}div[class*=language-]>button.copy-code-button.fancy .copy-icon{width:100%;height:100%;color:#fff;font-size:1.25rem}@media (max-width: 419px){div[class*=language-]>button.copy-code-button.fancy .copy-icon{position:relative;top:2px;left:2px}}div[class*=language-]>button.copy-code-button.copied .copy-icon{-webkit-mask-image:var(--copied-icon);mask-image:var(--copied-icon)}div[class*=language-]:hover:before{display:none}div[class*=language-]:hover>button.copy-code-button:not(.fancy){opacity:1}.footnote-item{margin-top:calc(0rem - var(--navbar-height, 3.6rem));padding-top:calc(var(--navbar-height, 3.6rem) + .5rem)}.footnote-item>p{margin-bottom:0}.footnote-ref{position:relative}.footnote-anchor{position:absolute;top:calc(-.5rem - var(--navbar-height, 3.6rem))}:root{--important-title-color: #230555;--important-bg-color: #f4eefe;--important-border-color: #a371f7;--important-code-bg-color: rgb(163 113 247 / 10%);--info-title-color: #193c47;--info-bg-color: #eef9fd;--info-border-color: #4cb3d4;--info-code-bg-color: rgb(76 179 212 / 10%);--note-title-color: #474748;--note-bg-color: #fdfdfe;--note-border-color: #ccc;--note-code-bg-color: rgb(212 213 216 / 20%);--tip-title-color: #003100;--tip-bg-color: #e6f6e6;--tip-border-color: #009400;--tip-code-bg-color: rgb(0 148 0 / 15%);--warning-title-color: #4d3800;--warning-bg-color: #fff8e6;--warning-border-color: #e6a700;--warning-code-bg-color: rgb(230 167 0 / 15%);--caution-title-color: #4b1113;--caution-bg-color: #ffebec;--caution-border-color: #e13238;--caution-code-bg-color: rgb(225 50 56 / 15%);--detail-bg-color: #eee;--detail-text-color: inherit;--detail-code-bg-color: rgb(127 127 127 / 15%)}html[data-theme=dark]{--important-title-color: #f4eefe;--important-bg-color: #230555;--info-title-color: #eef9fd;--info-bg-color: #193c47;--note-title-color: #fdfdfe;--note-bg-color: #474748;--tip-title-color: #e6f6e6;--tip-bg-color: #003100;--warning-title-color: #fff8e6;--warning-bg-color: #4d3800;--caution-title-color: #ffebec;--caution-bg-color: #4b1113;--detail-bg-color: #333;--detail-text-color: #a8a8a8}.hint-container{position:relative;transition:background var(--vp-ct),border-color var(--vp-ct),color var(--vp-ct)}@media print{.hint-container{page-break-inside:avoid}}.hint-container .hint-container-title{position:relative;font-weight:600;line-height:1.25}.hint-container.important,.hint-container.info,.hint-container.note,.hint-container.tip,.hint-container.warning,.hint-container.caution{margin:1rem 0;padding:.25rem 1rem;border-inline-start-width:.3rem;border-inline-start-style:solid;border-radius:.5rem;color:inherit}@media (max-width: 419px){.hint-container.important,.hint-container.info,.hint-container.note,.hint-container.tip,.hint-container.warning,.hint-container.caution{margin-inline:-.75rem}}.hint-container.important .hint-container-title,.hint-container.info .hint-container-title,.hint-container.note .hint-container-title,.hint-container.tip .hint-container-title,.hint-container.warning .hint-container-title,.hint-container.caution .hint-container-title{padding-inline-start:1.75rem}@media print{.hint-container.important .hint-container-title,.hint-container.info .hint-container-title,.hint-container.note .hint-container-title,.hint-container.tip .hint-container-title,.hint-container.warning .hint-container-title,.hint-container.caution .hint-container-title{padding-inline-start:0}}.hint-container.important .hint-container-title:before,.hint-container.info .hint-container-title:before,.hint-container.note .hint-container-title:before,.hint-container.tip .hint-container-title:before,.hint-container.warning .hint-container-title:before,.hint-container.caution .hint-container-title:before{content:" ";position:absolute;top:calc(50% - .6125em);inset-inline-start:0;width:1.25em;height:1.25em;background-position:left;background-repeat:no-repeat}@media print{.hint-container.important .hint-container-title:before,.hint-container.info .hint-container-title:before,.hint-container.note .hint-container-title:before,.hint-container.tip .hint-container-title:before,.hint-container.warning .hint-container-title:before,.hint-container.caution .hint-container-title:before{display:none}}.hint-container.important p,.hint-container.info p,.hint-container.note p,.hint-container.tip p,.hint-container.warning p,.hint-container.caution p{line-height:1.5}.hint-container.important a,.hint-container.info a,.hint-container.note a,.hint-container.tip a,.hint-container.warning a,.hint-container.caution a{color:var(--vp-tc)}.hint-container.important{border-color:var(--important-border-color);background:var(--important-bg-color)}.hint-container.important>.hint-container-title{color:var(--important-title-color)}.hint-container.important>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Cpath d='M512 981.333a84.992 84.992 0 0 1-84.907-84.906h169.814A84.992 84.992 0 0 1 512 981.333zm384-128H128v-42.666l85.333-85.334v-256A298.325 298.325 0 0 1 448 177.92V128a64 64 0 0 1 128 0v49.92a298.325 298.325 0 0 1 234.667 291.413v256L896 810.667v42.666zm-426.667-256v85.334h85.334v-85.334h-85.334zm0-256V512h85.334V341.333h-85.334z' fill='%23a371f7'/%3E%3C/svg%3E")}.hint-container.important code{background:var(--important-code-bg-color)}.hint-container.info{border-color:var(--info-border-color);background:var(--info-bg-color)}.hint-container.info>.hint-container-title{color:var(--info-title-color)}.hint-container.info>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-11v6h2v-6h-2zm0-4v2h2V7h-2z' fill='%234cb3d4'/%3E%3C/svg%3E")}.hint-container.info code{background:var(--info-code-bg-color)}.hint-container.note{border-color:var(--note-border-color);background:var(--note-bg-color)}.hint-container.note>.hint-container-title{color:var(--note-title-color)}.hint-container.note>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-11v6h2v-6h-2zm0-4v2h2V7h-2z' fill='%23ccc'/%3E%3C/svg%3E")}.hint-container.note code{background:var(--note-code-bg-color)}.hint-container.tip{border-color:var(--tip-border-color);background:var(--tip-bg-color)}.hint-container.tip>.hint-container-title{color:var(--tip-title-color)}.hint-container.tip>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23009400' d='M7.941 18c-.297-1.273-1.637-2.314-2.187-3a8 8 0 1 1 12.49.002c-.55.685-1.888 1.726-2.185 2.998H7.94zM16 20v1a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-1h8zm-3-9.995V6l-4.5 6.005H11v4l4.5-6H13z'/%3E%3C/svg%3E")}.hint-container.tip code{background:var(--tip-code-bg-color)}.hint-container.warning{border-color:var(--warning-border-color);background:var(--warning-bg-color)}.hint-container.warning>.hint-container-title{color:var(--warning-title-color)}.hint-container.warning>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Cpath d='M576.286 752.57v-95.425q0-7.031-4.771-11.802t-11.3-4.772h-96.43q-6.528 0-11.3 4.772t-4.77 11.802v95.424q0 7.031 4.77 11.803t11.3 4.77h96.43q6.528 0 11.3-4.77t4.77-11.803zm-1.005-187.836 9.04-230.524q0-6.027-5.022-9.543-6.529-5.524-12.053-5.524H456.754q-5.524 0-12.053 5.524-5.022 3.516-5.022 10.547l8.538 229.52q0 5.023 5.022 8.287t12.053 3.265h92.913q7.032 0 11.803-3.265t5.273-8.287zM568.25 95.65l385.714 707.142q17.578 31.641-1.004 63.282-8.538 14.564-23.354 23.102t-31.892 8.538H126.286q-17.076 0-31.892-8.538T71.04 866.074q-18.582-31.641-1.004-63.282L455.75 95.65q8.538-15.57 23.605-24.61T512 62t32.645 9.04 23.605 24.61z' fill='%23e6a700'/%3E%3C/svg%3E")}.hint-container.warning code{background:var(--warning-code-bg-color)}.hint-container.caution{border-color:var(--caution-border-color);background:var(--caution-bg-color)}.hint-container.caution>.hint-container-title{color:var(--caution-title-color)}.hint-container.caution>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2c5.523 0 10 4.477 10 10v3.764a2 2 0 0 1-1.106 1.789L18 19v1a3 3 0 0 1-2.824 2.995L14.95 23a2.5 2.5 0 0 0 .044-.33L15 22.5V22a2 2 0 0 0-1.85-1.995L13 20h-2a2 2 0 0 0-1.995 1.85L9 22v.5c0 .171.017.339.05.5H9a3 3 0 0 1-3-3v-1l-2.894-1.447A2 2 0 0 1 2 15.763V12C2 6.477 6.477 2 12 2zm-4 9a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm8 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4z' fill='%23e13238'/%3E%3C/svg%3E")}.hint-container.caution code{background:var(--caution-code-bg-color)}.hint-container.details{position:relative;display:block;margin:1rem 0;padding:1.5rem;border-radius:.5rem;background:var(--detail-bg-color);color:var(--detail-text-color);transition:background var(--vp-tt),color var(--vp-tt)}@media (max-width: 419px){.hint-container.details{margin-inline:-.75rem}}.hint-container.details h4{margin-top:0}.hint-container.details figure:last-child,.hint-container.details p:last-child{margin-bottom:0;padding-bottom:0}.hint-container.details a{color:var(--vp-tc)}.hint-container.details code{background:var(--detail-code-bg-color)}.hint-container.details summary{position:relative;margin:-1.5rem;padding-block:1.5rem;padding-inline:4rem 1.5rem;list-style:none;cursor:pointer}.hint-container.details summary::-webkit-details-marker{display:none}.hint-container.details summary::marker{color:transparent;font-size:0}.hint-container.details summary:before,.hint-container.details summary:after{content:" ";position:absolute;top:calc(50% - .75rem);inset-inline-start:1.5rem;width:1.5rem;height:1.5rem}.hint-container.details summary:before{border-radius:50%;background:#ccc;transition:background var(--vp-ct),transform var(--vp-tt)}html[data-theme=dark] .hint-container.details summary:before{background:#555}.hint-container.details summary:after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");line-height:normal;transition:transform var(--vp-tt);transform:rotate(90deg)}html[data-theme=dark] .hint-container.details summary:after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.hint-container.details[open]>summary{margin-bottom:.5em}.hint-container.details[open]>summary:after{transform:rotate(180deg)}html[data-theme=light] figure:has(img[data-mode=darkmode-only]),html[data-theme=light] img[data-mode=darkmode-only]{display:none!important}html[data-theme=dark] figure:has(img[data-mode=lightmode-only]),html[data-theme=dark] img[data-mode=lightmode-only]{display:none!important}.task-list-container{padding-inline-start:0;list-style-position:inside}.task-list-container .task-list-container{padding-inline-start:1.5em}.task-list-item{list-style:none}.task-list-item-checkbox{position:relative;cursor:pointer}.task-list-item-checkbox:after{content:" ";position:absolute;top:0;display:inline-block;box-sizing:border-box;width:1em;height:1em;padding-inline-start:0;border:1px solid #ddd;border-radius:2px;background:#fff;text-align:center;visibility:visible;transition:background var(--vp-ct),border-color var(--vp-ct)}@media print{.task-list-item-checkbox:after{border-color:var(--vp-c)}}html[data-theme=dark] .task-list-item-checkbox:after{border-color:#666;background:#333}.task-list-item-checkbox:checked:after{content:"";border-color:var(--vp-tc);background:var(--vp-tc)}@media print{.task-list-item-checkbox:checked:after{border-color:var(--vp-c);background:transparent}}html[data-theme=dark] .task-list-item-checkbox:checked:after{border-color:var(--vp-tc);background:var(--vp-tc)}.task-list-item-checkbox:checked:before{content:"";position:absolute;top:.1em;inset-inline-start:.4em;z-index:1;width:.2em;height:.5em;border:solid var(--white);border-width:0 .15em .15em 0;transform:rotate(45deg)}@media print{.task-list-item-checkbox:checked:before{border-color:var(--vp-c)}}/*! PhotoSwipe main CSS by Dmytro Semenov | photoswipe.com */.pswp{--pswp-bg: #000;--pswp-placeholder-bg: #222;--pswp-root-z-index: 100000;--pswp-preloader-color: rgba(79, 79, 79, .4);--pswp-preloader-color-secondary: rgba(255, 255, 255, .9);--pswp-icon-color: #fff;--pswp-icon-color-secondary: #4f4f4f;--pswp-icon-stroke-color: #4f4f4f;--pswp-icon-stroke-width: 2px;--pswp-error-text-color: var(--pswp-icon-color)}.pswp{position:fixed;top:0;left:0;width:100%;height:100%;z-index:var(--pswp-root-z-index);display:none;touch-action:none;outline:0;opacity:.003;contain:layout style size;-webkit-tap-highlight-color:rgba(0,0,0,0)}.pswp:focus{outline:0}.pswp *{box-sizing:border-box}.pswp img{max-width:none}.pswp--open{display:block}.pswp,.pswp__bg{transform:translateZ(0);will-change:opacity}.pswp__bg{opacity:.005;background:var(--pswp-bg)}.pswp,.pswp__scroll-wrap{overflow:hidden}.pswp__scroll-wrap,.pswp__bg,.pswp__container,.pswp__item,.pswp__content,.pswp__img,.pswp__zoom-wrap{position:absolute;top:0;left:0;width:100%;height:100%}.pswp__img,.pswp__zoom-wrap{width:auto;height:auto}.pswp--click-to-zoom.pswp--zoom-allowed .pswp__img{cursor:zoom-in}.pswp--click-to-zoom.pswp--zoomed-in .pswp__img{cursor:move;cursor:grab}.pswp--click-to-zoom.pswp--zoomed-in .pswp__img:active{cursor:grabbing}.pswp--no-mouse-drag.pswp--zoomed-in .pswp__img,.pswp--no-mouse-drag.pswp--zoomed-in .pswp__img:active,.pswp__img{cursor:zoom-out}.pswp__container,.pswp__img,.pswp__button,.pswp__counter{-webkit-user-select:none;-moz-user-select:none;user-select:none}.pswp__item{z-index:1;overflow:hidden}.pswp__hidden{display:none!important}.pswp__content{pointer-events:none}.pswp__content>*{pointer-events:auto}.pswp__error-msg-container{display:grid}.pswp__error-msg{margin:auto;font-size:1em;line-height:1;color:var(--pswp-error-text-color)}.pswp .pswp__hide-on-close{opacity:.005;will-change:opacity;transition:opacity var(--pswp-transition-duration) cubic-bezier(.4,0,.22,1);z-index:10;pointer-events:none}.pswp--ui-visible .pswp__hide-on-close{opacity:1;pointer-events:auto}.pswp__button{position:relative;display:block;width:50px;height:60px;padding:0;margin:0;overflow:hidden;cursor:pointer;background:none;border:0;box-shadow:none;opacity:.85;-webkit-appearance:none;-webkit-touch-callout:none}.pswp__button:hover,.pswp__button:active,.pswp__button:focus{transition:none;padding:0;background:none;border:0;box-shadow:none;opacity:1}.pswp__button:disabled{opacity:.3;cursor:auto}.pswp__icn{fill:var(--pswp-icon-color);color:var(--pswp-icon-color-secondary)}.pswp__icn{position:absolute;top:14px;left:9px;width:32px;height:32px;overflow:hidden;pointer-events:none}.pswp__icn-shadow{stroke:var(--pswp-icon-stroke-color);stroke-width:var(--pswp-icon-stroke-width);fill:none}.pswp__icn:focus{outline:0}div.pswp__img--placeholder,.pswp__img--with-bg{background:var(--pswp-placeholder-bg)}.pswp__top-bar{position:absolute;left:0;top:0;width:100%;height:60px;display:flex;flex-direction:row;justify-content:flex-end;z-index:10;pointer-events:none!important}.pswp__top-bar>*{pointer-events:auto;will-change:opacity}.pswp__button--close{margin-right:6px}.pswp__button--arrow{position:absolute;width:75px;height:100px;top:50%;margin-top:-50px}.pswp__button--arrow:disabled{display:none;cursor:default}.pswp__button--arrow .pswp__icn{top:50%;margin-top:-30px;width:60px;height:60px;background:none;border-radius:0}.pswp--one-slide .pswp__button--arrow{display:none}.pswp--touch .pswp__button--arrow{visibility:hidden}.pswp--has_mouse .pswp__button--arrow{visibility:visible}.pswp__button--arrow--prev{right:auto;left:0}.pswp__button--arrow--next{right:0}.pswp__button--arrow--next .pswp__icn{left:auto;right:14px;transform:scaleX(-1)}.pswp__button--zoom{display:none}.pswp--zoom-allowed .pswp__button--zoom{display:block}.pswp--zoomed-in .pswp__zoom-icn-bar-v{display:none}.pswp__preloader{position:relative;overflow:hidden;width:50px;height:60px;margin-right:auto}.pswp__preloader .pswp__icn{opacity:0;transition:opacity .2s linear;animation:pswp-clockwise .6s linear infinite}.pswp__preloader--active .pswp__icn{opacity:.85}@keyframes pswp-clockwise{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.pswp__counter{height:30px;margin-top:15px;margin-inline-start:20px;font-size:14px;line-height:30px;color:var(--pswp-icon-color);text-shadow:1px 1px 3px var(--pswp-icon-color-secondary);opacity:.85}.pswp--one-slide .pswp__counter{display:none}.photo-swipe-loading{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}.photo-swipe-bullets-indicator{position:absolute;bottom:30px;left:50%;display:flex;flex-direction:row;align-items:center;transform:translate(-50%)}.photo-swipe-bullet{width:12px;height:6px;margin:0 5px;border-radius:3px;background:#fff;transition:width var(--vp-tt),color var(--vp-ct)}.photo-swipe-bullet.active{width:30px;background:var(--vp-tc)}.search-pro-button{border-width:0;background:transparent;display:inline-flex;align-items:center;box-sizing:content-box;height:1.25rem;margin-inline:1rem 0;margin-top:0;margin-bottom:0;padding:.5rem;border:0;border:1px solid var(--vp-bgl);border-radius:1rem;background:var(--vp-bgl);color:var(--vp-c);font-weight:500;cursor:pointer;transition:background var(--vp-ct),color var(--vp-ct)}@media print{.search-pro-button{display:none}}@media (max-width: 959px){.search-pro-button{border-radius:50%}}.search-pro-button:hover{border:1px solid var(--vp-tc);background-color:var(--vp-bglt);color:var(--vp-clt)}.search-pro-button .search-icon{width:1.25rem;height:1.25rem}.search-pro-placeholder{margin-inline:.25rem;font-size:1rem}@media (max-width: 959px){.search-pro-placeholder{display:none}}.search-pro-key-hints{font-size:.75rem}@media (max-width: 959px){.search-pro-key-hints{display:none}}.search-pro-key{display:inline-block;min-width:1em;margin-inline:.125rem;padding:.25rem;border:1px solid var(--vp-brc);border-radius:4px;box-shadow:1px 1px 4px 0 var(--card-shadow);line-height:1;letter-spacing:-.1em;transition:background var(--vp-ct),color var(--vp-ct),border var(--vp-ct) box-shadow var(--vp-ct)}@keyframes search-pro-fade-in{0%{opacity:.2}to{opacity:1}}.search-pro-modal-wrapper{position:fixed;top:0;right:0;bottom:0;left:0;z-index:997;display:flex;align-items:center;justify-content:center;overflow:auto;cursor:default}.search-pro-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:998;animation:.25s search-pro-fade-in;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.search-pro-modal{position:absolute;z-index:999;display:flex;flex-direction:column;width:calc(100% - 6rem);max-width:50em;border-radius:10px;background:var(--vp-bg);box-shadow:2px 2px 10px 0 var(--card-shadow);transition:background var(--vp-ct);animation:.15s pwa-opened}@media (max-width: 1280px){.search-pro-modal{animation:.25s pwa-mobile}}@media (max-width: 719px){.search-pro-modal{width:100vw;max-width:unset;height:100vh}}.search-pro-box{display:flex;margin:1rem}.search-pro-box form{position:relative;display:flex;flex:1}.search-pro-box label{position:absolute;top:calc(50% - .75rem);inset-inline-start:.5rem;color:var(--vp-tc)}.search-pro-box label .search-icon{width:1.5rem;height:1.5rem}.search-pro-clear-button{border-width:0;background:transparent;cursor:pointer;position:absolute;top:calc(50% - 10px);inset-inline-end:.75rem;padding:0;color:var(--vp-tc)}.search-pro-clear-button:hover{border-radius:50%;background-color:#0000001a}.search-pro-close-button{border-width:0;background:transparent;cursor:pointer;display:none;margin-inline:.5rem -.5rem;padding:.5rem;color:var(--grey3);font-size:1rem}@media (max-width: 719px){.search-pro-close-button{display:block}}.search-pro-input{flex:1;width:0;margin:0;padding-block:.25rem;padding-inline:2.5rem 2rem;border:0;border:2px solid var(--vp-tc);border-radius:8px;background:var(--vp-bg);color:var(--vp-c);outline:none;font-size:1.25rem;line-height:2.5;-webkit-appearance:none;-moz-appearance:none;appearance:none}.search-pro-input::-webkit-search-cancel-button{display:none}.search-pro-suggestions{position:absolute;inset:calc(100% + 4px) 0 auto;z-index:20;overflow:visible;overflow-y:auto;max-height:50vh;margin:0;padding:0;border-radius:.5rem;background-color:var(--vp-bg);box-shadow:2px 2px 10px 0 var(--card-shadow);list-style:none;line-height:1.5}.search-pro-suggestion{padding:.25rem 1rem;border-top:1px solid var(--vp-brc);cursor:pointer}.search-pro-suggestion:first-child{border-top:none}.search-pro-suggestion.active,.search-pro-suggestion:hover{background-color:var(--vp-bglt)}.search-pro-auto-complete{display:none;float:right;margin:0 .5rem;padding:4px;border:1px solid var(--vp-brc);border-radius:4px;box-shadow:1px 1px 4px 0 var(--card-shadow);font-size:12px;line-height:1}.search-pro-suggestion.active .search-pro-auto-complete{display:block}.search-pro-result-wrapper{flex-grow:1;overflow-y:auto;min-height:40vh;max-height:calc(80vh - 10rem);padding:0 1rem}@media (max-width: 719px){.search-pro-result-wrapper{min-height:unset;max-height:unset}}.search-pro-result-wrapper.loading,.search-pro-result-wrapper.empty{display:flex;align-items:center;justify-content:center;padding:1.5rem;font-weight:600;font-size:22px;text-align:center}.search-pro-hints{margin-top:1rem;padding:.75rem .5rem;box-shadow:0 -1px 4px 0 var(--card-shadow);line-height:1}.search-pro-hint{display:inline-flex;align-items:center;margin:0 .5rem}.search-pro-hint kbd{margin:0 .5rem;padding:2px;border:1px solid var(--vp-brc);border-radius:4px;box-shadow:1px 1px 4px 0 var(--card-shadow)}.search-pro-hint kbd+kbd{margin-inline-start:-.25rem}.search-pro-hint svg{display:block;width:15px;height:15px}:root{--navbar-bg-color: var(--bg-color-float-blur);--sidebar-bg-color: var(--bg-color-blur)}html[data-theme=dark]{--navbar-bg-color: var(--bg-color-blur);--sidebar-bg-color: var(--bg-color-blur)}#app{--code-hl-bg-color: var(--code-highlight-line-color);--code-ln-color: var(--code-line-color);--code-ln-wrapper-width: var(--line-numbers-width);--code-tabs-nav-text-color: var(--code-color);--code-tabs-nav-bg-color: var(--code-border-color);--code-tabs-nav-hover-color: var(--code-highlight-line-color);--sidebar-space: var(--sidebar-width)}@media (max-width: 959px){#app{--navbar-height: var(--navbar-mobile-height);--navbar-vertical-padding: var(--navbar-mobile-vertical-padding);--navbar-horizontal-padding: var(--navbar-mobile-horizontal-padding);--sidebar-width: var(--sidebar-mobile-width)}}@media (min-width: 1440px){#app{--sidebar-space: clamp( var(--sidebar-width), max(0px, calc((100vw - var(--content-width)) / 2 - 2rem)) , 100vw )}}.DocSearch-Button,.DocSearch{--docsearch-primary-color: var(--vp-tc);--docsearch-text-color: var(--vp-c);--docsearch-highlight-color: var(--vp-tc);--docsearch-muted-color: var(--light-grey);--docsearch-container-background: rgb(9 10 17 / 80%);--docsearch-modal-background: var(--bg-color-float);--docsearch-searchbox-background: var(--bg-color-secondary);--docsearch-searchbox-focus-background: var(--vp-bg);--docsearch-searchbox-shadow: inset 0 0 0 2px var(--vp-tc);--docsearch-hit-color: var(--vp-cl);--docsearch-hit-active-color: var(--vp-bg);--docsearch-hit-background: var(--vp-bg);--docsearch-hit-shadow: 0 1px 3px 0 var(--border-color);--docsearch-footer-background: var(--vp-bg)}html[data-theme=dark] .DocSearch-Button,html[data-theme=dark] .DocSearch{--docsearch-logo-color: var(--vp-c);--docsearch-modal-shadow: inset 1px 1px 0 0 #2c2e40, 0 3px 8px 0 #000309;--docsearch-key-shadow: inset 0 -2px 0 0 #282d55, inset 0 0 1px 1px #51577d, 0 2px 2px 0 rgb(3 4 9 / 30%);--docsearch-key-gradient: linear-gradient(-225deg, #444950, #1c1e21);--docsearch-footer-shadow: inset 0 1px 0 0 rgb(73 76 106 / 50%), 0 -4px 8px 0 rgb(0 0 0 / 20%)}#nprogress{--nprogress-color: var(--vp-tc)}.search-box{--search-bg-color: var(--vp-bg);--search-accent-color: var(--vp-tc);--search-text-color: var(--vp-c);--search-border-color: var(--border-color);--search-item-text-color: var(--vp-clt);--search-item-focus-bg-color: var(--bg-color-secondary)}.external-link-icon{--external-link-icon-color: var(--light-grey)}html,body{margin:0;padding:0;background:#fff}html{font-size:16px;font-display:optional;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent}@media print{html{font-size:12pt}}body{min-height:100vh;color:#2c3e50}a{color:#3eaf7c;font-weight:500;text-decoration:none;overflow-wrap:break-word}kbd{display:inline-block;min-width:1em;margin-inline:.125rem;padding:.25em;border:1px solid #eee;border-radius:.25em;box-shadow:1px 1px 4px #00000026;line-height:1;letter-spacing:-.1em;text-align:center}code{margin:0;padding:.2rem .4rem;border-radius:5px;background:#7f7f7f1f;font-size:.85em;overflow-wrap:break-word}table code{padding:.1rem .4rem}p a code{color:#3eaf7c;font-weight:400}strong{font-weight:600}h1,h2,h3,h4,h5,h6{font-weight:500;line-height:1.25;overflow-wrap:break-word}h1:hover .header-anchor,h2:hover .header-anchor,h3:hover .header-anchor,h4:hover .header-anchor,h5:hover .header-anchor,h6:hover .header-anchor{opacity:1}h1{font-size:2rem}h2{padding-bottom:.3rem;border-bottom:1px solid #eaecef;font-size:1.65rem}h3{font-size:1.35rem}h4{font-size:1.15rem}h5{font-size:1.05rem}h6{font-size:1rem}a.header-anchor{float:left;margin-top:.125em;margin-inline-start:-.87em;padding-inline-end:.23em;font-size:.85em;opacity:0;transition:opacity .2s}@media print{a.header-anchor{display:none!important}}a.header-anchor:hover{text-decoration:none}a.header-anchor:focus-visible{opacity:1}p,ul,ol{line-height:1.6;overflow-wrap:break-word}@media print{p,ul,ol{line-height:1.5}}ul,ol{padding-inline-start:1.2em}blockquote{margin:1rem 0;padding:.25rem 0 .25rem 1rem;border-inline-start:.2rem solid #ddd;color:#666;font-size:1rem;overflow-wrap:break-word}blockquote>p{margin:0}hr{border:0;border-top:1px solid #eaecef}table{display:block;overflow-x:auto;margin:1rem 0;border-collapse:collapse}tr:nth-child(2n){background:#f6f8fa}th,td{padding:.6em 1em;border:1px solid #dfe2e5}pre{direction:ltr}@page{margin:2cm;font-size:12pt;size:a4}@media print{*,:after,:before{box-shadow:none!important;text-shadow:none!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}a{color:inherit;font-weight:inherit!important;font-size:inherit!important;text-decoration:underline}a[href^="http://"]:after,a[href^="https://"]:after{content:" (" attr(href) ") "}abbr[title]:after{content:" (" attr(title) ")"}pre{border:1px solid #eee;white-space:pre-wrap!important}pre>code{white-space:pre-wrap!important}blockquote{border-inline-start:.2rem solid #ddd;color:inherit}blockquote,pre{orphans:5;widows:5}img,tr,canvas{page-break-inside:avoid}}@font-face{font-weight:400;font-style:normal;font-family:Crimson;src:url(data:font/truetype;charset=utf-8;base64,AAEAAAANAIAAAwBQRkZUTYr5mwEAAAyMAAAAHEdERUYAKQATAAAMbAAAAB5PUy8yVsJ0MgAAAVgAAABgY21hcBiKDzgAAAHcAAABWGdhc3D//wADAAAMZAAAAAhnbHlmr+DBdQAAA1AAAAdsaGVhZBZwt+8AAADcAAAANmhoZWEFawEuAAABFAAAACRobXR4BksA9gAAAbgAAAAibG9jYQlsC24AAAM0AAAAHG1heHAAEQBZAAABOAAAACBuYW1lLaFDVAAACrwAAAFrcG9zdAC1AHoAAAwoAAAAPAABAAAAAQAAqBd2H18PPPUACwQAAAAAANqqufwAAAAA2qq5/AAb/9wB4QMeAAAACAACAAAAAAAAAAEAAAMs/ywAXAH9AAAAAAHhAAEAAAAAAAAAAAAAAAAAAAAEAAEAAAANAFkAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAH1AZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAIABgMAAAAAAAAAAAABEAAAAAAAAAAAAAAAUGZFZADAADAAOQMs/ywAXAMsANQAAAABAAAAAAMYAAAAAAAgAAEBpwAfAAAAAAFVAAAB/QAfAH0ALQA+ABsAPgAyACgAPgAxAAAAAAADAAAAAwAAABwAAQAAAAAAUgADAAEAAAAcAAQANgAAAAQABAABAAAAOf//AAAAL///AAAAAQAEAAAAAAADAAQABQAGAAcACAAJAAoACwAMAAABBgAAAQAAAAAAAAABAgAAAAIAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAwQFBgcICQoLDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYAJgAmAGIAwAEeAZIBzgJAApYC2gNiA7YAAQAf/9wBhwMeABIAAAEGBwYHATAXFjM2NzY3ASYnJjcBgxwLCgH+zgMECxIKCgIBLgEDAwMDHhQFBgP85wMEAQgJBgMOAwMDEwAAAAIAH//9Ad0CkAAQACEAABMWFxYXNjc2NzQnJicGBwYHNyY3NjcWFxYXFAcGByYnJjcfATo6amo7OQE5OmxrOjkBXQIlJEE5IyIBIyJEOSQjAgFOkV5eBAReXoqJXl4EBF5eggJ0UlEDA09Qe3xVVgMDU1OEAAAAAAEAff/9AYACkQA+AAA3FAcGBwYHBiMGFQYXNjc2MzIXFhc2JzQnIicmJyY1JjURNjc2MSYnJicjBgcGBwYVFBUUFxYXNjc2NzIXFhXkAQEEBRgYDAMBBB4ZGhweGxofBAEDDBgZBQQBAQMEAQIDBAIFNTZCAgMDBA0XFw0LBQV3GBMVDAgEBAUKCgUCAQICAQIFCgoFBAQIDBUTGAGnLxkbBAYFAQIZGh4BAgECBQUEAwUHBwEICRYAAAAAAQAtAAAB0QKRADoAADcGFxYXITY3NjcmJyYjIgcGBwYHBisBNjc2NzY3NjUmJyYnBgcGBxQXFhc2NzY3FhcWFxYHBgcGBwYHLgEEAwMBYwURERADBwYFBAMDAg8VEx/LJkBAOhsQDwIxMkxSMjIHCAYGCSYmPTIfHwEBCgoeLkJBQg8EBQQCETAwKQICAgEBBCgUEylJSUYhJicsRDIzAgY1NRoEBQYBEyEhAwEjIjYlJCQtQlBQSAAAAAABAD7/+wG+ApEASgAANwYXFhcWFxYzNjc2NyYnJic2NzY3JicmIwYHBgcUFxYXNjc2NxYXFhcGBwYHBgcUFRQXNjc2NxYXFhcGBwYnIicmJyYnJiciBwYXPwEIBwUaHB0VZU5NBAMvLi8eIB4DAywsKzwrKxgEAwUIHR4wLRscAQMvLz8BAQYKEhEQNSYmAgImJSsWExQPCw0NFREMDQE7DgsLBQwFBgE8PWpMKSoGECQkMkAiIQIdHyUHBwcBCRscAwEbGSpCIyUOAgMCAwwIAwUEAQEoKD9XJSQBBQYODg8PAQ0NFQAAAgAb//oB4QKTACIAJQAANxQXFhchFRQXFjMyNzYjNTM2NzY1NCcmJyMRNCcmIwYHBgcBExEbAgMFASEJCRIdCAkBRgIBAQUEBTwFAwgHCQkG/vjmxgUGBgOwBQIBAwKzAgQDCBAMDQEBlAYGBgEICQf+cwEs/tQAAQA+//sBvgKTAEoAADcGFxYXFhcWMzY3NjcmJyYnIgcGBzY3NjczMjc2NzY3NjU0JyYnBgcGByMGBwYHFBcWMzY3NjMWFxYHBgcGJyInJicmJyYnIgcGFz8BCAcFGhwdFWVOTQQBMjJbFx8gFwoJCQlWKB0dFQ4JCAQDBQMdHSKXCREQEgMCBA4bGhNYJyUBAiYlKxYTFA8LDQ0VEQwNATsOCwsFDAUGATw9akU2NwMFBggrMC8uAgICExcZBgQCAgMBAwQBMVNUWAUFBAYFBAMxMTNZIyQBBQYODg8PAQ0NFQAAAgAy//oBzQKXACAAMwAANxQXFhc2NzY3NicmJyIHBgc2NzY3NCcmJwYHBgcGBwYXNyY3Njc2FxYXFgcGBwYHJicmNzM1NV5aOTsCAioqahoiIRsnWFhFAwIHQ0tMOTAZGQFbBAQaGxkXRB8fAQEfIDE9Hh4E511FRwQDPT1ZPEJBBQwLF4Y9PRMGCwwBEiwsPDZFRkkTHyAbCAcBAjAwREYsLQEFREVQAAAAAAEAKP/7AdUCiwApAAATFhcWMzI3Njc2NzYzIQYHBgcWFxYzMjcBNjc2NzQnJiMiBwYjIQYHBgcoAwYHAwYDAwELEBEdAQUJYWJXAQ8PDgcDAQ4LCQgBAQEEBhUVFv7JBgsNDAH6DQMCAQEFKRITFMjHjQcFBgMCPxYSEwoEAgMBAhkrKiAAAAADAD7/9wG/ApIAKABBAFgAADcGFxYXNjc2NyYnJicmJzQ3Njc2NyYnJiMGBwYHFhcWFxYVFAcGBwYHNyY3Njc2MzIzMhcyFxYXFhcGBwYHIicmNxMmNzY3FhcWFRQHBgcGByIjIicmJyY3PwE1M1ZQODgDAykpMQIBAyYlJQMCMC9HRjExAgIiIiMCAiMvLwNTBBQTKgEBAQECAQIBEjU1CAEdHjMrISICGAMYGSYvGxoTEx8CAQIBBAMfJCQBoU8tLQECMjFPOC4uGwIBAgEWJiU7SCYoAjEwQzopKhMBAgECEykpQAQsIiEbAQEBBywsQjUeHQEiI0QBZSMhIAECJiYvKh8gFAEBAhAfIEYAAAIAMf/6AcsClwAgADMAABMGFxYXMjc2NwYHBgcUFxYXNjc2NzY3NjUmJyYnBgcGBzcmNzY3FhcWFRQHBgcGJyYnJjc0AyopahoiIRsoV1hFAwIHQ0tMODEZGQE2NF5ZOjoBWgMfHzE9Hh4EGhoaF0QeHwUBy0dBQgUMCxeFPj0SBwsLAREsLD01RkVPV0dFBQQ8PU8UPCwtAQVFRUklIRsHCAECMDBPAAAADACWAAEAAAAAAAEABwAQAAEAAAAAAAIABwAoAAEAAAAAAAMABwBAAAEAAAAAAAQABwBYAAEAAAAAAAUAHgCeAAEAAAAAAAYABwDNAAMAAQQJAAEADgAAAAMAAQQJAAIADgAYAAMAAQQJAAMADgAwAAMAAQQJAAQADgBIAAMAAQQJAAUAPABgAAMAAQQJAAYADgC9AEMAcgBpAG0AcwBvAG4AAENyaW1zb24AAEMAcgBpAG0AcwBvAG4AAENyaW1zb24AAEMAcgBpAG0AcwBvAG4AAENyaW1zb24AAEMAcgBpAG0AcwBvAG4AAENyaW1zb24AAFYAZQByAHMAaQBvAG4AIAAxAC4AMAA7ACAARgBvAG4AdABFAGQAaQB0AG8AcgAgACgAdgAxAC4AMAApAABWZXJzaW9uIDEuMDsgRm9udEVkaXRvciAodjEuMCkAAEMAcgBpAG0AcwBvAG4AAENyaW1zb24AAAACAAAAAAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAABAAIAEwAUABUAFgAXABgAGQAaABsAHAAAAAH//wACAAEAAAAMAAAAFgAAAAIAAQADAAwAAQAEAAAAAgAAAAAAAAABAAAAANWkJwgAAAAA2qq5/AAAAADaqrn8) format("truetype")}html,body{background:var(--bg-color);transition:background var(--color-transition)}:root{color-scheme:light}html[data-theme=dark]{color-scheme:dark}body{color:var(--text-color);font-family:var(--font-family)}@media (min-width: 1440px){body{font-size:17px}}a{color:var(--theme-color)}kbd{border-color:var(--border-color-dark);background:var(--bg-color-secondary);font-family:var(--font-family-mono)}code{font-family:var(--font-family-mono);transition:background var(--color-transition),color var(--color-transition)}html[data-theme=dark] code{background:#333}p a code{color:var(--theme-color)}blockquote{border-color:#eee;color:#666;transition:border-color var(--color-transition),color var(--color-transition)}html[data-theme=dark] blockquote{border-color:#333}h1,h2,h3,h4,h5,h6{font-family:var(--font-family-heading)}@media (max-width: 419px){h1{font-size:1.9rem}}h2{border-color:var(--border-color);transition:border-bottom-color var(--color-transition)}hr{border-color:var(--border-color);transition:border-top-color var(--color-transition)}tr:nth-child(2n){background:var(--bg-color-secondary)}th,td{border-color:var(--border-color-dark)}@media print{@page{--text-color: #000 !important;--bg-color: #fff !important}div[class*=language-]{position:relative!important}}.theme-hope-content:not(.custom)>*:first-child{margin-top:0}.vp-breadcrumb{max-width:var(--content-width, 740px);margin-inline:auto;padding-inline:2.5rem;position:relative;z-index:2;padding-top:1rem;font-size:15px}@media (max-width: 959px){.vp-breadcrumb{padding-inline:1.5rem}}@media print{.vp-breadcrumb{max-width:unset}}@media (max-width: 959px){.vp-breadcrumb{font-size:14px}}@media (max-width: 419px){.vp-breadcrumb{padding-top:.5rem;font-size:12.8px}}@media print{.vp-breadcrumb{display:none}}.vp-breadcrumb .icon{margin-inline-end:.25em;font-size:1em}.vp-breadcrumb img.icon{vertical-align:-.125em;height:1em}.vp-breadcrumb a{display:inline-block;padding:0 .5em}.vp-breadcrumb a:before{position:relative;bottom:.125rem;margin-inline-end:.25em}.vp-breadcrumb a:hover{color:var(--theme-color)}.vp-breadcrumb ol{margin:0;padding-inline-start:0;list-style:none}.vp-breadcrumb li{display:inline-block;line-height:1.5}.vp-breadcrumb li:first-child a{padding-inline-start:0}.vp-breadcrumb li:last-child a{padding-inline-end:0}.vp-breadcrumb li.is-active a{color:var(--light-grey);cursor:default;pointer-events:none}.vp-breadcrumb li+li:before{content:"/";color:var(--light-grey)}.toggle-sidebar-wrapper{position:fixed;top:var(--navbar-height);bottom:0;inset-inline-start:var(--sidebar-space);z-index:100;display:flex;align-items:center;justify-content:center;font-size:2rem;transition:inset-inline-start var(--transform-transition)}@media (max-width: 719px){.toggle-sidebar-wrapper{display:none}}@media (min-width: 1440px){.toggle-sidebar-wrapper{display:none}}.toggle-sidebar-wrapper:hover{background:#7f7f7f0d;cursor:pointer}.toggle-sidebar-wrapper .arrow{display:inline-block;vertical-align:middle;width:1em;height:1em;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");background-position:center;background-repeat:no-repeat;line-height:normal;transition:all .3s}html[data-theme=dark] .toggle-sidebar-wrapper .arrow{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.toggle-sidebar-wrapper .arrow.down{transform:rotate(180deg)}html[dir=rtl] .toggle-sidebar-wrapper .arrow.down{transform:rotate(-180deg)}.toggle-sidebar-wrapper .arrow.end{transform:rotate(90deg)}html[dir=rtl] .toggle-sidebar-wrapper .arrow.end,.toggle-sidebar-wrapper .arrow.start{transform:rotate(-90deg)}html[dir=rtl] .toggle-sidebar-wrapper .arrow.start{transform:rotate(90deg)}.theme-container{display:flex;flex-direction:column;justify-content:space-between;min-height:100vh}.theme-container .vp-page{padding-top:var(--navbar-height);padding-inline-start:calc(var(--sidebar-space) + 2rem)}@media (max-width: 719px){.theme-container .vp-page{padding-inline:0}}@media (min-width: 1440px){.theme-container .vp-page{padding-inline-end:calc(100vw - var(--content-width) - var(--sidebar-space) - 6rem)}}.theme-container .vp-sidebar{top:var(--navbar-height)}.theme-container.no-navbar .vp-page{padding-top:0}.theme-container.no-navbar .vp-sidebar{top:0}@media (max-width: 719px){.theme-container.no-navbar .vp-sidebar{top:0}}@media (max-width: 719px){.theme-container.hide-navbar .vp-sidebar{top:0}}.theme-container.sidebar-collapsed .vp-page{padding-inline-start:0}.theme-container.sidebar-collapsed .vp-sidebar{box-shadow:none;transform:translate(-100%)}html[dir=rtl] .theme-container.sidebar-collapsed .vp-sidebar{transform:translate(100%)}.theme-container.sidebar-collapsed .toggle-sidebar-wrapper{inset-inline-start:0}.theme-container.no-sidebar .vp-page{padding-inline:0}@media (min-width: 1440px){.theme-container.no-sidebar.has-toc .vp-page{padding-inline-end:16rem}}.theme-container.no-sidebar .vp-toggle-sidebar-button,.theme-container.no-sidebar .toggle-sidebar-wrapper,.theme-container.no-sidebar .vp-sidebar{display:none}.theme-container.sidebar-open .vp-sidebar{box-shadow:2px 0 8px var(--card-shadow);transform:translate(0)}.fade-slide-y-enter-active{transition:all .3s ease!important}.fade-slide-y-leave-active{transition:all .3s cubic-bezier(1,.5,.8,1)!important}.fade-slide-y-enter-from,.fade-slide-y-leave-to{opacity:0;transform:translateY(10px)}.vp-feature-wrapper{position:relative}.vp-feature-bg{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;background-attachment:fixed;background-position:50%;background-size:cover}.vp-feature-bg.light{display:inline-block}.vp-feature-bg.dark,html[data-theme=dark] .vp-feature-bg.light{display:none}html[data-theme=dark] .vp-feature-bg.dark{display:inline-block}.vp-feature{position:relative;z-index:1;margin:0 auto;padding:1.5rem 1rem;color:var(--text-color-lighter);text-align:center}.vp-feature-bg+.vp-feature{color:#222}html[data-theme=dark] .vp-feature-bg+.vp-feature{color:#eee}.vp-feature-bg+.vp-feature .icon{color:inherit}.vp-feature-image{height:10rem;margin:0 auto}@media (max-width: 959px){.vp-feature-image{height:8rem}}.vp-feature-image.light{display:inline-block}.vp-feature-image.dark,html[data-theme=dark] .vp-feature-image.light{display:none}html[data-theme=dark] .vp-feature-image.dark{display:inline-block}.vp-feature-header{margin-bottom:1.5rem;border-bottom:none;font-size:3rem;font-family:var(--font-family);text-align:center}@media (max-width: 959px){.vp-feature-header{font-size:2.5rem}}@media (max-width: 719px){.vp-feature-header{font-size:2.25rem}}@media (max-width: 419px){.vp-feature-header{font-size:2rem}}.vp-feature-description{font-size:1.125rem}.vp-features{z-index:1;display:flex;flex-wrap:wrap;align-items:stretch;place-content:stretch center;margin:1rem 0;text-align:start}@media print{.vp-features{display:block}}.vp-features:first-child{border-top:1px solid var(--border-color);transition:border-color var(--color-transition)}.vp-feature-item{position:relative;display:block;flex-basis:calc(33% - 3rem);margin:.5rem;padding:1rem;border-radius:.5rem;color:inherit;transition:background var(--color-transition),box-shadow var(--color-transition),transform var(--transform-transition)}@media (min-width: 1440px){.vp-feature-item{flex-basis:calc(25% - 3rem)}}@media (max-width: 959px){.vp-feature-item{flex-basis:calc(50% - 3rem)}}@media (max-width: 719px){.vp-feature-item{flex-basis:100%;font-size:.95rem}}@media (max-width: 419px){.vp-feature-item{margin:.5rem 0;font-size:.9rem}}.vp-feature-item.link{cursor:pointer}@media print{.vp-feature-item.link{text-decoration:none}}.vp-feature-item .icon{display:inline-block;height:1.1em;margin-inline-end:.5rem;color:var(--theme-color);font-weight:400;font-size:1.1em}.vp-feature-item:hover{background-color:var(--bg-color-secondary);box-shadow:0 2px 12px 0 var(--card-shadow);transform:translate(-2px,-2px);transform:scale(1.05)}.vp-feature-bg+.vp-feature .vp-feature-item:hover{background-color:transparent}.vp-feature-item:only-child{flex-basis:100%}.vp-feature-item:first-child:nth-last-child(2),.vp-feature-item:nth-child(2):last-child{flex-basis:calc(50% - 3rem)}@media (max-width: 719px){.vp-feature-item:first-child:nth-last-child(2),.vp-feature-item:nth-child(2):last-child{flex-basis:100%}}.vp-feature-title{margin:.25rem 0 .5rem;font-weight:700;font-size:1.3rem;font-family:var(--font-family)}@media (max-width: 419px){.vp-feature-title{font-size:1.2rem}}.vp-feature-details{margin:0;line-height:1.4}.vp-footer-wrapper{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-evenly;padding-block:.75rem;padding-inline:calc(var(--sidebar-space) + 2rem) 2rem;border-top:1px solid var(--border-color);background:var(--bg-color);color:var(--dark-grey);text-align:center;transition:border-top-color var(--color-transition),background var(--color-transition),padding var(--transform-transition)}@media (max-width: 719px){.vp-footer-wrapper{padding-inline-start:2rem}}@media (min-width: 1440px){.vp-footer-wrapper{z-index:50;padding-inline-start:2rem}}@media print{.vp-footer-wrapper{margin:0!important;padding:0!important}}@media (max-width: 419px){.vp-footer-wrapper{display:block}}.no-sidebar .vp-footer-wrapper,.sidebar-collapsed .vp-footer-wrapper{padding-inline-start:2rem}.vp-footer{margin:.5rem 1rem;font-size:14px}@media print{.vp-footer{display:none}}.vp-copyright{margin:6px 0;font-size:13px}.vp-page:not(.not-found)+.vp-footer-wrapper{margin-top:-2rem}.vp-hero-info-wrapper{position:relative;display:flex;align-items:center;justify-content:center;margin-inline:auto}.vp-hero-info-wrapper.fullscreen{height:calc(100vh - var(--navbar-height))!important}.vp-hero-info{z-index:1;width:100%;padding-inline:2.5rem}@media (max-width: 959px){.vp-hero-info{padding-inline:1.5rem}}@media (min-width: 959px){.vp-hero-info{display:flex;align-items:center;justify-content:space-evenly}}.vp-hero-mask{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;background-position:50%;background-size:cover}.vp-hero-mask:after{content:" ";position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:block}.vp-hero-mask.light{display:block}html[data-theme=dark] .vp-hero-mask.light,.vp-hero-mask.dark{display:none}html[data-theme=dark] .vp-hero-mask.dark{display:block}.vp-hero-infos{z-index:1;margin:0 .5rem}.vp-hero-image{display:block;max-width:100%;max-height:18rem;margin:1rem}@media (max-width: 959px){.vp-hero-image{margin:2rem auto}}@media (max-width: 719px){.vp-hero-image{max-height:16rem;margin:1.5rem auto}}@media (max-width: 419px){.vp-hero-image{max-height:14rem}}.vp-hero-image.light{display:block}html[data-theme=dark] .vp-hero-image.light,.vp-hero-image.dark{display:none}html[data-theme=dark] .vp-hero-image.dark{display:block}#main-title{margin:.5rem 0;background:linear-gradient(120deg,var(--theme-color-light),var(--theme-color) 30%,#3e71af 100%);-webkit-background-clip:text;background-clip:text;font-weight:700;font-size:3.6rem;font-family:var(--font-family);line-height:1.5;-webkit-text-fill-color:transparent}@media (max-width: 719px){#main-title{margin:0}}@media (max-width: 959px){#main-title{font-size:2.5rem;text-align:center}}@media (max-width: 719px){#main-title{font-size:2.25rem;text-align:center}}@media (max-width: 419px){#main-title{margin:0 auto;font-size:2rem}}#main-description,.vp-hero-actions{margin:1.8rem 0}@media (max-width: 719px){#main-description,.vp-hero-actions{margin:1.5rem 0}}@media (max-width: 959px){#main-description,.vp-hero-actions{margin:1.5rem auto;text-align:center}}@media (max-width: 419px){#main-description,.vp-hero-actions{margin:1.2rem 0}}#main-description{max-width:35rem;color:var(--text-color-light);font-weight:500;font-size:1.6rem;line-height:1.3}@media (max-width: 719px){#main-description{font-size:1.4rem}}@media (max-width: 419px){#main-description{font-size:1.2rem}}.vp-hero-action{display:inline-block;overflow:hidden;min-width:4rem;margin:.5rem;padding:.5em 1.5rem;border-radius:2rem;background:var(--bg-color-secondary);color:var(--text-color);font-size:1.2rem;text-align:center;transition:color var(--color-transition),color var(--color-transition),transform var(--transform-transition)}@media (max-width: 719px){.vp-hero-action{padding:.5rem 1rem;font-size:1.1rem}}@media (max-width: 419px){.vp-hero-action{font-size:1rem}}@media print{.vp-hero-action{text-decoration:none}}.vp-hero-action:hover{background:var(--bg-color-tertiary)}.vp-hero-action.primary{border-color:var(--theme-color);background:var(--theme-color);color:var(--white)}.vp-hero-action.primary:hover{border-color:var(--theme-color-light);background:var(--theme-color-light)}.vp-project-home:not(.pure) .vp-hero-action:active{transform:scale(.96)}.vp-hero-action .icon{margin-inline-end:.25em}.vp-highlight-wrapper{position:relative;display:flex;align-items:center;justify-content:center}.vp-highlight-wrapper:nth-child(2n) .vp-highlight{flex-direction:row-reverse}.vp-highlight{z-index:1;display:flex;flex:1;align-items:center;justify-content:flex-end;max-width:var(--home-page-width);margin:0 auto;padding:1.5rem 2.5rem;color:#222}@media (max-width: 719px){.vp-highlight{display:block;padding-inline:1.5rem;text-align:center}}html[data-theme=dark] .vp-highlight{color:#eee}.vp-highlight-bg{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;background-attachment:fixed;background-position:50%;background-size:cover}.vp-highlight-bg.light{display:inline-block}.vp-highlight-bg.dark,html[data-theme=dark] .vp-highlight-bg.light{display:none}html[data-theme=dark] .vp-highlight-bg.dark{display:inline-block}.vp-highlight-image{width:12rem;margin:2rem 4rem}@media (max-width: 959px){.vp-highlight-image{width:10rem}}@media (max-width: 719px){.vp-highlight-image{width:8rem;margin:0 auto}}.vp-highlight-image.light{display:inline-block}.vp-highlight-image.dark,html[data-theme=dark] .vp-highlight-image.light{display:none}html[data-theme=dark] .vp-highlight-image.dark{display:inline-block}.vp-highlight-info-wrapper{display:flex;flex:1;justify-content:center;padding:2rem}@media (max-width: 719px){.vp-highlight-info-wrapper{padding:1rem 0}}.vp-highlight-info-wrapper:only-child{flex:1 0 100%}.vp-highlight-info{text-align:start}.vp-highlight-header{margin-bottom:1.5rem;border-bottom:none;font-size:3rem;font-family:var(--font-family)}@media (max-width: 959px){.vp-highlight-header{font-size:2.5rem}}@media (max-width: 719px){.vp-highlight-header{font-size:2.25rem;text-align:center}}@media (max-width: 419px){.vp-highlight-header{font-size:2rem}}.vp-highlight-description{font-size:1.125rem}.vp-highlights{margin-inline-start:-1.25em;padding-inline-start:0}.vp-highlight-item-wrapper{padding:.5em .5em .5em 1.75em;border-radius:.5rem;list-style:none}.vp-highlight-item-wrapper.link{cursor:pointer}.vp-highlight-item-wrapper:hover{background-color:var(--bg-color-secondary);box-shadow:0 2px 12px 0 var(--card-shadow);transition:transform var(--transform-transition);transform:translate(-2px,-2px)}.vp-highlight-bg+.vp-highlight .vp-highlight-item-wrapper:hover{background-color:transparent}.vp-highlight-item-wrapper::marker{font-weight:700}.vp-highlight-item{display:list-item;color:inherit;list-style:initial}@media print{.vp-highlight-item{text-decoration:none}}.vp-highlight-title{margin:0;font-weight:600;font-size:1.125rem;font-family:var(--font-family)}.vp-highlight-title .icon{margin-inline-end:.25em;font-size:1em}.vp-highlight-title img.icon{vertical-align:-.125em;height:1em}.vp-highlight-details{margin:.5rem 0 0}.vp-project-home{--content-width: var(--home-page-width);display:block;flex:1;padding-top:var(--navbar-height)}@media screen{.vp-project-home .vp-hero-info-wrapper:not(.fullscreen) .vp-hero-info{max-width:var(--home-page-width)}}@media screen{.vp-project-home .vp-feature{max-width:var(--home-page-width)}}.vp-project-home .theme-hope-content{padding-bottom:1.5rem!important}.vp-project-home .theme-hope-content:empty{padding:0!important}.not-found-hint{padding:2rem}.not-found-hint .error-code{margin:0;font-weight:700;font-size:4rem;line-height:4rem}.not-found-hint .error-title{font-weight:700}.not-found-hint .error-hint{margin:0;padding:12px 0;font-weight:600;font-size:20px;line-height:20px;letter-spacing:2px}.vp-page.not-found{display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;width:100vw;max-width:var(--home-page-width);margin:0 auto;padding:calc(var(--navbar-height) + 1rem) 1rem 1rem!important;text-align:center}.vp-page.not-found .action-button{display:inline-block;box-sizing:border-box;margin:.25rem;padding:.75rem 1rem;border-width:0;border-bottom:1px solid var(--theme-color-dark);border-radius:3rem;background:var(--theme-color);color:var(--white);outline:none;font-size:1rem;transition:background .1s ease}.vp-page.not-found .action-button:hover{background:var(--theme-color-light);cursor:pointer}.vp-page-nav{display:flex;flex-wrap:wrap;min-height:2rem;margin-top:0;padding-block:.5rem;padding-inline:2rem;border-top:1px solid var(--border-color);transition:border-top var(--color-transition)}@media (max-width: 959px){.vp-page-nav{padding-inline:1rem}}@media print{.vp-page-nav{display:none}}.vp-page-nav .nav-link{display:inline-block;flex-grow:1;margin:.25rem;padding:.25rem .5rem;border:1px solid var(--border-color);border-radius:.25rem}.vp-page-nav .nav-link:hover{background:var(--bg-color-secondary)}.vp-page-nav .nav-link .hint{color:var(--light-grey);font-size:.875rem;line-height:2}.vp-page-nav .nav-link .arrow{display:inline-block;vertical-align:middle;width:1em;height:1em;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");background-position:center;background-repeat:no-repeat;line-height:normal;transition:all .3s;font-size:.75rem}html[data-theme=dark] .vp-page-nav .nav-link .arrow{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.vp-page-nav .nav-link .arrow.down{transform:rotate(180deg)}html[dir=rtl] .vp-page-nav .nav-link .arrow.down{transform:rotate(-180deg)}.vp-page-nav .nav-link .arrow.end{transform:rotate(90deg)}html[dir=rtl] .vp-page-nav .nav-link .arrow.end,.vp-page-nav .nav-link .arrow.start{transform:rotate(-90deg)}html[dir=rtl] .vp-page-nav .nav-link .arrow.start{transform:rotate(90deg)}.vp-page-nav .prev{text-align:start}.vp-page-nav .prev .icon{margin-inline-end:.25em;font-size:1em}.vp-page-nav .prev img.icon{vertical-align:-.125em;height:1em}.vp-page-nav .next{text-align:end}.vp-page-nav .next .icon{margin-inline-start:.25em;font-size:1em}.vp-page-nav .next img.icon{vertical-align:-.125em;height:1em}.vp-page-title{max-width:var(--content-width, 740px);margin-inline:auto;padding-inline:2.5rem;position:relative;z-index:1;padding-top:1rem;padding-bottom:0}@media (max-width: 959px){.vp-page-title{padding-inline:1.5rem}}@media print{.vp-page-title{max-width:unset}}@media print{.vp-page-title{padding-inline:0!important}}@media (max-width: 959px){.vp-page-title{padding-top:.5rem}}.vp-page-title h1{margin-top:calc(0px - var(--navbar-height))!important;margin-bottom:1rem;padding-top:var(--navbar-height)!important;font-size:2.2rem}@media (max-width: 959px){.vp-page-title h1{margin-bottom:.5rem}}.vp-page-title h1 .icon{margin-inline-end:.25em;color:var(--theme-color);font-size:.9em}.vp-page-title h1 img.icon{vertical-align:-.125em;height:1em}.theme-hope-content:not(.custom){padding-top:0!important}.theme-hope-content:not(.custom) h1:first-child,.theme-hope-content:not(.custom) h2:first-child,.theme-hope-content:not(.custom) h3:first-child,.theme-hope-content:not(.custom) h4:first-child,.theme-hope-content:not(.custom) h5:first-child,.theme-hope-content:not(.custom) h6:first-child{margin-top:calc(.5rem - var(--navbar-height))!important;padding-top:var(--navbar-height)!important}.theme-hope-content:not(.custom)>h1:first-child{display:none}.vp-page{display:block;flex-grow:1;padding-bottom:2rem;transition:padding var(--transform-transition)}@media print{.vp-page{min-height:auto!important;margin:0!important;padding:0!important}}.page-cover{width:var(--content-width);margin-inline:auto}@media (max-width: 719px){.page-cover{width:100%}}.page-cover img{-o-object-fit:cover;object-fit:cover;width:100%;max-height:25vh;border-radius:.5rem}@media (max-width: 719px){.page-cover img{border-radius:0}}.vp-skip-link{top:.25rem;inset-inline-start:.25rem;z-index:999;padding:.65rem 1.5rem;border-radius:.5rem;background:var(--bg-color);color:var(--theme-color);box-shadow:var(--card-shadow);font-weight:700;font-size:.9em;text-decoration:none}@media print{.vp-skip-link{display:none}}.vp-skip-link:focus{clip:auto;width:auto;height:auto;-webkit-clip-path:none;clip-path:none}.theme-hope-content pre{overflow:auto;margin:.85rem 0;padding:1rem;border-radius:6px;line-height:1.375}.theme-hope-content pre code{padding:0;border-radius:0;background:transparent!important;color:var(--code-color);font-family:var(--font-family-mono);text-align:left;white-space:pre;word-spacing:normal;word-wrap:normal;word-break:normal;overflow-wrap:unset;-webkit-hyphens:none;hyphens:none;transition:color var(--color-transition);-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}@media print{.theme-hope-content pre code{white-space:pre-wrap}}.theme-hope-content .line-number{font-family:var(--font-family-mono)}div[class*=language-]{position:relative;border-radius:6px;background:var(--code-bg-color);font-size:16px;transition:background var(--color-transition)}@media (max-width: 419px){.theme-hope-content>div[class*=language-]{margin:.85rem -1.5rem;border-radius:0}}div[class*=language-]:before{content:attr(data-ext);position:absolute;top:0;right:1em;z-index:3;color:var(--code-line-color);font-size:.75rem;transition:color var(--color-transition)}div[class*=language-] pre{position:relative;z-index:1;scrollbar-gutter:stable}div[class*=language-] .highlight-lines{position:absolute;top:0;bottom:0;left:0;width:100%;padding:1rem 0;line-height:1.375;-webkit-user-select:none;-moz-user-select:none;user-select:none}div[class*=language-] .highlight-line{background:var(--code-highlight-line-color);transition:background var(--color-transition)}div[class*=language-].line-numbers-mode:after{content:"";position:absolute;top:0;bottom:0;left:0;z-index:2;width:var(--line-numbers-width);border-right:1px solid var(--code-highlight-line-color);border-radius:6px 0 0 6px;transition:border-color var(--color-transition)}@media (max-width: 419px){div[class*=language-].line-numbers-mode:after{border-radius:0}}@media print{div[class*=language-].line-numbers-mode:after{display:none}}div[class*=language-].line-numbers-mode .highlight-line{position:relative}div[class*=language-].line-numbers-mode .highlight-line:before{content:" ";position:absolute;top:0;left:0;z-index:3;display:block;width:var(--line-numbers-width);height:100%}div[class*=language-].line-numbers-mode pre{vertical-align:middle;margin-left:var(--line-numbers-width);padding-left:.5rem}@media print{div[class*=language-].line-numbers-mode pre{margin-left:0;padding-left:1rem}}div[class*=language-].line-numbers-mode .line-numbers{position:absolute;top:0;bottom:0;left:0;display:flex;flex-direction:column;width:var(--line-numbers-width);padding:1rem 0;color:var(--code-line-color);counter-reset:line-number;text-align:center;transition:color var(--color-transition)}@media print{div[class*=language-].line-numbers-mode .line-numbers{display:none}}div[class*=language-].line-numbers-mode .line-number{position:relative;z-index:4;display:flex;flex:1;align-items:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}div[class*=language-].line-numbers-mode .line-number:before{content:counter(line-number);display:block;font-size:.8em;line-height:1;counter-increment:line-number}div[class*=language-]:not(.line-numbers-mode) .line-numbers{display:none}html[data-theme=light] #app{--code-color: #383a42;--code-line-color: rgba(56, 58, 66, .67);--code-bg-color: #ecf4fa;--code-border-color: #c3def3;--code-highlight-line-color: #d8e9f6}html[data-theme=light] code[class*=language-],html[data-theme=light] pre[class*=language-]{-moz-tab-size:2;-o-tab-size:2;tab-size:2}html[data-theme=light] code[class*=language-]::-moz-selection,html[data-theme=light] code[class*=language-] ::-moz-selection,html[data-theme=light] pre[class*=language-]::-moz-selection,html[data-theme=light] pre[class*=language-] ::-moz-selection{background:#e5e5e6;color:inherit}html[data-theme=light] code[class*=language-]::selection,html[data-theme=light] code[class*=language-] ::selection,html[data-theme=light] pre[class*=language-]::selection,html[data-theme=light] pre[class*=language-] ::selection{background:#e5e5e6;color:inherit}html[data-theme=light] .token.comment,html[data-theme=light] .token.prolog,html[data-theme=light] .token.cdata{color:#a0a1a7}html[data-theme=light] .token.doctype,html[data-theme=light] .token.punctuation,html[data-theme=light] .token.entity{color:#383a42}html[data-theme=light] .token.attr-name,html[data-theme=light] .token.class-name,html[data-theme=light] .token.boolean,html[data-theme=light] .token.constant,html[data-theme=light] .token.number,html[data-theme=light] .token.atrule{color:#b76b01}html[data-theme=light] .token.keyword{color:#a626a4}html[data-theme=light] .token.property,html[data-theme=light] .token.tag,html[data-theme=light] .token.symbol,html[data-theme=light] .token.deleted,html[data-theme=light] .token.important{color:#e45649}html[data-theme=light] .token.selector,html[data-theme=light] .token.string,html[data-theme=light] .token.char,html[data-theme=light] .token.builtin,html[data-theme=light] .token.inserted,html[data-theme=light] .token.regex,html[data-theme=light] .token.attr-value,html[data-theme=light] .token.attr-value>.token.punctuation{color:#50a14f}html[data-theme=light] .token.variable,html[data-theme=light] .token.operator,html[data-theme=light] .token.function{color:#4078f2}html[data-theme=light] .token.url{color:#0184bc}html[data-theme=light] .token.attr-value>.token.punctuation.attr-equals,html[data-theme=light] .token.special-attr>.token.attr-value>.token.value.css{color:#383a42}html[data-theme=light] .language-css .token.selector{color:#e45649}html[data-theme=light] .language-css .token.property{color:#383a42}html[data-theme=light] .language-css .token.function,html[data-theme=light] .language-css .token.url>.token.function{color:#0184bc}html[data-theme=light] .language-css .token.url>.token.string.url{color:#50a14f}html[data-theme=light] .language-css .token.important,html[data-theme=light] .language-css .token.atrule .token.rule,html[data-theme=light] .language-javascript .token.operator{color:#a626a4}html[data-theme=light] .language-javascript .token.template-string>.token.interpolation>.token.interpolation-punctuation.punctuation{color:#ca1243}html[data-theme=light] .language-json .token.operator{color:#383a42}html[data-theme=light] .language-json .token.null.keyword{color:#b76b01}html[data-theme=light] .language-markdown .token.url,html[data-theme=light] .language-markdown .token.url>.token.operator,html[data-theme=light] .language-markdown .token.url-reference.url>.token.string{color:#383a42}html[data-theme=light] .language-markdown .token.url>.token.content{color:#4078f2}html[data-theme=light] .language-markdown .token.url>.token.url,html[data-theme=light] .language-markdown .token.url-reference.url{color:#0184bc}html[data-theme=light] .language-markdown .token.blockquote.punctuation,html[data-theme=light] .language-markdown .token.hr.punctuation{color:#a0a1a7;font-style:italic}html[data-theme=light] .language-markdown .token.code-snippet{color:#50a14f}html[data-theme=light] .language-markdown .token.bold .token.content{color:#b76b01}html[data-theme=light] .language-markdown .token.italic .token.content{color:#a626a4}html[data-theme=light] .language-markdown .token.strike .token.content,html[data-theme=light] .language-markdown .token.strike .token.punctuation,html[data-theme=light] .language-markdown .token.list.punctuation,html[data-theme=light] .language-markdown .token.title.important>.token.punctuation{color:#e45649}html[data-theme=light] .token.bold{font-weight:700}html[data-theme=light] .token.comment,html[data-theme=light] .token.italic{font-style:italic}html[data-theme=light] .token.entity{cursor:help}html[data-theme=light] .token.namespace{opacity:.8}html[data-theme=dark] #app{--code-color: #abb2bf;--code-line-color: rgba(171, 178, 191, .67);--code-bg-color: #282c34;--code-border-color: #343e51;--code-highlight-line-color: #2f3542}html[data-theme=dark] code[class*=language-],html[data-theme=dark] pre[class*=language-]{text-shadow:0 1px rgba(0,0,0,.3);-moz-tab-size:2;-o-tab-size:2;tab-size:2}@media print{html[data-theme=dark] code[class*=language-],html[data-theme=dark] pre[class*=language-]{text-shadow:none}}html[data-theme=dark] code[class*=language-]::-moz-selection,html[data-theme=dark] code[class*=language-] ::-moz-selection,html[data-theme=dark] pre[class*=language-]::-moz-selection,html[data-theme=dark] pre[class*=language-] ::-moz-selection{background:#3e4451;color:inherit;text-shadow:none}html[data-theme=dark] code[class*=language-]::selection,html[data-theme=dark] code[class*=language-] ::selection,html[data-theme=dark] pre[class*=language-]::selection,html[data-theme=dark] pre[class*=language-] ::selection{background:#3e4451;color:inherit;text-shadow:none}html[data-theme=dark] .token.comment,html[data-theme=dark] .token.prolog,html[data-theme=dark] .token.cdata{color:#5c6370}html[data-theme=dark] .token.doctype,html[data-theme=dark] .token.punctuation,html[data-theme=dark] .token.entity{color:#abb2bf}html[data-theme=dark] .token.attr-name,html[data-theme=dark] .token.class-name,html[data-theme=dark] .token.boolean,html[data-theme=dark] .token.constant,html[data-theme=dark] .token.number,html[data-theme=dark] .token.atrule{color:#d19a66}html[data-theme=dark] .token.keyword{color:#c678dd}html[data-theme=dark] .token.property,html[data-theme=dark] .token.tag,html[data-theme=dark] .token.symbol,html[data-theme=dark] .token.deleted,html[data-theme=dark] .token.important{color:#e06c75}html[data-theme=dark] .token.selector,html[data-theme=dark] .token.string,html[data-theme=dark] .token.char,html[data-theme=dark] .token.builtin,html[data-theme=dark] .token.inserted,html[data-theme=dark] .token.regex,html[data-theme=dark] .token.attr-value,html[data-theme=dark] .token.attr-value>.token.punctuation{color:#98c379}html[data-theme=dark] .token.variable,html[data-theme=dark] .token.operator,html[data-theme=dark] .token.function{color:#61afef}html[data-theme=dark] .token.url{color:#56b6c2}html[data-theme=dark] .token.attr-value>.token.punctuation.attr-equals,html[data-theme=dark] .token.special-attr>.token.attr-value>.token.value.css{color:#abb2bf}html[data-theme=dark] .language-css .token.selector{color:#e06c75}html[data-theme=dark] .language-css .token.property{color:#abb2bf}html[data-theme=dark] .language-css .token.function,html[data-theme=dark] .language-css .token.url>.token.function{color:#56b6c2}html[data-theme=dark] .language-css .token.url>.token.string.url{color:#98c379}html[data-theme=dark] .language-css .token.important,html[data-theme=dark] .language-css .token.atrule .token.rule,html[data-theme=dark] .language-javascript .token.operator{color:#c678dd}html[data-theme=dark] .language-javascript .token.template-string>.token.interpolation>.token.interpolation-punctuation.punctuation{color:#be5046}html[data-theme=dark] .language-json .token.operator{color:#abb2bf}html[data-theme=dark] .language-json .token.null.keyword{color:#d19a66}html[data-theme=dark] .language-markdown .token.url,html[data-theme=dark] .language-markdown .token.url>.token.operator,html[data-theme=dark] .language-markdown .token.url-reference.url>.token.string{color:#abb2bf}html[data-theme=dark] .language-markdown .token.url>.token.content{color:#61afef}html[data-theme=dark] .language-markdown .token.url>.token.url,html[data-theme=dark] .language-markdown .token.url-reference.url{color:#56b6c2}html[data-theme=dark] .language-markdown .token.blockquote.punctuation,html[data-theme=dark] .language-markdown .token.hr.punctuation{color:#5c6370;font-style:italic}html[data-theme=dark] .language-markdown .token.code-snippet{color:#98c379}html[data-theme=dark] .language-markdown .token.bold .token.content{color:#d19a66}html[data-theme=dark] .language-markdown .token.italic .token.content{color:#c678dd}html[data-theme=dark] .language-markdown .token.strike .token.content,html[data-theme=dark] .language-markdown .token.strike .token.punctuation,html[data-theme=dark] .language-markdown .token.list.punctuation,html[data-theme=dark] .language-markdown .token.title.important>.token.punctuation{color:#e06c75}html[data-theme=dark] .token.bold{font-weight:700}html[data-theme=dark] .token.comment,html[data-theme=dark] .token.italic{font-style:italic}html[data-theme=dark] .token.entity{cursor:help}html[data-theme=dark] .token.namespace{opacity:.8}.sr-only{position:absolute;overflow:hidden;clip:rect(0,0,0,0);width:1px;height:1px;margin:-1px;padding:0;border-width:0;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media print{.theme-hope-content{margin:0!important;padding-inline:0!important}}.theme-hope-content.custom{margin:0;padding:0}.theme-hope-content:not(.custom){max-width:var(--content-width, 740px);margin:0 auto;padding:2rem 2.5rem;padding-top:0}@media (max-width: 959px){.theme-hope-content:not(.custom){padding:1.5rem}}@media (max-width: 419px){.theme-hope-content:not(.custom){padding:1rem 1.5rem}}@media print{.theme-hope-content:not(.custom){max-width:unset}}.theme-hope-content:not(.custom)>h1,.theme-hope-content:not(.custom)>h2,.theme-hope-content:not(.custom)>h3,.theme-hope-content:not(.custom)>h4,.theme-hope-content:not(.custom)>h5,.theme-hope-content:not(.custom)>h6{margin-top:calc(.5rem - var(--navbar-height));margin-bottom:.5rem;padding-top:calc(1rem + var(--navbar-height));outline:none}.theme-container.no-navbar .theme-hope-content:not(.custom)>h1,.theme-container.no-navbar .theme-hope-content:not(.custom)>h2,.theme-container.no-navbar .theme-hope-content:not(.custom)>h3,.theme-container.no-navbar .theme-hope-content:not(.custom)>h4,.theme-container.no-navbar .theme-hope-content:not(.custom)>h5,.theme-container.no-navbar .theme-hope-content:not(.custom)>h6{margin-top:1.5rem;padding-top:0}.theme-hope-content:not(.custom)>p,.theme-hope-content:not(.custom)>ul p,.theme-hope-content:not(.custom)>ol p{text-align:justify;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}@media (max-width: 419px){.theme-hope-content:not(.custom)>p,.theme-hope-content:not(.custom)>ul p,.theme-hope-content:not(.custom)>ol p{text-align:start}}@media print{.theme-hope-content:not(.custom)>p,.theme-hope-content:not(.custom)>ul p,.theme-hope-content:not(.custom)>ol p{text-align:start}}.theme-hope-content a:hover{text-decoration:underline}.theme-hope-content img{max-width:100%}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}html[data-theme=light]::view-transition-old(root),html[data-theme=dark]::view-transition-new(root){z-index:1}html[data-theme=light]::view-transition-new(root),html[data-theme=dark]::view-transition-old(root){z-index:99999}@media (min-width: 1280px){.chart-wrapper::-webkit-scrollbar,.flowchart-wrapper::-webkit-scrollbar,.mermaid-wrapper::-webkit-scrollbar{width:8px;height:8px}.chart-wrapper::-webkit-scrollbar-track-piece,.flowchart-wrapper::-webkit-scrollbar-track-piece,.mermaid-wrapper::-webkit-scrollbar-track-piece{border-radius:8px;background:#0000001a}}html[dir=rtl] a.header-anchor{float:right}#docsearch-container{min-width:145.7px!important}@media (max-width: 959px){#docsearch-container{min-width:36px!important}}.DocSearch.DocSearch-Button{margin-left:0}@media (max-width: 959px){.DocSearch.DocSearch-Button{min-width:36px!important}}.DocSearch .DocSearch-Button-Placeholder{display:inline-block;padding:4px 12px 4px 6px;font-size:14px}@media (max-width: 719px){.DocSearch .DocSearch-Button-Placeholder{display:none}}.DocSearch .DocSearch-Search-Icon{width:1.25em;height:1.25em}@media (max-width: 959px){.DocSearch .DocSearch-Button-Keys{display:none}}.DocSearch .DocSearch-Button-Key{background:var(--bg-color);box-shadow:none}:root{scrollbar-width:thin}@media (prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track-piece{border-radius:6px;background:#0000001a}::-webkit-scrollbar-thumb{border-radius:6px;background:var(--theme-color)}::-webkit-scrollbar-thumb:active{background:var(--theme-color-light)}@media (max-width: 719px){.hide-in-mobile{display:none!important}}@media (max-width: 959px){.hide-in-pad{display:none!important}}.page-author-item{display:inline-block;margin:0 4px;font-weight:400;overflow-wrap:break-word}.page-category-info{flex-wrap:wrap}.page-category-item{display:inline-block;margin:.125em .25em;padding:0 .25em;border-radius:.25em;background:var(--bg-color-secondary);color:var(--text-color-light);font-weight:700;font-size:.75rem;line-height:2;transition:background var(--color-transition),color var(--color-transition)}@media print{.page-category-item{padding:0;font-weight:400}.page-category-item:after{content:", "}.page-category-item:last-of-type:after{content:""}}.page-category-item.clickable>span:hover{color:var(--theme-color);cursor:pointer}.page-category-item.category0{background:#fde5e7;color:#ec2f3e}html[data-theme=dark] .page-category-item.category0{background:#340509;color:#ba111f}.page-category-item.category0:hover{background:#f9bec3}html[data-theme=dark] .page-category-item.category0:hover{background:#53080e}.page-category-item.category1{background:#ffeee8;color:#fb7649}html[data-theme=dark] .page-category-item.category1{background:#441201;color:#f54205}.page-category-item.category1:hover{background:#fed4c6}html[data-theme=dark] .page-category-item.category1:hover{background:#6d1d02}.page-category-item.category2{background:#fef5e7;color:#f5b041}html[data-theme=dark] .page-category-item.category2{background:#3e2703;color:#e08e0b}.page-category-item.category2:hover{background:#fce6c4}html[data-theme=dark] .page-category-item.category2:hover{background:#633f05}.page-category-item.category3{background:#eafaf1;color:#55d98d}html[data-theme=dark] .page-category-item.category3{background:#0c331c;color:#29b866}.page-category-item.category3:hover{background:#caf3db}html[data-theme=dark] .page-category-item.category3:hover{background:#12522d}.page-category-item.category4{background:#e6f9ee;color:#36d278}html[data-theme=dark] .page-category-item.category4{background:#092917;color:#219552}.page-category-item.category4:hover{background:#c0f1d5}html[data-theme=dark] .page-category-item.category4:hover{background:#0f4224}.page-category-item.category5{background:#e1fcfc;color:#16e1e1}html[data-theme=dark] .page-category-item.category5{background:#042929;color:#0e9595}.page-category-item.category5:hover{background:#b4f8f8}html[data-theme=dark] .page-category-item.category5:hover{background:#064242}.page-category-item.category6{background:#e4f0fe;color:#2589f6}html[data-theme=dark] .page-category-item.category6{background:#021b36;color:#0862c3}.page-category-item.category6:hover{background:#bbdafc}html[data-theme=dark] .page-category-item.category6:hover{background:#042c57}.page-category-item.category7{background:#f7f1fd;color:#bb8ced}html[data-theme=dark] .page-category-item.category7{background:#2a0b4b;color:#9851e4}.page-category-item.category7:hover{background:#eadbfa}html[data-theme=dark] .page-category-item.category7:hover{background:#431277}.page-category-item.category8{background:#fdeaf5;color:#ef59ab}html[data-theme=dark] .page-category-item.category8{background:#400626;color:#e81689}.page-category-item.category8:hover{background:#facbe5}html[data-theme=dark] .page-category-item.category8:hover{background:#670a3d}.page-original-info{position:relative;display:inline-block;vertical-align:middle;overflow:hidden;padding:0 .5em;border:.5px solid var(--dark-grey);border-radius:.75em;background:var(--bg-color);font-size:.75em;line-height:1.5!important}.page-info{display:flex;flex-wrap:wrap;align-items:center;place-content:stretch flex-start;color:var(--dark-grey);font-size:14px}@media print{.page-info{display:flex!important}}.page-info>span{display:flex;align-items:center;max-width:100%;margin-inline-end:.5em;line-height:2}@media (min-width: 1440px){.page-info>span{font-size:1.1em}}@media (max-width: 419px){.page-info>span{margin-inline-end:.3em;font-size:.875em}}@media print{.page-info>span{display:flex!important}}.page-info .icon{position:relative;display:inline-block;vertical-align:middle;width:1em;height:1em;margin-inline-end:.25em}.page-info a{color:inherit}.page-info a:hover,.page-info a:active{color:var(--theme-color)}.page-meta{max-width:var(--content-width, 740px);margin-inline:auto;padding-inline:2.5rem;display:flex;flex-wrap:wrap;justify-content:space-between;overflow:auto;padding-top:.75rem;padding-bottom:.75rem}@media (max-width: 959px){.page-meta{padding-inline:1.5rem}}@media print{.page-meta{max-width:unset}}@media print{.page-meta{margin:0!important;padding-inline:0!important}}@media (max-width: 719px){.page-meta{display:block}}.page-meta .meta-item{flex-grow:1}.page-meta .meta-item .label{font-weight:500}.page-meta .meta-item .label:not(a){color:var(--text-color-lighter)}.page-meta .meta-item .info{color:var(--dark-grey);font-weight:400}.page-meta .git-info{text-align:end}.page-meta .edit-link{margin-top:.25rem;margin-bottom:.25rem;margin-inline-end:.5rem;font-size:14px}@media print{.page-meta .edit-link{display:none}}.page-meta .edit-link .icon{position:relative;bottom:-.125em;width:1em;height:1em;margin-inline-end:.25em}.page-meta .update-time,.page-meta .contributors{margin-top:.25rem;margin-bottom:.25rem;font-size:14px}@media (max-width: 719px){.page-meta .update-time,.page-meta .contributors{font-size:13px;text-align:start}}.print-button{border-width:0;background:transparent;cursor:pointer;box-sizing:content-box;width:1rem;height:1rem;padding:.5rem;border-radius:.25em;color:inherit;font-size:1rem;transform:translateY(.25rem)}@media print{.print-button{display:none}}.page-tag-info{flex-wrap:wrap}.page-tag-item{position:relative;display:inline-block;vertical-align:middle;overflow:hidden;min-width:1.5rem;margin:.125rem;padding:.125rem .25rem .125rem .625rem;background:var(--bg-color-secondary);background:linear-gradient(135deg,transparent .75em,var(--bg-color-secondary) 0) top,linear-gradient(45deg,transparent .75em,var(--bg-color-secondary) 0) bottom;background-size:100% 52%!important;background-repeat:no-repeat!important;color:var(--text-color-light);font-weight:700;font-size:.625rem;line-height:1.5;text-align:center;transition:background var(--color-transition),color var(--color-transition)}@media print{.page-tag-item{padding:0;font-weight:400}.page-tag-item:after{content:", "}.page-tag-item:last-of-type:after{content:""}}.page-tag-item.clickable:hover{cursor:pointer}.page-tag-item.tag0{background:#fde5e7;background:linear-gradient(135deg,transparent .75em,#fde5e7 0) top,linear-gradient(45deg,transparent .75em,#fde5e7 0) bottom;color:#ec2f3e}html[data-theme=dark] .page-tag-item.tag0{background:#340509;background:linear-gradient(135deg,transparent .75em,#340509 0) top,linear-gradient(45deg,transparent .75em,#340509 0) bottom;color:#ba111f}.page-tag-item.tag0.clickable:hover{background:#f9bec3;background:linear-gradient(135deg,transparent .75em,#f9bec3 0) top,linear-gradient(45deg,transparent .75em,#f9bec3 0) bottom}html[data-theme=dark] .page-tag-item.tag0.clickable:hover{background:#53080e;background:linear-gradient(135deg,transparent .75em,#53080e 0) top,linear-gradient(45deg,transparent .75em,#53080e 0) bottom}.page-tag-item.tag1{background:#ffeee8;background:linear-gradient(135deg,transparent .75em,#ffeee8 0) top,linear-gradient(45deg,transparent .75em,#ffeee8 0) bottom;color:#fb7649}html[data-theme=dark] .page-tag-item.tag1{background:#441201;background:linear-gradient(135deg,transparent .75em,#441201 0) top,linear-gradient(45deg,transparent .75em,#441201 0) bottom;color:#f54205}.page-tag-item.tag1.clickable:hover{background:#fed4c6;background:linear-gradient(135deg,transparent .75em,#fed4c6 0) top,linear-gradient(45deg,transparent .75em,#fed4c6 0) bottom}html[data-theme=dark] .page-tag-item.tag1.clickable:hover{background:#6d1d02;background:linear-gradient(135deg,transparent .75em,#6d1d02 0) top,linear-gradient(45deg,transparent .75em,#6d1d02 0) bottom}.page-tag-item.tag2{background:#fef5e7;background:linear-gradient(135deg,transparent .75em,#fef5e7 0) top,linear-gradient(45deg,transparent .75em,#fef5e7 0) bottom;color:#f5b041}html[data-theme=dark] .page-tag-item.tag2{background:#3e2703;background:linear-gradient(135deg,transparent .75em,#3e2703 0) top,linear-gradient(45deg,transparent .75em,#3e2703 0) bottom;color:#e08e0b}.page-tag-item.tag2.clickable:hover{background:#fce6c4;background:linear-gradient(135deg,transparent .75em,#fce6c4 0) top,linear-gradient(45deg,transparent .75em,#fce6c4 0) bottom}html[data-theme=dark] .page-tag-item.tag2.clickable:hover{background:#633f05;background:linear-gradient(135deg,transparent .75em,#633f05 0) top,linear-gradient(45deg,transparent .75em,#633f05 0) bottom}.page-tag-item.tag3{background:#eafaf1;background:linear-gradient(135deg,transparent .75em,#eafaf1 0) top,linear-gradient(45deg,transparent .75em,#eafaf1 0) bottom;color:#55d98d}html[data-theme=dark] .page-tag-item.tag3{background:#0c331c;background:linear-gradient(135deg,transparent .75em,#0c331c 0) top,linear-gradient(45deg,transparent .75em,#0c331c 0) bottom;color:#29b866}.page-tag-item.tag3.clickable:hover{background:#caf3db;background:linear-gradient(135deg,transparent .75em,#caf3db 0) top,linear-gradient(45deg,transparent .75em,#caf3db 0) bottom}html[data-theme=dark] .page-tag-item.tag3.clickable:hover{background:#12522d;background:linear-gradient(135deg,transparent .75em,#12522d 0) top,linear-gradient(45deg,transparent .75em,#12522d 0) bottom}.page-tag-item.tag4{background:#e6f9ee;background:linear-gradient(135deg,transparent .75em,#e6f9ee 0) top,linear-gradient(45deg,transparent .75em,#e6f9ee 0) bottom;color:#36d278}html[data-theme=dark] .page-tag-item.tag4{background:#092917;background:linear-gradient(135deg,transparent .75em,#092917 0) top,linear-gradient(45deg,transparent .75em,#092917 0) bottom;color:#219552}.page-tag-item.tag4.clickable:hover{background:#c0f1d5;background:linear-gradient(135deg,transparent .75em,#c0f1d5 0) top,linear-gradient(45deg,transparent .75em,#c0f1d5 0) bottom}html[data-theme=dark] .page-tag-item.tag4.clickable:hover{background:#0f4224;background:linear-gradient(135deg,transparent .75em,#0f4224 0) top,linear-gradient(45deg,transparent .75em,#0f4224 0) bottom}.page-tag-item.tag5{background:#e1fcfc;background:linear-gradient(135deg,transparent .75em,#e1fcfc 0) top,linear-gradient(45deg,transparent .75em,#e1fcfc 0) bottom;color:#16e1e1}html[data-theme=dark] .page-tag-item.tag5{background:#042929;background:linear-gradient(135deg,transparent .75em,#042929 0) top,linear-gradient(45deg,transparent .75em,#042929 0) bottom;color:#0e9595}.page-tag-item.tag5.clickable:hover{background:#b4f8f8;background:linear-gradient(135deg,transparent .75em,#b4f8f8 0) top,linear-gradient(45deg,transparent .75em,#b4f8f8 0) bottom}html[data-theme=dark] .page-tag-item.tag5.clickable:hover{background:#064242;background:linear-gradient(135deg,transparent .75em,#064242 0) top,linear-gradient(45deg,transparent .75em,#064242 0) bottom}.page-tag-item.tag6{background:#e4f0fe;background:linear-gradient(135deg,transparent .75em,#e4f0fe 0) top,linear-gradient(45deg,transparent .75em,#e4f0fe 0) bottom;color:#2589f6}html[data-theme=dark] .page-tag-item.tag6{background:#021b36;background:linear-gradient(135deg,transparent .75em,#021b36 0) top,linear-gradient(45deg,transparent .75em,#021b36 0) bottom;color:#0862c3}.page-tag-item.tag6.clickable:hover{background:#bbdafc;background:linear-gradient(135deg,transparent .75em,#bbdafc 0) top,linear-gradient(45deg,transparent .75em,#bbdafc 0) bottom}html[data-theme=dark] .page-tag-item.tag6.clickable:hover{background:#042c57;background:linear-gradient(135deg,transparent .75em,#042c57 0) top,linear-gradient(45deg,transparent .75em,#042c57 0) bottom}.page-tag-item.tag7{background:#f7f1fd;background:linear-gradient(135deg,transparent .75em,#f7f1fd 0) top,linear-gradient(45deg,transparent .75em,#f7f1fd 0) bottom;color:#bb8ced}html[data-theme=dark] .page-tag-item.tag7{background:#2a0b4b;background:linear-gradient(135deg,transparent .75em,#2a0b4b 0) top,linear-gradient(45deg,transparent .75em,#2a0b4b 0) bottom;color:#9851e4}.page-tag-item.tag7.clickable:hover{background:#eadbfa;background:linear-gradient(135deg,transparent .75em,#eadbfa 0) top,linear-gradient(45deg,transparent .75em,#eadbfa 0) bottom}html[data-theme=dark] .page-tag-item.tag7.clickable:hover{background:#431277;background:linear-gradient(135deg,transparent .75em,#431277 0) top,linear-gradient(45deg,transparent .75em,#431277 0) bottom}.page-tag-item.tag8{background:#fdeaf5;background:linear-gradient(135deg,transparent .75em,#fdeaf5 0) top,linear-gradient(45deg,transparent .75em,#fdeaf5 0) bottom;color:#ef59ab}html[data-theme=dark] .page-tag-item.tag8{background:#400626;background:linear-gradient(135deg,transparent .75em,#400626 0) top,linear-gradient(45deg,transparent .75em,#400626 0) bottom;color:#e81689}.page-tag-item.tag8.clickable:hover{background:#facbe5;background:linear-gradient(135deg,transparent .75em,#facbe5 0) top,linear-gradient(45deg,transparent .75em,#facbe5 0) bottom}html[data-theme=dark] .page-tag-item.tag8.clickable:hover{background:#670a3d;background:linear-gradient(135deg,transparent .75em,#670a3d 0) top,linear-gradient(45deg,transparent .75em,#670a3d 0) bottom}.toc-place-holder{margin-inline:auto;padding-inline:2.5rem;position:sticky;top:calc(var(--navbar-height) + 2rem);z-index:99;max-width:var(--content-width, 740px)}@media (max-width: 959px){.toc-place-holder{padding-inline:1.5rem}}@media print{.toc-place-holder{max-width:unset}}.toc-place-holder+.theme-hope-content:not(.custom){padding-top:0}#toc{position:absolute;inset-inline-start:calc(100% + 1rem);display:none;min-width:10rem;max-width:15rem}@media (min-width: 1440px){.has-toc #toc{display:block}}@media print{#toc{display:none!important}}#toc .toc-header{margin-bottom:.75rem;margin-inline-start:.5rem;font-weight:600;font-size:.875rem}#toc .toc-wrapper{position:relative;overflow:hidden auto;max-height:75vh;margin:0 .5rem;padding-inline-start:8px;text-overflow:ellipsis;white-space:nowrap;scroll-behavior:smooth}#toc .toc-wrapper::-webkit-scrollbar-track-piece{background:transparent}#toc .toc-wrapper::-webkit-scrollbar{width:3px}#toc .toc-wrapper::-webkit-scrollbar-thumb:vertical{background:#ddd}html[data-theme=dark] #toc .toc-wrapper::-webkit-scrollbar-thumb:vertical{background:#333}#toc .toc-wrapper:before{content:" ";position:absolute;top:0;bottom:0;inset-inline-start:0;z-index:-1;width:2px;background:var(--border-color)}#toc .toc-list{position:relative;margin:0;padding:0}#toc .toc-marker{content:" ";position:absolute;top:0;inset-inline-start:-8px;z-index:2;width:2px;height:1.7rem;background:var(--theme-color);transition:top var(--vp-tt)}#toc .toc-link{position:relative;display:block;overflow:hidden;max-width:100%;color:var(--light-grey);line-height:inherit;text-overflow:ellipsis;white-space:nowrap}#toc .toc-link.level2{padding-inline-start:0px;font-size:14px}#toc .toc-link.level3{padding-inline-start:8px;font-size:13px}#toc .toc-link.level4{padding-inline-start:16px;font-size:12px}#toc .toc-link.level5{padding-inline-start:24px;font-size:11px}#toc .toc-link.level6{padding-inline-start:32px;font-size:10px}#toc .toc-item{position:relative;box-sizing:border-box;height:1.7rem;padding:0 .5rem;list-style:none;line-height:1.7rem}#toc .toc-item:hover>.toc-link{color:var(--theme-color)}#toc .toc-item.active>.toc-link{color:var(--theme-color);font-weight:700}.dropdown-wrapper{cursor:pointer}.dropdown-wrapper:not(:hover) .arrow{transform:rotate(-180deg)}.dropdown-wrapper .dropdown-title{border-width:0;background:transparent;cursor:pointer;padding:0 .25rem;color:var(--dark-grey);font-weight:500;font-size:inherit;font-family:inherit;line-height:inherit;cursor:inherit}.dropdown-wrapper .dropdown-title:hover{border-color:transparent}.dropdown-wrapper .dropdown-title .icon{margin-inline-end:.25em;font-size:1em}.dropdown-wrapper .dropdown-title .arrow{display:inline-block;vertical-align:middle;width:1em;height:1em;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");background-position:center;background-repeat:no-repeat;line-height:normal;transition:all .3s;font-size:1.2em}html[data-theme=dark] .dropdown-wrapper .dropdown-title .arrow{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.dropdown-wrapper .dropdown-title .arrow.down{transform:rotate(180deg)}html[dir=rtl] .dropdown-wrapper .dropdown-title .arrow.down{transform:rotate(-180deg)}.dropdown-wrapper .dropdown-title .arrow.end{transform:rotate(90deg)}html[dir=rtl] .dropdown-wrapper .dropdown-title .arrow.end,.dropdown-wrapper .dropdown-title .arrow.start{transform:rotate(-90deg)}html[dir=rtl] .dropdown-wrapper .dropdown-title .arrow.start{transform:rotate(90deg)}.dropdown-wrapper ul{margin:0;padding:0;list-style-type:none}.dropdown-wrapper .nav-dropdown{position:absolute;top:100%;inset-inline-end:0;overflow-y:auto;box-sizing:border-box;min-width:6rem;max-height:calc(100vh - var(--navbar-height));margin:0;padding:.5rem .75rem;border:1px solid var(--grey14);border-radius:.5rem;background:var(--bg-color);box-shadow:2px 2px 10px var(--card-shadow);text-align:start;white-space:nowrap;opacity:0;visibility:hidden;transition:all .18s ease-out;transform:scale(.9)}.dropdown-wrapper:hover .nav-dropdown,.dropdown-wrapper.open .nav-dropdown{z-index:2;opacity:1;visibility:visible;transform:none}.dropdown-wrapper .nav-link{position:relative;display:block;margin-bottom:0;border-bottom:none;color:var(--dark-grey);font-weight:400;font-size:.875rem;line-height:1.7rem;transition:color var(--color-transition)}.dropdown-wrapper .nav-link:hover,.dropdown-wrapper .nav-link.active{color:var(--theme-color)}.dropdown-wrapper .dropdown-subtitle{margin:0;padding:.5rem .25rem 0;color:var(--light-grey);font-weight:600;font-size:.75rem;line-height:2;text-transform:uppercase;transition:color var(--color-transition)}.dropdown-wrapper .dropdown-subitem-wrapper{padding:0 0 .25rem}.dropdown-wrapper .dropdown-item{color:inherit;line-height:1.7rem}.dropdown-wrapper .dropdown-item:last-child .dropdown-subtitle{padding-top:0}.dropdown-wrapper .dropdown-item:last-child .dropdown-subitem-wrapper{padding-bottom:0}.nav-screen-dropdown-title{border-width:0;background:transparent;position:relative;display:flex;align-items:center;width:100%;padding:0;color:var(--dark-grey);font-size:inherit;font-family:inherit;text-align:start;cursor:pointer}.nav-screen-dropdown-title:hover,.nav-screen-dropdown-title.active{color:var(--text-color)}.nav-screen-dropdown-title .title{flex:1}.nav-screen-dropdown-title .arrow{display:inline-block;vertical-align:middle;width:1em;height:1em;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");background-position:center;background-repeat:no-repeat;line-height:normal;transition:all .3s}html[data-theme=dark] .nav-screen-dropdown-title .arrow{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.nav-screen-dropdown-title .arrow.down{transform:rotate(180deg)}html[dir=rtl] .nav-screen-dropdown-title .arrow.down{transform:rotate(-180deg)}.nav-screen-dropdown-title .arrow.end{transform:rotate(90deg)}html[dir=rtl] .nav-screen-dropdown-title .arrow.end,.nav-screen-dropdown-title .arrow.start{transform:rotate(-90deg)}html[dir=rtl] .nav-screen-dropdown-title .arrow.start{transform:rotate(90deg)}.nav-screen-dropdown{overflow:hidden;margin:.5rem 0 0;padding:0;list-style:none;transition:transform .1s ease-out;transform:scaleY(1);transform-origin:top}.nav-screen-dropdown.hide{height:0;margin:0;transform:scaleY(0)}.nav-screen-dropdown .nav-link{position:relative;display:block;padding-inline-start:.5rem;font-weight:400;line-height:2}.nav-screen-dropdown .nav-link:hover,.nav-screen-dropdown .nav-link.active{color:var(--theme-color)}.nav-screen-dropdown .nav-link .icon{font-size:1em}.nav-screen-dropdown .dropdown-item{color:inherit;line-height:1.7rem}.nav-screen-dropdown .dropdown-subtitle{margin:0;padding-inline-start:.25rem;color:var(--light-grey);font-weight:600;font-size:.75rem;line-height:2;text-transform:uppercase;transition:color var(--color-transition)}.nav-screen-dropdown .dropdown-subtitle .nav-link{padding:0}.nav-screen-dropdown .dropdown-subitem-wrapper{margin:0;padding:0;list-style:none}.nav-screen-dropdown .dropdown-subitem{padding-inline-start:.5rem;font-size:.9em}.nav-screen-links{display:none;padding-bottom:.75rem}@media (max-width: 719px){.nav-screen-links{display:block}}.nav-screen-links .navbar-links-item{position:relative;display:block;padding:12px 4px 11px 0;border-bottom:1px solid var(--border-color);font-size:16px;line-height:1.5rem;transition:border-bottom-color var(--color-transition)}.nav-screen-links .nav-link{display:inline-block;width:100%;color:var(--dark-grey);font-weight:400}.nav-screen-links .nav-link:hover{color:var(--text-color)}.nav-screen-links .nav-link.active{color:var(--theme-color)}.vp-nav-screen-container{max-width:320px;margin:0 auto;padding:2rem 0 4rem}#nav-screen{position:fixed;inset:var(--navbar-height) 0 0 0;z-index:150;display:none;overflow-y:auto;padding:0 2rem;background:var(--bg-color);transition:background .5s}@media (max-width: 719px){#nav-screen{display:block}}#nav-screen.fade-enter-active,#nav-screen.fade-leave-active{transition:opacity .25s}#nav-screen.fade-enter-active .vp-nav-screen-container,#nav-screen.fade-leave-active .vp-nav-screen-container{transition:transform .25s ease}#nav-screen.fade-enter-from,#nav-screen.fade-leave-to{opacity:0}#nav-screen.fade-enter-from .vp-nav-screen-container,#nav-screen.fade-leave-to .vp-nav-screen-container{transform:translateY(-8px)}#nav-screen .icon{margin-inline-end:.25em;font-size:1em}#nav-screen img.icon{vertical-align:-.125em;height:1em}.vp-outlook-wrapper{display:flex;justify-content:space-around}.vp-nav-logo{vertical-align:top;height:var(--navbar-line-height);margin-inline-end:.8rem}.vp-nav-logo.light{display:inline-block}.vp-nav-logo.dark,html[data-theme=dark] .vp-nav-logo.light{display:none}html[data-theme=dark] .vp-nav-logo.dark{display:inline-block}.vp-site-name{position:relative;color:var(--text-color);font-size:1.25rem}@media (max-width: 719px){.vp-site-name{overflow:hidden;width:calc(100vw - 9.4rem);text-overflow:ellipsis;white-space:nowrap}}.vp-brand:hover .vp-site-name{color:var(--theme-color)}.vp-navbar .vp-nav-links{display:flex;align-items:center;font-size:.875rem}.vp-navbar .nav-item{position:relative;margin:0 .25rem;line-height:2rem}.vp-navbar .nav-item:first-child{margin-inline-start:0}.vp-navbar .nav-item:last-child{margin-inline-end:0}.vp-navbar .nav-item>.nav-link{color:var(--dark-grey)}.vp-navbar .nav-item>.nav-link:after{content:" ";position:absolute;inset:auto 50% 0;height:2px;border-radius:1px;background:var(--theme-color-light);visibility:hidden;transition:inset .2s ease-in-out}.vp-navbar .nav-item>.nav-link.active{color:var(--theme-color)}.vp-navbar .nav-item>.nav-link:hover:after,.vp-navbar .nav-item>.nav-link.active:after{inset:auto 0 0;visibility:visible}.vp-navbar{--navbar-line-height: calc( var(--navbar-height) - var(--navbar-vertical-padding) * 2 );position:fixed;inset:0 0 auto;z-index:175;display:flex;align-items:center;justify-content:space-between;box-sizing:border-box;height:var(--navbar-height);padding:var(--navbar-vertical-padding) var(--navbar-horizontal-padding);background:var(--navbar-bg-color);box-shadow:0 2px 8px var(--card-shadow);line-height:var(--navbar-line-height);white-space:nowrap;transition:transform ease-in-out .3s,background var(--color-transition),box-shadow var(--color-transition);-webkit-backdrop-filter:saturate(150%) blur(12px);backdrop-filter:saturate(150%) blur(12px)}@media print{.vp-navbar{display:none}}.hide-navbar .vp-navbar.auto-hide{transform:translateY(-100%)}.vp-navbar .nav-link{padding:0 .25rem;color:var(--dark-grey)}.vp-navbar .nav-link.active{color:var(--theme-color)}.vp-navbar .nav-link .icon{margin-inline-end:.25em;font-size:1em}.vp-navbar .nav-link img.icon{vertical-align:-.125em;height:1em}.vp-navbar.hide-icon .vp-nav-links .icon{display:none!important}.vp-navbar-start,.vp-navbar-end,.vp-navbar-center{display:flex;flex:1;align-items:center}.vp-navbar-start>*,.vp-navbar-end>*,.vp-navbar-center>*{position:relative;margin:0 .25rem!important}.vp-navbar-start>*:first-child,.vp-navbar-end>*:first-child,.vp-navbar-center>*:first-child{margin-inline-start:0!important}.vp-navbar-start>*:last-child,.vp-navbar-end>*:last-child,.vp-navbar-center>*:last-child{margin-inline-end:0!important}.vp-navbar-start{justify-content:start}.vp-navbar-center{justify-content:center}.vp-navbar-end{justify-content:end}.vp-navbar .vp-repo{margin:0!important}.vp-navbar .vp-repo-link{display:inline-block;margin:auto;padding:6px;color:var(--dark-grey);line-height:1}.vp-navbar .vp-repo-link:hover,.vp-navbar .vp-repo-link:active{color:var(--theme-color)}.vp-toggle-navbar-button{border-width:0;background:transparent;cursor:pointer;position:relative;display:none;align-items:center;justify-content:center;padding:6px}@media screen and (max-width: 719px){.vp-toggle-navbar-button{display:flex}}.vp-toggle-navbar-button>span{position:relative;overflow:hidden;width:16px;height:14px}.vp-toggle-navbar-button .vp-top,.vp-toggle-navbar-button .vp-middle,.vp-toggle-navbar-button .vp-bottom{position:absolute;width:16px;height:2px;background:var(--dark-grey);transition:top .25s,background .5s,transform .25s}.vp-toggle-navbar-button .vp-top{top:0;left:0;transform:translate(0)}.vp-toggle-navbar-button .vp-middle{top:6px;left:0;transform:translate(8px)}.vp-toggle-navbar-button .vp-bottom{top:12px;left:0;transform:translate(4px)}.vp-toggle-navbar-button:hover .vp-top{top:0;left:0;transform:translate(4px)}.vp-toggle-navbar-button:hover .vp-middle{top:6;left:0;transform:translate(0)}.vp-toggle-navbar-button:hover .vp-bottom{top:12px;left:0;transform:translate(8px)}.vp-toggle-navbar-button.is-active .vp-top{top:6px;transform:translate(0) rotate(225deg)}.vp-toggle-navbar-button.is-active .vp-middle{top:6px;transform:translate(16px)}.vp-toggle-navbar-button.is-active .vp-bottom{top:6px;transform:translate(0) rotate(135deg)}.vp-toggle-navbar-button.is-active:hover .vp-top,.vp-toggle-navbar-button.is-active:hover .vp-middle,.vp-toggle-navbar-button.is-active:hover .vp-bottom{background:var(--theme-color);transition:top .25s,background .25s,transform .25s}.vp-toggle-sidebar-button{border-width:0;background:transparent;cursor:pointer;display:none;vertical-align:middle;box-sizing:content-box;width:1rem;height:1rem;padding:.5rem;font:unset;transition:transform .2s ease-in-out}@media screen and (max-width: 719px){.vp-toggle-sidebar-button{display:block;padding-inline-end:var(--navbar-mobile-horizontal-padding)}}.vp-toggle-sidebar-button:before,.vp-toggle-sidebar-button:after,.vp-toggle-sidebar-button .icon{display:block;width:100%;height:2px;border-radius:.05em;background:var(--dark-grey);transition:transform .2s ease-in-out}.vp-toggle-sidebar-button:before{content:" ";margin-top:.125em}.sidebar-open .vp-toggle-sidebar-button:before{transform:translateY(.34rem) rotate(135deg)}.vp-toggle-sidebar-button:after{content:" ";margin-bottom:.125em}.sidebar-open .vp-toggle-sidebar-button:after{transform:translateY(-.34rem) rotate(-135deg)}.vp-toggle-sidebar-button .icon{margin:.2em 0}.sidebar-open .vp-toggle-sidebar-button .icon{transform:scale(0)}.appearance-title{display:block;margin:0;padding:0 .25rem;color:var(--light-grey);font-weight:600;font-size:.75rem;line-height:2;transition:color var(--color-transition)}#appearance-switch{border-width:0;background:transparent;vertical-align:middle;padding:6px;color:var(--dark-grey);cursor:pointer;transition:color var(--color-transition)}#appearance-switch:hover{color:var(--theme-color)}#appearance-switch .icon{width:1.25rem;height:1.25rem}.outlook-button{border-width:0;background:transparent;cursor:pointer;position:relative;padding:.375rem;color:var(--dark-grey)}.outlook-button .icon{vertical-align:middle;width:1.25rem;height:1.25rem}.outlook-dropdown{position:absolute;top:100%;inset-inline-end:0;overflow-y:auto;box-sizing:border-box;min-width:100px;margin:0;padding:.5rem .75rem;border:1px solid var(--grey14);border-radius:.25rem;background:var(--bg-color);box-shadow:2px 2px 10px var(--card-shadow);text-align:start;white-space:nowrap;opacity:0;visibility:hidden;transition:all .18s ease-out;transform:scale(.8)}.outlook-dropdown>*:not(:last-child){padding-bottom:.5rem;border-bottom:1px solid var(--grey14)}.outlook-button:hover .outlook-dropdown,.outlook-button.open .outlook-dropdown{z-index:2;opacity:1;visibility:visible;transform:scale(1)}.theme-color-title{display:block;margin:0;padding:0 .25rem;color:var(--light-grey);font-weight:600;font-size:.75rem;line-height:2;transition:color var(--color-transition)}#theme-color-picker{display:flex;margin:0;padding:0;list-style-type:none;font-size:14px}#theme-color-picker li span{display:inline-block;vertical-align:middle;width:15px;height:15px;margin:0 2px;border-radius:2px}#theme-color-picker li span.theme-color,#theme-color-picker li span.theme-color html[data-theme=dark]{background:#3eaf7c}@media print{.full-screen-wrapper{display:none}}.full-screen-title{display:block;margin:0;padding:0 .25rem;color:var(--light-grey);font-weight:600;font-size:.75rem;line-height:2;transition:color var(--color-transition)}.full-screen,.cancel-full-screen{border-width:0;background:transparent;vertical-align:middle;padding:.375rem;color:var(--dark-grey);cursor:pointer}.full-screen:hover,.cancel-full-screen:hover{color:var(--theme-color)}.full-screen .icon,.cancel-full-screen .icon{width:1.25rem;height:1.25rem}.enter-fullscreen-icon:hover,.cancel-fullscreen-icon{color:var(--theme-color)}.cancel-fullscreen-icon:hover{color:var(--dark-grey)}.vp-sidebar-heading{display:flex;align-items:center;overflow:hidden;box-sizing:border-box;width:calc(100% - 1rem);margin:0;margin-inline:.5rem;padding:.25rem .5rem;border-width:0;border-radius:.375rem;background:transparent;color:var(--text-color);font-size:1.1em;line-height:1.5;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:color .15s ease;transform:rotate(0)}.vp-sidebar-heading.open{color:inherit}.vp-sidebar-heading.clickable:hover{background:var(--bg-color-secondary)}.vp-sidebar-heading.clickable.exact{border-inline-start-color:var(--theme-color);color:var(--theme-color)}.vp-sidebar-heading.clickable.exact a{color:inherit}.vp-sidebar-heading .vp-sidebar-title{flex:1}.vp-sidebar-heading .vp-arrow{display:inline-block;vertical-align:middle;width:1em;height:1em;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");background-position:center;background-repeat:no-repeat;line-height:normal;transition:all .3s;font-size:1.5em}html[data-theme=dark] .vp-sidebar-heading .vp-arrow{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.vp-sidebar-heading .vp-arrow.down{transform:rotate(180deg)}html[dir=rtl] .vp-sidebar-heading .vp-arrow.down{transform:rotate(-180deg)}.vp-sidebar-heading .vp-arrow.end{transform:rotate(90deg)}html[dir=rtl] .vp-sidebar-heading .vp-arrow.end,.vp-sidebar-heading .vp-arrow.start{transform:rotate(-90deg)}html[dir=rtl] .vp-sidebar-heading .vp-arrow.start{transform:rotate(90deg)}button.vp-sidebar-heading{outline:none;font-weight:inherit;font-family:inherit;line-height:inherit;text-align:start;cursor:pointer}.vp-sidebar-link{display:inline-block;box-sizing:border-box;width:calc(100% - 1rem);margin-inline:.5rem;padding:.25rem .5rem;border-radius:.375rem;color:var(--text-color);font-weight:400;font-size:1em;line-height:1.5}.vp-sidebar-link:hover{background:var(--bg-color-secondary)}.vp-sidebar-link.active{background:var(--theme-color-mask);color:var(--theme-color);font-weight:500}.vp-sidebar-link.active .icon{color:var(--theme-color)}.vp-sidebar-sub-headers .vp-sidebar-link{padding-top:.25rem;padding-bottom:.25rem;border-inline-start:none}.vp-sidebar-sub-headers .vp-sidebar-link.active{background:transparent;font-weight:500}.vp-sidebar-group:not(.collapsible) .vp-sidebar-heading:not(.clickable){color:inherit;cursor:auto}.vp-sidebar-group .vp-sidebar-group{padding-inline-start:.75rem}.vp-sidebar-group .vp-sidebar-group .vp-sidebar-heading{font-size:1em}.vp-sidebar-group .vp-sidebar-link{padding-inline-start:1.25rem}.vp-sidebar-links,.vp-sidebar-links ul{margin:0;padding:0}.vp-sidebar-links ul.vp-sidebar-sub-headers{padding-inline-start:.75rem;font-size:.95em}@media (min-width: 1440px){.has-toc .vp-sidebar-links ul.vp-sidebar-sub-headers{display:none}}.vp-sidebar-links li{list-style-type:none}.vp-sidebar>.vp-sidebar-links{padding:1.5rem 0}@media (max-width: 719px){.vp-sidebar>.vp-sidebar-links{padding:1rem 0}}.vp-sidebar>.vp-sidebar-links>li>.vp-sidebar-link{font-size:1.1em}.vp-sidebar>.vp-sidebar-links>li:not(:first-child){margin-top:.5rem}.vp-sidebar{position:fixed;top:0;bottom:0;inset-inline-start:0;z-index:1;overflow-y:auto;width:var(--sidebar-width);margin:0;padding-inline-start:calc(var(--sidebar-space) - var(--sidebar-width));background:var(--sidebar-bg-color);box-shadow:2px 0 8px var(--card-shadow);font-size:.94rem;transition:background var(--color-transition),box-shadow var(--color-transition),padding var(--transform-transition),transform var(--transform-transition);-webkit-backdrop-filter:saturate(150%) blur(12px);backdrop-filter:saturate(150%) blur(12px);scrollbar-color:var(--theme-color) var(--border-color);scrollbar-width:thin}@media (max-width: 959px){.vp-sidebar{font-size:.86em}}@media (max-width: 719px){.vp-sidebar{z-index:125;box-shadow:none;transform:translate(-100%)}html[dir=rtl] .vp-sidebar{transform:translate(100%)}}@media (min-width: 1440px){.vp-sidebar{padding-bottom:3rem;box-shadow:none;font-size:1rem}}@media print{.vp-sidebar{display:none}}.vp-sidebar a{display:inline-block;color:var(--text-color);font-weight:400}.vp-sidebar .icon{margin-inline-end:.25em;font-size:1em}.vp-sidebar img.icon{vertical-align:-.125em;height:1em}.vp-sidebar.hide-icon .icon{display:none!important}.vp-sidebar-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9;background:#00000026}.vp-sidebar-mask.fade-enter-active,.vp-sidebar-mask.fade-leave-active{transition:opacity .25s}.vp-sidebar-mask.fade-enter-from,.vp-sidebar-mask.fade-leave-to{opacity:0}.search-pro-result-wrapper{scrollbar-color:var(--vp-tc) var(--vp-brc);scrollbar-width:thin}@media (max-width: 419px){.search-pro-result-wrapper{font-size:14px}}.search-pro-result-wrapper::-webkit-scrollbar{width:6px;height:6px}.search-pro-result-wrapper::-webkit-scrollbar-track-piece{border-radius:6px;background:#0000001a}.search-pro-result-wrapper::-webkit-scrollbar-thumb{border-radius:6px;background:var(--vp-tc)}.search-pro-result-wrapper::-webkit-scrollbar-thumb:active{background:var(--vp-tcl)}.search-pro-result-wrapper mark{border-radius:.25em;line-height:1}.search-pro-result-list{margin:0;padding:0}.search-pro-result-list-item{display:block;list-style:none}.search-pro-result-title{position:sticky;top:-2px;z-index:10;margin:-4px;margin-bottom:.25rem;padding:4px;background:var(--vp-bg);color:var(--vp-tc);font-weight:600;font-size:.85em;line-height:2rem;text-indent:.5em}.search-pro-result-item.active .search-pro-result-title{color:var(--vp-tc)}.search-pro-result-type{display:block;width:1rem;height:1rem;margin-inline-start:-.5rem;padding:.5rem;color:var(--vp-tc)}.search-pro-remove-icon{border-width:0;background:transparent;cursor:pointer;box-sizing:content-box;height:1.5rem;padding:0;border-radius:50%;color:var(--vp-tc);font-size:1rem}.search-pro-remove-icon svg{width:1.5rem;height:1.5rem}.search-pro-remove-icon:hover{background:#8080804d}.search-pro-result-content{display:flex;flex-grow:1;flex-direction:column;align-items:stretch;justify-content:center;line-height:1.5}.search-pro-result-content .content-header{margin-bottom:.25rem;border-bottom:1px solid var(--vp-brcd);font-size:.9em}.search-pro-result-item{display:flex;align-items:center;margin:.5rem 0;padding:.5rem .75rem;border-radius:.25rem;background:var(--vp-bgl);color:inherit;box-shadow:0 1px 3px 0 var(--card-shadow);font-weight:400;white-space:pre-wrap;word-wrap:break-word}.search-pro-result-item strong{color:var(--vp-tc)}.search-pro-result-item:hover,.search-pro-result-item.active{background-color:var(--vp-tcl);color:var(--white);cursor:pointer}.search-pro-result-item:hover .search-pro-result-type,.search-pro-result-item:hover .search-pro-remove-icon,.search-pro-result-item:hover strong,.search-pro-result-item.active .search-pro-result-type,.search-pro-result-item.active .search-pro-remove-icon,.search-pro-result-item.active strong{color:var(--white)} diff --git a/assets/style-vzLtS47N.css b/assets/style-vzLtS47N.css new file mode 100644 index 0000000..890f271 --- /dev/null +++ b/assets/style-vzLtS47N.css @@ -0,0 +1 @@ +html[data-theme=dark]{--text-color: #9e9e9e;--bg-color: #0d1117;--bg-color-secondary: #161b22;--bg-color-tertiary: #21262c;--border-color: #30363d;--box-shadow: #282a32;--card-shadow: rgba(0, 0, 0, .3);--black: #fff;--dark-grey: #999;--light-grey: #666;--white: #000;--grey3: #bbb;--grey12: #333;--grey14: #111;--bg-color-light: #161b22;--bg-color-back: #0d1117;--bg-color-float: #161b22;--bg-color-blur: rgba(13, 17, 23, .9);--bg-color-float-blur: rgba(22, 27, 34, .9);--text-color-light: #a8a8a8;--text-color-lighter: #b1b1b1;--text-color-bright: #c5c5c5;--border-color-light: #2e333a;--border-color-dark: #394048}:root{--theme-color: #3eaf7c;--text-color: #2c3e50;--bg-color: #fff;--bg-color-secondary: #f8f8f8;--bg-color-tertiary: #efeef4;--border-color: #eaecef;--box-shadow: #f0f1f2;--card-shadow: rgba(0, 0, 0, .15);--black: #000;--dark-grey: #666;--light-grey: #999;--white: #fff;--grey3: #333;--grey12: #bbb;--grey14: #eee;--navbar-height: 3.75rem;--navbar-horizontal-padding: 1.5rem;--navbar-vertical-padding: .7rem;--navbar-mobile-height: 3.25rem;--navbar-mobile-horizontal-padding: 1rem;--navbar-mobile-vertical-padding: .5rem;--sidebar-width: 18rem;--sidebar-mobile-width: 16rem;--content-width: 780px;--home-page-width: 1160px;--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", STHeiti, "Microsoft YaHei", SimSun, sans-serif;--font-family-heading: Georgia Pro, Crimson, Georgia, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", STHeiti, "Microsoft YaHei", SimSun, sans-serif;--font-family-mono: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace;--line-numbers-width: 2.5rem;--color-transition: .3s ease;--transform-transition: .3s ease;--vp-bg: var(--bg-color);--vp-bgl: var(--bg-color-light);--vp-bglt: var(--bg-color-tertiary);--vp-c: var(--text-color);--vp-cl: var(--text-color-light);--vp-clt: var(--text-color-lighter);--vp-brc: var(--border-color);--vp-brcd: var(--border-color-dark);--vp-tc: var(--theme-color);--vp-tcl: var(--theme-color-light);--vp-ct: var(--color-transition);--vp-tt: var(--transform-transition);--bg-color-light: #fff;--bg-color-back: #f8f8f8;--bg-color-float: #fff;--bg-color-blur: rgba(255, 255, 255, .9);--bg-color-float-blur: rgba(255, 255, 255, .9);--text-color-light: #3a5169;--text-color-lighter: #476582;--text-color-bright: #6a8bad;--border-color-light: #eceef1;--border-color-dark: #cfd4db;--theme-color-dark: #389e70;--theme-color-light: #4abf8a;--theme-color-mask: rgba(62, 175, 124, .15)}:root{--badge-tip-color: #42b983;--badge-warning-color: #f4cd00;--badge-danger-color: #f55;--badge-info-color: #0295ff;--badge-note-color: #666}.vp-badge{display:inline-block;vertical-align:center;height:18px;padding:0 6px;border-radius:3px;background:var(--vp-tc);color:var(--white);font-size:14px;line-height:18px;transition:background var(--vp-ct),color var(--vp-ct)}.vp-badge+.vp-badge{margin-inline-start:5px}h1 .vp-badge,h2 .vp-badge,h3 .vp-badge,h4 .vp-badge,h5 .vp-badge,h6 .vp-badge{vertical-align:top}.vp-badge.tip{background:var(--badge-tip-color)}.vp-badge.warning{background:var(--badge-warning-color)}.vp-badge.danger{background:var(--badge-danger-color)}.vp-badge.info{background:var(--badge-info-color)}.vp-badge.note{background:var(--badge-note-color)}.font-icon{display:inline-block}.theme-hope-content .font-icon{vertical-align:middle}:root{--balloon-border-radius: 2px;--balloon-color: rgba(16, 16, 16, .95);--balloon-text-color: #fff;--balloon-font-size: 12px;--balloon-move: 4px}button[aria-label][data-balloon-pos]{overflow:visible}[aria-label][data-balloon-pos]{position:relative;cursor:pointer}[aria-label][data-balloon-pos]:after{opacity:0;pointer-events:none;transition:all .18s ease-out .18s;text-indent:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-weight:400;font-style:normal;text-shadow:none;font-size:var(--balloon-font-size);background:var(--balloon-color);border-radius:2px;color:var(--balloon-text-color);border-radius:var(--balloon-border-radius);content:attr(aria-label);padding:.5em 1em;position:absolute;white-space:nowrap;z-index:10}[aria-label][data-balloon-pos]:before{width:0;height:0;border:5px solid transparent;border-top-color:var(--balloon-color);opacity:0;pointer-events:none;transition:all .18s ease-out .18s;content:"";position:absolute;z-index:10}[aria-label][data-balloon-pos]:hover:before,[aria-label][data-balloon-pos]:hover:after,[aria-label][data-balloon-pos][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-visible]:after,[aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:before,[aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:after{opacity:1;pointer-events:none}[aria-label][data-balloon-pos].font-awesome:after{font-family:FontAwesome,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}[aria-label][data-balloon-pos][data-balloon-break]:after{white-space:pre}[aria-label][data-balloon-pos][data-balloon-break][data-balloon-length]:after{white-space:pre-line;word-break:break-word}[aria-label][data-balloon-pos][data-balloon-blunt]:before,[aria-label][data-balloon-pos][data-balloon-blunt]:after{transition:none}[aria-label][data-balloon-pos][data-balloon-pos=up]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=up][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-pos=down]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=down][data-balloon-visible]:after{transform:translate(-50%)}[aria-label][data-balloon-pos][data-balloon-pos=up]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=up][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-pos=down]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=down][data-balloon-visible]:before{transform:translate(-50%)}[aria-label][data-balloon-pos][data-balloon-pos*=-left]:after{left:0}[aria-label][data-balloon-pos][data-balloon-pos*=-left]:before{left:5px}[aria-label][data-balloon-pos][data-balloon-pos*=-right]:after{right:0}[aria-label][data-balloon-pos][data-balloon-pos*=-right]:before{right:5px}[aria-label][data-balloon-pos][data-balloon-po*=-left]:hover:after,[aria-label][data-balloon-pos][data-balloon-po*=-left][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-pos*=-right]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos*=-right][data-balloon-visible]:after{transform:translate(0)}[aria-label][data-balloon-pos][data-balloon-po*=-left]:hover:before,[aria-label][data-balloon-pos][data-balloon-po*=-left][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-pos*=-right]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos*=-right][data-balloon-visible]:before{transform:translate(0)}[aria-label][data-balloon-pos][data-balloon-pos^=up]:before,[aria-label][data-balloon-pos][data-balloon-pos^=up]:after{bottom:100%;transform-origin:top;transform:translateY(var(--balloon-move))}[aria-label][data-balloon-pos][data-balloon-pos^=up]:after{margin-bottom:10px}[aria-label][data-balloon-pos][data-balloon-pos=up]:before,[aria-label][data-balloon-pos][data-balloon-pos=up]:after{left:50%;transform:translate(-50%,var(--balloon-move))}[aria-label][data-balloon-pos][data-balloon-pos^=down]:before,[aria-label][data-balloon-pos][data-balloon-pos^=down]:after{top:100%;transform:translateY(calc(var(--balloon-move) * -1))}[aria-label][data-balloon-pos][data-balloon-pos^=down]:after{margin-top:10px}[aria-label][data-balloon-pos][data-balloon-pos^=down]:before{width:0;height:0;border:5px solid transparent;border-bottom-color:var(--balloon-color)}[aria-label][data-balloon-pos][data-balloon-pos=down]:after,[aria-label][data-balloon-pos][data-balloon-pos=down]:before{left:50%;transform:translate(-50%,calc(var(--balloon-move) * -1))}[aria-label][data-balloon-pos][data-balloon-pos=left]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=left][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-pos=right]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=right][data-balloon-visible]:after{transform:translateY(-50%)}[aria-label][data-balloon-pos][data-balloon-pos=left]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=left][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-pos=right]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=right][data-balloon-visible]:before{transform:translateY(-50%)}[aria-label][data-balloon-pos][data-balloon-pos=left]:after,[aria-label][data-balloon-pos][data-balloon-pos=left]:before{right:100%;top:50%;transform:translate(var(--balloon-move),-50%)}[aria-label][data-balloon-pos][data-balloon-pos=left]:after{margin-right:10px}[aria-label][data-balloon-pos][data-balloon-pos=left]:before{width:0;height:0;border:5px solid transparent;border-left-color:var(--balloon-color)}[aria-label][data-balloon-pos][data-balloon-pos=right]:after,[aria-label][data-balloon-pos][data-balloon-pos=right]:before{left:100%;top:50%;transform:translate(calc(var(--balloon-move) * -1),-50%)}[aria-label][data-balloon-pos][data-balloon-pos=right]:after{margin-left:10px}[aria-label][data-balloon-pos][data-balloon-pos=right]:before{width:0;height:0;border:5px solid transparent;border-right-color:var(--balloon-color)}[aria-label][data-balloon-pos][data-balloon-length]:after{white-space:normal}[aria-label][data-balloon-pos][data-balloon-length=small]:after{width:80px}[aria-label][data-balloon-pos][data-balloon-length=medium]:after{width:150px}[aria-label][data-balloon-pos][data-balloon-length=large]:after{width:260px}[aria-label][data-balloon-pos][data-balloon-length=xlarge]:after{width:380px}@media screen and (max-width: 768px){[aria-label][data-balloon-pos][data-balloon-length=xlarge]:after{width:90vw}}[aria-label][data-balloon-pos][data-balloon-length=fit]:after{width:100%}.vp-back-to-top-button{border-width:0;background:transparent;cursor:pointer;position:fixed!important;bottom:64px;inset-inline-end:1rem;z-index:100;width:48px;height:48px;padding:8px;border-radius:50%;background:var(--vp-bg);color:var(--vp-tc);box-shadow:2px 2px 10px 4px var(--card-shadow);transition:background var(--vp-ct),color var(--vp-ct),box-shadow var(--vp-ct)}@media (max-width: 719px){.vp-back-to-top-button{width:36px;height:36px}}@media print{.vp-back-to-top-button{display:none}}.vp-back-to-top-button:hover{color:var(--vp-tcl)}.vp-back-to-top-button .back-to-top-icon{overflow:hidden;width:100%;border-radius:50%;fill:currentcolor}.vp-scroll-progress{position:absolute;right:-2px;bottom:-2px;width:52px;height:52px}@media (max-width: 719px){.vp-scroll-progress{width:40px;height:40px}}.vp-scroll-progress svg{width:100%;height:100%}.vp-scroll-progress circle{opacity:.9;fill:none;stroke:var(--vp-tc);transform:rotate(-90deg);transform-origin:50% 50%;r:22;stroke-dasharray:0% 314.1593%;stroke-width:3px}@media (max-width: 719px){.vp-scroll-progress circle{r:18}}.fade-enter-active,.fade-leave-active{transition:opacity var(--vp-ct)}.fade-enter-from,.fade-leave-to{opacity:0}@media screen{.sr-only{position:absolute;overflow:hidden;clip:rect 0,0,0,0;width:1px;height:1px;margin:-1px;padding:0;border:0}}@media print{.sr-only{display:none}}.vp-catalog-wrapper{margin-top:8px;margin-bottom:8px}.vp-catalog-wrapper.index ol{padding-inline-start:0}.vp-catalog-wrapper.index li{list-style-type:none}.vp-catalog-wrapper.index .vp-catalogs{padding-inline-start:0}.vp-catalog-wrapper.index .vp-catalog{list-style-type:none}.vp-catalog-wrapper.index .vp-catalog-title:before{content:"§" counter(catalog-item,upper-roman) " "}.vp-catalog-wrapper.index .vp-child-catalogs{counter-reset:child-catalog}.vp-catalog-wrapper.index .vp-child-catalog{counter-increment:child-catalog}.vp-catalog-wrapper.index .vp-child-catalog .vp-catalog-title:before{content:counter(catalog-item) "." counter(child-catalog) " "}.vp-catalog-wrapper.index .vp-sub-catalogs{padding-inline-start:.5rem}.vp-catalogs{margin:0;counter-reset:catalog-item}.vp-catalogs.deep{padding-inline-start:0}.vp-catalogs.deep .vp-catalog{list-style-type:none}.vp-catalogs .font-icon{vertical-align:baseline;margin-inline-end:.25rem}.vp-catalog{counter-increment:catalog-item}.vp-catalog-main-title{margin-top:calc(.5rem - var(--navbar-height, 3.6rem));margin-bottom:.5rem;padding-top:var(--navbar-height, 3.6rem);font-weight:500;font-size:1.75rem}.vp-catalog-main-title:first-child{margin-bottom:.5rem!important}.vp-catalog-main-title:only-child{margin-bottom:0!important}.vp-catalog-child-title{margin-bottom:.5rem!important}.vp-catalog-child-title.has-children{margin-top:calc(.5rem - var(--navbar-height, 3.6rem));padding-top:var(--navbar-height, 3.6rem);border-bottom:1px solid var(--vp-brc);font-weight:500;font-size:1.3rem;transition:border-color var(--vp-ct)}.vp-catalog-child-title.has-children:only-child{margin-bottom:0!important}.vp-catalog-sub-title{font-weight:500;font-size:1.1rem}.vp-catalog-sub-title:only-child{margin-bottom:0!important}.vp-catalog-title{color:inherit;text-decoration:none}.vp-catalog-title:hover{color:var(--vp-tc)}.vp-child-catalogs{margin:0}.vp-child-catalog{list-style-type:disc}.vp-sub-catalogs{counter-reset:sub-catalog}.vp-sub-catalog{counter-increment:sub-catalog}.vp-sub-catalog .vp-link:before{content:counter(catalog-item) "." counter(child-catalog) "." counter(sub-catalog) " "}.vp-sub-catalogs-wrapper{display:flex;flex-wrap:wrap}.vp-sub-catalog-link{display:inline-block;margin:4px 8px;padding:4px 8px;border-radius:6px;background-color:var(--vp-bgl);line-height:1.5;overflow-wrap:break-word;transition:background-color var(--vp-ct),color var(--vp-ct)}.vp-sub-catalog-link:hover{background-color:var(--vp-tcl);color:var(--vp-bg);text-decoration:none!important}.vp-empty-catalog{font-size:1.25rem;text-align:center}:root{--external-link-icon-color: #aaa}.external-link-icon{position:relative;display:inline-block;color:var(--external-link-icon-color);vertical-align:middle;top:-1px}@media print{.external-link-icon{display:none}}.external-link-icon-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}:root{--nprogress-color: #29d;--nprogress-z-index: 1031}#nprogress{pointer-events:none}#nprogress .bar{background:var(--nprogress-color);position:fixed;z-index:var(--nprogress-z-index);top:0;left:0;width:100%;height:2px}:root{--copy-icon: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2'/%3E%3C/svg%3E");--copied-icon: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2m-6 9 2 2 4-4'/%3E%3C/svg%3E")}div[class*=language-]>button.copy-code-button{border-width:0;background:transparent;position:absolute;outline:none;cursor:pointer}@media print{div[class*=language-]>button.copy-code-button{display:none}}div[class*=language-]>button.copy-code-button .copy-icon{background:currentcolor;-webkit-mask-image:var(--copy-icon);mask-image:var(--copy-icon);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:1em;mask-size:1em}div[class*=language-]>button.copy-code-button:not(.fancy){border-width:0;background:transparent;cursor:pointer;position:absolute;top:.5em;right:.5em;z-index:5;width:2.5rem;height:2.5rem;padding:0;border-radius:.5rem;opacity:0;transition:opacity .4s}div[class*=language-]>button.copy-code-button:not(.fancy):hover,div[class*=language-]>button.copy-code-button:not(.fancy).copied{background:var(--code-hl-bg-color, rgba(0, 0, 0, .66))}div[class*=language-]>button.copy-code-button:not(.fancy):focus,div[class*=language-]>button.copy-code-button:not(.fancy).copied{opacity:1}div[class*=language-]>button.copy-code-button:not(.fancy).copied:after{content:attr(data-copied);position:absolute;top:0;right:calc(100% + .25rem);display:block;height:1.25rem;padding:.625rem;border-radius:.5rem;background:var(--code-hl-bg-color, rgba(0, 0, 0, .66));color:var(--code-ln-color, #9e9e9e);font-weight:500;line-height:1.25rem;white-space:nowrap}div[class*=language-]>button.copy-code-button:not(.fancy) .copy-icon{width:1.25rem;height:1.25rem;padding:.625rem;color:var(--code-ln-color, #9e9e9e);font-size:1.25rem}div[class*=language-]>button.copy-code-button.fancy{right:-14px;bottom:-14px;z-index:5;width:2rem;height:2rem;padding:7px 8px;border-radius:50%;background:#339af0;color:#fff}@media (max-width: 419px){div[class*=language-]>button.copy-code-button.fancy{right:0;bottom:0;width:28px;height:28px;border-radius:50% 10% 0}}div[class*=language-]>button.copy-code-button.fancy:hover{background:#228be6}div[class*=language-]>button.copy-code-button.fancy .copy-icon{width:100%;height:100%;color:#fff;font-size:1.25rem}@media (max-width: 419px){div[class*=language-]>button.copy-code-button.fancy .copy-icon{position:relative;top:2px;left:2px}}div[class*=language-]>button.copy-code-button.copied .copy-icon{-webkit-mask-image:var(--copied-icon);mask-image:var(--copied-icon)}div[class*=language-]:hover:before{display:none}div[class*=language-]:hover>button.copy-code-button:not(.fancy){opacity:1}.footnote-item{margin-top:calc(0rem - var(--navbar-height, 3.6rem));padding-top:calc(var(--navbar-height, 3.6rem) + .5rem)}.footnote-item>p{margin-bottom:0}.footnote-ref{position:relative}.footnote-anchor{position:absolute;top:calc(-.5rem - var(--navbar-height, 3.6rem))}:root{--important-title-color: #230555;--important-bg-color: #f4eefe;--important-border-color: #a371f7;--important-code-bg-color: rgb(163 113 247 / 10%);--info-title-color: #193c47;--info-bg-color: #eef9fd;--info-border-color: #4cb3d4;--info-code-bg-color: rgb(76 179 212 / 10%);--note-title-color: #474748;--note-bg-color: #fdfdfe;--note-border-color: #ccc;--note-code-bg-color: rgb(212 213 216 / 20%);--tip-title-color: #003100;--tip-bg-color: #e6f6e6;--tip-border-color: #009400;--tip-code-bg-color: rgb(0 148 0 / 15%);--warning-title-color: #4d3800;--warning-bg-color: #fff8e6;--warning-border-color: #e6a700;--warning-code-bg-color: rgb(230 167 0 / 15%);--caution-title-color: #4b1113;--caution-bg-color: #ffebec;--caution-border-color: #e13238;--caution-code-bg-color: rgb(225 50 56 / 15%);--detail-bg-color: #eee;--detail-text-color: inherit;--detail-code-bg-color: rgb(127 127 127 / 15%)}html[data-theme=dark]{--important-title-color: #f4eefe;--important-bg-color: #230555;--info-title-color: #eef9fd;--info-bg-color: #193c47;--note-title-color: #fdfdfe;--note-bg-color: #474748;--tip-title-color: #e6f6e6;--tip-bg-color: #003100;--warning-title-color: #fff8e6;--warning-bg-color: #4d3800;--caution-title-color: #ffebec;--caution-bg-color: #4b1113;--detail-bg-color: #333;--detail-text-color: #a8a8a8}.hint-container{position:relative;transition:background var(--vp-ct),border-color var(--vp-ct),color var(--vp-ct)}@media print{.hint-container{page-break-inside:avoid}}.hint-container .hint-container-title{position:relative;font-weight:600;line-height:1.25}.hint-container.important,.hint-container.info,.hint-container.note,.hint-container.tip,.hint-container.warning,.hint-container.caution{margin:1rem 0;padding:.25rem 1rem;border-inline-start-width:.3rem;border-inline-start-style:solid;border-radius:.5rem;color:inherit}@media (max-width: 419px){.hint-container.important,.hint-container.info,.hint-container.note,.hint-container.tip,.hint-container.warning,.hint-container.caution{margin-inline:-.75rem}}.hint-container.important .hint-container-title,.hint-container.info .hint-container-title,.hint-container.note .hint-container-title,.hint-container.tip .hint-container-title,.hint-container.warning .hint-container-title,.hint-container.caution .hint-container-title{padding-inline-start:1.75rem}@media print{.hint-container.important .hint-container-title,.hint-container.info .hint-container-title,.hint-container.note .hint-container-title,.hint-container.tip .hint-container-title,.hint-container.warning .hint-container-title,.hint-container.caution .hint-container-title{padding-inline-start:0}}.hint-container.important .hint-container-title:before,.hint-container.info .hint-container-title:before,.hint-container.note .hint-container-title:before,.hint-container.tip .hint-container-title:before,.hint-container.warning .hint-container-title:before,.hint-container.caution .hint-container-title:before{content:" ";position:absolute;top:calc(50% - .6125em);inset-inline-start:0;width:1.25em;height:1.25em;background-position:left;background-repeat:no-repeat}@media print{.hint-container.important .hint-container-title:before,.hint-container.info .hint-container-title:before,.hint-container.note .hint-container-title:before,.hint-container.tip .hint-container-title:before,.hint-container.warning .hint-container-title:before,.hint-container.caution .hint-container-title:before{display:none}}.hint-container.important p,.hint-container.info p,.hint-container.note p,.hint-container.tip p,.hint-container.warning p,.hint-container.caution p{line-height:1.5}.hint-container.important a,.hint-container.info a,.hint-container.note a,.hint-container.tip a,.hint-container.warning a,.hint-container.caution a{color:var(--vp-tc)}.hint-container.important{border-color:var(--important-border-color);background:var(--important-bg-color)}.hint-container.important>.hint-container-title{color:var(--important-title-color)}.hint-container.important>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Cpath d='M512 981.333a84.992 84.992 0 0 1-84.907-84.906h169.814A84.992 84.992 0 0 1 512 981.333zm384-128H128v-42.666l85.333-85.334v-256A298.325 298.325 0 0 1 448 177.92V128a64 64 0 0 1 128 0v49.92a298.325 298.325 0 0 1 234.667 291.413v256L896 810.667v42.666zm-426.667-256v85.334h85.334v-85.334h-85.334zm0-256V512h85.334V341.333h-85.334z' fill='%23a371f7'/%3E%3C/svg%3E")}.hint-container.important code{background:var(--important-code-bg-color)}.hint-container.info{border-color:var(--info-border-color);background:var(--info-bg-color)}.hint-container.info>.hint-container-title{color:var(--info-title-color)}.hint-container.info>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-11v6h2v-6h-2zm0-4v2h2V7h-2z' fill='%234cb3d4'/%3E%3C/svg%3E")}.hint-container.info code{background:var(--info-code-bg-color)}.hint-container.note{border-color:var(--note-border-color);background:var(--note-bg-color)}.hint-container.note>.hint-container-title{color:var(--note-title-color)}.hint-container.note>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-11v6h2v-6h-2zm0-4v2h2V7h-2z' fill='%23ccc'/%3E%3C/svg%3E")}.hint-container.note code{background:var(--note-code-bg-color)}.hint-container.tip{border-color:var(--tip-border-color);background:var(--tip-bg-color)}.hint-container.tip>.hint-container-title{color:var(--tip-title-color)}.hint-container.tip>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23009400' d='M7.941 18c-.297-1.273-1.637-2.314-2.187-3a8 8 0 1 1 12.49.002c-.55.685-1.888 1.726-2.185 2.998H7.94zM16 20v1a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-1h8zm-3-9.995V6l-4.5 6.005H11v4l4.5-6H13z'/%3E%3C/svg%3E")}.hint-container.tip code{background:var(--tip-code-bg-color)}.hint-container.warning{border-color:var(--warning-border-color);background:var(--warning-bg-color)}.hint-container.warning>.hint-container-title{color:var(--warning-title-color)}.hint-container.warning>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Cpath d='M576.286 752.57v-95.425q0-7.031-4.771-11.802t-11.3-4.772h-96.43q-6.528 0-11.3 4.772t-4.77 11.802v95.424q0 7.031 4.77 11.803t11.3 4.77h96.43q6.528 0 11.3-4.77t4.77-11.803zm-1.005-187.836 9.04-230.524q0-6.027-5.022-9.543-6.529-5.524-12.053-5.524H456.754q-5.524 0-12.053 5.524-5.022 3.516-5.022 10.547l8.538 229.52q0 5.023 5.022 8.287t12.053 3.265h92.913q7.032 0 11.803-3.265t5.273-8.287zM568.25 95.65l385.714 707.142q17.578 31.641-1.004 63.282-8.538 14.564-23.354 23.102t-31.892 8.538H126.286q-17.076 0-31.892-8.538T71.04 866.074q-18.582-31.641-1.004-63.282L455.75 95.65q8.538-15.57 23.605-24.61T512 62t32.645 9.04 23.605 24.61z' fill='%23e6a700'/%3E%3C/svg%3E")}.hint-container.warning code{background:var(--warning-code-bg-color)}.hint-container.caution{border-color:var(--caution-border-color);background:var(--caution-bg-color)}.hint-container.caution>.hint-container-title{color:var(--caution-title-color)}.hint-container.caution>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2c5.523 0 10 4.477 10 10v3.764a2 2 0 0 1-1.106 1.789L18 19v1a3 3 0 0 1-2.824 2.995L14.95 23a2.5 2.5 0 0 0 .044-.33L15 22.5V22a2 2 0 0 0-1.85-1.995L13 20h-2a2 2 0 0 0-1.995 1.85L9 22v.5c0 .171.017.339.05.5H9a3 3 0 0 1-3-3v-1l-2.894-1.447A2 2 0 0 1 2 15.763V12C2 6.477 6.477 2 12 2zm-4 9a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm8 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4z' fill='%23e13238'/%3E%3C/svg%3E")}.hint-container.caution code{background:var(--caution-code-bg-color)}.hint-container.details{position:relative;display:block;margin:1rem 0;padding:1.5rem;border-radius:.5rem;background:var(--detail-bg-color);color:var(--detail-text-color);transition:background var(--vp-tt),color var(--vp-tt)}@media (max-width: 419px){.hint-container.details{margin-inline:-.75rem}}.hint-container.details h4{margin-top:0}.hint-container.details figure:last-child,.hint-container.details p:last-child{margin-bottom:0;padding-bottom:0}.hint-container.details a{color:var(--vp-tc)}.hint-container.details code{background:var(--detail-code-bg-color)}.hint-container.details summary{position:relative;margin:-1.5rem;padding-block:1.5rem;padding-inline:4rem 1.5rem;list-style:none;cursor:pointer}.hint-container.details summary::-webkit-details-marker{display:none}.hint-container.details summary::marker{color:transparent;font-size:0}.hint-container.details summary:before,.hint-container.details summary:after{content:" ";position:absolute;top:calc(50% - .75rem);inset-inline-start:1.5rem;width:1.5rem;height:1.5rem}.hint-container.details summary:before{border-radius:50%;background:#ccc;transition:background var(--vp-ct),transform var(--vp-tt)}html[data-theme=dark] .hint-container.details summary:before{background:#555}.hint-container.details summary:after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");line-height:normal;transition:transform var(--vp-tt);transform:rotate(90deg)}html[data-theme=dark] .hint-container.details summary:after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.hint-container.details[open]>summary{margin-bottom:.5em}.hint-container.details[open]>summary:after{transform:rotate(180deg)}html[data-theme=light] figure:has(img[data-mode=darkmode-only]),html[data-theme=light] img[data-mode=darkmode-only]{display:none!important}html[data-theme=dark] figure:has(img[data-mode=lightmode-only]),html[data-theme=dark] img[data-mode=lightmode-only]{display:none!important}.task-list-container{padding-inline-start:0;list-style-position:inside}.task-list-container .task-list-container{padding-inline-start:1.5em}.task-list-item{list-style:none}.task-list-item-checkbox{position:relative;cursor:pointer}.task-list-item-checkbox:after{content:" ";position:absolute;top:0;display:inline-block;box-sizing:border-box;width:1em;height:1em;padding-inline-start:0;border:1px solid #ddd;border-radius:2px;background:#fff;text-align:center;visibility:visible;transition:background var(--vp-ct),border-color var(--vp-ct)}@media print{.task-list-item-checkbox:after{border-color:var(--vp-c)}}html[data-theme=dark] .task-list-item-checkbox:after{border-color:#666;background:#333}.task-list-item-checkbox:checked:after{content:"";border-color:var(--vp-tc);background:var(--vp-tc)}@media print{.task-list-item-checkbox:checked:after{border-color:var(--vp-c);background:transparent}}html[data-theme=dark] .task-list-item-checkbox:checked:after{border-color:var(--vp-tc);background:var(--vp-tc)}.task-list-item-checkbox:checked:before{content:"";position:absolute;top:.1em;inset-inline-start:.4em;z-index:1;width:.2em;height:.5em;border:solid var(--white);border-width:0 .15em .15em 0;transform:rotate(45deg)}@media print{.task-list-item-checkbox:checked:before{border-color:var(--vp-c)}}/*! PhotoSwipe main CSS by Dmytro Semenov | photoswipe.com */.pswp{--pswp-bg: #000;--pswp-placeholder-bg: #222;--pswp-root-z-index: 100000;--pswp-preloader-color: rgba(79, 79, 79, .4);--pswp-preloader-color-secondary: rgba(255, 255, 255, .9);--pswp-icon-color: #fff;--pswp-icon-color-secondary: #4f4f4f;--pswp-icon-stroke-color: #4f4f4f;--pswp-icon-stroke-width: 2px;--pswp-error-text-color: var(--pswp-icon-color)}.pswp{position:fixed;top:0;left:0;width:100%;height:100%;z-index:var(--pswp-root-z-index);display:none;touch-action:none;outline:0;opacity:.003;contain:layout style size;-webkit-tap-highlight-color:rgba(0,0,0,0)}.pswp:focus{outline:0}.pswp *{box-sizing:border-box}.pswp img{max-width:none}.pswp--open{display:block}.pswp,.pswp__bg{transform:translateZ(0);will-change:opacity}.pswp__bg{opacity:.005;background:var(--pswp-bg)}.pswp,.pswp__scroll-wrap{overflow:hidden}.pswp__scroll-wrap,.pswp__bg,.pswp__container,.pswp__item,.pswp__content,.pswp__img,.pswp__zoom-wrap{position:absolute;top:0;left:0;width:100%;height:100%}.pswp__img,.pswp__zoom-wrap{width:auto;height:auto}.pswp--click-to-zoom.pswp--zoom-allowed .pswp__img{cursor:zoom-in}.pswp--click-to-zoom.pswp--zoomed-in .pswp__img{cursor:move;cursor:grab}.pswp--click-to-zoom.pswp--zoomed-in .pswp__img:active{cursor:grabbing}.pswp--no-mouse-drag.pswp--zoomed-in .pswp__img,.pswp--no-mouse-drag.pswp--zoomed-in .pswp__img:active,.pswp__img{cursor:zoom-out}.pswp__container,.pswp__img,.pswp__button,.pswp__counter{-webkit-user-select:none;-moz-user-select:none;user-select:none}.pswp__item{z-index:1;overflow:hidden}.pswp__hidden{display:none!important}.pswp__content{pointer-events:none}.pswp__content>*{pointer-events:auto}.pswp__error-msg-container{display:grid}.pswp__error-msg{margin:auto;font-size:1em;line-height:1;color:var(--pswp-error-text-color)}.pswp .pswp__hide-on-close{opacity:.005;will-change:opacity;transition:opacity var(--pswp-transition-duration) cubic-bezier(.4,0,.22,1);z-index:10;pointer-events:none}.pswp--ui-visible .pswp__hide-on-close{opacity:1;pointer-events:auto}.pswp__button{position:relative;display:block;width:50px;height:60px;padding:0;margin:0;overflow:hidden;cursor:pointer;background:none;border:0;box-shadow:none;opacity:.85;-webkit-appearance:none;-webkit-touch-callout:none}.pswp__button:hover,.pswp__button:active,.pswp__button:focus{transition:none;padding:0;background:none;border:0;box-shadow:none;opacity:1}.pswp__button:disabled{opacity:.3;cursor:auto}.pswp__icn{fill:var(--pswp-icon-color);color:var(--pswp-icon-color-secondary)}.pswp__icn{position:absolute;top:14px;left:9px;width:32px;height:32px;overflow:hidden;pointer-events:none}.pswp__icn-shadow{stroke:var(--pswp-icon-stroke-color);stroke-width:var(--pswp-icon-stroke-width);fill:none}.pswp__icn:focus{outline:0}div.pswp__img--placeholder,.pswp__img--with-bg{background:var(--pswp-placeholder-bg)}.pswp__top-bar{position:absolute;left:0;top:0;width:100%;height:60px;display:flex;flex-direction:row;justify-content:flex-end;z-index:10;pointer-events:none!important}.pswp__top-bar>*{pointer-events:auto;will-change:opacity}.pswp__button--close{margin-right:6px}.pswp__button--arrow{position:absolute;width:75px;height:100px;top:50%;margin-top:-50px}.pswp__button--arrow:disabled{display:none;cursor:default}.pswp__button--arrow .pswp__icn{top:50%;margin-top:-30px;width:60px;height:60px;background:none;border-radius:0}.pswp--one-slide .pswp__button--arrow{display:none}.pswp--touch .pswp__button--arrow{visibility:hidden}.pswp--has_mouse .pswp__button--arrow{visibility:visible}.pswp__button--arrow--prev{right:auto;left:0}.pswp__button--arrow--next{right:0}.pswp__button--arrow--next .pswp__icn{left:auto;right:14px;transform:scaleX(-1)}.pswp__button--zoom{display:none}.pswp--zoom-allowed .pswp__button--zoom{display:block}.pswp--zoomed-in .pswp__zoom-icn-bar-v{display:none}.pswp__preloader{position:relative;overflow:hidden;width:50px;height:60px;margin-right:auto}.pswp__preloader .pswp__icn{opacity:0;transition:opacity .2s linear;animation:pswp-clockwise .6s linear infinite}.pswp__preloader--active .pswp__icn{opacity:.85}@keyframes pswp-clockwise{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.pswp__counter{height:30px;margin-top:15px;margin-inline-start:20px;font-size:14px;line-height:30px;color:var(--pswp-icon-color);text-shadow:1px 1px 3px var(--pswp-icon-color-secondary);opacity:.85}.pswp--one-slide .pswp__counter{display:none}.photo-swipe-loading{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}.photo-swipe-bullets-indicator{position:absolute;bottom:30px;left:50%;display:flex;flex-direction:row;align-items:center;transform:translate(-50%)}.photo-swipe-bullet{width:12px;height:6px;margin:0 5px;border-radius:3px;background:#fff;transition:width var(--vp-tt),color var(--vp-ct)}.photo-swipe-bullet.active{width:30px;background:var(--vp-tc)}@keyframes rotate{0%{transform:rotate(0)}50%{transform:rotate(360deg)}to{transform:rotate(360deg)}}.popup-enter-active,.popup-leave-active{transition:opacity .3s,transform .3s}.popup-enter-from,.popup-leave-to{opacity:0;transform:translateY(50%) scale(.5)}.sw-hint-popup,.sw-update-popup{position:fixed;bottom:1rem;inset-inline-end:1rem;z-index:300;padding:.5rem .75rem;border-width:0;border-radius:.5rem;background:var(--vp-bg);color:var(--vp-c);box-shadow:0 2px 12px 0 var(--card-shadow);font-size:1rem;line-height:1.5;cursor:pointer}@media print{.sw-hint-popup,.sw-update-popup{display:none}}.sw-hint-popup .icon-wrapper,.sw-update-popup .icon-wrapper{display:inline-block;vertical-align:middle;width:1.5rem;height:1.5rem;margin-inline-start:.4rem;border-radius:.75rem;background:var(--vp-tc)}.sw-hint-popup .icon-wrapper svg,.sw-update-popup .icon-wrapper svg{width:1.2rem;height:1.2rem;margin:.15rem;color:var(--white, #fff);animation:rotate 3s ease infinite}.search-pro-button{border-width:0;background:transparent;display:inline-flex;align-items:center;box-sizing:content-box;height:1.25rem;margin-inline:1rem 0;margin-top:0;margin-bottom:0;padding:.5rem;border:0;border:1px solid var(--vp-bgl);border-radius:1rem;background:var(--vp-bgl);color:var(--vp-c);font-weight:500;cursor:pointer;transition:background var(--vp-ct),color var(--vp-ct)}@media print{.search-pro-button{display:none}}@media (max-width: 959px){.search-pro-button{border-radius:50%}}.search-pro-button:hover{border:1px solid var(--vp-tc);background-color:var(--vp-bglt);color:var(--vp-clt)}.search-pro-button .search-icon{width:1.25rem;height:1.25rem}.search-pro-placeholder{margin-inline:.25rem;font-size:1rem}@media (max-width: 959px){.search-pro-placeholder{display:none}}.search-pro-key-hints{font-size:.75rem}@media (max-width: 959px){.search-pro-key-hints{display:none}}.search-pro-key{display:inline-block;min-width:1em;margin-inline:.125rem;padding:.25rem;border:1px solid var(--vp-brc);border-radius:4px;box-shadow:1px 1px 4px 0 var(--card-shadow);line-height:1;letter-spacing:-.1em;transition:background var(--vp-ct),color var(--vp-ct),border var(--vp-ct) box-shadow var(--vp-ct)}@keyframes search-pro-fade-in{0%{opacity:.2}to{opacity:1}}.search-pro-modal-wrapper{position:fixed;top:0;right:0;bottom:0;left:0;z-index:997;display:flex;align-items:center;justify-content:center;overflow:auto;cursor:default}.search-pro-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:998;animation:.25s search-pro-fade-in;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.search-pro-modal{position:absolute;z-index:999;display:flex;flex-direction:column;width:calc(100% - 6rem);max-width:50em;border-radius:10px;background:var(--vp-bg);box-shadow:2px 2px 10px 0 var(--card-shadow);transition:background var(--vp-ct);animation:.15s pwa-opened}@media (max-width: 1280px){.search-pro-modal{animation:.25s pwa-mobile}}@media (max-width: 719px){.search-pro-modal{width:100vw;max-width:unset;height:100vh}}.search-pro-box{display:flex;margin:1rem}.search-pro-box form{position:relative;display:flex;flex:1}.search-pro-box label{position:absolute;top:calc(50% - .75rem);inset-inline-start:.5rem;color:var(--vp-tc)}.search-pro-box label .search-icon{width:1.5rem;height:1.5rem}.search-pro-clear-button{border-width:0;background:transparent;cursor:pointer;position:absolute;top:calc(50% - 10px);inset-inline-end:.75rem;padding:0;color:var(--vp-tc)}.search-pro-clear-button:hover{border-radius:50%;background-color:#0000001a}.search-pro-close-button{border-width:0;background:transparent;cursor:pointer;display:none;margin-inline:.5rem -.5rem;padding:.5rem;color:var(--grey3);font-size:1rem}@media (max-width: 719px){.search-pro-close-button{display:block}}.search-pro-input{flex:1;width:0;margin:0;padding-block:.25rem;padding-inline:2.5rem 2rem;border:0;border:2px solid var(--vp-tc);border-radius:8px;background:var(--vp-bg);color:var(--vp-c);outline:none;font-size:1.25rem;line-height:2.5;-webkit-appearance:none;-moz-appearance:none;appearance:none}.search-pro-input::-webkit-search-cancel-button{display:none}.search-pro-suggestions{position:absolute;inset:calc(100% + 4px) 0 auto;z-index:20;overflow:visible;overflow-y:auto;max-height:50vh;margin:0;padding:0;border-radius:.5rem;background-color:var(--vp-bg);box-shadow:2px 2px 10px 0 var(--card-shadow);list-style:none;line-height:1.5}.search-pro-suggestion{padding:.25rem 1rem;border-top:1px solid var(--vp-brc);cursor:pointer}.search-pro-suggestion:first-child{border-top:none}.search-pro-suggestion.active,.search-pro-suggestion:hover{background-color:var(--vp-bglt)}.search-pro-auto-complete{display:none;float:right;margin:0 .5rem;padding:4px;border:1px solid var(--vp-brc);border-radius:4px;box-shadow:1px 1px 4px 0 var(--card-shadow);font-size:12px;line-height:1}.search-pro-suggestion.active .search-pro-auto-complete{display:block}.search-pro-result-wrapper{flex-grow:1;overflow-y:auto;min-height:40vh;max-height:calc(80vh - 10rem);padding:0 1rem}@media (max-width: 719px){.search-pro-result-wrapper{min-height:unset;max-height:unset}}.search-pro-result-wrapper.loading,.search-pro-result-wrapper.empty{display:flex;align-items:center;justify-content:center;padding:1.5rem;font-weight:600;font-size:22px;text-align:center}.search-pro-hints{margin-top:1rem;padding:.75rem .5rem;box-shadow:0 -1px 4px 0 var(--card-shadow);line-height:1}.search-pro-hint{display:inline-flex;align-items:center;margin:0 .5rem}.search-pro-hint kbd{margin:0 .5rem;padding:2px;border:1px solid var(--vp-brc);border-radius:4px;box-shadow:1px 1px 4px 0 var(--card-shadow)}.search-pro-hint kbd+kbd{margin-inline-start:-.25rem}.search-pro-hint svg{display:block;width:15px;height:15px}:root{--navbar-bg-color: var(--bg-color-float-blur);--sidebar-bg-color: var(--bg-color-blur)}html[data-theme=dark]{--navbar-bg-color: var(--bg-color-blur);--sidebar-bg-color: var(--bg-color-blur)}#app{--code-hl-bg-color: var(--code-highlight-line-color);--code-ln-color: var(--code-line-color);--code-ln-wrapper-width: var(--line-numbers-width);--code-tabs-nav-text-color: var(--code-color);--code-tabs-nav-bg-color: var(--code-border-color);--code-tabs-nav-hover-color: var(--code-highlight-line-color);--sidebar-space: var(--sidebar-width)}@media (max-width: 959px){#app{--navbar-height: var(--navbar-mobile-height);--navbar-vertical-padding: var(--navbar-mobile-vertical-padding);--navbar-horizontal-padding: var(--navbar-mobile-horizontal-padding);--sidebar-width: var(--sidebar-mobile-width)}}@media (min-width: 1440px){#app{--sidebar-space: clamp( var(--sidebar-width), max(0px, calc((100vw - var(--content-width)) / 2 - 2rem)) , 100vw )}}.DocSearch-Button,.DocSearch{--docsearch-primary-color: var(--vp-tc);--docsearch-text-color: var(--vp-c);--docsearch-highlight-color: var(--vp-tc);--docsearch-muted-color: var(--light-grey);--docsearch-container-background: rgb(9 10 17 / 80%);--docsearch-modal-background: var(--bg-color-float);--docsearch-searchbox-background: var(--bg-color-secondary);--docsearch-searchbox-focus-background: var(--vp-bg);--docsearch-searchbox-shadow: inset 0 0 0 2px var(--vp-tc);--docsearch-hit-color: var(--vp-cl);--docsearch-hit-active-color: var(--vp-bg);--docsearch-hit-background: var(--vp-bg);--docsearch-hit-shadow: 0 1px 3px 0 var(--border-color);--docsearch-footer-background: var(--vp-bg)}html[data-theme=dark] .DocSearch-Button,html[data-theme=dark] .DocSearch{--docsearch-logo-color: var(--vp-c);--docsearch-modal-shadow: inset 1px 1px 0 0 #2c2e40, 0 3px 8px 0 #000309;--docsearch-key-shadow: inset 0 -2px 0 0 #282d55, inset 0 0 1px 1px #51577d, 0 2px 2px 0 rgb(3 4 9 / 30%);--docsearch-key-gradient: linear-gradient(-225deg, #444950, #1c1e21);--docsearch-footer-shadow: inset 0 1px 0 0 rgb(73 76 106 / 50%), 0 -4px 8px 0 rgb(0 0 0 / 20%)}#nprogress{--nprogress-color: var(--vp-tc)}.search-box{--search-bg-color: var(--vp-bg);--search-accent-color: var(--vp-tc);--search-text-color: var(--vp-c);--search-border-color: var(--border-color);--search-item-text-color: var(--vp-clt);--search-item-focus-bg-color: var(--bg-color-secondary)}.external-link-icon{--external-link-icon-color: var(--light-grey)}html,body{margin:0;padding:0;background:#fff}html{font-size:16px;font-display:optional;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent}@media print{html{font-size:12pt}}body{min-height:100vh;color:#2c3e50}a{color:#3eaf7c;font-weight:500;text-decoration:none;overflow-wrap:break-word}kbd{display:inline-block;min-width:1em;margin-inline:.125rem;padding:.25em;border:1px solid #eee;border-radius:.25em;box-shadow:1px 1px 4px #00000026;line-height:1;letter-spacing:-.1em;text-align:center}code{margin:0;padding:.2rem .4rem;border-radius:5px;background:#7f7f7f1f;font-size:.85em;overflow-wrap:break-word}table code{padding:.1rem .4rem}p a code{color:#3eaf7c;font-weight:400}strong{font-weight:600}h1,h2,h3,h4,h5,h6{font-weight:500;line-height:1.25;overflow-wrap:break-word}h1:hover .header-anchor,h2:hover .header-anchor,h3:hover .header-anchor,h4:hover .header-anchor,h5:hover .header-anchor,h6:hover .header-anchor{opacity:1}h1{font-size:2rem}h2{padding-bottom:.3rem;border-bottom:1px solid #eaecef;font-size:1.65rem}h3{font-size:1.35rem}h4{font-size:1.15rem}h5{font-size:1.05rem}h6{font-size:1rem}a.header-anchor{float:left;margin-top:.125em;margin-inline-start:-.87em;padding-inline-end:.23em;font-size:.85em;opacity:0;transition:opacity .2s}@media print{a.header-anchor{display:none!important}}a.header-anchor:hover{text-decoration:none}a.header-anchor:focus-visible{opacity:1}p,ul,ol{line-height:1.6;overflow-wrap:break-word}@media print{p,ul,ol{line-height:1.5}}ul,ol{padding-inline-start:1.2em}blockquote{margin:1rem 0;padding:.25rem 0 .25rem 1rem;border-inline-start:.2rem solid #ddd;color:#666;font-size:1rem;overflow-wrap:break-word}blockquote>p{margin:0}hr{border:0;border-top:1px solid #eaecef}table{display:block;overflow-x:auto;margin:1rem 0;border-collapse:collapse}tr:nth-child(2n){background:#f6f8fa}th,td{padding:.6em 1em;border:1px solid #dfe2e5}pre{direction:ltr}@page{margin:2cm;font-size:12pt;size:a4}@media print{*,:after,:before{box-shadow:none!important;text-shadow:none!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}a{color:inherit;font-weight:inherit!important;font-size:inherit!important;text-decoration:underline}a[href^="http://"]:after,a[href^="https://"]:after{content:" (" attr(href) ") "}abbr[title]:after{content:" (" attr(title) ")"}pre{border:1px solid #eee;white-space:pre-wrap!important}pre>code{white-space:pre-wrap!important}blockquote{border-inline-start:.2rem solid #ddd;color:inherit}blockquote,pre{orphans:5;widows:5}img,tr,canvas{page-break-inside:avoid}}@font-face{font-weight:400;font-style:normal;font-family:Crimson;src:url(data:font/truetype;charset=utf-8;base64,AAEAAAANAIAAAwBQRkZUTYr5mwEAAAyMAAAAHEdERUYAKQATAAAMbAAAAB5PUy8yVsJ0MgAAAVgAAABgY21hcBiKDzgAAAHcAAABWGdhc3D//wADAAAMZAAAAAhnbHlmr+DBdQAAA1AAAAdsaGVhZBZwt+8AAADcAAAANmhoZWEFawEuAAABFAAAACRobXR4BksA9gAAAbgAAAAibG9jYQlsC24AAAM0AAAAHG1heHAAEQBZAAABOAAAACBuYW1lLaFDVAAACrwAAAFrcG9zdAC1AHoAAAwoAAAAPAABAAAAAQAAqBd2H18PPPUACwQAAAAAANqqufwAAAAA2qq5/AAb/9wB4QMeAAAACAACAAAAAAAAAAEAAAMs/ywAXAH9AAAAAAHhAAEAAAAAAAAAAAAAAAAAAAAEAAEAAAANAFkAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAH1AZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAIABgMAAAAAAAAAAAABEAAAAAAAAAAAAAAAUGZFZADAADAAOQMs/ywAXAMsANQAAAABAAAAAAMYAAAAAAAgAAEBpwAfAAAAAAFVAAAB/QAfAH0ALQA+ABsAPgAyACgAPgAxAAAAAAADAAAAAwAAABwAAQAAAAAAUgADAAEAAAAcAAQANgAAAAQABAABAAAAOf//AAAAL///AAAAAQAEAAAAAAADAAQABQAGAAcACAAJAAoACwAMAAABBgAAAQAAAAAAAAABAgAAAAIAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAwQFBgcICQoLDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYAJgAmAGIAwAEeAZIBzgJAApYC2gNiA7YAAQAf/9wBhwMeABIAAAEGBwYHATAXFjM2NzY3ASYnJjcBgxwLCgH+zgMECxIKCgIBLgEDAwMDHhQFBgP85wMEAQgJBgMOAwMDEwAAAAIAH//9Ad0CkAAQACEAABMWFxYXNjc2NzQnJicGBwYHNyY3NjcWFxYXFAcGByYnJjcfATo6amo7OQE5OmxrOjkBXQIlJEE5IyIBIyJEOSQjAgFOkV5eBAReXoqJXl4EBF5eggJ0UlEDA09Qe3xVVgMDU1OEAAAAAAEAff/9AYACkQA+AAA3FAcGBwYHBiMGFQYXNjc2MzIXFhc2JzQnIicmJyY1JjURNjc2MSYnJicjBgcGBwYVFBUUFxYXNjc2NzIXFhXkAQEEBRgYDAMBBB4ZGhweGxofBAEDDBgZBQQBAQMEAQIDBAIFNTZCAgMDBA0XFw0LBQV3GBMVDAgEBAUKCgUCAQICAQIFCgoFBAQIDBUTGAGnLxkbBAYFAQIZGh4BAgECBQUEAwUHBwEICRYAAAAAAQAtAAAB0QKRADoAADcGFxYXITY3NjcmJyYjIgcGBwYHBisBNjc2NzY3NjUmJyYnBgcGBxQXFhc2NzY3FhcWFxYHBgcGBwYHLgEEAwMBYwURERADBwYFBAMDAg8VEx/LJkBAOhsQDwIxMkxSMjIHCAYGCSYmPTIfHwEBCgoeLkJBQg8EBQQCETAwKQICAgEBBCgUEylJSUYhJicsRDIzAgY1NRoEBQYBEyEhAwEjIjYlJCQtQlBQSAAAAAABAD7/+wG+ApEASgAANwYXFhcWFxYzNjc2NyYnJic2NzY3JicmIwYHBgcUFxYXNjc2NxYXFhcGBwYHBgcUFRQXNjc2NxYXFhcGBwYnIicmJyYnJiciBwYXPwEIBwUaHB0VZU5NBAMvLi8eIB4DAywsKzwrKxgEAwUIHR4wLRscAQMvLz8BAQYKEhEQNSYmAgImJSsWExQPCw0NFREMDQE7DgsLBQwFBgE8PWpMKSoGECQkMkAiIQIdHyUHBwcBCRscAwEbGSpCIyUOAgMCAwwIAwUEAQEoKD9XJSQBBQYODg8PAQ0NFQAAAgAb//oB4QKTACIAJQAANxQXFhchFRQXFjMyNzYjNTM2NzY1NCcmJyMRNCcmIwYHBgcBExEbAgMFASEJCRIdCAkBRgIBAQUEBTwFAwgHCQkG/vjmxgUGBgOwBQIBAwKzAgQDCBAMDQEBlAYGBgEICQf+cwEs/tQAAQA+//sBvgKTAEoAADcGFxYXFhcWMzY3NjcmJyYnIgcGBzY3NjczMjc2NzY3NjU0JyYnBgcGByMGBwYHFBcWMzY3NjMWFxYHBgcGJyInJicmJyYnIgcGFz8BCAcFGhwdFWVOTQQBMjJbFx8gFwoJCQlWKB0dFQ4JCAQDBQMdHSKXCREQEgMCBA4bGhNYJyUBAiYlKxYTFA8LDQ0VEQwNATsOCwsFDAUGATw9akU2NwMFBggrMC8uAgICExcZBgQCAgMBAwQBMVNUWAUFBAYFBAMxMTNZIyQBBQYODg8PAQ0NFQAAAgAy//oBzQKXACAAMwAANxQXFhc2NzY3NicmJyIHBgc2NzY3NCcmJwYHBgcGBwYXNyY3Njc2FxYXFgcGBwYHJicmNzM1NV5aOTsCAioqahoiIRsnWFhFAwIHQ0tMOTAZGQFbBAQaGxkXRB8fAQEfIDE9Hh4E511FRwQDPT1ZPEJBBQwLF4Y9PRMGCwwBEiwsPDZFRkkTHyAbCAcBAjAwREYsLQEFREVQAAAAAAEAKP/7AdUCiwApAAATFhcWMzI3Njc2NzYzIQYHBgcWFxYzMjcBNjc2NzQnJiMiBwYjIQYHBgcoAwYHAwYDAwELEBEdAQUJYWJXAQ8PDgcDAQ4LCQgBAQEEBhUVFv7JBgsNDAH6DQMCAQEFKRITFMjHjQcFBgMCPxYSEwoEAgMBAhkrKiAAAAADAD7/9wG/ApIAKABBAFgAADcGFxYXNjc2NyYnJicmJzQ3Njc2NyYnJiMGBwYHFhcWFxYVFAcGBwYHNyY3Njc2MzIzMhcyFxYXFhcGBwYHIicmNxMmNzY3FhcWFRQHBgcGByIjIicmJyY3PwE1M1ZQODgDAykpMQIBAyYlJQMCMC9HRjExAgIiIiMCAiMvLwNTBBQTKgEBAQECAQIBEjU1CAEdHjMrISICGAMYGSYvGxoTEx8CAQIBBAMfJCQBoU8tLQECMjFPOC4uGwIBAgEWJiU7SCYoAjEwQzopKhMBAgECEykpQAQsIiEbAQEBBywsQjUeHQEiI0QBZSMhIAECJiYvKh8gFAEBAhAfIEYAAAIAMf/6AcsClwAgADMAABMGFxYXMjc2NwYHBgcUFxYXNjc2NzY3NjUmJyYnBgcGBzcmNzY3FhcWFRQHBgcGJyYnJjc0AyopahoiIRsoV1hFAwIHQ0tMODEZGQE2NF5ZOjoBWgMfHzE9Hh4EGhoaF0QeHwUBy0dBQgUMCxeFPj0SBwsLAREsLD01RkVPV0dFBQQ8PU8UPCwtAQVFRUklIRsHCAECMDBPAAAADACWAAEAAAAAAAEABwAQAAEAAAAAAAIABwAoAAEAAAAAAAMABwBAAAEAAAAAAAQABwBYAAEAAAAAAAUAHgCeAAEAAAAAAAYABwDNAAMAAQQJAAEADgAAAAMAAQQJAAIADgAYAAMAAQQJAAMADgAwAAMAAQQJAAQADgBIAAMAAQQJAAUAPABgAAMAAQQJAAYADgC9AEMAcgBpAG0AcwBvAG4AAENyaW1zb24AAEMAcgBpAG0AcwBvAG4AAENyaW1zb24AAEMAcgBpAG0AcwBvAG4AAENyaW1zb24AAEMAcgBpAG0AcwBvAG4AAENyaW1zb24AAFYAZQByAHMAaQBvAG4AIAAxAC4AMAA7ACAARgBvAG4AdABFAGQAaQB0AG8AcgAgACgAdgAxAC4AMAApAABWZXJzaW9uIDEuMDsgRm9udEVkaXRvciAodjEuMCkAAEMAcgBpAG0AcwBvAG4AAENyaW1zb24AAAACAAAAAAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAABAAIAEwAUABUAFgAXABgAGQAaABsAHAAAAAH//wACAAEAAAAMAAAAFgAAAAIAAQADAAwAAQAEAAAAAgAAAAAAAAABAAAAANWkJwgAAAAA2qq5/AAAAADaqrn8) format("truetype")}html,body{background:var(--bg-color);transition:background var(--color-transition)}:root{color-scheme:light}html[data-theme=dark]{color-scheme:dark}body{color:var(--text-color);font-family:var(--font-family)}@media (min-width: 1440px){body{font-size:17px}}a{color:var(--theme-color)}kbd{border-color:var(--border-color-dark);background:var(--bg-color-secondary);font-family:var(--font-family-mono)}code{font-family:var(--font-family-mono);transition:background var(--color-transition),color var(--color-transition)}html[data-theme=dark] code{background:#333}p a code{color:var(--theme-color)}blockquote{border-color:#eee;color:#666;transition:border-color var(--color-transition),color var(--color-transition)}html[data-theme=dark] blockquote{border-color:#333}h1,h2,h3,h4,h5,h6{font-family:var(--font-family-heading)}@media (max-width: 419px){h1{font-size:1.9rem}}h2{border-color:var(--border-color);transition:border-bottom-color var(--color-transition)}hr{border-color:var(--border-color);transition:border-top-color var(--color-transition)}tr:nth-child(2n){background:var(--bg-color-secondary)}th,td{border-color:var(--border-color-dark)}@media print{@page{--text-color: #000 !important;--bg-color: #fff !important}div[class*=language-]{position:relative!important}}.theme-hope-content:not(.custom)>*:first-child{margin-top:0}.vp-breadcrumb{max-width:var(--content-width, 740px);margin-inline:auto;padding-inline:2.5rem;position:relative;z-index:2;padding-top:1rem;font-size:15px}@media (max-width: 959px){.vp-breadcrumb{padding-inline:1.5rem}}@media print{.vp-breadcrumb{max-width:unset}}@media (max-width: 959px){.vp-breadcrumb{font-size:14px}}@media (max-width: 419px){.vp-breadcrumb{padding-top:.5rem;font-size:12.8px}}@media print{.vp-breadcrumb{display:none}}.vp-breadcrumb .icon{margin-inline-end:.25em;font-size:1em}.vp-breadcrumb img.icon{vertical-align:-.125em;height:1em}.vp-breadcrumb a{display:inline-block;padding:0 .5em}.vp-breadcrumb a:before{position:relative;bottom:.125rem;margin-inline-end:.25em}.vp-breadcrumb a:hover{color:var(--theme-color)}.vp-breadcrumb ol{margin:0;padding-inline-start:0;list-style:none}.vp-breadcrumb li{display:inline-block;line-height:1.5}.vp-breadcrumb li:first-child a{padding-inline-start:0}.vp-breadcrumb li:last-child a{padding-inline-end:0}.vp-breadcrumb li.is-active a{color:var(--light-grey);cursor:default;pointer-events:none}.vp-breadcrumb li+li:before{content:"/";color:var(--light-grey)}.toggle-sidebar-wrapper{position:fixed;top:var(--navbar-height);bottom:0;inset-inline-start:var(--sidebar-space);z-index:100;display:flex;align-items:center;justify-content:center;font-size:2rem;transition:inset-inline-start var(--transform-transition)}@media (max-width: 719px){.toggle-sidebar-wrapper{display:none}}@media (min-width: 1440px){.toggle-sidebar-wrapper{display:none}}.toggle-sidebar-wrapper:hover{background:#7f7f7f0d;cursor:pointer}.toggle-sidebar-wrapper .arrow{display:inline-block;vertical-align:middle;width:1em;height:1em;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");background-position:center;background-repeat:no-repeat;line-height:normal;transition:all .3s}html[data-theme=dark] .toggle-sidebar-wrapper .arrow{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.toggle-sidebar-wrapper .arrow.down{transform:rotate(180deg)}html[dir=rtl] .toggle-sidebar-wrapper .arrow.down{transform:rotate(-180deg)}.toggle-sidebar-wrapper .arrow.end{transform:rotate(90deg)}html[dir=rtl] .toggle-sidebar-wrapper .arrow.end,.toggle-sidebar-wrapper .arrow.start{transform:rotate(-90deg)}html[dir=rtl] .toggle-sidebar-wrapper .arrow.start{transform:rotate(90deg)}.theme-container{display:flex;flex-direction:column;justify-content:space-between;min-height:100vh}.theme-container .vp-page{padding-top:var(--navbar-height);padding-inline-start:calc(var(--sidebar-space) + 2rem)}@media (max-width: 719px){.theme-container .vp-page{padding-inline:0}}@media (min-width: 1440px){.theme-container .vp-page{padding-inline-end:calc(100vw - var(--content-width) - var(--sidebar-space) - 6rem)}}.theme-container .vp-sidebar{top:var(--navbar-height)}.theme-container.no-navbar .vp-page{padding-top:0}.theme-container.no-navbar .vp-sidebar{top:0}@media (max-width: 719px){.theme-container.no-navbar .vp-sidebar{top:0}}@media (max-width: 719px){.theme-container.hide-navbar .vp-sidebar{top:0}}.theme-container.sidebar-collapsed .vp-page{padding-inline-start:0}.theme-container.sidebar-collapsed .vp-sidebar{box-shadow:none;transform:translate(-100%)}html[dir=rtl] .theme-container.sidebar-collapsed .vp-sidebar{transform:translate(100%)}.theme-container.sidebar-collapsed .toggle-sidebar-wrapper{inset-inline-start:0}.theme-container.no-sidebar .vp-page{padding-inline:0}@media (min-width: 1440px){.theme-container.no-sidebar.has-toc .vp-page{padding-inline-end:16rem}}.theme-container.no-sidebar .vp-toggle-sidebar-button,.theme-container.no-sidebar .toggle-sidebar-wrapper,.theme-container.no-sidebar .vp-sidebar{display:none}.theme-container.sidebar-open .vp-sidebar{box-shadow:2px 0 8px var(--card-shadow);transform:translate(0)}.fade-slide-y-enter-active{transition:all .3s ease!important}.fade-slide-y-leave-active{transition:all .3s cubic-bezier(1,.5,.8,1)!important}.fade-slide-y-enter-from,.fade-slide-y-leave-to{opacity:0;transform:translateY(10px)}.vp-feature-wrapper{position:relative}.vp-feature-bg{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;background-attachment:fixed;background-position:50%;background-size:cover}.vp-feature-bg.light{display:inline-block}.vp-feature-bg.dark,html[data-theme=dark] .vp-feature-bg.light{display:none}html[data-theme=dark] .vp-feature-bg.dark{display:inline-block}.vp-feature{position:relative;z-index:1;margin:0 auto;padding:1.5rem 1rem;color:var(--text-color-lighter);text-align:center}.vp-feature-bg+.vp-feature{color:#222}html[data-theme=dark] .vp-feature-bg+.vp-feature{color:#eee}.vp-feature-bg+.vp-feature .icon{color:inherit}.vp-feature-image{height:10rem;margin:0 auto}@media (max-width: 959px){.vp-feature-image{height:8rem}}.vp-feature-image.light{display:inline-block}.vp-feature-image.dark,html[data-theme=dark] .vp-feature-image.light{display:none}html[data-theme=dark] .vp-feature-image.dark{display:inline-block}.vp-feature-header{margin-bottom:1.5rem;border-bottom:none;font-size:3rem;font-family:var(--font-family);text-align:center}@media (max-width: 959px){.vp-feature-header{font-size:2.5rem}}@media (max-width: 719px){.vp-feature-header{font-size:2.25rem}}@media (max-width: 419px){.vp-feature-header{font-size:2rem}}.vp-feature-description{font-size:1.125rem}.vp-features{z-index:1;display:flex;flex-wrap:wrap;align-items:stretch;place-content:stretch center;margin:1rem 0;text-align:start}@media print{.vp-features{display:block}}.vp-features:first-child{border-top:1px solid var(--border-color);transition:border-color var(--color-transition)}.vp-feature-item{position:relative;display:block;flex-basis:calc(33% - 3rem);margin:.5rem;padding:1rem;border-radius:.5rem;color:inherit;transition:background var(--color-transition),box-shadow var(--color-transition),transform var(--transform-transition)}@media (min-width: 1440px){.vp-feature-item{flex-basis:calc(25% - 3rem)}}@media (max-width: 959px){.vp-feature-item{flex-basis:calc(50% - 3rem)}}@media (max-width: 719px){.vp-feature-item{flex-basis:100%;font-size:.95rem}}@media (max-width: 419px){.vp-feature-item{margin:.5rem 0;font-size:.9rem}}.vp-feature-item.link{cursor:pointer}@media print{.vp-feature-item.link{text-decoration:none}}.vp-feature-item .icon{display:inline-block;height:1.1em;margin-inline-end:.5rem;color:var(--theme-color);font-weight:400;font-size:1.1em}.vp-feature-item:hover{background-color:var(--bg-color-secondary);box-shadow:0 2px 12px 0 var(--card-shadow);transform:translate(-2px,-2px);transform:scale(1.05)}.vp-feature-bg+.vp-feature .vp-feature-item:hover{background-color:transparent}.vp-feature-item:only-child{flex-basis:100%}.vp-feature-item:first-child:nth-last-child(2),.vp-feature-item:nth-child(2):last-child{flex-basis:calc(50% - 3rem)}@media (max-width: 719px){.vp-feature-item:first-child:nth-last-child(2),.vp-feature-item:nth-child(2):last-child{flex-basis:100%}}.vp-feature-title{margin:.25rem 0 .5rem;font-weight:700;font-size:1.3rem;font-family:var(--font-family)}@media (max-width: 419px){.vp-feature-title{font-size:1.2rem}}.vp-feature-details{margin:0;line-height:1.4}.vp-footer-wrapper{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-evenly;padding-block:.75rem;padding-inline:calc(var(--sidebar-space) + 2rem) 2rem;border-top:1px solid var(--border-color);background:var(--bg-color);color:var(--dark-grey);text-align:center;transition:border-top-color var(--color-transition),background var(--color-transition),padding var(--transform-transition)}@media (max-width: 719px){.vp-footer-wrapper{padding-inline-start:2rem}}@media (min-width: 1440px){.vp-footer-wrapper{z-index:50;padding-inline-start:2rem}}@media print{.vp-footer-wrapper{margin:0!important;padding:0!important}}@media (max-width: 419px){.vp-footer-wrapper{display:block}}.no-sidebar .vp-footer-wrapper,.sidebar-collapsed .vp-footer-wrapper{padding-inline-start:2rem}.vp-footer{margin:.5rem 1rem;font-size:14px}@media print{.vp-footer{display:none}}.vp-copyright{margin:6px 0;font-size:13px}.vp-page:not(.not-found)+.vp-footer-wrapper{margin-top:-2rem}.vp-hero-info-wrapper{position:relative;display:flex;align-items:center;justify-content:center;margin-inline:auto}.vp-hero-info-wrapper.fullscreen{height:calc(100vh - var(--navbar-height))!important}.vp-hero-info{z-index:1;width:100%;padding-inline:2.5rem}@media (max-width: 959px){.vp-hero-info{padding-inline:1.5rem}}@media (min-width: 959px){.vp-hero-info{display:flex;align-items:center;justify-content:space-evenly}}.vp-hero-mask{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;background-position:50%;background-size:cover}.vp-hero-mask:after{content:" ";position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:block}.vp-hero-mask.light{display:block}html[data-theme=dark] .vp-hero-mask.light,.vp-hero-mask.dark{display:none}html[data-theme=dark] .vp-hero-mask.dark{display:block}.vp-hero-infos{z-index:1;margin:0 .5rem}.vp-hero-image{display:block;max-width:100%;max-height:18rem;margin:1rem}@media (max-width: 959px){.vp-hero-image{margin:2rem auto}}@media (max-width: 719px){.vp-hero-image{max-height:16rem;margin:1.5rem auto}}@media (max-width: 419px){.vp-hero-image{max-height:14rem}}.vp-hero-image.light{display:block}html[data-theme=dark] .vp-hero-image.light,.vp-hero-image.dark{display:none}html[data-theme=dark] .vp-hero-image.dark{display:block}#main-title{margin:.5rem 0;background:linear-gradient(120deg,var(--theme-color-light),var(--theme-color) 30%,#3e71af 100%);-webkit-background-clip:text;background-clip:text;font-weight:700;font-size:3.6rem;font-family:var(--font-family);line-height:1.5;-webkit-text-fill-color:transparent}@media (max-width: 719px){#main-title{margin:0}}@media (max-width: 959px){#main-title{font-size:2.5rem;text-align:center}}@media (max-width: 719px){#main-title{font-size:2.25rem;text-align:center}}@media (max-width: 419px){#main-title{margin:0 auto;font-size:2rem}}#main-description,.vp-hero-actions{margin:1.8rem 0}@media (max-width: 719px){#main-description,.vp-hero-actions{margin:1.5rem 0}}@media (max-width: 959px){#main-description,.vp-hero-actions{margin:1.5rem auto;text-align:center}}@media (max-width: 419px){#main-description,.vp-hero-actions{margin:1.2rem 0}}#main-description{max-width:35rem;color:var(--text-color-light);font-weight:500;font-size:1.6rem;line-height:1.3}@media (max-width: 719px){#main-description{font-size:1.4rem}}@media (max-width: 419px){#main-description{font-size:1.2rem}}.vp-hero-action{display:inline-block;overflow:hidden;min-width:4rem;margin:.5rem;padding:.5em 1.5rem;border-radius:2rem;background:var(--bg-color-secondary);color:var(--text-color);font-size:1.2rem;text-align:center;transition:color var(--color-transition),color var(--color-transition),transform var(--transform-transition)}@media (max-width: 719px){.vp-hero-action{padding:.5rem 1rem;font-size:1.1rem}}@media (max-width: 419px){.vp-hero-action{font-size:1rem}}@media print{.vp-hero-action{text-decoration:none}}.vp-hero-action:hover{background:var(--bg-color-tertiary)}.vp-hero-action.primary{border-color:var(--theme-color);background:var(--theme-color);color:var(--white)}.vp-hero-action.primary:hover{border-color:var(--theme-color-light);background:var(--theme-color-light)}.vp-project-home:not(.pure) .vp-hero-action:active{transform:scale(.96)}.vp-hero-action .icon{margin-inline-end:.25em}.vp-highlight-wrapper{position:relative;display:flex;align-items:center;justify-content:center}.vp-highlight-wrapper:nth-child(2n) .vp-highlight{flex-direction:row-reverse}.vp-highlight{z-index:1;display:flex;flex:1;align-items:center;justify-content:flex-end;max-width:var(--home-page-width);margin:0 auto;padding:1.5rem 2.5rem;color:#222}@media (max-width: 719px){.vp-highlight{display:block;padding-inline:1.5rem;text-align:center}}html[data-theme=dark] .vp-highlight{color:#eee}.vp-highlight-bg{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;background-attachment:fixed;background-position:50%;background-size:cover}.vp-highlight-bg.light{display:inline-block}.vp-highlight-bg.dark,html[data-theme=dark] .vp-highlight-bg.light{display:none}html[data-theme=dark] .vp-highlight-bg.dark{display:inline-block}.vp-highlight-image{width:12rem;margin:2rem 4rem}@media (max-width: 959px){.vp-highlight-image{width:10rem}}@media (max-width: 719px){.vp-highlight-image{width:8rem;margin:0 auto}}.vp-highlight-image.light{display:inline-block}.vp-highlight-image.dark,html[data-theme=dark] .vp-highlight-image.light{display:none}html[data-theme=dark] .vp-highlight-image.dark{display:inline-block}.vp-highlight-info-wrapper{display:flex;flex:1;justify-content:center;padding:2rem}@media (max-width: 719px){.vp-highlight-info-wrapper{padding:1rem 0}}.vp-highlight-info-wrapper:only-child{flex:1 0 100%}.vp-highlight-info{text-align:start}.vp-highlight-header{margin-bottom:1.5rem;border-bottom:none;font-size:3rem;font-family:var(--font-family)}@media (max-width: 959px){.vp-highlight-header{font-size:2.5rem}}@media (max-width: 719px){.vp-highlight-header{font-size:2.25rem;text-align:center}}@media (max-width: 419px){.vp-highlight-header{font-size:2rem}}.vp-highlight-description{font-size:1.125rem}.vp-highlights{margin-inline-start:-1.25em;padding-inline-start:0}.vp-highlight-item-wrapper{padding:.5em .5em .5em 1.75em;border-radius:.5rem;list-style:none}.vp-highlight-item-wrapper.link{cursor:pointer}.vp-highlight-item-wrapper:hover{background-color:var(--bg-color-secondary);box-shadow:0 2px 12px 0 var(--card-shadow);transition:transform var(--transform-transition);transform:translate(-2px,-2px)}.vp-highlight-bg+.vp-highlight .vp-highlight-item-wrapper:hover{background-color:transparent}.vp-highlight-item-wrapper::marker{font-weight:700}.vp-highlight-item{display:list-item;color:inherit;list-style:initial}@media print{.vp-highlight-item{text-decoration:none}}.vp-highlight-title{margin:0;font-weight:600;font-size:1.125rem;font-family:var(--font-family)}.vp-highlight-title .icon{margin-inline-end:.25em;font-size:1em}.vp-highlight-title img.icon{vertical-align:-.125em;height:1em}.vp-highlight-details{margin:.5rem 0 0}.vp-project-home{--content-width: var(--home-page-width);display:block;flex:1;padding-top:var(--navbar-height)}@media screen{.vp-project-home .vp-hero-info-wrapper:not(.fullscreen) .vp-hero-info{max-width:var(--home-page-width)}}@media screen{.vp-project-home .vp-feature{max-width:var(--home-page-width)}}.vp-project-home .theme-hope-content{padding-bottom:1.5rem!important}.vp-project-home .theme-hope-content:empty{padding:0!important}.not-found-hint{padding:2rem}.not-found-hint .error-code{margin:0;font-weight:700;font-size:4rem;line-height:4rem}.not-found-hint .error-title{font-weight:700}.not-found-hint .error-hint{margin:0;padding:12px 0;font-weight:600;font-size:20px;line-height:20px;letter-spacing:2px}.vp-page.not-found{display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;width:100vw;max-width:var(--home-page-width);margin:0 auto;padding:calc(var(--navbar-height) + 1rem) 1rem 1rem!important;text-align:center}.vp-page.not-found .action-button{display:inline-block;box-sizing:border-box;margin:.25rem;padding:.75rem 1rem;border-width:0;border-bottom:1px solid var(--theme-color-dark);border-radius:3rem;background:var(--theme-color);color:var(--white);outline:none;font-size:1rem;transition:background .1s ease}.vp-page.not-found .action-button:hover{background:var(--theme-color-light);cursor:pointer}.vp-page-nav{display:flex;flex-wrap:wrap;min-height:2rem;margin-top:0;padding-block:.5rem;padding-inline:2rem;border-top:1px solid var(--border-color);transition:border-top var(--color-transition)}@media (max-width: 959px){.vp-page-nav{padding-inline:1rem}}@media print{.vp-page-nav{display:none}}.vp-page-nav .nav-link{display:inline-block;flex-grow:1;margin:.25rem;padding:.25rem .5rem;border:1px solid var(--border-color);border-radius:.25rem}.vp-page-nav .nav-link:hover{background:var(--bg-color-secondary)}.vp-page-nav .nav-link .hint{color:var(--light-grey);font-size:.875rem;line-height:2}.vp-page-nav .nav-link .arrow{display:inline-block;vertical-align:middle;width:1em;height:1em;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");background-position:center;background-repeat:no-repeat;line-height:normal;transition:all .3s;font-size:.75rem}html[data-theme=dark] .vp-page-nav .nav-link .arrow{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.vp-page-nav .nav-link .arrow.down{transform:rotate(180deg)}html[dir=rtl] .vp-page-nav .nav-link .arrow.down{transform:rotate(-180deg)}.vp-page-nav .nav-link .arrow.end{transform:rotate(90deg)}html[dir=rtl] .vp-page-nav .nav-link .arrow.end,.vp-page-nav .nav-link .arrow.start{transform:rotate(-90deg)}html[dir=rtl] .vp-page-nav .nav-link .arrow.start{transform:rotate(90deg)}.vp-page-nav .prev{text-align:start}.vp-page-nav .prev .icon{margin-inline-end:.25em;font-size:1em}.vp-page-nav .prev img.icon{vertical-align:-.125em;height:1em}.vp-page-nav .next{text-align:end}.vp-page-nav .next .icon{margin-inline-start:.25em;font-size:1em}.vp-page-nav .next img.icon{vertical-align:-.125em;height:1em}.vp-page-title{max-width:var(--content-width, 740px);margin-inline:auto;padding-inline:2.5rem;position:relative;z-index:1;padding-top:1rem;padding-bottom:0}@media (max-width: 959px){.vp-page-title{padding-inline:1.5rem}}@media print{.vp-page-title{max-width:unset}}@media print{.vp-page-title{padding-inline:0!important}}@media (max-width: 959px){.vp-page-title{padding-top:.5rem}}.vp-page-title h1{margin-top:calc(0px - var(--navbar-height))!important;margin-bottom:1rem;padding-top:var(--navbar-height)!important;font-size:2.2rem}@media (max-width: 959px){.vp-page-title h1{margin-bottom:.5rem}}.vp-page-title h1 .icon{margin-inline-end:.25em;color:var(--theme-color);font-size:.9em}.vp-page-title h1 img.icon{vertical-align:-.125em;height:1em}.theme-hope-content:not(.custom){padding-top:0!important}.theme-hope-content:not(.custom) h1:first-child,.theme-hope-content:not(.custom) h2:first-child,.theme-hope-content:not(.custom) h3:first-child,.theme-hope-content:not(.custom) h4:first-child,.theme-hope-content:not(.custom) h5:first-child,.theme-hope-content:not(.custom) h6:first-child{margin-top:calc(.5rem - var(--navbar-height))!important;padding-top:var(--navbar-height)!important}.theme-hope-content:not(.custom)>h1:first-child{display:none}.vp-page{display:block;flex-grow:1;padding-bottom:2rem;transition:padding var(--transform-transition)}@media print{.vp-page{min-height:auto!important;margin:0!important;padding:0!important}}.page-cover{width:var(--content-width);margin-inline:auto}@media (max-width: 719px){.page-cover{width:100%}}.page-cover img{-o-object-fit:cover;object-fit:cover;width:100%;max-height:25vh;border-radius:.5rem}@media (max-width: 719px){.page-cover img{border-radius:0}}.vp-skip-link{top:.25rem;inset-inline-start:.25rem;z-index:999;padding:.65rem 1.5rem;border-radius:.5rem;background:var(--bg-color);color:var(--theme-color);box-shadow:var(--card-shadow);font-weight:700;font-size:.9em;text-decoration:none}@media print{.vp-skip-link{display:none}}.vp-skip-link:focus{clip:auto;width:auto;height:auto;-webkit-clip-path:none;clip-path:none}.theme-hope-content pre{overflow:auto;margin:.85rem 0;padding:1rem;border-radius:6px;line-height:1.375}.theme-hope-content pre code{padding:0;border-radius:0;background:transparent!important;color:var(--code-color);font-family:var(--font-family-mono);text-align:left;white-space:pre;word-spacing:normal;word-wrap:normal;word-break:normal;overflow-wrap:unset;-webkit-hyphens:none;hyphens:none;transition:color var(--color-transition);-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}@media print{.theme-hope-content pre code{white-space:pre-wrap}}.theme-hope-content .line-number{font-family:var(--font-family-mono)}div[class*=language-]{position:relative;border-radius:6px;background:var(--code-bg-color);font-size:16px;transition:background var(--color-transition)}@media (max-width: 419px){.theme-hope-content>div[class*=language-]{margin:.85rem -1.5rem;border-radius:0}}div[class*=language-]:before{content:attr(data-ext);position:absolute;top:0;right:1em;z-index:3;color:var(--code-line-color);font-size:.75rem;transition:color var(--color-transition)}div[class*=language-] pre{position:relative;z-index:1;scrollbar-gutter:stable}div[class*=language-] .highlight-lines{position:absolute;top:0;bottom:0;left:0;width:100%;padding:1rem 0;line-height:1.375;-webkit-user-select:none;-moz-user-select:none;user-select:none}div[class*=language-] .highlight-line{background:var(--code-highlight-line-color);transition:background var(--color-transition)}div[class*=language-].line-numbers-mode:after{content:"";position:absolute;top:0;bottom:0;left:0;z-index:2;width:var(--line-numbers-width);border-right:1px solid var(--code-highlight-line-color);border-radius:6px 0 0 6px;transition:border-color var(--color-transition)}@media (max-width: 419px){div[class*=language-].line-numbers-mode:after{border-radius:0}}@media print{div[class*=language-].line-numbers-mode:after{display:none}}div[class*=language-].line-numbers-mode .highlight-line{position:relative}div[class*=language-].line-numbers-mode .highlight-line:before{content:" ";position:absolute;top:0;left:0;z-index:3;display:block;width:var(--line-numbers-width);height:100%}div[class*=language-].line-numbers-mode pre{vertical-align:middle;margin-left:var(--line-numbers-width);padding-left:.5rem}@media print{div[class*=language-].line-numbers-mode pre{margin-left:0;padding-left:1rem}}div[class*=language-].line-numbers-mode .line-numbers{position:absolute;top:0;bottom:0;left:0;display:flex;flex-direction:column;width:var(--line-numbers-width);padding:1rem 0;color:var(--code-line-color);counter-reset:line-number;text-align:center;transition:color var(--color-transition)}@media print{div[class*=language-].line-numbers-mode .line-numbers{display:none}}div[class*=language-].line-numbers-mode .line-number{position:relative;z-index:4;display:flex;flex:1;align-items:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}div[class*=language-].line-numbers-mode .line-number:before{content:counter(line-number);display:block;font-size:.8em;line-height:1;counter-increment:line-number}div[class*=language-]:not(.line-numbers-mode) .line-numbers{display:none}html[data-theme=light] #app{--code-color: #383a42;--code-line-color: rgba(56, 58, 66, .67);--code-bg-color: #ecf4fa;--code-border-color: #c3def3;--code-highlight-line-color: #d8e9f6}html[data-theme=light] code[class*=language-],html[data-theme=light] pre[class*=language-]{-moz-tab-size:2;-o-tab-size:2;tab-size:2}html[data-theme=light] code[class*=language-]::-moz-selection,html[data-theme=light] code[class*=language-] ::-moz-selection,html[data-theme=light] pre[class*=language-]::-moz-selection,html[data-theme=light] pre[class*=language-] ::-moz-selection{background:#e5e5e6;color:inherit}html[data-theme=light] code[class*=language-]::selection,html[data-theme=light] code[class*=language-] ::selection,html[data-theme=light] pre[class*=language-]::selection,html[data-theme=light] pre[class*=language-] ::selection{background:#e5e5e6;color:inherit}html[data-theme=light] .token.comment,html[data-theme=light] .token.prolog,html[data-theme=light] .token.cdata{color:#a0a1a7}html[data-theme=light] .token.doctype,html[data-theme=light] .token.punctuation,html[data-theme=light] .token.entity{color:#383a42}html[data-theme=light] .token.attr-name,html[data-theme=light] .token.class-name,html[data-theme=light] .token.boolean,html[data-theme=light] .token.constant,html[data-theme=light] .token.number,html[data-theme=light] .token.atrule{color:#b76b01}html[data-theme=light] .token.keyword{color:#a626a4}html[data-theme=light] .token.property,html[data-theme=light] .token.tag,html[data-theme=light] .token.symbol,html[data-theme=light] .token.deleted,html[data-theme=light] .token.important{color:#e45649}html[data-theme=light] .token.selector,html[data-theme=light] .token.string,html[data-theme=light] .token.char,html[data-theme=light] .token.builtin,html[data-theme=light] .token.inserted,html[data-theme=light] .token.regex,html[data-theme=light] .token.attr-value,html[data-theme=light] .token.attr-value>.token.punctuation{color:#50a14f}html[data-theme=light] .token.variable,html[data-theme=light] .token.operator,html[data-theme=light] .token.function{color:#4078f2}html[data-theme=light] .token.url{color:#0184bc}html[data-theme=light] .token.attr-value>.token.punctuation.attr-equals,html[data-theme=light] .token.special-attr>.token.attr-value>.token.value.css{color:#383a42}html[data-theme=light] .language-css .token.selector{color:#e45649}html[data-theme=light] .language-css .token.property{color:#383a42}html[data-theme=light] .language-css .token.function,html[data-theme=light] .language-css .token.url>.token.function{color:#0184bc}html[data-theme=light] .language-css .token.url>.token.string.url{color:#50a14f}html[data-theme=light] .language-css .token.important,html[data-theme=light] .language-css .token.atrule .token.rule,html[data-theme=light] .language-javascript .token.operator{color:#a626a4}html[data-theme=light] .language-javascript .token.template-string>.token.interpolation>.token.interpolation-punctuation.punctuation{color:#ca1243}html[data-theme=light] .language-json .token.operator{color:#383a42}html[data-theme=light] .language-json .token.null.keyword{color:#b76b01}html[data-theme=light] .language-markdown .token.url,html[data-theme=light] .language-markdown .token.url>.token.operator,html[data-theme=light] .language-markdown .token.url-reference.url>.token.string{color:#383a42}html[data-theme=light] .language-markdown .token.url>.token.content{color:#4078f2}html[data-theme=light] .language-markdown .token.url>.token.url,html[data-theme=light] .language-markdown .token.url-reference.url{color:#0184bc}html[data-theme=light] .language-markdown .token.blockquote.punctuation,html[data-theme=light] .language-markdown .token.hr.punctuation{color:#a0a1a7;font-style:italic}html[data-theme=light] .language-markdown .token.code-snippet{color:#50a14f}html[data-theme=light] .language-markdown .token.bold .token.content{color:#b76b01}html[data-theme=light] .language-markdown .token.italic .token.content{color:#a626a4}html[data-theme=light] .language-markdown .token.strike .token.content,html[data-theme=light] .language-markdown .token.strike .token.punctuation,html[data-theme=light] .language-markdown .token.list.punctuation,html[data-theme=light] .language-markdown .token.title.important>.token.punctuation{color:#e45649}html[data-theme=light] .token.bold{font-weight:700}html[data-theme=light] .token.comment,html[data-theme=light] .token.italic{font-style:italic}html[data-theme=light] .token.entity{cursor:help}html[data-theme=light] .token.namespace{opacity:.8}html[data-theme=dark] #app{--code-color: #abb2bf;--code-line-color: rgba(171, 178, 191, .67);--code-bg-color: #282c34;--code-border-color: #343e51;--code-highlight-line-color: #2f3542}html[data-theme=dark] code[class*=language-],html[data-theme=dark] pre[class*=language-]{text-shadow:0 1px rgba(0,0,0,.3);-moz-tab-size:2;-o-tab-size:2;tab-size:2}@media print{html[data-theme=dark] code[class*=language-],html[data-theme=dark] pre[class*=language-]{text-shadow:none}}html[data-theme=dark] code[class*=language-]::-moz-selection,html[data-theme=dark] code[class*=language-] ::-moz-selection,html[data-theme=dark] pre[class*=language-]::-moz-selection,html[data-theme=dark] pre[class*=language-] ::-moz-selection{background:#3e4451;color:inherit;text-shadow:none}html[data-theme=dark] code[class*=language-]::selection,html[data-theme=dark] code[class*=language-] ::selection,html[data-theme=dark] pre[class*=language-]::selection,html[data-theme=dark] pre[class*=language-] ::selection{background:#3e4451;color:inherit;text-shadow:none}html[data-theme=dark] .token.comment,html[data-theme=dark] .token.prolog,html[data-theme=dark] .token.cdata{color:#5c6370}html[data-theme=dark] .token.doctype,html[data-theme=dark] .token.punctuation,html[data-theme=dark] .token.entity{color:#abb2bf}html[data-theme=dark] .token.attr-name,html[data-theme=dark] .token.class-name,html[data-theme=dark] .token.boolean,html[data-theme=dark] .token.constant,html[data-theme=dark] .token.number,html[data-theme=dark] .token.atrule{color:#d19a66}html[data-theme=dark] .token.keyword{color:#c678dd}html[data-theme=dark] .token.property,html[data-theme=dark] .token.tag,html[data-theme=dark] .token.symbol,html[data-theme=dark] .token.deleted,html[data-theme=dark] .token.important{color:#e06c75}html[data-theme=dark] .token.selector,html[data-theme=dark] .token.string,html[data-theme=dark] .token.char,html[data-theme=dark] .token.builtin,html[data-theme=dark] .token.inserted,html[data-theme=dark] .token.regex,html[data-theme=dark] .token.attr-value,html[data-theme=dark] .token.attr-value>.token.punctuation{color:#98c379}html[data-theme=dark] .token.variable,html[data-theme=dark] .token.operator,html[data-theme=dark] .token.function{color:#61afef}html[data-theme=dark] .token.url{color:#56b6c2}html[data-theme=dark] .token.attr-value>.token.punctuation.attr-equals,html[data-theme=dark] .token.special-attr>.token.attr-value>.token.value.css{color:#abb2bf}html[data-theme=dark] .language-css .token.selector{color:#e06c75}html[data-theme=dark] .language-css .token.property{color:#abb2bf}html[data-theme=dark] .language-css .token.function,html[data-theme=dark] .language-css .token.url>.token.function{color:#56b6c2}html[data-theme=dark] .language-css .token.url>.token.string.url{color:#98c379}html[data-theme=dark] .language-css .token.important,html[data-theme=dark] .language-css .token.atrule .token.rule,html[data-theme=dark] .language-javascript .token.operator{color:#c678dd}html[data-theme=dark] .language-javascript .token.template-string>.token.interpolation>.token.interpolation-punctuation.punctuation{color:#be5046}html[data-theme=dark] .language-json .token.operator{color:#abb2bf}html[data-theme=dark] .language-json .token.null.keyword{color:#d19a66}html[data-theme=dark] .language-markdown .token.url,html[data-theme=dark] .language-markdown .token.url>.token.operator,html[data-theme=dark] .language-markdown .token.url-reference.url>.token.string{color:#abb2bf}html[data-theme=dark] .language-markdown .token.url>.token.content{color:#61afef}html[data-theme=dark] .language-markdown .token.url>.token.url,html[data-theme=dark] .language-markdown .token.url-reference.url{color:#56b6c2}html[data-theme=dark] .language-markdown .token.blockquote.punctuation,html[data-theme=dark] .language-markdown .token.hr.punctuation{color:#5c6370;font-style:italic}html[data-theme=dark] .language-markdown .token.code-snippet{color:#98c379}html[data-theme=dark] .language-markdown .token.bold .token.content{color:#d19a66}html[data-theme=dark] .language-markdown .token.italic .token.content{color:#c678dd}html[data-theme=dark] .language-markdown .token.strike .token.content,html[data-theme=dark] .language-markdown .token.strike .token.punctuation,html[data-theme=dark] .language-markdown .token.list.punctuation,html[data-theme=dark] .language-markdown .token.title.important>.token.punctuation{color:#e06c75}html[data-theme=dark] .token.bold{font-weight:700}html[data-theme=dark] .token.comment,html[data-theme=dark] .token.italic{font-style:italic}html[data-theme=dark] .token.entity{cursor:help}html[data-theme=dark] .token.namespace{opacity:.8}.sr-only{position:absolute;overflow:hidden;clip:rect(0,0,0,0);width:1px;height:1px;margin:-1px;padding:0;border-width:0;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media print{.theme-hope-content{margin:0!important;padding-inline:0!important}}.theme-hope-content.custom{margin:0;padding:0}.theme-hope-content:not(.custom){max-width:var(--content-width, 740px);margin:0 auto;padding:2rem 2.5rem;padding-top:0}@media (max-width: 959px){.theme-hope-content:not(.custom){padding:1.5rem}}@media (max-width: 419px){.theme-hope-content:not(.custom){padding:1rem 1.5rem}}@media print{.theme-hope-content:not(.custom){max-width:unset}}.theme-hope-content:not(.custom)>h1,.theme-hope-content:not(.custom)>h2,.theme-hope-content:not(.custom)>h3,.theme-hope-content:not(.custom)>h4,.theme-hope-content:not(.custom)>h5,.theme-hope-content:not(.custom)>h6{margin-top:calc(.5rem - var(--navbar-height));margin-bottom:.5rem;padding-top:calc(1rem + var(--navbar-height));outline:none}.theme-container.no-navbar .theme-hope-content:not(.custom)>h1,.theme-container.no-navbar .theme-hope-content:not(.custom)>h2,.theme-container.no-navbar .theme-hope-content:not(.custom)>h3,.theme-container.no-navbar .theme-hope-content:not(.custom)>h4,.theme-container.no-navbar .theme-hope-content:not(.custom)>h5,.theme-container.no-navbar .theme-hope-content:not(.custom)>h6{margin-top:1.5rem;padding-top:0}.theme-hope-content:not(.custom)>p,.theme-hope-content:not(.custom)>ul p,.theme-hope-content:not(.custom)>ol p{text-align:justify;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}@media (max-width: 419px){.theme-hope-content:not(.custom)>p,.theme-hope-content:not(.custom)>ul p,.theme-hope-content:not(.custom)>ol p{text-align:start}}@media print{.theme-hope-content:not(.custom)>p,.theme-hope-content:not(.custom)>ul p,.theme-hope-content:not(.custom)>ol p{text-align:start}}.theme-hope-content a:hover{text-decoration:underline}.theme-hope-content img{max-width:100%}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}html[data-theme=light]::view-transition-old(root),html[data-theme=dark]::view-transition-new(root){z-index:1}html[data-theme=light]::view-transition-new(root),html[data-theme=dark]::view-transition-old(root){z-index:99999}@media (min-width: 1280px){.chart-wrapper::-webkit-scrollbar,.flowchart-wrapper::-webkit-scrollbar,.mermaid-wrapper::-webkit-scrollbar{width:8px;height:8px}.chart-wrapper::-webkit-scrollbar-track-piece,.flowchart-wrapper::-webkit-scrollbar-track-piece,.mermaid-wrapper::-webkit-scrollbar-track-piece{border-radius:8px;background:#0000001a}}html[dir=rtl] a.header-anchor{float:right}#docsearch-container{min-width:145.7px!important}@media (max-width: 959px){#docsearch-container{min-width:36px!important}}.DocSearch.DocSearch-Button{margin-left:0}@media (max-width: 959px){.DocSearch.DocSearch-Button{min-width:36px!important}}.DocSearch .DocSearch-Button-Placeholder{display:inline-block;padding:4px 12px 4px 6px;font-size:14px}@media (max-width: 719px){.DocSearch .DocSearch-Button-Placeholder{display:none}}.DocSearch .DocSearch-Search-Icon{width:1.25em;height:1.25em}@media (max-width: 959px){.DocSearch .DocSearch-Button-Keys{display:none}}.DocSearch .DocSearch-Button-Key{background:var(--bg-color);box-shadow:none}:root{scrollbar-width:thin}@media (prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track-piece{border-radius:6px;background:#0000001a}::-webkit-scrollbar-thumb{border-radius:6px;background:var(--theme-color)}::-webkit-scrollbar-thumb:active{background:var(--theme-color-light)}@media (max-width: 719px){.hide-in-mobile{display:none!important}}@media (max-width: 959px){.hide-in-pad{display:none!important}}.page-author-item{display:inline-block;margin:0 4px;font-weight:400;overflow-wrap:break-word}.page-category-info{flex-wrap:wrap}.page-category-item{display:inline-block;margin:.125em .25em;padding:0 .25em;border-radius:.25em;background:var(--bg-color-secondary);color:var(--text-color-light);font-weight:700;font-size:.75rem;line-height:2;transition:background var(--color-transition),color var(--color-transition)}@media print{.page-category-item{padding:0;font-weight:400}.page-category-item:after{content:", "}.page-category-item:last-of-type:after{content:""}}.page-category-item.clickable>span:hover{color:var(--theme-color);cursor:pointer}.page-category-item.category0{background:#fde5e7;color:#ec2f3e}html[data-theme=dark] .page-category-item.category0{background:#340509;color:#ba111f}.page-category-item.category0:hover{background:#f9bec3}html[data-theme=dark] .page-category-item.category0:hover{background:#53080e}.page-category-item.category1{background:#ffeee8;color:#fb7649}html[data-theme=dark] .page-category-item.category1{background:#441201;color:#f54205}.page-category-item.category1:hover{background:#fed4c6}html[data-theme=dark] .page-category-item.category1:hover{background:#6d1d02}.page-category-item.category2{background:#fef5e7;color:#f5b041}html[data-theme=dark] .page-category-item.category2{background:#3e2703;color:#e08e0b}.page-category-item.category2:hover{background:#fce6c4}html[data-theme=dark] .page-category-item.category2:hover{background:#633f05}.page-category-item.category3{background:#eafaf1;color:#55d98d}html[data-theme=dark] .page-category-item.category3{background:#0c331c;color:#29b866}.page-category-item.category3:hover{background:#caf3db}html[data-theme=dark] .page-category-item.category3:hover{background:#12522d}.page-category-item.category4{background:#e6f9ee;color:#36d278}html[data-theme=dark] .page-category-item.category4{background:#092917;color:#219552}.page-category-item.category4:hover{background:#c0f1d5}html[data-theme=dark] .page-category-item.category4:hover{background:#0f4224}.page-category-item.category5{background:#e1fcfc;color:#16e1e1}html[data-theme=dark] .page-category-item.category5{background:#042929;color:#0e9595}.page-category-item.category5:hover{background:#b4f8f8}html[data-theme=dark] .page-category-item.category5:hover{background:#064242}.page-category-item.category6{background:#e4f0fe;color:#2589f6}html[data-theme=dark] .page-category-item.category6{background:#021b36;color:#0862c3}.page-category-item.category6:hover{background:#bbdafc}html[data-theme=dark] .page-category-item.category6:hover{background:#042c57}.page-category-item.category7{background:#f7f1fd;color:#bb8ced}html[data-theme=dark] .page-category-item.category7{background:#2a0b4b;color:#9851e4}.page-category-item.category7:hover{background:#eadbfa}html[data-theme=dark] .page-category-item.category7:hover{background:#431277}.page-category-item.category8{background:#fdeaf5;color:#ef59ab}html[data-theme=dark] .page-category-item.category8{background:#400626;color:#e81689}.page-category-item.category8:hover{background:#facbe5}html[data-theme=dark] .page-category-item.category8:hover{background:#670a3d}.page-original-info{position:relative;display:inline-block;vertical-align:middle;overflow:hidden;padding:0 .5em;border:.5px solid var(--dark-grey);border-radius:.75em;background:var(--bg-color);font-size:.75em;line-height:1.5!important}.page-info{display:flex;flex-wrap:wrap;align-items:center;place-content:stretch flex-start;color:var(--dark-grey);font-size:14px}@media print{.page-info{display:flex!important}}.page-info>span{display:flex;align-items:center;max-width:100%;margin-inline-end:.5em;line-height:2}@media (min-width: 1440px){.page-info>span{font-size:1.1em}}@media (max-width: 419px){.page-info>span{margin-inline-end:.3em;font-size:.875em}}@media print{.page-info>span{display:flex!important}}.page-info .icon{position:relative;display:inline-block;vertical-align:middle;width:1em;height:1em;margin-inline-end:.25em}.page-info a{color:inherit}.page-info a:hover,.page-info a:active{color:var(--theme-color)}.page-meta{max-width:var(--content-width, 740px);margin-inline:auto;padding-inline:2.5rem;display:flex;flex-wrap:wrap;justify-content:space-between;overflow:auto;padding-top:.75rem;padding-bottom:.75rem}@media (max-width: 959px){.page-meta{padding-inline:1.5rem}}@media print{.page-meta{max-width:unset}}@media print{.page-meta{margin:0!important;padding-inline:0!important}}@media (max-width: 719px){.page-meta{display:block}}.page-meta .meta-item{flex-grow:1}.page-meta .meta-item .label{font-weight:500}.page-meta .meta-item .label:not(a){color:var(--text-color-lighter)}.page-meta .meta-item .info{color:var(--dark-grey);font-weight:400}.page-meta .git-info{text-align:end}.page-meta .edit-link{margin-top:.25rem;margin-bottom:.25rem;margin-inline-end:.5rem;font-size:14px}@media print{.page-meta .edit-link{display:none}}.page-meta .edit-link .icon{position:relative;bottom:-.125em;width:1em;height:1em;margin-inline-end:.25em}.page-meta .update-time,.page-meta .contributors{margin-top:.25rem;margin-bottom:.25rem;font-size:14px}@media (max-width: 719px){.page-meta .update-time,.page-meta .contributors{font-size:13px;text-align:start}}.print-button{border-width:0;background:transparent;cursor:pointer;box-sizing:content-box;width:1rem;height:1rem;padding:.5rem;border-radius:.25em;color:inherit;font-size:1rem;transform:translateY(.25rem)}@media print{.print-button{display:none}}.page-tag-info{flex-wrap:wrap}.page-tag-item{position:relative;display:inline-block;vertical-align:middle;overflow:hidden;min-width:1.5rem;margin:.125rem;padding:.125rem .25rem .125rem .625rem;background:var(--bg-color-secondary);background:linear-gradient(135deg,transparent .75em,var(--bg-color-secondary) 0) top,linear-gradient(45deg,transparent .75em,var(--bg-color-secondary) 0) bottom;background-size:100% 52%!important;background-repeat:no-repeat!important;color:var(--text-color-light);font-weight:700;font-size:.625rem;line-height:1.5;text-align:center;transition:background var(--color-transition),color var(--color-transition)}@media print{.page-tag-item{padding:0;font-weight:400}.page-tag-item:after{content:", "}.page-tag-item:last-of-type:after{content:""}}.page-tag-item.clickable:hover{cursor:pointer}.page-tag-item.tag0{background:#fde5e7;background:linear-gradient(135deg,transparent .75em,#fde5e7 0) top,linear-gradient(45deg,transparent .75em,#fde5e7 0) bottom;color:#ec2f3e}html[data-theme=dark] .page-tag-item.tag0{background:#340509;background:linear-gradient(135deg,transparent .75em,#340509 0) top,linear-gradient(45deg,transparent .75em,#340509 0) bottom;color:#ba111f}.page-tag-item.tag0.clickable:hover{background:#f9bec3;background:linear-gradient(135deg,transparent .75em,#f9bec3 0) top,linear-gradient(45deg,transparent .75em,#f9bec3 0) bottom}html[data-theme=dark] .page-tag-item.tag0.clickable:hover{background:#53080e;background:linear-gradient(135deg,transparent .75em,#53080e 0) top,linear-gradient(45deg,transparent .75em,#53080e 0) bottom}.page-tag-item.tag1{background:#ffeee8;background:linear-gradient(135deg,transparent .75em,#ffeee8 0) top,linear-gradient(45deg,transparent .75em,#ffeee8 0) bottom;color:#fb7649}html[data-theme=dark] .page-tag-item.tag1{background:#441201;background:linear-gradient(135deg,transparent .75em,#441201 0) top,linear-gradient(45deg,transparent .75em,#441201 0) bottom;color:#f54205}.page-tag-item.tag1.clickable:hover{background:#fed4c6;background:linear-gradient(135deg,transparent .75em,#fed4c6 0) top,linear-gradient(45deg,transparent .75em,#fed4c6 0) bottom}html[data-theme=dark] .page-tag-item.tag1.clickable:hover{background:#6d1d02;background:linear-gradient(135deg,transparent .75em,#6d1d02 0) top,linear-gradient(45deg,transparent .75em,#6d1d02 0) bottom}.page-tag-item.tag2{background:#fef5e7;background:linear-gradient(135deg,transparent .75em,#fef5e7 0) top,linear-gradient(45deg,transparent .75em,#fef5e7 0) bottom;color:#f5b041}html[data-theme=dark] .page-tag-item.tag2{background:#3e2703;background:linear-gradient(135deg,transparent .75em,#3e2703 0) top,linear-gradient(45deg,transparent .75em,#3e2703 0) bottom;color:#e08e0b}.page-tag-item.tag2.clickable:hover{background:#fce6c4;background:linear-gradient(135deg,transparent .75em,#fce6c4 0) top,linear-gradient(45deg,transparent .75em,#fce6c4 0) bottom}html[data-theme=dark] .page-tag-item.tag2.clickable:hover{background:#633f05;background:linear-gradient(135deg,transparent .75em,#633f05 0) top,linear-gradient(45deg,transparent .75em,#633f05 0) bottom}.page-tag-item.tag3{background:#eafaf1;background:linear-gradient(135deg,transparent .75em,#eafaf1 0) top,linear-gradient(45deg,transparent .75em,#eafaf1 0) bottom;color:#55d98d}html[data-theme=dark] .page-tag-item.tag3{background:#0c331c;background:linear-gradient(135deg,transparent .75em,#0c331c 0) top,linear-gradient(45deg,transparent .75em,#0c331c 0) bottom;color:#29b866}.page-tag-item.tag3.clickable:hover{background:#caf3db;background:linear-gradient(135deg,transparent .75em,#caf3db 0) top,linear-gradient(45deg,transparent .75em,#caf3db 0) bottom}html[data-theme=dark] .page-tag-item.tag3.clickable:hover{background:#12522d;background:linear-gradient(135deg,transparent .75em,#12522d 0) top,linear-gradient(45deg,transparent .75em,#12522d 0) bottom}.page-tag-item.tag4{background:#e6f9ee;background:linear-gradient(135deg,transparent .75em,#e6f9ee 0) top,linear-gradient(45deg,transparent .75em,#e6f9ee 0) bottom;color:#36d278}html[data-theme=dark] .page-tag-item.tag4{background:#092917;background:linear-gradient(135deg,transparent .75em,#092917 0) top,linear-gradient(45deg,transparent .75em,#092917 0) bottom;color:#219552}.page-tag-item.tag4.clickable:hover{background:#c0f1d5;background:linear-gradient(135deg,transparent .75em,#c0f1d5 0) top,linear-gradient(45deg,transparent .75em,#c0f1d5 0) bottom}html[data-theme=dark] .page-tag-item.tag4.clickable:hover{background:#0f4224;background:linear-gradient(135deg,transparent .75em,#0f4224 0) top,linear-gradient(45deg,transparent .75em,#0f4224 0) bottom}.page-tag-item.tag5{background:#e1fcfc;background:linear-gradient(135deg,transparent .75em,#e1fcfc 0) top,linear-gradient(45deg,transparent .75em,#e1fcfc 0) bottom;color:#16e1e1}html[data-theme=dark] .page-tag-item.tag5{background:#042929;background:linear-gradient(135deg,transparent .75em,#042929 0) top,linear-gradient(45deg,transparent .75em,#042929 0) bottom;color:#0e9595}.page-tag-item.tag5.clickable:hover{background:#b4f8f8;background:linear-gradient(135deg,transparent .75em,#b4f8f8 0) top,linear-gradient(45deg,transparent .75em,#b4f8f8 0) bottom}html[data-theme=dark] .page-tag-item.tag5.clickable:hover{background:#064242;background:linear-gradient(135deg,transparent .75em,#064242 0) top,linear-gradient(45deg,transparent .75em,#064242 0) bottom}.page-tag-item.tag6{background:#e4f0fe;background:linear-gradient(135deg,transparent .75em,#e4f0fe 0) top,linear-gradient(45deg,transparent .75em,#e4f0fe 0) bottom;color:#2589f6}html[data-theme=dark] .page-tag-item.tag6{background:#021b36;background:linear-gradient(135deg,transparent .75em,#021b36 0) top,linear-gradient(45deg,transparent .75em,#021b36 0) bottom;color:#0862c3}.page-tag-item.tag6.clickable:hover{background:#bbdafc;background:linear-gradient(135deg,transparent .75em,#bbdafc 0) top,linear-gradient(45deg,transparent .75em,#bbdafc 0) bottom}html[data-theme=dark] .page-tag-item.tag6.clickable:hover{background:#042c57;background:linear-gradient(135deg,transparent .75em,#042c57 0) top,linear-gradient(45deg,transparent .75em,#042c57 0) bottom}.page-tag-item.tag7{background:#f7f1fd;background:linear-gradient(135deg,transparent .75em,#f7f1fd 0) top,linear-gradient(45deg,transparent .75em,#f7f1fd 0) bottom;color:#bb8ced}html[data-theme=dark] .page-tag-item.tag7{background:#2a0b4b;background:linear-gradient(135deg,transparent .75em,#2a0b4b 0) top,linear-gradient(45deg,transparent .75em,#2a0b4b 0) bottom;color:#9851e4}.page-tag-item.tag7.clickable:hover{background:#eadbfa;background:linear-gradient(135deg,transparent .75em,#eadbfa 0) top,linear-gradient(45deg,transparent .75em,#eadbfa 0) bottom}html[data-theme=dark] .page-tag-item.tag7.clickable:hover{background:#431277;background:linear-gradient(135deg,transparent .75em,#431277 0) top,linear-gradient(45deg,transparent .75em,#431277 0) bottom}.page-tag-item.tag8{background:#fdeaf5;background:linear-gradient(135deg,transparent .75em,#fdeaf5 0) top,linear-gradient(45deg,transparent .75em,#fdeaf5 0) bottom;color:#ef59ab}html[data-theme=dark] .page-tag-item.tag8{background:#400626;background:linear-gradient(135deg,transparent .75em,#400626 0) top,linear-gradient(45deg,transparent .75em,#400626 0) bottom;color:#e81689}.page-tag-item.tag8.clickable:hover{background:#facbe5;background:linear-gradient(135deg,transparent .75em,#facbe5 0) top,linear-gradient(45deg,transparent .75em,#facbe5 0) bottom}html[data-theme=dark] .page-tag-item.tag8.clickable:hover{background:#670a3d;background:linear-gradient(135deg,transparent .75em,#670a3d 0) top,linear-gradient(45deg,transparent .75em,#670a3d 0) bottom}.toc-place-holder{margin-inline:auto;padding-inline:2.5rem;position:sticky;top:calc(var(--navbar-height) + 2rem);z-index:99;max-width:var(--content-width, 740px)}@media (max-width: 959px){.toc-place-holder{padding-inline:1.5rem}}@media print{.toc-place-holder{max-width:unset}}.toc-place-holder+.theme-hope-content:not(.custom){padding-top:0}#toc{position:absolute;inset-inline-start:calc(100% + 1rem);display:none;min-width:10rem;max-width:15rem}@media (min-width: 1440px){.has-toc #toc{display:block}}@media print{#toc{display:none!important}}#toc .toc-header{margin-bottom:.75rem;margin-inline-start:.5rem;font-weight:600;font-size:.875rem}#toc .toc-wrapper{position:relative;overflow:hidden auto;max-height:75vh;margin:0 .5rem;padding-inline-start:8px;text-overflow:ellipsis;white-space:nowrap;scroll-behavior:smooth}#toc .toc-wrapper::-webkit-scrollbar-track-piece{background:transparent}#toc .toc-wrapper::-webkit-scrollbar{width:3px}#toc .toc-wrapper::-webkit-scrollbar-thumb:vertical{background:#ddd}html[data-theme=dark] #toc .toc-wrapper::-webkit-scrollbar-thumb:vertical{background:#333}#toc .toc-wrapper:before{content:" ";position:absolute;top:0;bottom:0;inset-inline-start:0;z-index:-1;width:2px;background:var(--border-color)}#toc .toc-list{position:relative;margin:0;padding:0}#toc .toc-marker{content:" ";position:absolute;top:0;inset-inline-start:-8px;z-index:2;width:2px;height:1.7rem;background:var(--theme-color);transition:top var(--vp-tt)}#toc .toc-link{position:relative;display:block;overflow:hidden;max-width:100%;color:var(--light-grey);line-height:inherit;text-overflow:ellipsis;white-space:nowrap}#toc .toc-link.level2{padding-inline-start:0px;font-size:14px}#toc .toc-link.level3{padding-inline-start:8px;font-size:13px}#toc .toc-link.level4{padding-inline-start:16px;font-size:12px}#toc .toc-link.level5{padding-inline-start:24px;font-size:11px}#toc .toc-link.level6{padding-inline-start:32px;font-size:10px}#toc .toc-item{position:relative;box-sizing:border-box;height:1.7rem;padding:0 .5rem;list-style:none;line-height:1.7rem}#toc .toc-item:hover>.toc-link{color:var(--theme-color)}#toc .toc-item.active>.toc-link{color:var(--theme-color);font-weight:700}.dropdown-wrapper{cursor:pointer}.dropdown-wrapper:not(:hover) .arrow{transform:rotate(-180deg)}.dropdown-wrapper .dropdown-title{border-width:0;background:transparent;cursor:pointer;padding:0 .25rem;color:var(--dark-grey);font-weight:500;font-size:inherit;font-family:inherit;line-height:inherit;cursor:inherit}.dropdown-wrapper .dropdown-title:hover{border-color:transparent}.dropdown-wrapper .dropdown-title .icon{margin-inline-end:.25em;font-size:1em}.dropdown-wrapper .dropdown-title .arrow{display:inline-block;vertical-align:middle;width:1em;height:1em;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");background-position:center;background-repeat:no-repeat;line-height:normal;transition:all .3s;font-size:1.2em}html[data-theme=dark] .dropdown-wrapper .dropdown-title .arrow{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.dropdown-wrapper .dropdown-title .arrow.down{transform:rotate(180deg)}html[dir=rtl] .dropdown-wrapper .dropdown-title .arrow.down{transform:rotate(-180deg)}.dropdown-wrapper .dropdown-title .arrow.end{transform:rotate(90deg)}html[dir=rtl] .dropdown-wrapper .dropdown-title .arrow.end,.dropdown-wrapper .dropdown-title .arrow.start{transform:rotate(-90deg)}html[dir=rtl] .dropdown-wrapper .dropdown-title .arrow.start{transform:rotate(90deg)}.dropdown-wrapper ul{margin:0;padding:0;list-style-type:none}.dropdown-wrapper .nav-dropdown{position:absolute;top:100%;inset-inline-end:0;overflow-y:auto;box-sizing:border-box;min-width:6rem;max-height:calc(100vh - var(--navbar-height));margin:0;padding:.5rem .75rem;border:1px solid var(--grey14);border-radius:.5rem;background:var(--bg-color);box-shadow:2px 2px 10px var(--card-shadow);text-align:start;white-space:nowrap;opacity:0;visibility:hidden;transition:all .18s ease-out;transform:scale(.9)}.dropdown-wrapper:hover .nav-dropdown,.dropdown-wrapper.open .nav-dropdown{z-index:2;opacity:1;visibility:visible;transform:none}.dropdown-wrapper .nav-link{position:relative;display:block;margin-bottom:0;border-bottom:none;color:var(--dark-grey);font-weight:400;font-size:.875rem;line-height:1.7rem;transition:color var(--color-transition)}.dropdown-wrapper .nav-link:hover,.dropdown-wrapper .nav-link.active{color:var(--theme-color)}.dropdown-wrapper .dropdown-subtitle{margin:0;padding:.5rem .25rem 0;color:var(--light-grey);font-weight:600;font-size:.75rem;line-height:2;text-transform:uppercase;transition:color var(--color-transition)}.dropdown-wrapper .dropdown-subitem-wrapper{padding:0 0 .25rem}.dropdown-wrapper .dropdown-item{color:inherit;line-height:1.7rem}.dropdown-wrapper .dropdown-item:last-child .dropdown-subtitle{padding-top:0}.dropdown-wrapper .dropdown-item:last-child .dropdown-subitem-wrapper{padding-bottom:0}.nav-screen-dropdown-title{border-width:0;background:transparent;position:relative;display:flex;align-items:center;width:100%;padding:0;color:var(--dark-grey);font-size:inherit;font-family:inherit;text-align:start;cursor:pointer}.nav-screen-dropdown-title:hover,.nav-screen-dropdown-title.active{color:var(--text-color)}.nav-screen-dropdown-title .title{flex:1}.nav-screen-dropdown-title .arrow{display:inline-block;vertical-align:middle;width:1em;height:1em;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");background-position:center;background-repeat:no-repeat;line-height:normal;transition:all .3s}html[data-theme=dark] .nav-screen-dropdown-title .arrow{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.nav-screen-dropdown-title .arrow.down{transform:rotate(180deg)}html[dir=rtl] .nav-screen-dropdown-title .arrow.down{transform:rotate(-180deg)}.nav-screen-dropdown-title .arrow.end{transform:rotate(90deg)}html[dir=rtl] .nav-screen-dropdown-title .arrow.end,.nav-screen-dropdown-title .arrow.start{transform:rotate(-90deg)}html[dir=rtl] .nav-screen-dropdown-title .arrow.start{transform:rotate(90deg)}.nav-screen-dropdown{overflow:hidden;margin:.5rem 0 0;padding:0;list-style:none;transition:transform .1s ease-out;transform:scaleY(1);transform-origin:top}.nav-screen-dropdown.hide{height:0;margin:0;transform:scaleY(0)}.nav-screen-dropdown .nav-link{position:relative;display:block;padding-inline-start:.5rem;font-weight:400;line-height:2}.nav-screen-dropdown .nav-link:hover,.nav-screen-dropdown .nav-link.active{color:var(--theme-color)}.nav-screen-dropdown .nav-link .icon{font-size:1em}.nav-screen-dropdown .dropdown-item{color:inherit;line-height:1.7rem}.nav-screen-dropdown .dropdown-subtitle{margin:0;padding-inline-start:.25rem;color:var(--light-grey);font-weight:600;font-size:.75rem;line-height:2;text-transform:uppercase;transition:color var(--color-transition)}.nav-screen-dropdown .dropdown-subtitle .nav-link{padding:0}.nav-screen-dropdown .dropdown-subitem-wrapper{margin:0;padding:0;list-style:none}.nav-screen-dropdown .dropdown-subitem{padding-inline-start:.5rem;font-size:.9em}.nav-screen-links{display:none;padding-bottom:.75rem}@media (max-width: 719px){.nav-screen-links{display:block}}.nav-screen-links .navbar-links-item{position:relative;display:block;padding:12px 4px 11px 0;border-bottom:1px solid var(--border-color);font-size:16px;line-height:1.5rem;transition:border-bottom-color var(--color-transition)}.nav-screen-links .nav-link{display:inline-block;width:100%;color:var(--dark-grey);font-weight:400}.nav-screen-links .nav-link:hover{color:var(--text-color)}.nav-screen-links .nav-link.active{color:var(--theme-color)}.vp-nav-screen-container{max-width:320px;margin:0 auto;padding:2rem 0 4rem}#nav-screen{position:fixed;inset:var(--navbar-height) 0 0 0;z-index:150;display:none;overflow-y:auto;padding:0 2rem;background:var(--bg-color);transition:background .5s}@media (max-width: 719px){#nav-screen{display:block}}#nav-screen.fade-enter-active,#nav-screen.fade-leave-active{transition:opacity .25s}#nav-screen.fade-enter-active .vp-nav-screen-container,#nav-screen.fade-leave-active .vp-nav-screen-container{transition:transform .25s ease}#nav-screen.fade-enter-from,#nav-screen.fade-leave-to{opacity:0}#nav-screen.fade-enter-from .vp-nav-screen-container,#nav-screen.fade-leave-to .vp-nav-screen-container{transform:translateY(-8px)}#nav-screen .icon{margin-inline-end:.25em;font-size:1em}#nav-screen img.icon{vertical-align:-.125em;height:1em}.vp-outlook-wrapper{display:flex;justify-content:space-around}.vp-nav-logo{vertical-align:top;height:var(--navbar-line-height);margin-inline-end:.8rem}.vp-nav-logo.light{display:inline-block}.vp-nav-logo.dark,html[data-theme=dark] .vp-nav-logo.light{display:none}html[data-theme=dark] .vp-nav-logo.dark{display:inline-block}.vp-site-name{position:relative;color:var(--text-color);font-size:1.25rem}@media (max-width: 719px){.vp-site-name{overflow:hidden;width:calc(100vw - 9.4rem);text-overflow:ellipsis;white-space:nowrap}}.vp-brand:hover .vp-site-name{color:var(--theme-color)}.vp-navbar .vp-nav-links{display:flex;align-items:center;font-size:.875rem}.vp-navbar .nav-item{position:relative;margin:0 .25rem;line-height:2rem}.vp-navbar .nav-item:first-child{margin-inline-start:0}.vp-navbar .nav-item:last-child{margin-inline-end:0}.vp-navbar .nav-item>.nav-link{color:var(--dark-grey)}.vp-navbar .nav-item>.nav-link:after{content:" ";position:absolute;inset:auto 50% 0;height:2px;border-radius:1px;background:var(--theme-color-light);visibility:hidden;transition:inset .2s ease-in-out}.vp-navbar .nav-item>.nav-link.active{color:var(--theme-color)}.vp-navbar .nav-item>.nav-link:hover:after,.vp-navbar .nav-item>.nav-link.active:after{inset:auto 0 0;visibility:visible}.vp-navbar{--navbar-line-height: calc( var(--navbar-height) - var(--navbar-vertical-padding) * 2 );position:fixed;inset:0 0 auto;z-index:175;display:flex;align-items:center;justify-content:space-between;box-sizing:border-box;height:var(--navbar-height);padding:var(--navbar-vertical-padding) var(--navbar-horizontal-padding);background:var(--navbar-bg-color);box-shadow:0 2px 8px var(--card-shadow);line-height:var(--navbar-line-height);white-space:nowrap;transition:transform ease-in-out .3s,background var(--color-transition),box-shadow var(--color-transition);-webkit-backdrop-filter:saturate(150%) blur(12px);backdrop-filter:saturate(150%) blur(12px)}@media print{.vp-navbar{display:none}}.hide-navbar .vp-navbar.auto-hide{transform:translateY(-100%)}.vp-navbar .nav-link{padding:0 .25rem;color:var(--dark-grey)}.vp-navbar .nav-link.active{color:var(--theme-color)}.vp-navbar .nav-link .icon{margin-inline-end:.25em;font-size:1em}.vp-navbar .nav-link img.icon{vertical-align:-.125em;height:1em}.vp-navbar.hide-icon .vp-nav-links .icon{display:none!important}.vp-navbar-start,.vp-navbar-end,.vp-navbar-center{display:flex;flex:1;align-items:center}.vp-navbar-start>*,.vp-navbar-end>*,.vp-navbar-center>*{position:relative;margin:0 .25rem!important}.vp-navbar-start>*:first-child,.vp-navbar-end>*:first-child,.vp-navbar-center>*:first-child{margin-inline-start:0!important}.vp-navbar-start>*:last-child,.vp-navbar-end>*:last-child,.vp-navbar-center>*:last-child{margin-inline-end:0!important}.vp-navbar-start{justify-content:start}.vp-navbar-center{justify-content:center}.vp-navbar-end{justify-content:end}.vp-navbar .vp-repo{margin:0!important}.vp-navbar .vp-repo-link{display:inline-block;margin:auto;padding:6px;color:var(--dark-grey);line-height:1}.vp-navbar .vp-repo-link:hover,.vp-navbar .vp-repo-link:active{color:var(--theme-color)}.vp-toggle-navbar-button{border-width:0;background:transparent;cursor:pointer;position:relative;display:none;align-items:center;justify-content:center;padding:6px}@media screen and (max-width: 719px){.vp-toggle-navbar-button{display:flex}}.vp-toggle-navbar-button>span{position:relative;overflow:hidden;width:16px;height:14px}.vp-toggle-navbar-button .vp-top,.vp-toggle-navbar-button .vp-middle,.vp-toggle-navbar-button .vp-bottom{position:absolute;width:16px;height:2px;background:var(--dark-grey);transition:top .25s,background .5s,transform .25s}.vp-toggle-navbar-button .vp-top{top:0;left:0;transform:translate(0)}.vp-toggle-navbar-button .vp-middle{top:6px;left:0;transform:translate(8px)}.vp-toggle-navbar-button .vp-bottom{top:12px;left:0;transform:translate(4px)}.vp-toggle-navbar-button:hover .vp-top{top:0;left:0;transform:translate(4px)}.vp-toggle-navbar-button:hover .vp-middle{top:6;left:0;transform:translate(0)}.vp-toggle-navbar-button:hover .vp-bottom{top:12px;left:0;transform:translate(8px)}.vp-toggle-navbar-button.is-active .vp-top{top:6px;transform:translate(0) rotate(225deg)}.vp-toggle-navbar-button.is-active .vp-middle{top:6px;transform:translate(16px)}.vp-toggle-navbar-button.is-active .vp-bottom{top:6px;transform:translate(0) rotate(135deg)}.vp-toggle-navbar-button.is-active:hover .vp-top,.vp-toggle-navbar-button.is-active:hover .vp-middle,.vp-toggle-navbar-button.is-active:hover .vp-bottom{background:var(--theme-color);transition:top .25s,background .25s,transform .25s}.vp-toggle-sidebar-button{border-width:0;background:transparent;cursor:pointer;display:none;vertical-align:middle;box-sizing:content-box;width:1rem;height:1rem;padding:.5rem;font:unset;transition:transform .2s ease-in-out}@media screen and (max-width: 719px){.vp-toggle-sidebar-button{display:block;padding-inline-end:var(--navbar-mobile-horizontal-padding)}}.vp-toggle-sidebar-button:before,.vp-toggle-sidebar-button:after,.vp-toggle-sidebar-button .icon{display:block;width:100%;height:2px;border-radius:.05em;background:var(--dark-grey);transition:transform .2s ease-in-out}.vp-toggle-sidebar-button:before{content:" ";margin-top:.125em}.sidebar-open .vp-toggle-sidebar-button:before{transform:translateY(.34rem) rotate(135deg)}.vp-toggle-sidebar-button:after{content:" ";margin-bottom:.125em}.sidebar-open .vp-toggle-sidebar-button:after{transform:translateY(-.34rem) rotate(-135deg)}.vp-toggle-sidebar-button .icon{margin:.2em 0}.sidebar-open .vp-toggle-sidebar-button .icon{transform:scale(0)}.appearance-title{display:block;margin:0;padding:0 .25rem;color:var(--light-grey);font-weight:600;font-size:.75rem;line-height:2;transition:color var(--color-transition)}#appearance-switch{border-width:0;background:transparent;vertical-align:middle;padding:6px;color:var(--dark-grey);cursor:pointer;transition:color var(--color-transition)}#appearance-switch:hover{color:var(--theme-color)}#appearance-switch .icon{width:1.25rem;height:1.25rem}.outlook-button{border-width:0;background:transparent;cursor:pointer;position:relative;padding:.375rem;color:var(--dark-grey)}.outlook-button .icon{vertical-align:middle;width:1.25rem;height:1.25rem}.outlook-dropdown{position:absolute;top:100%;inset-inline-end:0;overflow-y:auto;box-sizing:border-box;min-width:100px;margin:0;padding:.5rem .75rem;border:1px solid var(--grey14);border-radius:.25rem;background:var(--bg-color);box-shadow:2px 2px 10px var(--card-shadow);text-align:start;white-space:nowrap;opacity:0;visibility:hidden;transition:all .18s ease-out;transform:scale(.8)}.outlook-dropdown>*:not(:last-child){padding-bottom:.5rem;border-bottom:1px solid var(--grey14)}.outlook-button:hover .outlook-dropdown,.outlook-button.open .outlook-dropdown{z-index:2;opacity:1;visibility:visible;transform:scale(1)}.theme-color-title{display:block;margin:0;padding:0 .25rem;color:var(--light-grey);font-weight:600;font-size:.75rem;line-height:2;transition:color var(--color-transition)}#theme-color-picker{display:flex;margin:0;padding:0;list-style-type:none;font-size:14px}#theme-color-picker li span{display:inline-block;vertical-align:middle;width:15px;height:15px;margin:0 2px;border-radius:2px}#theme-color-picker li span.theme-color,#theme-color-picker li span.theme-color html[data-theme=dark]{background:#3eaf7c}@media print{.full-screen-wrapper{display:none}}.full-screen-title{display:block;margin:0;padding:0 .25rem;color:var(--light-grey);font-weight:600;font-size:.75rem;line-height:2;transition:color var(--color-transition)}.full-screen,.cancel-full-screen{border-width:0;background:transparent;vertical-align:middle;padding:.375rem;color:var(--dark-grey);cursor:pointer}.full-screen:hover,.cancel-full-screen:hover{color:var(--theme-color)}.full-screen .icon,.cancel-full-screen .icon{width:1.25rem;height:1.25rem}.enter-fullscreen-icon:hover,.cancel-fullscreen-icon{color:var(--theme-color)}.cancel-fullscreen-icon:hover{color:var(--dark-grey)}.vp-sidebar-heading{display:flex;align-items:center;overflow:hidden;box-sizing:border-box;width:calc(100% - 1rem);margin:0;margin-inline:.5rem;padding:.25rem .5rem;border-width:0;border-radius:.375rem;background:transparent;color:var(--text-color);font-size:1.1em;line-height:1.5;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:color .15s ease;transform:rotate(0)}.vp-sidebar-heading.open{color:inherit}.vp-sidebar-heading.clickable:hover{background:var(--bg-color-secondary)}.vp-sidebar-heading.clickable.exact{border-inline-start-color:var(--theme-color);color:var(--theme-color)}.vp-sidebar-heading.clickable.exact a{color:inherit}.vp-sidebar-heading .vp-sidebar-title{flex:1}.vp-sidebar-heading .vp-arrow{display:inline-block;vertical-align:middle;width:1em;height:1em;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");background-position:center;background-repeat:no-repeat;line-height:normal;transition:all .3s;font-size:1.5em}html[data-theme=dark] .vp-sidebar-heading .vp-arrow{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.vp-sidebar-heading .vp-arrow.down{transform:rotate(180deg)}html[dir=rtl] .vp-sidebar-heading .vp-arrow.down{transform:rotate(-180deg)}.vp-sidebar-heading .vp-arrow.end{transform:rotate(90deg)}html[dir=rtl] .vp-sidebar-heading .vp-arrow.end,.vp-sidebar-heading .vp-arrow.start{transform:rotate(-90deg)}html[dir=rtl] .vp-sidebar-heading .vp-arrow.start{transform:rotate(90deg)}button.vp-sidebar-heading{outline:none;font-weight:inherit;font-family:inherit;line-height:inherit;text-align:start;cursor:pointer}.vp-sidebar-link{display:inline-block;box-sizing:border-box;width:calc(100% - 1rem);margin-inline:.5rem;padding:.25rem .5rem;border-radius:.375rem;color:var(--text-color);font-weight:400;font-size:1em;line-height:1.5}.vp-sidebar-link:hover{background:var(--bg-color-secondary)}.vp-sidebar-link.active{background:var(--theme-color-mask);color:var(--theme-color);font-weight:500}.vp-sidebar-link.active .icon{color:var(--theme-color)}.vp-sidebar-sub-headers .vp-sidebar-link{padding-top:.25rem;padding-bottom:.25rem;border-inline-start:none}.vp-sidebar-sub-headers .vp-sidebar-link.active{background:transparent;font-weight:500}.vp-sidebar-group:not(.collapsible) .vp-sidebar-heading:not(.clickable){color:inherit;cursor:auto}.vp-sidebar-group .vp-sidebar-group{padding-inline-start:.75rem}.vp-sidebar-group .vp-sidebar-group .vp-sidebar-heading{font-size:1em}.vp-sidebar-group .vp-sidebar-link{padding-inline-start:1.25rem}.vp-sidebar-links,.vp-sidebar-links ul{margin:0;padding:0}.vp-sidebar-links ul.vp-sidebar-sub-headers{padding-inline-start:.75rem;font-size:.95em}@media (min-width: 1440px){.has-toc .vp-sidebar-links ul.vp-sidebar-sub-headers{display:none}}.vp-sidebar-links li{list-style-type:none}.vp-sidebar>.vp-sidebar-links{padding:1.5rem 0}@media (max-width: 719px){.vp-sidebar>.vp-sidebar-links{padding:1rem 0}}.vp-sidebar>.vp-sidebar-links>li>.vp-sidebar-link{font-size:1.1em}.vp-sidebar>.vp-sidebar-links>li:not(:first-child){margin-top:.5rem}.vp-sidebar{position:fixed;top:0;bottom:0;inset-inline-start:0;z-index:1;overflow-y:auto;width:var(--sidebar-width);margin:0;padding-inline-start:calc(var(--sidebar-space) - var(--sidebar-width));background:var(--sidebar-bg-color);box-shadow:2px 0 8px var(--card-shadow);font-size:.94rem;transition:background var(--color-transition),box-shadow var(--color-transition),padding var(--transform-transition),transform var(--transform-transition);-webkit-backdrop-filter:saturate(150%) blur(12px);backdrop-filter:saturate(150%) blur(12px);scrollbar-color:var(--theme-color) var(--border-color);scrollbar-width:thin}@media (max-width: 959px){.vp-sidebar{font-size:.86em}}@media (max-width: 719px){.vp-sidebar{z-index:125;box-shadow:none;transform:translate(-100%)}html[dir=rtl] .vp-sidebar{transform:translate(100%)}}@media (min-width: 1440px){.vp-sidebar{padding-bottom:3rem;box-shadow:none;font-size:1rem}}@media print{.vp-sidebar{display:none}}.vp-sidebar a{display:inline-block;color:var(--text-color);font-weight:400}.vp-sidebar .icon{margin-inline-end:.25em;font-size:1em}.vp-sidebar img.icon{vertical-align:-.125em;height:1em}.vp-sidebar.hide-icon .icon{display:none!important}.vp-sidebar-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9;background:#00000026}.vp-sidebar-mask.fade-enter-active,.vp-sidebar-mask.fade-leave-active{transition:opacity .25s}.vp-sidebar-mask.fade-enter-from,.vp-sidebar-mask.fade-leave-to{opacity:0}.search-pro-result-wrapper{scrollbar-color:var(--vp-tc) var(--vp-brc);scrollbar-width:thin}@media (max-width: 419px){.search-pro-result-wrapper{font-size:14px}}.search-pro-result-wrapper::-webkit-scrollbar{width:6px;height:6px}.search-pro-result-wrapper::-webkit-scrollbar-track-piece{border-radius:6px;background:#0000001a}.search-pro-result-wrapper::-webkit-scrollbar-thumb{border-radius:6px;background:var(--vp-tc)}.search-pro-result-wrapper::-webkit-scrollbar-thumb:active{background:var(--vp-tcl)}.search-pro-result-wrapper mark{border-radius:.25em;line-height:1}.search-pro-result-list{margin:0;padding:0}.search-pro-result-list-item{display:block;list-style:none}.search-pro-result-title{position:sticky;top:-2px;z-index:10;margin:-4px;margin-bottom:.25rem;padding:4px;background:var(--vp-bg);color:var(--vp-tc);font-weight:600;font-size:.85em;line-height:2rem;text-indent:.5em}.search-pro-result-item.active .search-pro-result-title{color:var(--vp-tc)}.search-pro-result-type{display:block;width:1rem;height:1rem;margin-inline-start:-.5rem;padding:.5rem;color:var(--vp-tc)}.search-pro-remove-icon{border-width:0;background:transparent;cursor:pointer;box-sizing:content-box;height:1.5rem;padding:0;border-radius:50%;color:var(--vp-tc);font-size:1rem}.search-pro-remove-icon svg{width:1.5rem;height:1.5rem}.search-pro-remove-icon:hover{background:#8080804d}.search-pro-result-content{display:flex;flex-grow:1;flex-direction:column;align-items:stretch;justify-content:center;line-height:1.5}.search-pro-result-content .content-header{margin-bottom:.25rem;border-bottom:1px solid var(--vp-brcd);font-size:.9em}.search-pro-result-item{display:flex;align-items:center;margin:.5rem 0;padding:.5rem .75rem;border-radius:.25rem;background:var(--vp-bgl);color:inherit;box-shadow:0 1px 3px 0 var(--card-shadow);font-weight:400;white-space:pre-wrap;word-wrap:break-word}.search-pro-result-item strong{color:var(--vp-tc)}.search-pro-result-item:hover,.search-pro-result-item.active{background-color:var(--vp-tcl);color:var(--white);cursor:pointer}.search-pro-result-item:hover .search-pro-result-type,.search-pro-result-item:hover .search-pro-remove-icon,.search-pro-result-item:hover strong,.search-pro-result-item.active .search-pro-result-type,.search-pro-result-item.active .search-pro-remove-icon,.search-pro-result-item.active strong{color:var(--white)} diff --git a/assets/temp.html-EQReOu7c.js b/assets/temp.html-EQReOu7c.js deleted file mode 100644 index 16bebfe..0000000 --- a/assets/temp.html-EQReOu7c.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-DfwSKz3Q.js";const o={};function r(_,m){return t(),c("div")}const a=e(o,[["render",r],["__file","temp.html.vue"]]);export{a as default}; diff --git a/assets/temp.html-KkJJgK1Y.js b/assets/temp.html-KkJJgK1Y.js new file mode 100644 index 0000000..5d2f68e --- /dev/null +++ b/assets/temp.html-KkJJgK1Y.js @@ -0,0 +1 @@ +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{o,c as r,a as e}from"./app-rX80dX-Q.js";const c={};function m(n,s){return o(),r("div",null,[e(" buildings "),e(" items "),e(" workers ")])}const l=t(c,[["render",m],["__file","temp.html.vue"]]);export{l as default}; diff --git a/assets/temp.html-8yp40aS7.js b/assets/temp.html-mJuis2h8.js similarity index 51% rename from assets/temp.html-8yp40aS7.js rename to assets/temp.html-mJuis2h8.js index 56354a3..5e0ac7b 100644 --- a/assets/temp.html-8yp40aS7.js +++ b/assets/temp.html-mJuis2h8.js @@ -1 +1 @@ -const e=JSON.parse('{"key":"v-712c96ac","path":"/temp.html","title":"","lang":"zh-CN","frontmatter":{},"headers":[],"git":{"createdTime":1705432116000,"updatedTime":1705432116000,"contributors":[{"name":"ddaodan","email":"731882332@qq.com","commits":1}]},"readingTime":{"minutes":0.04,"words":13},"filePathRelative":"temp.md","localizedDate":"2024年1月16日","excerpt":""}');export{e as data}; +const e=JSON.parse('{"key":"v-712c96ac","path":"/temp.html","title":"","lang":"zh-CN","frontmatter":{},"headers":[],"git":{"createdTime":1705432116000,"updatedTime":1706029671000,"contributors":[{"name":"ddaodan","email":"731882332@qq.com","commits":3}]},"readingTime":{"minutes":0.23,"words":69},"filePathRelative":"temp.md","localizedDate":"2024年1月16日","excerpt":""}');export{e as data}; diff --git a/assets/townhall.html-f05QP5j6.js b/assets/townhall.html-f05QP5j6.js new file mode 100644 index 0000000..e7a57ba --- /dev/null +++ b/assets/townhall.html-f05QP5j6.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c as i,a as e,f as n}from"./app-rX80dX-Q.js";const a="/Minecolonies-Chinese-Wiki/assets/image/gui/buildings/townhall/th_colonycreationGUI.png",s="/Minecolonies-Chinese-Wiki/assets/image/gui/buildings/townhall/th_secondplace.png",r="/Minecolonies-Chinese-Wiki/assets/image/gui/buildings/townhall/th_colonybannerdesigner.png",l={},h=n('

市政厅

市政厅是殖民地的中心部分。

市政厅方块不能在已经放置了通过补给营地/船获得的市政厅之前在工作台制作。如果有需要,它也可以像其他方块一样在创造模式下获得,或通过命令获取。

创建新的殖民地

勘察区域

在决定放置市政厅的位置之前,请确保仔细勘察您的区域。您的殖民地将以市政厅方块为中心的4块半径(每个方向4块)开始。确保这是您想要建立殖民地的地方。

放置您的市政厅

在仔细决定放置市政厅的位置后(请记住,您放置市政厅方块的位置将是您殖民地受保护区域的中心。一旦放置,该区域将被确定,无法更改),使用您的建筑工具将市政厅方块放置在地面上。

右键单击您希望放置市政厅的区域。建筑的GUI将显示,显示建筑的3D预览。您可以使用箭头按钮将建筑移动到所需的位置。

确保在GUI中使用+-选项,以确保小屋的地面水平位于您希望的位置。并非所有的小屋方块都位于地面上。

一旦您确认放置市政厅(绿色对勾),市政厅方块将被放置。

创建您的殖民地

一旦您放置了市政厅方块,您需要右键点击它并选择“创建新殖民地”。


Creating New Colony

一个新的殖民地将被创建,您的殖民地的范围将被确定,并且整个区域将被保护。

保护区域

当您开始一个殖民地时,最初设置的区域还具有附加的保护。保护系统包括阻止任何玩家放置/破坏或与任何类型的方块交互,放置熔岩或水以及放置/点燃TNT。一旦建立,它还将显示在信息屏幕中。

殖民地的受保护区域(一旦放置了市政厅)将取决于配置,但默认情况下将是以您首次放置市政厅方块的位置为中心的4块半径。因此,请仔细规划您想要放置市政厅的位置。您受保护的殖民地区域包括从基岩到天际限制的山脉、丘陵、湖泊、海洋、洞穴、世界生成的结构等。

由于每个殖民地的受保护区域,您必须仔细勘察周围环境,确保您周围没有其他殖民地,以防止您放置市政厅或在该方向上限制您的殖民地区域。

一旦放置市政厅方块,这将是您城镇受保护半径的中心。如果您决定希望实际的市政厅建筑建在不同的位置(在当前设置的受保护半径内),您可以使用建筑工具打破方块,然后再次放置它。删除并替换市政厅方块不会移除您城镇的受保护区域。唯一的方法是通过拥有OP或管理员权限的人通过命令删除您的殖民地。

如果有另一个殖民地离您当前位置太近,您将无法放置市政厅。

如果您尝试在受保护区域之外放置另一个市政厅,您将收到一条消息:

Placing a Second Town Hall

Deleting a Colony

To delete your colony, place a Town Hall outside your current colony border (either by mining or deconstructing your old Town Hall or by crafting a new one). Interacting with the newly placed Town Hall outside of the current borders will prompt you to delete your colony.
Alternatively, if you have the proper permissions, you can use commands.

{% building %} GUI

Information: This is the overall information section of the Town Hall GUI.

{% building_gui_content_block_custom image_key="th_information" image_alt="Townhall information" cols=6 %}
Page 1: Here you will see some statistics on your citizens, like the number of citizens you have out of your max. Green is less than 90% of your max, orange is above 90%, and red is full. If it's red, hovering over the numbers will show what you need to do to get more citizens. The page also shows how many of each type of worker you have.

Page 2: Here you will see the overall happiness of the colony's citizens and any events that happened within the colony (the newest events are at the bottom). You can click the button to switch to a permission log, which will show any illegal actions that happened in the colony (like if a player tried to break a block when they aren't allowed to). Clicking the plus next to an illegal action will change it to a legal action if the player tries to do it again. For more information, see the Protection system and the Permission tab of the {% building townhall %} GUI.
{% endbuilding_gui_content_block_custom %}

Actions: This is the most important section.

{% building_gui_content_block_custom image_key="th_actions" image_alt="Townhall actions" cols=6 %}
Page 1: Here you will see the name of your colony as well as the building level of the {% building townhall %}. And the buttons:

  • Build Options: Lets you create a build, upgrade, reposition, or repair build order for the {% building townhall %}. To learn more about the building system, please visit the {% building_link builder %} page.
  • Rename Colony: To change the name of your colony (from Your Username's Colony, which is the default) to anything you want.
  • Hire Mercenaries: Here you can hire mercenaries to help defend your colony. Be warned, they're mean and will steal from citizens!

Page 2: This is only enabled if PVP is turned on in the config file. Here you have:

  • Allies: Other colonies that you have added as allies and that have confirmed your colony as an ally as well.
  • Feuds: Other colonies that you have added as a feud and that have confirmed your colony as a feud as well.
    {% endbuilding_gui_content_block_custom %}

Permissions: Here you can invite other players to your colony to collaborate.

{% building_gui_content_block_custom image_key="th_permissions1" image_alt="Townhall permissions" cols=6 %}
Page 1: Here you type the name of the player you want to add.

Page 2: Shows the list of players that have ben added as well as their current rank. You can click on the "-" or "+" to give them a higher rank or lower rank.
{% endbuilding_gui_content_block_custom %}

{% building_gui_content_block_custom image_key="th_permissions2" image_alt="Townhall permissions" cols=6 %}
Page 3: Here you can select the rank that you would like to manage.

Page 4: Here are the individual permissions (for the rank you have selected on the previous page) that you can toggle ON or OFF, giving each rank the permission you want. Note: the Fight Guards permission causes Guards to treat the player as an enemy and attack them. It is only recommended for Hostile players.
{% endbuilding_gui_content_block_custom %}

{% building_gui_content_block_custom image_key="th_permissions3" image_alt="Townhall permissions" cols=6 %}
Page 5: Where you enter the position (X, Y, Z) of the block that you want to make free for interaction.

Page 6: Here you will see the list of block positions that you have added as free for interaction and can remove them.
{% endbuilding_gui_content_block_custom %}

Citizens: This section displays the names and skill levels of the citizens in your colony.

{% building_gui_content_block_custom image_key="th_citizens" image_alt="Townhall citizens" cols=6 %}
Page 1: When you select a citizen, their stats and job will appear here. You can also recall them to the Town Hall block on this page.

Page 2: Here you will see a list of the citizens in your colony. Select a citizen to see their skills.
{% endbuilding_gui_content_block_custom %}

Settings: This section is where you can control how your citizens will be hired and assigned housing in your colony, among other things.

{% building_gui_content_block_custom image_key="th_settings" image_alt="Townhall settings" cols=6 %}
Page 1: There are four buttons here:

  • Worker hiring mode: Clicking on this button lets you switch between automatic or manual. If it's in automatic mode, you can't fire or hire any citizen from any worker hut and the best unemployed citizen will be hired for you. In manual mode you will be able to hire and fire whichever citizen you want at any time.
  • Housing assignment mode: Clicking on this button lets you switch between automatic or manual. If it's in automatic mode, citizens will be assigned a house as soon as they spawn (if housing is available). In manual mode, you can select which citizens will be housed in each House or Tavern. This is better if you have a large colony and many workers spread out in a large area so you can house your citizens as close as possible to their workplace.
  • Print help messages: Clicking on this button lets you choose whether MineColonies help messages will appear in the chat. It is recommended that this be turned on for first-time players.
  • Kids will be born: Clicking on this button lets you choose whether new kids will be born in your colony.

Page 2: There are three buttons here:

  • Pick Team Color: Whatever color you pick from here, your Guards will have a glow of this color around them when you put them in follow mode at their {% building_link guardtower %} or {% building_link barrackstower %}. This is for the PVP system, so you know which Guards are yours when you are fighting. Your citizens' names will also be in this color.
  • Edit Colony Flag: Clicking this button will open up a banner designer where you can design your colony banner. Your {% worker_link knight %} will wear the finished design on their shields, and it is also used in some schematics.
    Town hall GUI banner designer
  • Switch Colony Pack: This option controls the default selected style pack when opening the build tool.
  • Pick Citizen Style: The option controls how the citizens look. This feature is exclusive for donators.
    {% endbuilding_gui_content_block_custom %}

Work Orders: Here you will see the work orders your

{% building_gui_content_block_custom image_key="th_workorders" image_alt="Townhall work orders" cols=6 %}
All the work orders in the order they have been assigned. {% worker_link builder plural=true %} will not start another order until they have successfully completed the top one.

Page 1: Blank page except for the header.

Page 2: Here are all the build orders for this colony (including decorations and your own schematics as well as huts). Your {% worker_link builder plural=true %} will complete the builds from top to bottom, and you can change the priority of the builds by moving them up or down in the list. You can also delete work orders. When you delete a work order that is currently being built, the Builder will stop building and will continue where they left off if you create the work order again."
{% endbuilding_gui_content_block_custom %}

Statistics: This is the section for the global happiness of your colony so you can see what area needs more attention to raise the happiness level.

{% building_gui_content_block_custom image_key="th_statistics" image_alt="Townhall happiness" cols=6 %}
Page 1: The happiness indices. You can keep track of the areas that will lower or raise the happiness of your citizens here. The colors, in order from best to worst, are:

  • Green (positive)
  • Blue (neutral)
  • Yellow (slightly negative)
  • Red (negative)

There's also black, which will show up if something went wrong.

Page 2: Blank page.
{% endbuilding_gui_content_block_custom %}

',57);function c(u,d){return t(),i("div",null,[e(" buildings "),e(" items "),e(" workers "),h])}const y=o(l,[["render",c],["__file","townhall.html.vue"]]);export{y as default}; diff --git a/assets/townhall.html-hfvW79OU.js b/assets/townhall.html-hfvW79OU.js new file mode 100644 index 0000000..c1cdd8f --- /dev/null +++ b/assets/townhall.html-hfvW79OU.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-1ef620e5","path":"/Buildings/townhall.html","title":"市政厅","lang":"zh-CN","frontmatter":{"title":"市政厅"},"headers":[{"level":2,"title":"创建新的殖民地","slug":"创建新的殖民地","link":"#创建新的殖民地","children":[{"level":3,"title":"勘察区域","slug":"勘察区域","link":"#勘察区域","children":[]},{"level":3,"title":"放置您的市政厅","slug":"放置您的市政厅","link":"#放置您的市政厅","children":[]},{"level":3,"title":"创建您的殖民地","slug":"创建您的殖民地","link":"#创建您的殖民地","children":[]},{"level":3,"title":"保护区域","slug":"保护区域","link":"#保护区域","children":[]},{"level":3,"title":"Deleting a Colony","slug":"deleting-a-colony","link":"#deleting-a-colony","children":[]}]},{"level":2,"title":"{% building %} GUI","slug":"building-gui","link":"#building-gui","children":[{"level":3,"title":"Information: This is the overall information section of the Town Hall GUI.","slug":"information-this-is-the-overall-information-section-of-the-town-hall-gui","link":"#information-this-is-the-overall-information-section-of-the-town-hall-gui","children":[]},{"level":3,"title":"Actions: This is the most important section.","slug":"actions-this-is-the-most-important-section","link":"#actions-this-is-the-most-important-section","children":[]},{"level":3,"title":"Permissions: Here you can invite other players to your colony to collaborate.","slug":"permissions-here-you-can-invite-other-players-to-your-colony-to-collaborate","link":"#permissions-here-you-can-invite-other-players-to-your-colony-to-collaborate","children":[]},{"level":3,"title":"Citizens: This section displays the names and skill levels of the citizens in your colony.","slug":"citizens-this-section-displays-the-names-and-skill-levels-of-the-citizens-in-your-colony","link":"#citizens-this-section-displays-the-names-and-skill-levels-of-the-citizens-in-your-colony","children":[]},{"level":3,"title":"Settings: This section is where you can control how your citizens will be hired and assigned housing in your colony, among other things.","slug":"settings-this-section-is-where-you-can-control-how-your-citizens-will-be-hired-and-assigned-housing-in-your-colony-among-other-things","link":"#settings-this-section-is-where-you-can-control-how-your-citizens-will-be-hired-and-assigned-housing-in-your-colony-among-other-things","children":[]},{"level":3,"title":"Work Orders: Here you will see the work orders your","slug":"work-orders-here-you-will-see-the-work-orders-your","link":"#work-orders-here-you-will-see-the-work-orders-your","children":[]},{"level":3,"title":"Statistics: This is the section for the global happiness of your colony so you can see what area needs more attention to raise the happiness level.","slug":"statistics-this-is-the-section-for-the-global-happiness-of-your-colony-so-you-can-see-what-area-needs-more-attention-to-raise-the-happiness-level","link":"#statistics-this-is-the-section-for-the-global-happiness-of-your-colony-so-you-can-see-what-area-needs-more-attention-to-raise-the-happiness-level","children":[]}]}],"git":{"createdTime":1705669699000,"updatedTime":1706029671000,"contributors":[{"name":"ddaodan","email":"731882332@qq.com","commits":2}]},"readingTime":{"minutes":7.4,"words":2221},"filePathRelative":"Buildings/townhall.md","localizedDate":"2024年1月19日","excerpt":""}');export{e as data}; diff --git a/assets/worldgencolonies.html-4262Bk1s.js b/assets/worldgencolonies.html-4262Bk1s.js deleted file mode 100644 index 2082b62..0000000 --- a/assets/worldgencolonies.html-4262Bk1s.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o as r,c as s,a as e,e as a,w as i,b as t,d}from"./app-DfwSKz3Q.js";const u={},c=e("h1",{id:"world-generation-colonies",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#world-generation-colonies","aria-hidden":"true"},"#"),t(" World Generation Colonies")],-1),h=e("p",null,"As you explore the world, you'll notice that there are some colonies abandoned by the former residents. Moving into one of these abandoned colonies is a way to quickstart your own colony!",-1),p=e("p",null,[t("(Note: This feature is only available in 1.18+. Vanilla villages will still spawn as normal. If you wish to turn off this feature, you can do so in the "),e("a",{href:"../misc/configfile"},"configuration options"),t(" for your world.)")],-1),g={class:"table-of-contents"},m=d('

Getting Started

To find a world generation colony... just start exploring! They spawn randomly at a low chance in the world in one of several styles. Currently, only a subset of official style colonies can spawn naturally in the world, but more will be added in the future!

Only a subset of possible buildings can generate in a world generation colony, and most will be level 1, though some buildings might be level 2. Sometimes, multiple of the same type of building can spawn, too!

First, find the town hall and click "Create new colony." This is equivalent to you placing a town hall down from the supply camp.

From there, go to each hut block in the found (and now, founded) colony and click "Reactivate" to reclaim the building and add it to the town hall.

Additionally, you can repair each building to make your new colony look like new.

That's it! You've claimed a colony in the world, and now you can start building your new colony!

Creating Your Own World Generation Colonies Style

First, you need to design and build your own schematic. Once you've built your style, you can add jigsaw block connectors at appropriate places and export the structure as a .nbt file. That way, Minecraft knows how to build an abandoned colony in your style!

Tagging and Prepping

The most important thing to ensure that colonies register as abandoned — and can be restored — is to use the tag tool to tag the hut block appropriately.

  1. Tag the hut block with its style name (e.g., "medieval_oak" for the Medieval Oak style). The name must match the style's folder name in the MineColonies.jar file or resource pack.
  2. Add the tag "abandoned" to the hut block. If you right-click the building with an empty hand, it should now say that the building is abandoned and tell you to seek out the town hall.

Adding Jigsaw Blocks

Place jigsaw blocks where a structure would naturally connect to a road or — if creating a road — where it would connect to a structure. Make sure the block is placed at the edge of the structure facing toward a connecting block.

When editing a jigsaw block, there are a few different properties that can be set.

  • name: the name of this jigsaw block. The name can be unique or generic. For the styles in MineColonies, all buildings have the name "minecolonies:building_entrance" and all roads "minecolonies:street". Some styles will also use "minecolonies:field"; this one is used exclusively to connect a field to a farmer building when the farmer building does not a field as part of the level 1 structure.
  • target: When a structure is placed, the target of its jigsaw block determines the next jigsaw block that is added. The target of a placed structure must match the name of the next one to be placed.
  • pool: To restrict the list of applicable structures, use the target pool. MineColonies uses three dedicated pools for each colony style: "<stylename>/roads", "<stylename>/buildings", and "<stylename>/terminators".

Edit the jigsaw block to set the following properties.
(Note that the following is an example using the Medieval Oak style. Replace "medieval_oak" with your style's name.)

  • Buildings
    • name: "minecolonies:building_entrance"
    • pool: "minecolonies:medieval_oak/roads"
    • target: "minecolonies:building_entrance"
    • turns into: "minecraft:structure_void"
  • Roads (Connecting to buildings)
    • name: "minecolonies:street"
    • pool: "minecolonies:medieval_oak/buildings"
    • target: "minecolonies:building_entrance"
    • turns into: "minecraft:structure_void"
  • Roads (Connecting to roads)
    • name: "minecolonies:street"
    • pool: "minecolonies:medieval_oak/roads"
    • target: "minecolonies:street"
    • turns into: "minecraft:structure_void"
  • Terminators (to end roads more decoratively and as fallback structures for roads and buildings)
    • name: "minecolonies:street"
    • turns into: "minecraft:structure_void"

Processors

Processors are used to alter a structure's blocks during placement. Specifically for MineColonies, we use different processors depending on the structure that is placed.

There are three processor files for each style.

street.json

Road processors are defined in "<stylename>/street.json". The main purpose of this processor is to replace porous materials like dirt, dirt paths, and gravel with wooden planks when the road is in water. This will also add minor decay in the form of grass blocks instead of dirt paths.

decoration.json

Park processors are defined in "<stylename>/decoration.json". This processor adds decay to the parks by turning some stone brick into weathered variants like mossy or cracked stone bricks or replaces some dirt blocks with coarse dirt.

placeholder_replacement.json

Building processors are defined in "<stylename>/placeholder_replacement.json". Similar to how zombie villages decay, this processor removes various building blocks or replaces them with cobweb. Which blocks and how often depends on the given style. In addition to decay, the placeholder replacement is also responsible for converting the Structurize placeholder blocks into suitable in-game similar to how a builder treats these blocks when constructing a building.

  • "structurize:blocksolidsubstitution" turns into dirt, which may be converted to another block by a processor defined later in the same file.
  • "structurize:blocksubstitution" is ignored, meaning that existing blocks in the world will remain in place when the structure generates.

Decay Example

The rule below replaces oak logs with cobwebs at a 4% probability. That probability may be fine for one style but be too high or too low for another style.

{ "output_state": { "Name": "minecraft:cobweb" }, "input_predicate": { "block": "minecraft:oak_log", "probability": 0.04, "predicate_type": "minecraft:random_block_match" }, "location_predicate": { "predicate_type": "minecraft:always_true" } },

',31);function b(f,y){const o=l("router-link");return r(),s("div",null,[c,h,p,e("nav",g,[e("ul",null,[e("li",null,[a(o,{to:"#getting-started"},{default:i(()=>[t("Getting Started")]),_:1})]),e("li",null,[a(o,{to:"#tagging-and-prepping"},{default:i(()=>[t("Tagging and Prepping")]),_:1})]),e("li",null,[a(o,{to:"#adding-jigsaw-blocks"},{default:i(()=>[t("Adding Jigsaw Blocks")]),_:1})]),e("li",null,[a(o,{to:"#processors"},{default:i(()=>[t("Processors")]),_:1}),e("ul",null,[e("li",null,[a(o,{to:"#street-json"},{default:i(()=>[t("street.json")]),_:1})]),e("li",null,[a(o,{to:"#decoration-json"},{default:i(()=>[t("decoration.json")]),_:1})]),e("li",null,[a(o,{to:"#placeholder-replacement-json"},{default:i(()=>[t("placeholder_replacement.json")]),_:1})])])])])]),m])}const k=n(u,[["render",b],["__file","worldgencolonies.html.vue"]]);export{k as default}; diff --git a/assets/worldgencolonies.html-hBZXKTdx.js b/assets/worldgencolonies.html-hBZXKTdx.js new file mode 100644 index 0000000..596e870 --- /dev/null +++ b/assets/worldgencolonies.html-hBZXKTdx.js @@ -0,0 +1 @@ +import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o as r,c as s,b as e,e as a,w as i,d as t,f as d}from"./app-rX80dX-Q.js";const u={},c=e("h1",{id:"world-generation-colonies",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#world-generation-colonies","aria-hidden":"true"},"#"),t(" World Generation Colonies")],-1),h=e("p",null,"As you explore the world, you'll notice that there are some colonies abandoned by the former residents. Moving into one of these abandoned colonies is a way to quickstart your own colony!",-1),p=e("p",null,[t("(Note: This feature is only available in 1.18+. Vanilla villages will still spawn as normal. If you wish to turn off this feature, you can do so in the "),e("a",{href:"../misc/configfile"},"configuration options"),t(" for your world.)")],-1),g={class:"table-of-contents"},m=d('

Getting Started

To find a world generation colony... just start exploring! They spawn randomly at a low chance in the world in one of several styles. Currently, only a subset of official style colonies can spawn naturally in the world, but more will be added in the future!

Only a subset of possible buildings can generate in a world generation colony, and most will be level 1, though some buildings might be level 2. Sometimes, multiple of the same type of building can spawn, too!

First, find the town hall and click "Create new colony." This is equivalent to you placing a town hall down from the supply camp.

From there, go to each hut block in the found (and now, founded) colony and click "Reactivate" to reclaim the building and add it to the town hall.

Additionally, you can repair each building to make your new colony look like new.

That's it! You've claimed a colony in the world, and now you can start building your new colony!

Creating Your Own World Generation Colonies Style

First, you need to design and build your own schematic. Once you've built your style, you can add jigsaw block connectors at appropriate places and export the structure as a .nbt file. That way, Minecraft knows how to build an abandoned colony in your style!

Tagging and Prepping

The most important thing to ensure that colonies register as abandoned — and can be restored — is to use the tag tool to tag the hut block appropriately.

  1. Tag the hut block with its style name (e.g., "medieval_oak" for the Medieval Oak style). The name must match the style's folder name in the MineColonies.jar file or resource pack.
  2. Add the tag "abandoned" to the hut block. If you right-click the building with an empty hand, it should now say that the building is abandoned and tell you to seek out the town hall.

Adding Jigsaw Blocks

Place jigsaw blocks where a structure would naturally connect to a road or — if creating a road — where it would connect to a structure. Make sure the block is placed at the edge of the structure facing toward a connecting block.

When editing a jigsaw block, there are a few different properties that can be set.

  • name: the name of this jigsaw block. The name can be unique or generic. For the styles in MineColonies, all buildings have the name "minecolonies:building_entrance" and all roads "minecolonies:street". Some styles will also use "minecolonies:field"; this one is used exclusively to connect a field to a farmer building when the farmer building does not a field as part of the level 1 structure.
  • target: When a structure is placed, the target of its jigsaw block determines the next jigsaw block that is added. The target of a placed structure must match the name of the next one to be placed.
  • pool: To restrict the list of applicable structures, use the target pool. MineColonies uses three dedicated pools for each colony style: "<stylename>/roads", "<stylename>/buildings", and "<stylename>/terminators".

Edit the jigsaw block to set the following properties.
(Note that the following is an example using the Medieval Oak style. Replace "medieval_oak" with your style's name.)

  • Buildings
    • name: "minecolonies:building_entrance"
    • pool: "minecolonies:medieval_oak/roads"
    • target: "minecolonies:building_entrance"
    • turns into: "minecraft:structure_void"
  • Roads (Connecting to buildings)
    • name: "minecolonies:street"
    • pool: "minecolonies:medieval_oak/buildings"
    • target: "minecolonies:building_entrance"
    • turns into: "minecraft:structure_void"
  • Roads (Connecting to roads)
    • name: "minecolonies:street"
    • pool: "minecolonies:medieval_oak/roads"
    • target: "minecolonies:street"
    • turns into: "minecraft:structure_void"
  • Terminators (to end roads more decoratively and as fallback structures for roads and buildings)
    • name: "minecolonies:street"
    • turns into: "minecraft:structure_void"

Processors

Processors are used to alter a structure's blocks during placement. Specifically for MineColonies, we use different processors depending on the structure that is placed.

There are three processor files for each style.

street.json

Road processors are defined in "<stylename>/street.json". The main purpose of this processor is to replace porous materials like dirt, dirt paths, and gravel with wooden planks when the road is in water. This will also add minor decay in the form of grass blocks instead of dirt paths.

decoration.json

Park processors are defined in "<stylename>/decoration.json". This processor adds decay to the parks by turning some stone brick into weathered variants like mossy or cracked stone bricks or replaces some dirt blocks with coarse dirt.

placeholder_replacement.json

Building processors are defined in "<stylename>/placeholder_replacement.json". Similar to how zombie villages decay, this processor removes various building blocks or replaces them with cobweb. Which blocks and how often depends on the given style. In addition to decay, the placeholder replacement is also responsible for converting the Structurize placeholder blocks into suitable in-game similar to how a builder treats these blocks when constructing a building.

  • "structurize:blocksolidsubstitution" turns into dirt, which may be converted to another block by a processor defined later in the same file.
  • "structurize:blocksubstitution" is ignored, meaning that existing blocks in the world will remain in place when the structure generates.

Decay Example

The rule below replaces oak logs with cobwebs at a 4% probability. That probability may be fine for one style but be too high or too low for another style.

{ "output_state": { "Name": "minecraft:cobweb" }, "input_predicate": { "block": "minecraft:oak_log", "probability": 0.04, "predicate_type": "minecraft:random_block_match" }, "location_predicate": { "predicate_type": "minecraft:always_true" } },

',31);function b(f,y){const o=l("router-link");return r(),s("div",null,[c,h,p,e("nav",g,[e("ul",null,[e("li",null,[a(o,{to:"#getting-started"},{default:i(()=>[t("Getting Started")]),_:1})]),e("li",null,[a(o,{to:"#tagging-and-prepping"},{default:i(()=>[t("Tagging and Prepping")]),_:1})]),e("li",null,[a(o,{to:"#adding-jigsaw-blocks"},{default:i(()=>[t("Adding Jigsaw Blocks")]),_:1})]),e("li",null,[a(o,{to:"#processors"},{default:i(()=>[t("Processors")]),_:1}),e("ul",null,[e("li",null,[a(o,{to:"#street-json"},{default:i(()=>[t("street.json")]),_:1})]),e("li",null,[a(o,{to:"#decoration-json"},{default:i(()=>[t("decoration.json")]),_:1})]),e("li",null,[a(o,{to:"#placeholder-replacement-json"},{default:i(()=>[t("placeholder_replacement.json")]),_:1})])])])])]),m])}const k=n(u,[["render",b],["__file","worldgencolonies.html.vue"]]);export{k as default}; diff --git a/index.html b/index.html index 05d9155..db88b72 100644 --- a/index.html +++ b/index.html @@ -28,13 +28,13 @@ document.documentElement.setAttribute("data-theme", "dark"); } - 开始 | 模拟殖民地 中文Wiki - - - + 开始 | 模拟殖民地 中文Wiki + + + -
跳至主要內容

模拟殖民地 中文Wiki

由爱好者建立的模拟殖民地非官方中文Wiki

开始阅读

欢迎来到模拟殖民地Wiki!

模拟殖民地是一个交互式建筑模组,可让你在 Minecraft 中创建自己的繁荣城镇。它通过提供一切你需要的工具,让你的领导技能得以发挥。模拟殖民地提供了灵活性,让你创建一个与其他玩家独一无二的殖民地。有了如此多的选择,你每次都会打造一个不同的殖民地,适应任何生态区域,建在山内、山顶、海底,或是天空中。
唯一的限制就是你的想象力!
模拟殖民地拥有 NPC 工人,例如 Builders, Farmers, Fishers, Foresters, Miners, Smelters, Bakers, Cooks, Couriers, five types of animal herders, Composters, and many more,随着模组的发展,更多内容正在开发和添加。
It also includes specialized buildings such as the Warehouse, Residence, Town Hall, Barracks, Library, University, and even the School.

提示

目前Wiki正处于起步阶段,当前的进度是将英文Wiki的内容搬运过来后进行本地化。

- +
跳至主要內容

模拟殖民地 中文Wiki

由爱好者建立的模拟殖民地非官方中文Wiki

开始阅读

欢迎来到模拟殖民地Wiki!

模拟殖民地是一个交互式建筑模组,可让你在Minecraft中创建自己的繁荣城镇。它通过提供一切你需要的工具,让你的领导技能得以发挥。模拟殖民地提供了灵活性,让你创建一个与其他玩家独一无二的殖民地。有了如此多的选择,你每次都会打造一个不同的殖民地,适应任何生态区域,建在山内、山顶、海底,或是天空中。
唯一的限制就是你的想象力!
模拟殖民地拥有NPC工人,例如 建筑工, [Farmers], [渔夫], [护林员], [矿工], [Smelters], [Bakers], [Cooks], C[ouriers], 五种牧民, [Composters]等等,随着模组的发展,更多内容正在开发和添加。
It also includes specialized buildings such as the [Warehouse], [Residence], 市政厅, [Barracks], [图书馆], [大学], and even the School.

MineColonies is a free and open-source mod developed by Let's Dev Together (LDT), a non-profit community. The source code is available on GitHubopen in new window. Our developers are a hard-working, well-integrated coding team, continuously adding more content to make the MineColonies experience even greater. However, we are always looking for more people to contribute to the mod, whether as a coder, builder, artist, voice actor, wiki editor, tester, or simply supporting us on Patreonopen in new window!

Found a bug? Report it as an issueopen in new window to help us give you the best gaming experience. If you require any help or just want to join the conversation, check us out on Discordopen in new window!

让我们开始吧!

在导航栏中选择你要查看的页面。

提示

目前Wiki正处于起步阶段,当前的进度是将英文Wiki的内容搬运过来后进行本地化。

+ diff --git a/manifest.webmanifest b/manifest.webmanifest new file mode 100644 index 0000000..5d6be45 --- /dev/null +++ b/manifest.webmanifest @@ -0,0 +1 @@ +{"name":"模拟殖民地 中文Wiki","short_name":"模拟殖民地 中文Wiki","description":"由爱好者建立的模拟殖民地非官方中文Wiki","lang":"zh-CN","start_url":"/Minecolonies-Chinese-Wiki/","scope":"/Minecolonies-Chinese-Wiki/","display":"standalone","theme_color":"#46bd87","background_color":"#ffffff","orientation":"portrait-primary","prefer_related_applications":false} diff --git a/search-pro.worker.js b/search-pro.worker.js index 4554548..d99fd38 100644 --- a/search-pro.worker.js +++ b/search-pro.worker.js @@ -1,2 +1,2 @@ -const nt="ENTRIES",V="KEYS",T="VALUES",F="";class D{set;_type;_path;constructor(t,s){const n=t._tree,u=Array.from(n.keys());this.set=t,this._type=s,this._path=u.length>0?[{node:n,keys:u}]:[]}next(){const t=this.dive();return this.backtrack(),t}dive(){if(this._path.length===0)return{done:!0,value:void 0};const{node:t,keys:s}=E(this._path);if(E(s)===F)return{done:!1,value:this.result()};const n=t.get(E(s));return this._path.push({node:n,keys:Array.from(n.keys())}),this.dive()}backtrack(){if(this._path.length===0)return;const t=E(this._path).keys;t.pop(),!(t.length>0)&&(this._path.pop(),this.backtrack())}key(){return this.set._prefix+this._path.map(({keys:t})=>E(t)).filter(t=>t!==F).join("")}value(){return E(this._path).node.get(F)}result(){switch(this._type){case T:return this.value();case V:return this.key();default:return[this.key(),this.value()]}}[Symbol.iterator](){return this}}const E=e=>e[e.length-1],ut=(e,t,s)=>{const n=new Map;if(t===void 0)return n;const u=t.length+1,o=u+s,i=new Uint8Array(o*u).fill(s+1);for(let r=0;r{const d=o*i;t:for(const l of e.keys())if(l===F){const a=u[d-1];a<=s&&n.set(r,[e.get(l),a])}else{let a=o;for(let h=0;hs)continue t}R(e.get(l),t,s,n,u,a,i,r+l)}};class C{_tree;_prefix;_size=void 0;constructor(t=new Map,s=""){this._tree=t,this._prefix=s}atPrefix(t){if(!t.startsWith(this._prefix))throw new Error("Mismatched prefix");const[s,n]=x(this._tree,t.slice(this._prefix.length));if(s===void 0){const[u,o]=M(n);for(const i of u.keys())if(i!==F&&i.startsWith(o)){const r=new Map;return r.set(i.slice(o.length),u.get(i)),new C(r,t)}}return new C(s,t)}clear(){this._size=void 0,this._tree.clear()}delete(t){return this._size=void 0,ot(this._tree,t)}entries(){return new D(this,nt)}forEach(t){for(const[s,n]of this)t(s,n,this)}fuzzyGet(t,s){return ut(this._tree,t,s)}get(t){const s=I(this._tree,t);return s!==void 0?s.get(F):void 0}has(t){const s=I(this._tree,t);return s!==void 0&&s.has(F)}keys(){return new D(this,V)}set(t,s){if(typeof t!="string")throw new Error("key must be a string");return this._size=void 0,O(this._tree,t).set(F,s),this}get size(){if(this._size)return this._size;this._size=0;const t=this.entries();for(;!t.next().done;)this._size+=1;return this._size}update(t,s){if(typeof t!="string")throw new Error("key must be a string");this._size=void 0;const n=O(this._tree,t);return n.set(F,s(n.get(F))),this}fetch(t,s){if(typeof t!="string")throw new Error("key must be a string");this._size=void 0;const n=O(this._tree,t);let u=n.get(F);return u===void 0&&n.set(F,u=s()),u}values(){return new D(this,T)}[Symbol.iterator](){return this.entries()}static from(t){const s=new C;for(const[n,u]of t)s.set(n,u);return s}static fromObject(t){return C.from(Object.entries(t))}}const x=(e,t,s=[])=>{if(t.length===0||e==null)return[e,s];for(const n of e.keys())if(n!==F&&t.startsWith(n))return s.push([e,n]),x(e.get(n),t.slice(n.length),s);return s.push([e,t]),x(void 0,"",s)},I=(e,t)=>{if(t.length===0||e==null)return e;for(const s of e.keys())if(s!==F&&t.startsWith(s))return I(e.get(s),t.slice(s.length))},O=(e,t)=>{const s=t.length;t:for(let n=0;e&&n{const[s,n]=x(e,t);if(s!==void 0){if(s.delete(F),s.size===0)W(n);else if(s.size===1){const[u,o]=s.entries().next().value;q(n,u,o)}}},W=e=>{if(e.length===0)return;const[t,s]=M(e);if(t.delete(s),t.size===0)W(e.slice(0,-1));else if(t.size===1){const[n,u]=t.entries().next().value;n!==F&&q(e.slice(0,-1),n,u)}},q=(e,t,s)=>{if(e.length===0)return;const[n,u]=M(e);n.set(u+t,s),n.delete(u)},M=e=>e[e.length-1],it=(e,t)=>{const s=e._idToShortId.get(t);if(s!=null)return e._storedFields.get(s)},rt=/[\n\r -#%-*,-/:;?@[-\]_{}\u00A0\u00A1\u00A7\u00AB\u00B6\u00B7\u00BB\u00BF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u1680\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2000-\u200A\u2010-\u2029\u202F-\u2043\u2045-\u2051\u2053-\u205F\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u3000-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]+/u,S="or",$="and",ct="and_not",lt=(e,t)=>{e.includes(t)||e.push(t)},P=(e,t)=>{for(const s of t)e.includes(s)||e.push(s)},N=({score:e},{score:t})=>t-e,ht=()=>new Map,k=e=>{const t=new Map;for(const s of Object.keys(e))t.set(parseInt(s,10),e[s]);return t},G=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0,dt={[S]:(e,t)=>{for(const s of t.keys()){const n=e.get(s);if(n==null)e.set(s,t.get(s));else{const{score:u,terms:o,match:i}=t.get(s);n.score=n.score+u,n.match=Object.assign(n.match,i),P(n.terms,o)}}return e},[$]:(e,t)=>{const s=new Map;for(const n of t.keys()){const u=e.get(n);if(u==null)continue;const{score:o,terms:i,match:r}=t.get(n);P(u.terms,i),s.set(n,{score:u.score+o,terms:u.terms,match:Object.assign(u.match,r)})}return s},[ct]:(e,t)=>{for(const s of t.keys())e.delete(s);return e}},at=(e,t,s,n,u,o)=>{const{k:i,b:r,d}=o;return Math.log(1+(s-t+.5)/(t+.5))*(d+e*(i+1)/(e+i*(1-r+r*n/u)))},ft=e=>(t,s,n)=>{const u=typeof e.fuzzy=="function"?e.fuzzy(t,s,n):e.fuzzy||!1,o=typeof e.prefix=="function"?e.prefix(t,s,n):e.prefix===!0;return{term:t,fuzzy:u,prefix:o}},H=(e,t,s,n)=>{for(const u of Object.keys(e._fieldIds))if(e._fieldIds[u]===s){e._options.logger("warn",`SlimSearch: document with ID ${e._documentIds.get(t)} has changed before removal: term "${n}" was not present in field "${u}". Removing a document after it has changed can corrupt the index!`,"version_conflict");return}},gt=(e,t,s,n)=>{if(!e._index.has(n)){H(e,s,t,n);return}const u=e._index.fetch(n,ht),o=u.get(t);o==null||o.get(s)==null?H(e,s,t,n):o.get(s)<=1?o.size<=1?u.delete(t):o.delete(s):o.set(s,o.get(s)-1),e._index.get(n).size===0&&e._index.delete(n)},mt={k:1.2,b:.7,d:.5},pt={idField:"id",extractField:(e,t)=>e[t],tokenize:e=>e.split(rt),processTerm:e=>e.toLowerCase(),fields:void 0,searchOptions:void 0,storeFields:[],logger:(e,t)=>{typeof console?.[e]=="function"&&console[e](t)},autoVacuum:!0},J={combineWith:S,prefix:!1,fuzzy:!1,maxFuzzy:6,boost:{},weights:{fuzzy:.45,prefix:.375},bm25:mt},Ft={combineWith:$,prefix:(e,t,s)=>t===s.length-1},_t={batchSize:1e3,batchWait:10},U={minDirtFactor:.1,minDirtCount:20},yt={..._t,...U},Y=(e,t=S)=>{if(e.length===0)return new Map;const s=t.toLowerCase();return e.reduce(dt[s])||new Map},B=(e,t,s,n,u,o,i,r,d=new Map)=>{if(u==null)return d;for(const l of Object.keys(o)){const a=o[l],h=e._fieldIds[l],m=u.get(h);if(m==null)continue;let p=m.size;const f=e._avgFieldLength[h];for(const c of m.keys()){if(!e._documentIds.has(c)){gt(e,h,c,s),p-=1;continue}const g=i?i(e._documentIds.get(c),s,e._storedFields.get(c)):1;if(!g)continue;const _=m.get(c),y=e._fieldLength.get(c)[h],b=at(_,p,e._documentCount,y,f,r),z=n*a*g*b,A=d.get(c);if(A){A.score+=z,lt(A.terms,t);const w=G(A.match,s);w?w.push(l):A.match[s]=[l]}else d.set(c,{score:z,terms:[t],match:{[s]:[l]}})}}return d},At=(e,t,s)=>{const n={...e._options.searchOptions,...s},u=(n.fields||e._options.fields).reduce((c,g)=>({...c,[g]:G(n.boost,g)||1}),{}),{boostDocument:o,weights:i,maxFuzzy:r,bm25:d}=n,{fuzzy:l,prefix:a}={...J.weights,...i},h=e._index.get(t.term),m=B(e,t.term,t.term,1,h,u,o,d);let p,f;if(t.prefix&&(p=e._index.atPrefix(t.term)),t.fuzzy){const c=t.fuzzy===!0?.2:t.fuzzy,g=c<1?Math.min(r,Math.round(t.term.length*c)):c;g&&(f=e._index.fuzzyGet(t.term,g))}if(p)for(const[c,g]of p){const _=c.length-t.term.length;if(!_)continue;f?.delete(c);const y=a*c.length/(c.length+.3*_);B(e,t.term,c,y,g,u,o,d,m)}if(f)for(const c of f.keys()){const[g,_]=f.get(c);if(!_)continue;const y=l*c.length/(c.length+_);B(e,t.term,c,y,g,u,o,d,m)}return m},X=(e,t,s={})=>{if(typeof t!="string"){const a={...s,...t,queries:void 0},h=t.queries.map(m=>X(e,m,a));return Y(h,a.combineWith)}const{tokenize:n,processTerm:u,searchOptions:o}=e._options,i={tokenize:n,processTerm:u,...o,...s},{tokenize:r,processTerm:d}=i,l=r(t).flatMap(a=>d(a)).filter(a=>!!a).map(ft(i)).map(a=>At(e,a,i));return Y(l,i.combineWith)},K=(e,t,s={})=>{const n=X(e,t,s),u=[];for(const[o,{score:i,terms:r,match:d}]of n){const l=r.length,a={id:e._documentIds.get(o),score:i*l,terms:Object.keys(d),match:d};Object.assign(a,e._storedFields.get(o)),(s.filter==null||s.filter(a))&&u.push(a)}return u.sort(N),u},Ct=(e,t,s={})=>{s={...e._options.autoSuggestOptions,...s};const n=new Map;for(const{score:o,terms:i}of K(e,t,s)){const r=i.join(" "),d=n.get(r);d!=null?(d.score+=o,d.count+=1):n.set(r,{score:o,terms:i,count:1})}const u=[];for(const[o,{score:i,terms:r,count:d}]of n)u.push({suggestion:o,terms:r,score:i/d});return u.sort(N),u};class Et{_options;_index;_documentCount;_documentIds;_idToShortId;_fieldIds;_fieldLength;_avgFieldLength;_nextId;_storedFields;_dirtCount;_currentVacuum;_enqueuedVacuum;_enqueuedVacuumConditions;constructor(t){if(t?.fields==null)throw new Error('SlimSearch: option "fields" must be provided');const s=t.autoVacuum==null||t.autoVacuum===!0?yt:t.autoVacuum;this._options={...pt,...t,autoVacuum:s,searchOptions:{...J,...t.searchOptions||{}},autoSuggestOptions:{...Ft,...t.autoSuggestOptions||{}}},this._index=new C,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldIds={},this._fieldLength=new Map,this._avgFieldLength=[],this._nextId=0,this._storedFields=new Map,this._dirtCount=0,this._currentVacuum=null,this._enqueuedVacuum=null,this._enqueuedVacuumConditions=U,this.addFields(this._options.fields)}get isVacuuming(){return this._currentVacuum!=null}get dirtCount(){return this._dirtCount}get dirtFactor(){return this._dirtCount/(1+this._documentCount+this._dirtCount)}get documentCount(){return this._documentCount}get termCount(){return this._index.size}toJSON(){const t=[];for(const[s,n]of this._index){const u={};for(const[o,i]of n)u[o]=Object.fromEntries(i);t.push([s,u])}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:t,serializationVersion:2}}addFields(t){for(let s=0;s{if(l!==1&&l!==2)throw new Error("SlimSearch: cannot deserialize an index created with an incompatible version");const h=new Et(a);h._documentCount=t,h._nextId=s,h._documentIds=k(n),h._idToShortId=new Map,h._fieldIds=u,h._fieldLength=k(o),h._avgFieldLength=i,h._storedFields=k(r),h._dirtCount=d||0,h._index=new C;for(const[m,p]of h._documentIds)h._idToShortId.set(p,m);for(const[m,p]of e){const f=new Map;for(const c of Object.keys(p)){let g=p[c];l===1&&(g=g.ds),f.set(parseInt(c,10),k(g))}h._index.set(m,f)}return h},Q=Object.entries,wt=Object.fromEntries,j=(e,t)=>{const s=e.toLowerCase(),n=t.toLowerCase(),u=[];let o=0,i=0;const r=(l,a=!1)=>{let h="";i===0?h=l.length>20?`… ${l.slice(-20)}`:l:a?h=l.length+i>100?`${l.slice(0,100-i)}… `:l:h=l.length>20?`${l.slice(0,20)} … ${l.slice(-20)}`:l,h&&u.push(h),i+=h.length,a||(u.push(["mark",t]),i+=t.length,i>=100&&u.push(" …"))};let d=s.indexOf(n,o);if(d===-1)return null;for(;d>=0;){const l=d+n.length;if(r(e.slice(o,d)),o=l,i>100)break;d=s.indexOf(n,o)}return i<100&&r(e.slice(o),!0),u},Z=/[\u4e00-\u9fa5]/g,tt=(e={})=>({fuzzy:.2,prefix:!0,processTerm:t=>{const s=t.match(Z)||[],n=t.replace(Z,"").toLowerCase();return n?[n,...s]:[...s]},...e}),xt=(e,t)=>t.contents.reduce((s,[,n])=>s+n,0)-e.contents.reduce((s,[,n])=>s+n,0),kt=(e,t)=>Math.max(...t.contents.map(([,s])=>s))-Math.max(...e.contents.map(([,s])=>s)),et=(e,t,s={})=>{const n={};return K(t,e,tt({boost:{h:2,t:1,c:4},...s})).forEach(u=>{const{id:o,terms:i,score:r}=u,d=o.includes("@"),l=o.includes("#"),[a,h]=o.split(/[#@]/),m=i.sort((f,c)=>f.length-c.length).filter((f,c)=>i.slice(c+1).every(g=>!g.includes(f))),{contents:p}=n[a]??={title:"",contents:[]};if(d)p.push([{type:"customField",key:a,index:h,display:m.map(f=>u.c.map(c=>j(c,f))).flat().filter(f=>f!==null)},r]);else{const f=m.map(c=>j(u.h,c)).filter(c=>c!==null);if(f.length&&p.push([{type:l?"heading":"title",key:a,...l&&{anchor:h},display:f},r]),"t"in u)for(const c of u.t){const g=m.map(_=>j(c,_)).filter(_=>_!==null);g.length&&p.push([{type:"text",key:a,...l&&{anchor:h},display:g},r])}}}),Q(n).sort(([,u],[,o])=>"max"==="total"?xt(u,o):kt(u,o)).map(([u,{title:o,contents:i}])=>{if(!o){const r=it(t,u);r&&(o=r.h)}return{title:o,contents:i.map(([r])=>r)}})},st=(e,t,s={})=>Ct(t,e,tt(s)).map(({suggestion:n})=>n),v=wt(Q(JSON.parse("{\"/\":{\"documentCount\":84,\"nextId\":84,\"documentIds\":{\"0\":\"v-8daa1a0e\",\"1\":\"v-7d932540\",\"2\":\"v-3631dba2\",\"3\":\"v-0932ecbb\",\"4\":\"v-0932ecbb#installing-minecolonies-mod-on-your-original-minecraft-launcher\",\"5\":\"v-0932ecbb#download-forge\",\"6\":\"v-0932ecbb#run-forge-installer\",\"7\":\"v-0932ecbb#download-minecolonies\",\"8\":\"v-0932ecbb#navigate-to-mods-folder\",\"9\":\"v-0932ecbb#copy-minecolonies-to-mods\",\"10\":\"v-0932ecbb#do-the-same-thing-for-structurize\",\"11\":\"v-0932ecbb#cannot-add-modpack-without-external-installer\",\"12\":\"v-0932ecbb#run-minecraft-and-select-profile\",\"13\":\"v-117ff75c\",\"14\":\"v-3d245998\",\"15\":\"v-3d245998#快速指南\",\"16\":\"v-3d245998#第1步-补给营地-补给船\",\"17\":\"v-3d245998#第2步-市政厅\",\"18\":\"v-3d245998#第3步-建筑工\",\"19\":\"v-3d245998#第4步-酒馆\",\"20\":\"v-3d245998#第5步-食物\",\"21\":\"v-3d245998#第6步-林业师\",\"22\":\"v-3d245998#第7步-矿工\",\"23\":\"v-3d245998#第8步-仓库和信使\",\"24\":\"v-3d245998#第9步-其余的殖民地\",\"25\":\"v-3d245998#详细步骤\",\"26\":\"v-3d245998#放置补给船或补给营地\",\"27\":\"v-3d245998#市政厅\",\"28\":\"v-3d245998#建筑工具的教学视频-过时\",\"29\":\"v-3d245998#setting-up-your-colony\",\"30\":\"v-3d245998#step-1\",\"31\":\"v-3d245998#step-2\",\"32\":\"v-3d245998#step-3\",\"33\":\"v-3d245998#step-4\",\"34\":\"v-3d245998#final-notes\",\"35\":\"v-f61210c0\",\"36\":\"v-f61210c0#scanning-a-new-structure\",\"37\":\"v-f61210c0#placing-a-schematic\",\"38\":\"v-f61210c0#style-packs\",\"39\":\"v-f61210c0#the-pack-json\",\"40\":\"v-f61210c0#the-folder-structure\",\"41\":\"v-f61210c0#faq\",\"42\":\"v-f61210c0#how-do-i-install-custom-schematics-i-just-downloaded\",\"43\":\"v-f61210c0#what-and-where-is-the-scans-folder\",\"44\":\"v-f61210c0#where-is-the-schematic-folder\",\"45\":\"v-f61210c0#i-have-a-minecolonies-01e6a291-8a01-4763-bcae-f3a8797b1d52-cache-folder-what-is-that-for\",\"46\":\"v-f61210c0#i-have-a-blueprints-clients-folder-what-is-that-for\",\"47\":\"v-f61210c0#can-i-just-build-my-own-buildings-and-then-get-the-colonists-to-move-in\",\"48\":\"v-f61210c0#how-to-create-custom-huts\",\"49\":\"v-f61210c0#_1-18-custom-hut-filenames\",\"50\":\"v-f61210c0#custom-supply-ships-and-camps\",\"51\":\"v-f61210c0#hut-requirements\",\"52\":\"v-f61210c0#level-requirements-for-overworld-styles\",\"53\":\"v-f61210c0#level-requirements-for-nether-styles\",\"54\":\"v-f61210c0#plantation-fields\",\"55\":\"v-f61210c0#vertically-growing-plants-upwards-and-downwards\",\"56\":\"v-f61210c0#treeside-plants\",\"57\":\"v-f61210c0#bonemealed-fields\",\"58\":\"v-f61210c0#percentage-based-harvesting\",\"59\":\"v-f61210c0#tips-on-building\",\"60\":\"v-f61210c0#do\",\"61\":\"v-f61210c0#don-t\",\"62\":\"v-f61210c0#additional-information\",\"63\":\"v-f61210c0#how-to-override-some-built-in-schematics\",\"64\":\"v-f61210c0#how-to-use-custom-huts\",\"65\":\"v-f61210c0#how-to-allow-my-players-to-use-their-own-huts-schematics-on-my-server\",\"66\":\"v-f61210c0#how-to-allow-my-players-to-use-their-scanned-decoration-schematics-on-my-server\",\"67\":\"v-f61210c0#how-to-disable-built-in-schematics-completely\",\"68\":\"v-f61210c0#how-to-create-upgradable-decoration-schematics\",\"69\":\"v-f61210c0#how-to-use-custom-mineshafts-in-style-packs\",\"70\":\"v-f61210c0#how-to-make-custom-quarries-in-style-packs\",\"71\":\"v-f61210c0#how-to-create-parent-child-buildings-or-decorations\",\"72\":\"v-f61210c0#what-if-i-have-another-question\",\"73\":\"v-dd87a1e0\",\"74\":\"v-dd87a1e0#getting-started\",\"75\":\"v-dd87a1e0#tagging-and-prepping\",\"76\":\"v-dd87a1e0#adding-jigsaw-blocks\",\"77\":\"v-dd87a1e0#processors\",\"78\":\"v-dd87a1e0#street-json\",\"79\":\"v-dd87a1e0#decoration-json\",\"80\":\"v-dd87a1e0#placeholder-replacement-json\",\"81\":\"v-dd87a1e0#decay-example\",\"82\":\"v-384502bc\",\"83\":\"v-f45ff45a\"},\"fieldIds\":{\"h\":0,\"t\":1,\"c\":2},\"fieldLength\":{\"0\":[1,61],\"1\":[2,183],\"2\":[2,4],\"3\":[2],\"4\":[8,105],\"5\":[2,16],\"6\":[3,44],\"7\":[2,18],\"8\":[4,35],\"9\":[4,33],\"10\":[6,52],\"11\":[6,73],\"12\":[5,38],\"13\":[1],\"14\":[1,7],\"15\":[1,16],\"16\":[3,11],\"17\":[2,10],\"18\":[2,6],\"19\":[2,5],\"20\":[2,8],\"21\":[2,5],\"22\":[2,3],\"23\":[2,17],\"24\":[2,13],\"25\":[1,18],\"26\":[1,35],\"27\":[1,25],\"28\":[3,113],\"29\":[4],\"30\":[2,81],\"31\":[2,77],\"32\":[2,122],\"33\":[2,55],\"34\":[2,121],\"35\":[1,51],\"36\":[4,132],\"37\":[4,73],\"38\":[2,67],\"39\":[3,93],\"40\":[3,136],\"41\":[1,14],\"42\":[9,65],\"43\":[8,69],\"44\":[6,40],\"45\":[16,67],\"46\":[11,69],\"47\":[16,64],\"48\":[6,198],\"49\":[6,266],\"50\":[5,80],\"51\":[2,160],\"52\":[5,16],\"53\":[5,20],\"54\":[2,193],\"55\":[7,86],\"56\":[2,49],\"57\":[2,89],\"58\":[3,55],\"59\":[3],\"60\":[1,89],\"61\":[2,32],\"62\":[2],\"63\":[8,47],\"64\":[6,46],\"65\":[13,17],\"66\":[13,53],\"67\":[8,28],\"68\":[7,57],\"69\":[9,87],\"70\":[9,174],\"71\":[9,374],\"72\":[7,18],\"73\":[1,56],\"74\":[2,116],\"75\":[3,65],\"76\":[3,122],\"77\":[1,31],\"78\":[2,42],\"79\":[2,34],\"80\":[3,78],\"81\":[2,43],\"82\":[1],\"83\":[1]},\"averageFieldLength\":[4.000000000000001,66.77251900570529],\"storedFields\":{\"0\":{\"h\":\"开始\",\"t\":[\"模拟殖民地是一个交互式建筑模组,可让你在 Minecraft 中创建自己的繁荣城镇。它通过提供一切你需要的工具,让你的领导技能得以发挥。模拟殖民地提供了灵活性,让你创建一个与其他玩家独一无二的殖民地。有了如此多的选择,你每次都会打造一个不同的殖民地,适应任何生态区域,建在山内、山顶、海底,或是天空中。 唯一的限制就是你的想象力! 模拟殖民地拥有 NPC 工人,例如 Builders, Farmers, Fishers, Foresters, Miners, Smelters, Bakers, Cooks, Couriers, five types of animal herders, Composters, and many more,随着模组的发展,更多内容正在开发和添加。 It also includes specialized buildings such as the Warehouse, Residence, Town Hall, Barracks, Library, University, and even the School.\",\"提示\",\"目前Wiki正处于起步阶段,当前的进度是将英文Wiki的内容搬运过来后进行本地化。\"]},\"1\":{\"h\":\"GDLauncher 安装\",\"t\":[\"Installing MineColonies via GDLauncher, a custom Minecraft launcher, is the recommended method.\",\"GDLauncher Installation Getting GDLauncher Setting Up GDLauncher Account Create an Instance Installing MineColonies Mod Only Installing MineColonies Official Modpacks Getting the Modpack Installing the Modpack Getting GDLauncher GDLauncher can be downloaded here. Simply choose the version for your operating system and run the file.\",\"GDLauncher Download\",\"Setting Up GDLauncher Once you’ve installed GDLauncher, setting it up is simple.\",\"Account When you first open GDLauncher, it’ll ask you to log in to your Minecraft account. Enter your account information and click Sign In.\",\"Log In\",\"Create an Instance Once you’re logged in, you’ll be able to create an “instance.” Instances are GDLauncher’s way of separating each version of Minecraft and each different set of mods you wish to install.\",\"To create an instance, click the + button in the bottom left.\",\"Instance Button\",\"The steps past this point differ, depending on whether you’re installing the mod or the modpack.\",\"Installing MineColonies Mod Only Change the dropdowns to select the latest Forge version for the latest version of Minecraft. (At the time of this writing, the latest Minecraft version is 1.16.5.)\",\"Changing Dropdowns\",\"Next, click the white arrow in the bottom right. It’ll prompt you to enter a name for your instance; enter whatever you’d like.\",\"Instance Name\",\"Once you’re done choosing a name, click the bottom-right arrow again. Wait for GDLauncher to finish installing Forge. Once it’s done, you should see the instance in the main menu (along with any other instances). Right-click it and click Manage.\",\"Manage Button\",\"Once you’re in the Manage Instance menu, go to the Mods tab and click the Add Mod button at the top.\",\"Mods Tab\",\"Search for “MineColonies” at the top, then click Install. (You can click elsewhere on the mod’s icon to read the description.) GDLauncher will automatically install Structurize, a dependency of MineColonies.\",\"MineColonies Search\",\"You’re ready to play! To launch Minecraft, close out of the instance manager and left-click on the instance icon (in the main menu).\",\"Installing MineColonies Official Modpack When creating an instance, change from Vanilla to Twitch at the top. Search for “MineColonies Official”.\",\"Searching in Twitch Tab\",\"Hover over the top result and click Download Latest (or Explore / Versions to read the description). It’ll prompt you to choose a name for your instance.\",\"Instance Name\",\"When you’re done, click the white arrow in the bottom left. GDLauncher will start installing the modpack.\",\"Once GDLauncher is finished, you’re done! Just click on the instance icon to launch Minecraft. Have fun!\"]},\"2\":{\"h\":\"HMCL 启动器\",\"t\":[\"提示\",\"本文为中文Wiki原创\\n[[toc]]\"]},\"3\":{\"h\":\"Minecraft Java版\"},\"4\":{\"h\":\"Installing MineColonies Mod on your original Minecraft Launcher\",\"t\":[\"This process is for installing only the MineColonies mod in your original Minecraft launcher. You will not be able to connect to the MineColonies Official Servers due to the servers having a balanced variety of other mods as well.\",\"For connecting to the official server, install GDLauncher or the Curseforge Launcher. You can visit the CurseForge site for a zip file containing all mods (with the correct versions) we are currently using on the official server, as well as all the appropriate configs, scripts, and the server.dat file for our modpack official server. If all these additional mods, configs, scripts, and the server.dat are downloaded and installed manually, you will be able to connect to our official server.\",\"Installation of the MineColonies mod is very simple. It does require Minecraft Forge to be able to integrate mods into the Minecraft game, though.\",\"We cannot offer support on the installation of Minecraft Forge, however, there are many excellent (and more in-depth) tutorials online. Just Google 'how to install minecraft forge' to find some.\"]},\"5\":{\"h\":\"Download Forge\",\"t\":[\"Go to the Minecraft Forge Download page and download the latest version's installer (not the recommended version).\"]},\"6\":{\"h\":\"Run Forge Installer\",\"t\":[\"Run the downloaded version and make sure it's on Install Client (or Server if you plan to run a Minecraft server). The installation path is preset according to Minecraft's standard installation path. If you have it installed in a different directory, change the installation directory. When it's done installing, you will see a complete message.\"]},\"7\":{\"h\":\"Download MineColonies\",\"t\":[\"Go to the MineColonies CurseForge Download page site and download the latest 1.16.5 alpha version of MineColonies.\"]},\"8\":{\"h\":\"Navigate to Mods Folder\",\"t\":[\"On your computer, go to the .minecraft/mods folder. To be able to find this folder, just click on the start button and in the search box type: %appdata% and hit \\\"search\\\". It will open the folder where you can find the .minecraft folder. Open this folder and inside you will find the mods folder.\"]},\"9\":{\"h\":\"Copy MineColonies to Mods\",\"t\":[\"Once you are in the .minecraft/mods folder, copy the downloaded MineColonies file you downloaded in the Download MineColonies step and paste it here. Note: DO NOT extract the file if the option appears. Just put the .jar file in here without extracting its contents.\"]},\"10\":{\"h\":\"Do the Same Thing for Structurize\",\"t\":[\"Follow the last three steps, except for Structurize (which MineColonies needs to work). Find the download page for Structurize here.\",\"MineColonies doesn't always accept the latest version of Structurize. To ensure you have the required version, first, click on the MineColonies file name (on the Curseforge website). You'll be taken to the changelog, where it should say the accepted Structurize version at the top. Download that exact version.\"]},\"11\":{\"h\":\"Cannot Add Modpack Without External Installer\",\"t\":[\"If you are adding the entire modpack to be able to play on the official server, you will require an external launcher to download the pack. The Curseforge launcher works on Windows or macOS. Other options include GDlauncher or MultiMC, both offering Windows, macOS and Linux support. Finally, if you can not or do not wish to 'install' a launcher you can use CMPDL that will run a small Java program to download the required modpack.\",\"Unfortunately, manually 'installing' modpacks is no longer an option as Curseforge no longer distributes mods in the downloaded zip files for modpacks due to licensing issues.\"]},\"12\":{\"h\":\"Run Minecraft and Select Profile\",\"t\":[\"Run your original Minecraft launcher. Make sure you have the Forge profile loaded and hit play. (You might need to go to Installations and create a new installation first.)\",\"That's it. If you followed these steps, you are ready to play MineColonies!\"]},\"13\":{\"h\":\"数据包\"},\"14\":{\"h\":\"入门\",\"t\":[\"本教程假设你已经安装了mod。如果你想了解如何安装官方整合包, 你可以在Java (Forge)、GDLauncher以及Curseforge Launcher上找到相应的安装说明。\"]},\"15\":{\"h\":\"快速指南\",\"t\":[\"在开始新的殖民地之前,你应该找到一个理想的位置。你需要足够大的空间来建设一个完整的城市,至少8x8区块大小,并且地形较为平坦。\",\"你还应该尽可能多的收集资源,包括木材、石头、煤炭、铁矿石、花朵、线、皮革、羊毛、树苗和食物等。\"]},\"16\":{\"h\":\"第1步:补给营地/补给船\",\"t\":[\"一旦你选择了殖民地的位置,你必须放置一个补给船或者补给营地。在同一个世界中你只能放置其中一个。补给营地/船提供了你正式启动殖民地所需的市政厅方块。它们还提供了在建设殖民地过程中可能需要的一些其他物资。一旦你获得了市政厅方块和建筑工具,剩下的营地/船就只是个装饰物了。你可以选择保留或拆除它。\"]},\"17\":{\"h\":\"第2步:市政厅\",\"t\":[\"市政厅方块实际上是创建殖民地的核心。它还充当殖民地的中心。这是你开始使用建筑工具放置建筑的地方。使用建筑工具可以确保你能够清楚地看到建筑将在哪里,朝向哪个方向,以及它是否位于正确的Y层级(一些建筑需要抬升到正确的Y层级)。\",\"一旦放置了市政厅方块,你将开始获得最初的4名居民。\"]},\"18\":{\"h\":\"第3步:建筑工\",\"t\":[\"在开始建设殖民地之前,你需要一个建筑工。建筑工必须先建造他们自己的建筑工小屋,然后才能建造其他小屋,而且他们不能将小屋建造或升级到高于他们自己小屋的等级。\"]},\"19\":{\"h\":\"第4步:酒馆\",\"t\":[\"你的市民需要一个居住和睡觉的地方,因此建议接下来建造一个酒馆。酒馆还允许游客来到你的殖民地,你可以招募他们留下成为居民。\"]},\"20\":{\"h\":\"第5步:食物\",\"t\":[\"你的殖民地需要的下一个重要物资是食物。获得食物的最快方式是建造一个渔夫小屋。你也可以建造农场或其中一种牲畜饲养工,但是建造一个渔夫小屋更快。如果你不想亲自为殖民者喂食(或烹饪食物),建造一个餐厅也是明智的选择。\"]},\"21\":{\"h\":\"第6步:林业师\",\"t\":[\"如果您更青睐木材,建议接下来建造一个护林员小屋。这样,您的新护林员就可以开始为您的下一个建筑和工具等项目采集木材。\"]},\"22\":{\"h\":\"第7步:矿工\",\"t\":[\"石材和矿石是殖民地的另一个主要需求,因此建造一个矿井是下一个合乎逻辑的步骤。\"]},\"23\":{\"h\":\"第8步:仓库和信使\",\"t\":[\"在这一点上,您可能已经厌倦了将所有资源交给建筑师,然后再从渔夫、林业师、矿工等处取回。您可能还想将物品存放在一个地方。好吧,{% building_link warehouse %} 和 {% building_link courier %} 就是您正在寻找的解决方案!{% worker_link courier %} 在仓库和所有工作场所之间传送物品。剪贴板和资源卷轴可能会有帮助!\"]},\"24\":{\"h\":\"第9步: 其余的殖民地\",\"t\":[\"在这一步,您需要根据您的游戏方式和殖民地的需求来决定下一步做什么。但是您有几个方向可供选择。一旦获得七名居民,您可能会受到袭击,因此可能想要建造一个卫兵塔,或者可能有一名生病的居民,想要建造一个医院,或者可能决定建造一个锯木厂来为工人制作所需的物品。或者您可能只是想拥有一个特定的工人,或者找到了一个适合建造特定小屋的好地方。您决定您的殖民地将如何发展!\"]},\"25\":{\"h\":\"详细步骤\",\"t\":[\"如果您已经到达这里,恭喜你! 您已经安装了模拟殖民地,并准备好踏上一场探险之旅,探索、征服并建立自己的殖民地。努力工作,将其打造成一个繁荣的城镇。磨练您的领导技能,不断壮大成为一个城市!最后,您能成为一位宏伟的领导者,最终实现大都市的目标吗?(查看游戏中的模拟殖民地成就。)\",\"为了避免错误和挫折,在开始游戏之前,请仔细阅读整个指南。\"]},\"26\":{\"h\":\"放置补给船或补给营地\",\"t\":[\"要放置补给船,您需要拥有足够大的水域(至少32x20)。 要放置补给营地 ,您需要拥有足够大、平坦、清晰的土地(至少16x17方块)。\",\"当您放置供给船/营地时,它将生成一个包含市政厅方块和建筑工具的箱子。 一旦放置了补给船/营地,就不能在同一个世界中放置另一个了。\",\"通过直接右键单击水域/地面上的物品来放置供给船/营地 - 如果您已经有一个建筑工具,请不要在此时使用它(您预计从营地/船中获取工具,而不是已经拥有一个)。\",\"提示\",\"如果您无法放置供给营地/船,请逐块尝试:向右、向左、更近或更远离您清理的区域。该区域不能包含任何洞穴,也不能有花朵、草、蕨类、海藻、珊瑚等。\"]},\"27\":{\"h\":\"市政厅\",\"t\":[\"一旦放置了市政厅,您殖民地的受保护区域将成为以您第一次放置市政厅方块的区块为中心的半径为4个区块的正方形(使用默认配置)。因此,请仔细规划您想要放置市政厅的位置。从该区块向每个方向延伸64个方块(4x4区块)将是您受保护的城镇区域,包括山脉、丘陵、湖泊、海洋、洞穴、世界生成的结构等,从基岩到天际限制。\",\"提示\",\"您在整个模组中最需要的工具是建筑工具(请查看我们的建筑工具页面)。从补给船/营地获取一个,或者制作另一个,以便您可以将所有小屋(包括市政厅)放置在完美的位置。\"]},\"28\":{\"h\":\"建筑工具的教学视频(过时)\",\"t\":[\"Due to the protected area of each colony, you have to carefully scout your surrounding to make sure you are clear of any other colonies nearby preventing you from placing your {% building townhall %} or limiting your colony area in that direction (in multiplayer, etc.). If there is another colony too close to your current position, you won't be able to place a {% building townhall %}.\",\"Location info of the next closest colony exists in the debug screen (displayed when you press F3). If there is a colony close to your current position, it will also show you the required distance away to place your {% building townhall %}.\",\"For example, in the official MineColonies server it will be the default 4 chunk radius (4 + 4 + 1 {center Chunk where {% building townhall %} was placed} = 9 chunks or 144 total blocks required). It therefore, will tell you: \\\"Next colony is XXX blocks away. (272 required to place a colony).\\\"\",\"Now, after you have explored, thought carefully, planned, and found the perfect spot to start your colony, let's take a look at the steps to get your colony running!\"]},\"29\":{\"h\":\"Setting Up Your Colony\"},\"30\":{\"h\":\"Step 1\",\"t\":[\"Get enough materials and craft your Supply Ship/Camp, then place it by right-clicking a block with it (do not use the build tool, if you happen to already have one). There will be a chest (or rack) inside the placed Ship/Camp with a {% building townhall %} block and a build tool.\",\"Hint: Gather as many materials as possible to give to your {% worker_link builder %} when they start building. They will ask you for all kinds of materials for each building or upgrade, depending on the style of building you have chosen. The materials needed for most styles will be mainly wood, cobblestone, and torches for the lower levels. Further upgrades will require more elaborate materials.\"]},\"31\":{\"h\":\"Step 2\",\"t\":[\"After you have carefully decided where you want to place your 市政厅 (remember, the position where you placed the {% building townhall %} block at first will be the center of your colony's protected area. Once placed, the area will be set and cannot be changed), use your build tool to place the {% building townhall %}. Once you commit to the placement of the {% building townhall %} (the green checkmark), the {% building townhall %} block will be placed. To officially start a colony, you need to right-click on the block, then select Create New Colony. Once you've done this, your initial four citizens will start appearing!\",\"You can now right-click the {% building townhall %} block again to look what else you can configure in your colony, like your colony name!\",\"You can see the full layout of the GUI here.\"]},\"32\":{\"h\":\"Step 3\",\"t\":[\"Before any other building can be built, you must craft the {% building_link builder %} block and use your build tool to place it. Once you commit to the placement of the Builder's Hut (the green checkmark), the block will be placed and a Builder will be automatically assigned (or you can manually assign one with the best traits for a Builder if you changed this in the setting tab in the {% building townhall %} its GUI).\",\"You now officially have a {% worker_link builder %}! CONGRATULATIONS!\",\"When accessing the {% building builder %} block by right-clicking on it, you will see a GUI with different options:\",\"You will have to click Build Options on the {% building builder %}, then click Build Building. This will give your new {% worker builder %} the build assignment so they can build their own hut first. If the {% building builder %} is not built, the {% worker builder %} cannot build any other buildings.\",\"The {% worker builder %} will ask for the materials they need. Right-click on them when they have a red icon above their head to see the materials they currently need.\",\"Hint: If you see that the Builder hasn't finished a build order and you don't see them asking for any materials, go to the Builder's Hut, recall the Builder, and wait a bit to see what they need. Also, check page 2 of the Builder's Hut GUI and see what resources are in red (those are missing resources).\"]},\"33\":{\"h\":\"Step 4\",\"t\":[\"Once the Builder has finished their hut, you're ready to start building any other building you want! Just craft the desired block and use your build tool to place the building. Once it's placed, go into the GUI for the new block, click Build Options, and then click Build Building. It's that simple!\",\"Hint: Consider upgrading the Builder's Hut to level 2 as soon as you can so the Builder can upgrade other buildings.\"]},\"34\":{\"h\":\"Final Notes\",\"t\":[\"You have now completed the most important steps to start and create your colony!\",\"Your question now is probably, \\\"What to build next?\\\" The 市政厅, {% building_link mine %}, {% building_link lumberjack %}, {% building_link farm %}, {% building_link fisher %}, {% building_link guardtower %}, {% building_link courier %}, {% building_link bakery %}, {% building_link restaurant %}, and more are probably good places to start.\",\"But you start with only 4 citizens! Now what? Well, the next step after your 4 citizens are employed and are working hard is to plan and place the {% building_link house %}. This will give you additional citizens for each level of a House you build in your colony (after your inital four citizens are housed)! Now, what do you do with so many citizens? You cannot assign more than 1 worker per hut. Therefore, consider building additional huts for more Miners, Foresters, Builders, Farmers, Fishers, and many more! If you struggle with keeping track of what everyone needs, consider making a Clipboard and Resource Scroll. Though you only need one Clipboard, you can make a Resource Scroll for each Builder to keep track of their needs!\",\"Hint: Upgrade your huts to the highest level possible (level 5 for all of them except the {% building_link tavern %}) to get achievements (and increase the speed at which the worker levels).\"]},\"35\":{\"h\":\"原理图\",\"t\":[\"Schematics are files containing block and entity information of a certain area a player scanned with the Scan Tool in-game. You can use the scan tool and scan ANY building or structure you like in singleplayer or multiplayer and then have your {% worker_link builder %} build it for you (provided that you give them all the materials needed, of course).\"]},\"36\":{\"h\":\"Scanning a New Structure\",\"t\":[\"Once you have a structure or area you want to scan to have your Builder build, you need to determine the exact area that needs to be scanned.\",\"Take your Scan Tool and left-click the lowest left block of the area and then place a block (it can be a placeholder block in the top right corner and right-click on it.\",\"Then click in the air to see the entire structure.\",\"Once you have the full area set, you can press Escape and the white outline of the scan area will stay in place. Go around it to double-check that everything you want is in the scan area. If the area contains multiple eligible anchor blocks (hut blocks, tag anchors or decoration controllers), you need to shift+left click the correct anchor block (e.g. the barracks hut block in a barracks schematic). When you are ready, you can right-click in the air again to get the GUI to display where you can enter your scan name. Then press the green checkmark to save the scan.\",\"SPECIAL NOTE: Do not rename the file after scanning. It MUST be scanned with the correct name.\",\"{% version \\\"1.18.2\\\" before=true %} Scans are saved in ../minecolonies/scan/new/.... Once the scans are saved, they need to be moved to the ../structurize/schematics/(folder)/file if they are a custom hut. {% endversion %}\",\"{% version \\\"1.19\\\" after=true %} Scans are saved in */blueprints//scans. Once the scans are saved, they need to be placed in a style pack, preferably in the correct folder. See the style packs chapter for more details. {% endversion %}\"]},\"37\":{\"h\":\"Placing a Schematic.\",\"t\":[\"{% version \\\"1.18.2\\\" before=true %} Once you have scanned a structure, you can use the build tool to have your {% worker_link farmer %} build it for you. Once you right-click with the build tool, you will have to select \\\"My Schematics\\\" (in the left dropdown menu) and on the right dropdown menu you will see the scans that you have made. There is also a Rename button where you can change the name of the scan. You can also delete any of your saved scans. {% endversion %}\",\"{% version \\\"1.19\\\" after=true %} The scanned structure can be found in the build tool under the style pack with your own name. Click \\\"Switch Pack\\\" -> \\\"\\\" (icon looks like the scan tool) -> \\\"scans\\\". {% endversion %}\",\"{% version \\\"1.19\\\" after=true %}\"]},\"38\":{\"h\":\"Style packs\",\"t\":[\"Styles are now structured in so-called style packs. This is similar to a resource pack or data pack, in that it has a file with some metadata about the style (the name, a description, optionally a link to an image, etc.), and a folder structure with the actual files.\",\"Stylepacks live in the blueprints folder, within your Minecraft folder. This folder already contains one style pack: One with your player's name. This style pack will contain your scanned files, and can be used to test schematics. In order to make a new style, you need to make a new schematic pack.\"]},\"39\":{\"h\":\"The pack.json\",\"t\":[\"This json file contains metadata describing the style:\",\"Key Name\",\"Type\",\"Description\",\"\\\"version\\\"\",\"number\",\"Pack version, start at 1, increase it whenever you make a new version of the pack\",\"\\\"pack-format\\\"\",\"number\",\"Descriptor for the pack format, needs to be 1 at the moment\",\"\\\"desc\\\"\",\"string\",\"Description of the style. This will be visible in the build tool to explain what your style is about\",\"\\\"authors\\\"\",\"array of strings\",\"Names of the authors, in order to credit them. This is visible in the build tool\",\"\\\"mods\\\"\",\"array of strings\",\"Names of used mods (ids). The style is not visible if one of those mods is not installed, to prevent broken schematics\",\"\\\"name\\\"\",\"string\",\"The name of the style pack\",\"\\\"icon\\\"\",\"string\",\"The name of the file with an icon which is showed in the style packs selection screen\",\"You have to increase the version number whenever you release your pack for others to use, or whenever you install a new version onto a server. You don't need to increase it when testing changes purely in single-player.\"]},\"40\":{\"h\":\"The folder structure\",\"t\":[\"There are several folders, separating the buildings and decorations in categories. Each of the folders at the highest level can have a couple of icons, named icon.png and icon_disabled.png. Those are shown in the button bar right above the hot bar.\",\"You can download a template folder structure from github (template.zip), which contains the icons used for the official styles already. That github page also contains examples how different styles are structured. An overview with which buildings go into which folders can also be found here.\",\"With a few specific exceptions, you don't have to strictly follow the standard folder structure -- but it's recommended to stick to it when possible to make it easier for others to find specific buildings and decorations. But you're free to make extra folders to help group separate but related sets together, especially if you don't want them to appear directly as alternate buildings. E.g. if you have two styles of roads, one for early game and one for later game, you could put them in infrastructure/roads/simple/ and infrastructure/roads/nice/.\",\"Note: It's strongly recommended to have each folder only contain files or subfolders, but not both. While it is possible to mix them, the build tool doesn't display it as nicely. {% endversion %}\"]},\"41\":{\"h\":\"FAQ\",\"t\":[\"This is a FAQ section to answer common questions regarding schematics in MineColonies.\"]},\"42\":{\"h\":\"How do I install custom schematics I just downloaded?\",\"t\":[\"{% version \\\"1.18.2\\\" before=true %} Those custom schematics go in */structurize/schematics. Unzip the zip you downloaded, and put all subfolders in the schematics folder. That folder should contain folders like , decorations, walls, supplycamps etc. (depending on which style you installed) {% endversion %}\",\"{% version \\\"1.19\\\" after=true %} The style pack goes in the \\\"blueprints\\\" folder. Unzip the zip, and find the folder containing the pack.json (either the unzipped folder, or a folder directly in it, depending on how the zip was made). This folder needs to be placed in */blueprints directly, not any subfolder thereof. {% endversion %}\"]},\"43\":{\"h\":\"What and where is the scans folder?\",\"t\":[\"The scans folder is where the schematics are saved after performing a scan using the scan tool in MineColonies. {% version \\\"1.18.2\\\" before=true %} This is a client-side-only directory which is located in Minecraft's folder under: */structurize/scans/. Freshly scanned schematics can be found in */structurize/scans/new/ unless they have been renamed in-game. (If they aren't there, look in */minecolonies/scans/new.) This directory is shared between all your singleplayer games and multiplayer games. {% endversion %}\",\"{% version \\\"1.19\\\" after=true %} This is located in your own style pack in Minecraft's folder under: */blueprints//scans/. This folder is shared between all your singleylayer and multiplayer games. {% endversion %}\"]},\"44\":{\"h\":\"Where is the schematic folder?\",\"t\":[\"{% version \\\"1.18.2\\\" before=true %} Custom schematics need to be copied inside the schematic folder. For both singleplayer and multiplayer games, the folder is under */structurize/schematics/. {% endversion %}\",\"{% version \\\"1.19\\\" after=true %} Custom schematics need to be placed in a (custom) style pack. For more information about that, look there. {% endversion %}\"]},\"45\":{\"h\":\"I have a \\\"*/minecolonies/01e6a291-8a01-4763-bcae-f3a8797b1d52/cache/\\\" folder, what is that for?\",\"t\":[\"{% version \\\"1.18.2\\\" before=true %} When playing on a server, the server needs to send the schematics to the players so that the build tool's preview works. Those schematics are saved in Minecraft's directory under */structurize/{ServerUUID}/cache/, where ServerUUID is the unique identifier of the server. Those directories can be safely removed as they are automatically created by the server when needed. {% endversion %}\",\"{% version \\\"1.19.2\\\" after=true %} This was previously used to save schematics from a server and was automatically created as needed. However, this is no longer needed in 1.19.2 and later, so this folder can be removed safely. {% endversion %}\",\"{% version \\\"1.19.2\\\" after=true %}\"]},\"46\":{\"h\":\"I have a \\\" /blueprints/clients/ \\\" folder, what is that for?\",\"t\":[\"On a server, this folder holds a cached copy of the decorations and shapes used by your players -- possibly even including entire style packs that they've installed themselves (though note that for game balance purposes they won't be able to make functional buildings this way; these must be installed \\\"properly\\\" on the server to be usable).\",\"You can delete these folders at any time (though preferably when the player is not logged in); they will be re-created as needed. {% endversion %}\"]},\"47\":{\"h\":\"Can I just build my own buildings and then get the colonists to \\\"move in\\\"?\",\"t\":[\"No. Functional buildings must be constructed by the Builder. You have to either use one of the prefabs provided by existing style packs (either included in the mod or via various addons installed separately), or design your own custom huts as an explicitly separate step (typically in a special creative designing world), before getting the builder to place them in your real colony. MineColonies is more like an RTS than it is like classic Minecraft building.\"]},\"48\":{\"h\":\"How to create custom huts ?\",\"t\":[\"To create new schematics, there are some guidelines that you must follow: the scans MUST have the same footprint for each level of the hut; the scans must contain the hut's block, for example the Builder's Hut block for the {% building_link builder %}; the hut block need to be exactly at the same place and have the same rotation for each level.\",\"Ensure you are building your custom hut outside of any colony borders. When placing the hut block inside the custom hut, shift+right click to place it without activating it. Then you can scan and save the schematic.\",\"{% version \\\"1.18.2\\\" before=true %} The scans' filenames need to follow the naming convention: {StyleName}/{HutName}{HutLevel}.blueprint. For example, for the Builder's Huts with the MyOwn style, we would have:\",\"myown/builder1.blueprintmyown/builder2.blueprintmyown/builder3.blueprintmyown/builder4.blueprintmyown/builder5.blueprint\",\"Note: In the build tool, the extension is hidden. HutName can be any of the listed huts below. The maximum level is 5 (except for the Tavern; its max level is 3).\",\"Alternative designs can be placed under a style name like \\\"myownalternative\\\", or a subfolder like myown/alt/*. {% endversion %}\",\"Once ready, move the myown folder into the blueprints folder and start your game. You should be able to see it with the the build tool.\",\"Note: Remember that you need the appropriate hut in your inventory to be able to see the schematics in the build tool.\",\"{% version \\\"1.19\\\" after=true %} The naming for the buildings is not strict anymore. The only things that are important are that they are named consistently, that their names end with the hut level, and that you only use lowercase letters in the hut names (avoid capitals, spaces, or other punctuation). Alternate designs can just have a different name than the primary one. E.g. if you named the level 1 builder's hut \\\"builder1\\\", an alternative version could be called \\\"altbuilder1\\\" or \\\"builderalt1\\\" or even something completely different (\\\"constructionworker1\\\"). Don't use numbers anywhere in the name except right at the end for the level. E.g. \\\"alt1builder1\\\" won't work as expected.\",\"Once ready, you need to make a style pack out of them. The schematics are visible in the build tool without the hut block, but you can't view them in survival mode (their button is greyed out, with an error message that you need to have the hut block). {% endversion %}\"]},\"49\":{\"h\":\"[1.18] Custom Hut Filenames\",\"t\":[\"Here is a full list, up-to-date as of 14 October 2022, of the building names. Please note do not use capital letters in hut names.\",\"Level 1\",\"Level 2\",\"Level 3\",\"Level 4\",\"Level 5\",\"archery1\",\"archery2\",\"archery3\",\"archery4\",\"archery5\",\"alchemist1\",\"alchemist2\",\"alchemist3\",\"alchemist4\",\"alchemist5\",\"baker1\",\"baker2\",\"baker3\",\"baker4\",\"baker5\",\"barracks1\",\"barracks2\",\"barracks3\",\"barracks4\",\"barracks5\",\"barrackstower1\",\"barrackstower2\",\"barrackstower3\",\"barrackstower4\",\"barrackstower5\",\"beekeeper1\",\"beekeeper2\",\"beekeeper3\",\"beekeeper4\",\"beekeeper5\",\"blacksmith1\",\"blacksmith2\",\"blacksmith3\",\"blacksmith4\",\"blacksmith5\",\"builder1\",\"builder2\",\"builder3\",\"builder4\",\"builder5\",\"chickenherder1\",\"chickenherder2\",\"chickenherder3\",\"chickenherder4\",\"chickenherder5\",\"citizen1\",\"citizen2\",\"citizen3\",\"citizen4\",\"citizen5\",\"combatacademy1\",\"combatacademy2\",\"combatacademy3\",\"combatacademy4\",\"combatacademy5\",\"composter1\",\"composter2\",\"composter3\",\"composter4\",\"composter5\",\"concretemixer1\",\"concretemixer2\",\"concretemixer3\",\"concretemixer4\",\"concretemixer5\",\"cook1\",\"cook2\",\"cook3\",\"cook4\",\"cook5\",\"cowboy1\",\"cowboy2\",\"cowboy3\",\"cowboy4\",\"cowboy5\",\"crusher1\",\"crusher2\",\"crusher3\",\"crusher4\",\"crusher5\",\"deliveryman1\",\"deliveryman2\",\"deliveryman3\",\"deliveryman4\",\"deliveryman5\",\"dyer1\",\"dyer2\",\"dyer3\",\"dyer4\",\"dyer5\",\"enchanter1\",\"enchanter2\",\"enchanter3\",\"enchanter4\",\"enchanter5\",\"farmer1\",\"farmer2\",\"farmer3\",\"farmer4\",\"farmer5\",\"fisherman1\",\"fisherman2\",\"fisherman3\",\"fisherman4\",\"fisherman5\",\"fletcher1\",\"fletcher2\",\"fletcher3\",\"fletcher4\",\"fletcher5\",\"florist1\",\"florist2\",\"florist3\",\"florist4\",\"florist5\",\"glassblower1\",\"glassblower2\",\"glassblower3\",\"glassblower4\",\"glassblower5\",\"graveyard1\",\"graveyard2\",\"graveyard3\",\"graveyard4\",\"graveyard5\",\"guardtower1\",\"guardtower2\",\"guardtower3\",\"guardtower4\",\"guardtower5\",\"hospital1\",\"hospital2\",\"hospital3\",\"hospital4\",\"hospital5\",\"library1\",\"library2\",\"library3\",\"library4\",\"library5\",\"lumberjack1\",\"lumberjack2\",\"lumberjack3\",\"lumberjack4\",\"lumberjack5\",\"mechanic1\",\"mechanic2\",\"mechanic3\",\"mechanic4\",\"mechanic5\",\"miner1\",\"miner2\",\"miner3\",\"miner4\",\"miner5\",\"mysticalsite1\",\"mysticalsite2\",\"mysticalsite3\",\"mysticalsite4\",\"mysticalsite5\",\"netherworker1\",\"netherworker2\",\"netherworker3\",\"netherworker4\",\"netherworker5\",\"plantation1\",\"plantation2\",\"plantation3\",\"plantation4\",\"plantation5\",\"rabbithutch1\",\"rabbithutch2\",\"rabbithutch3\",\"rabbithutch4\",\"rabbithutch5\",\"sawmill1\",\"sawmill2\",\"sawmill3\",\"sawmill4\",\"sawmill5\",\"school1\",\"school2\",\"school3\",\"school4\",\"school5\",\"shepherd1\",\"shepherd2\",\"shepherd3\",\"shepherd4\",\"shepherd5\",\"sifter1\",\"sifter2\",\"sifter3\",\"sifter4\",\"sifter5\",\"smeltery1\",\"smeltery2\",\"smeltery3\",\"smeltery4\",\"smeltery5\",\"stonemason1\",\"stonemason2\",\"stonemason3\",\"stonemason4\",\"stonemason5\",\"stonesmeltery1\",\"stonesmeltery2\",\"stonesmeltery3\",\"stonesmeltery4\",\"stonesmeltery5\",\"swineherder1\",\"swineherder2\",\"swineherder3\",\"swineherder4\",\"swineherder5\",\"tavern1\",\"tavern2\",\"tavern3\",\"N/A\",\"N/A\",\"townhall1\",\"townhall2\",\"townhall3\",\"townhall4\",\"townhall5\",\"university1\",\"university2\",\"university3\",\"university4\",\"university5\",\"warehouse1\",\"warehouse2\",\"warehouse3\",\"warehouse4\",\"warehouse5\"]},\"50\":{\"h\":\"Custom Supply Ships and Camps\",\"t\":[\"The process for custom supply ships and camps is slightly different:\",\"{% version \\\"1.18.2\\\" before=true %}\",\"Camp or Ship\",\"File Name and Path\",\"Camp\",\"structurize/schematics/supplycamp/myownsupplycamp\",\"Ship\",\"structurize/schematics/supplyship/myownsupplyship\",\"So, for example, the path would be structurize/schematics/wildwest/builder1 for the Builder's Hut level 1 and structurize/schematics/supplycamp/wildwestsupplycamp for the supply camp. {% endversion %}\",\"{% version \\\"1.19\\\" after=true %}\",\"Camp or Ship\",\"File Name and Path\",\"Camp\",\"blueprints//decorations/supplies/supplycamp\",\"Ship\",\"blueprints//decorations/supplies/supplyship\",\"Nether Ship\",\"blueprints//decorations/supplies/nethership\",\"So, for example, the path would be blueprints/wildwest/fundamentals/builder1 for the Builder's Hut level 1 and blueprints/wildwest/decorations/supplies/supplycamp for the supply camp. {% endversion %}\",\"You should always apply a groundlevel tag when making a supply camp/ship. The rules for guessing where the ground level is without the tag change depending whether they're placed by the build tool or the supply item, for legacy reasons.\"]},\"51\":{\"h\":\"Hut Requirements\",\"t\":[\"Building\",\"Requirements\",\"Suggested\",\"{% building_link archery %}\",\"1 archery dummy (a hay bale with a button on it); 1 bed per level\",\"at least 1 standing position per level (a glowstone block, or any block tagged with work)\",\"{% building_link alchemist %}\",\"1 brewing stand per level; 2 soul sand per level starting at level 2 (with 4 soul sand); leaves next to logs, i.e. \\\"trees\\\"\",\"{% building_link bakery %}\",\"1 furnace\",\"{% building_link barracks %}\",\"1 Barracks Tower per level (up to level 4)\",\"{% building_link barrackstower %}\",\"1 bed per level\",\"{% building_link builder %}\",\"1 rack per level\",\"{% building_link combatacademy %}\",\"1 combat dummy per level (a pumpkin on top of a bale of hay); 1 bed per level\",\"{% building_link composter %}\",\"1 compost barrel per level\",\"{% building_link concretemixer %}\",\"3 blocks of flowing water with solid blocks below and air blocks above\",\"{% building_link dyer %}\",\"1 furnace\",\"{% building_link fisher %}\",\"Hut block placed on a block at water level\",\"At least 6x5x1 unobstructed body of water if integrating fishing location in the schematic\",\"{% building_link flowershop %}\",\"4 compost blocks per level\",\"{% building_link glassblower %}\",\"1 furnace per level\",\"{% building_link graveyard %}\",\"Named Graves, with the amount increasing per level\",\"14 named graves at level 1, 18 named graves at level 2, 27 named graves at level 3, 36 named graves at level 4, 50 named graves at level 5\",\"{% building_link guardtower %}\",\"1 bed for aesthetics\",\"{% building_link hospital %}\",\"1 bed per level\",\"{% building_link house %}\",\"1 bed per level\",\"{% building_link library %}\",\"Bookshelves\",\"{% building_link mine %}\",\"A few starting ladders where the shaft's ladders will go with the tags [cobble] and [ladder]\",\"{% building_link nethermine %}\",\"A nether portal, and an enclosed 1x1x2 room\",\"{% building_link plantation %}\",\"12 per level, 4 for each of sugar cane, cactus and bamboo\",\"{% building_link restaurant %}\",\"1 furnace per level\",\"{% building_link school %}\",\"2 carpets per level\",\"4 carpets per level\",\"{% building_link smeltery %}\",\"1 furnace per level\",\"{% building_link stonesmeltery %}\",\"1 furnace per level\",\"{% building_link tavern %}\",\"4 beds and a dining room\",\"Horizontal barrels and/or vertical barrels\",\"{% building_link university %}\",\"Bookshelves\",\"{% building_link warehouse %}\",\"Racks (more each level)\",\"Some buildings may also require tags to be set on certain blocks using the tag tool.\"]},\"52\":{\"h\":\"Level Requirements for Overworld Styles\",\"t\":[\"Level\",\"Requirements\",\"Level 1\",\"Very Easy - Wooden\",\"Level 2\",\"Easy - Iron\",\"Level 3\",\"Medium - Nether\",\"Level 4\",\"Difficult - Ocean\",\"Level 5\",\"Very Difficult - End\"]},\"53\":{\"h\":\"Level Requirements for Nether Styles\",\"t\":[\"Level\",\"Requirements\",\"Level 1\",\"Very Easy - Nether\",\"Level 2\",\"Easy - Rarer Nether\",\"Level 3\",\"Medium - Overworld\",\"Level 4\",\"Difficult - Ocean\",\"Level 5\",\"Very Difficult - End\",\"{% version \\\"1.19.2\\\" after=true %}\"]},\"54\":{\"h\":\"Plantation Fields\",\"t\":[\"In 1.19.2 and beyond, the plantation has been changed to include fields, just like the {% worker_link farmer %}. However, unlike the {% worker_link farmer %}, these fields can be completely free-form and created by the style designers. Each field has certain requirements for the {% worker_link planter %} to do their work successfully.\",\"Each plant has 2 separate tags: a field tag and a work tag. The field tags are given to the plantation field block to define what plants this field handles. The work tag is given based on the implementation of the field.\",\"A field can have as many field tags as you want, but not 2 of the same.\",\"Plant\",\"Field tag\",\"Work tag\",\"Maximum work tags\",\"Sugar cane\",\"sugar_field\",\"sugar\",\"20\",\"Cactus\",\"cactus_field\",\"cactus\",\"20\",\"Bamboo\",\"bamboo_field\",\"bamboo\",\"20\",\"Cocoa\",\"cocoa_field\",\"cocoa\",\"5 (totalling 20 positions; details below)\",\"Vine\",\"vine_field\",\"vine\",\"20\",\"Kelp\",\"kelp_field\",\"kelp\",\"20\",\"Seagrass\",\"seagrass_field\",\"seagrass\",\"121 (11 x 11 area)\",\"Sea Pickles\",\"seapickle_field\",\"seapickle\",\"10\",\"Glow Berries\",\"glowb_field\",\"glowb_vine\",\"20\",\"Weeping Vines\",\"weepv_field\",\"weepv_vine\",\"20\",\"Twisting Vines\",\"twistv_field\",\"twistv_vine\",\"20\",\"Crimson Plants\",\"crimsonp_field\",\"crimsonp_ground\",\"121 (11 x 11 area)\",\"Warped Plants\",\"warpedp_field\",\"warpedp_ground\",\"121 (11 x 11 area)\",\"The {% worker_link planter %} will always attempt to walk to any adjacent air block around the planting position. If none of the adjacent positions are air, the planter will attempt to walk to the block itself. This prevents the {% worker_link planter %} from standing on the block itself whilst, for example, placing a block down like cactus, after which the {% worker_link planter %} would be standing inside of the plant.Note: Make sure that the {% worker_link planter %} can always get within about 4 blocks of the desired position. If not, they will teleport around to reach the position, which may not always work.\",\"X\",\"X\",\"P\",\"X\",\"X\",\"X = walking position\",\"P = planting position\",\"Note: Kelp is an exception to this behaviour. To prevent planters from diving into the water, the planter will walk to the first air block above the work tagged block and look up 26 blocks from the work tagged block. If this is not possible, they will not be able to harvest this plant, so ensure there is air above the water above the work tagged block.\",\"The red X is the position where the planter will walk to in the example image.\",\"The blue X is the position where the work tag of the block is.\",\"For downwards-growing plants, the planter will attempt to stand above the work tagged block and harvest below them. Make sure the planter can reach the top of the stem.\"]},\"55\":{\"h\":\"Vertically Growing Plants (Upwards and Downwards)\",\"t\":[\"A \\\"vertically growing plant\\\" is a plant that grows in a single line, either upwards or downwards; for example, Sugar Cane is a vertically growing plant that grows upwards. These plants always break fully when their root blocks are broken. The planter will break these at the second block from the root.\",\"Each of these plants have a minimum and sometimes a maximum growth height. The planter can only harvest them when they reach the minimum. If plants have a maximum height, the planter will have an increasingly higher chance to harvest the plant the taller it gets. Plants are only required to grow to the minimum height within the bounds of the schematic.\",\"Plant\",\"Minimum height\",\"Maximum height\",\"Sugar cane\",\"3\",\"N/A\",\"Cactus\",\"3\",\"N/A\",\"Bamboo\",\"6\",\"16\",\"Kelp\",\"2\",\"25\",\"Glowberries\",\"3\",\"N/A\",\"Weeping vines\",\"2\",\"25\",\"Twisting vines\",\"2\",\"25\"]},\"56\":{\"h\":\"Treeside Plants\",\"t\":[\"Treeside plants grow directly on the sides of trees. For these plants, you only need to tag the tree's stem; the working positions will automatically be set to every horizontally adjacent block of the tagged stem. Currently this is only used for Cocoa beans.\",\"Note that this means that the amount of tags you can actually place is the amount of working positions divided by 4!\"]},\"57\":{\"h\":\"Bonemealed Fields\",\"t\":[\"Bonemealed fields will tell the planter to use bonemeal somewhere on the ground to grow plants as if the player had used bonemeal.\",\"The amount of planting positions on these fields are usually unlimited because bonemealing the ground has a set area of effect. However, it is suggested not to make the fields too big; an area around 7x7 is lightly suggested.\",\"Every bonemealed plant works slightly differently.\",\"Plant\",\"Work tag location\",\"Seagrass\",\"The block directly below the water should tagged; the planter will bonemeal the tagged block itself. Red Xs are where the planter will attempt to walk. Blue Xs are the blocks that are tagged with the work tag.\",\"Sea pickles\",\"The block directly below the water should tagged. The planter will initially place the pickles, then bonemeal the pickles to let them grow. Red Xs are where the planter will attempt to walk. Blue Xs are the blocks that are tagged with the work tag.\",\"Crimson plants\",\"Tag all the nylium ground blocks where the plants are supposed to grow.\",\"Warped plants\",\"Tag all the nylium ground blocks where the plants are supposed to grow.\"]},\"58\":{\"h\":\"Percentage-based Harvesting\",\"t\":[\"Percentage based harvesting fields will attempt to place a minimum percentage of plants down on given spots. These plants — such as vines — should then naturally spread to their surroundings without the player's help. The planter has no involvement in this process.\",\"Plant\",\"Tag location\",\"Vine\",\"Tag all the positions where the vines themselves can spread to, NOT the blocks where the vines are attached to.\",\"{% endversion %}\"]},\"59\":{\"h\":\"Tips on Building\"},\"60\":{\"h\":\"Do\",\"t\":[\"Make all levels of a hut have the same footprint for x, y, and z\",\"Place the hut block in the same location with the same rotation\",\"Make sure all racks and furnaces are in the same location through all levels (to prevent the contents spilling out when they're getting moved)\",\"Use placeholders where you want to keep any existing block (including from level to level), like the Barracks Towers in the Barracks schematic\",\"Use solid placeholders at or below ground level\",\"Place a groundlevel tag at ground level if your hut isn't sitting directly on the ground.\",\"Use only vanilla blocks or Structurize blocks (for official styles)\",\"Use Books and Quills instead of blank books, or written books on a lectern. (Keep a copy of the original book and quill somewhere, if it turns out you made a mistake!)\"]},\"61\":{\"h\":\"Don't\",\"t\":[\"Use unobtainable items in builds (no command blocks, petrified wood, infested blocks, or mob heads (including player heads))\",\"Change someone else's style (officially) unless specifically asked to do so\",\"Rename schematics after scanning\"]},\"62\":{\"h\":\"Additional Information\"},\"63\":{\"h\":\"How to override some built-in schematics?\",\"t\":[\"{% version \\\"1.18.2\\\" before=true %} Simply create a schematic file with the same style/name. For instance, to override the {% building_link builder %} wooden level 1, create a schematic file name called wooden/builder1.blueprint. {% endversion %}\",\"{% version \\\"1.19\\\" after=true %} Unfortunately, this is not possible, unless you override the entire style (make a style pack with the same name as an existing style pack, in that case). {% endversion %}\"]},\"64\":{\"h\":\"How to use custom huts?\",\"t\":[\"{% version \\\"1.18.2\\\" before=true %} The custom huts need to be copied in the schematics folder. {% endversion %}\",\"{% version \\\"1.19\\\" after=true %} The custom huts need to be copied into a style pack. {% endversion %}\",\"Once copied, you can start your singleplayer or multiplayer game as usual. You should see them in the build tool (if you have the hut block in your inventory).\"]},\"65\":{\"h\":\"How to allow my players to use their own huts' schematics on my server?\",\"t\":[\"You will have to copy them yourself in the blueprints folder on the server and restart it.\"]},\"66\":{\"h\":\"How to allow my players to use their scanned decoration schematics on my server?\",\"t\":[\"Edit the Structurize configuration file at minecraft/config/structurize-common.toml and set allowPlayerSchematics to true. This allows the player to use their own decorations. It is not possible for the player to use their own huts' schematics. You can also limit the number of players' schematics at any given time by editing maxCachedSchematics (default is 100). When the limit is reached, the server will start deleting unused schematics.\"]},\"67\":{\"h\":\"How to disable built-in schematics completely?\",\"t\":[\"Edit the Structurize configuration file at minecraft/config/structurize-common.toml and set ignoreSchematicsFromJar to true. Be aware: things will break if some huts' schematics are missing.\"]},\"68\":{\"h\":\"How to create upgradable decoration schematics?\",\"t\":[\"{% version \\\"1.18.2\\\" before=true %} Add the deco controller somewhere in the schematic with the name of the schematic, where you'll put it in the file directory, and its level. Make sure to actually put the decoration in that file path, but only after scanning - don't include the path in the scan name. {% endversion %}\",\"{% version \\\"1.19\\\" after=true %} Put the deco controller somewhere in the schematic, and make sure the name of the schematic ends with a number while scanning. The decoration controller will automatically find the decoration in the same folder with the next number. {% endversion %}\"]},\"69\":{\"h\":\"How to use custom mineshafts in style packs?\",\"t\":[\"The size must be 9 x 4 x 9 blocks. They must be named and oriented exactly the same (i.e. do not rotate at all) as in the default style pack (careful: the names aren't entirely consistent with the layout, so make careful note which is which!) Use an existing style pack as a template along with the scan tool to create the blueprints.\",\"{% version \\\"1.18.2\\\" before=true %} The custom mineshafts need to be at schematics/yourstyle/miner/*. {% endversion %}\",\"{% version \\\"1.19\\\" after=true %} The custom mineshafts need to be at `blueprints/yourstyle/infrastructure/mineshafts/*.\",\"It's recommended that you use the tag tool and Tag Anchor to make the mineshafts invisible. Take care that the anchor is in the same position as in the original mineshafts -- the very center bottom block. {% endversion %}\"]},\"70\":{\"h\":\"How to make custom quarries in style packs?\",\"t\":[\"The {% building_link quarry %} is split into a \\\"top part\\\" and a \\\"bottom part\\\". Both parts only have one level each.\",\"The top part is constructed by the Builder and is the part outside of the quarry pit -- decorative walls, fences, cranes, racks, etc. This contains the actual quarry hut block itself, which should pretty much always be on the second y level up from the bottom (i.e. the bottom layer is the ground level, then the hut is on the next layer up), although with some caveats this is not absolutely required.\",\"The bottom part is constructed by the Quarrier and is the actual quarry pit itself, consisting mostly of placeholders, air blocks, and decorative elements. While you can also set the anchor manually, it's recommended to use a Tag Anchor. The anchor should normally be at the very top layer, although with some caveats it can be elsewhere.\",\"{% version \\\"1.18.2\\\" before=true %} The top parts must be named simplequarry1 and mediumquarry1, and the corresponding bottom parts are simplequarryshaft1 and mediumquarryshaft1. {% endversion %}\",\"{% version \\\"1.19\\\" after=true %} The top part can be in any folder and name that you like (and you can have more than one alternate), but the canonical names are infrastructure/mineshafts/simplequarry1 and infrastructure/mineshafts/mediumquarry1. (For reasons, it's currently best to avoid using different names.)\",\"The bottom part can only be infrastructure/mineshafts/simplequarryshaft1 and infrastructure/mineshafts/mediumquarryshaft1, regardless of what or where the top part was. As such, you can only make one of each per style pack. {% endversion %}\",\"Importantly: when built, the two schematics are aligned such that the anchor of the bottom part is exactly two blocks below the anchor of the top part. You should carefully align them when designing.\",\"It is permitted for the quarry to be a slightly different size from the default versions, but it's strongly encouraged (for game balance reasons) to make each one approximately the same size as the originals, and in particular to have the same amount of air blocks in the bottom part, since this affects the final yield of cobble or other stone.\"]},\"71\":{\"h\":\"How to create parent/child buildings or decorations?\",\"t\":[\"The Barracks and Barracks Tower always have a parent/child relationship (i.e. the towers are embedded within the barracks, not directly built separately with the build tool). It's also possible to do the same with other buildings -- either putting one or more buildings into a containing decoration (e.g. a \\\"district\\\" of related buildings) or even embedding buildings within other buildings.\",\"Some popular combinations are to embed couriers within the warehouse, and fields within the farmer. Others combinations are possible, depending on your goals for the style -- but don't go too overboard! Some players like combination buildings since they fit nicely together, but others don't like them since they can take away flexibility and creativity when building a colony.\",\"When designing parent/child schematics, the key is the light placeholder. The parent schematic needs to contain the child hut block in the correct position and rotation, along with light placeholders wherever there should be a block from the child, and the parent's own blocks. Similarly, the child schematic needs its own hut block and other blocks, and light placeholders wherever there should be a block from the parent. It can be helpful to make a temporary scan of either the parent or child and overlay them over the other to help line things up, or to build both together and then duplicate it and split apart the designs.\",\"While strictly speaking it's only mandatory to include the child hut at the level that it's introduced into the parent and you could put only a placeholder at higher levels, it's strongly recommended to always include the child hut in every higher level of the parent. This works better when someone moves or repairs the parent, or skips levels and pastes it directly at a higher level.\",\"Also remember that the child building can't be upgraded to a higher level than the parent building. This limit doesn't apply if the parent is a non-upgradeable decoration.\",\"Be careful of \\\"research loops\\\" -- if the player needs to build a child before they can unlock a parent, that's a problem (unless you also have an alternate standalone of the child).\",\"Since the parent will contain multiple hut blocks, you will always need to explicitly specify the anchor block (the main parent hut block if a building, or a deco controller or tag anchor if it's a decoration) when you scan, otherwise you'll get an error that the anchor was ambiguous and it will not work correctly.\",\"{% version \\\"1.18.2\\\" before=true %} Since you can only have one version of each building in each folder, combinations should be used very sparingly. The parent and child need to be in the same folder.\",\"To place the child hut in the parent, you can simply shift-click it, just like when placing it in the child itself. Be sure to get the location and rotation correct -- the child hut will be built with the matching orientation relative to that. {% endversion %}\",\"{% version \\\"1.19\\\" after=true %} The parent and child need to be in the same folder. This doesn't mean that you can't combine buildings that are normally in different folders -- just that the version that's intended to be the child must be in the same folder as the parent. You may still have another version of the child (to be used by itself, not as a child) in the original folder if you like.\",\"It's not supported to have a child contain additional children of its own -- you're limited to just the two layers (though the parent can contain multiple children of either the same or different types).\",\"Regardless of which method you use to build, be sure to get the location and rotation of the child hut correct when placing it in the parent -- the building will be built with the matching orientation relative to that.\",\"If you've used the default folder and filenames for your child, then you can simply shift-click the child hut to place it into the parent, similar to older versions. However this is not the most recommended way to do things any more.\",\"The preferred method is to make another level of your child containing only the hut block, giving it the same folder and name as your actual child, but level 0 (e.g. craftsmanship/storage/mycourier0). You can make it the same size as your real child (surrounded by placeholders) if you wish, but scanning a 1x1x1 is fine too. After scanning, you need to move this to its final location in your actual style pack, and then paste it from there (not from your scans!) into your parent. It doesn't matter whether you use schematic or constructed paste. Paste the same level 0 into all levels of the parent. After it's pasted, you can delete the level 0 blueprint -- it should not be included in your final released style pack. (Note that when you go to paste it, the build tool labels it as \\\"level 1\\\" of 6. You can confirm you have the right one by checking the tooltip name.)\",\"Another option is called \\\"auto-levelling\\\". This is where instead of making and pasting a level 0 into each level of the parent, you instead paste the actual matching child level (i.e. level 1 child in the level 1 parent, level 2 child in the level 2 parent, etc). Again it doesn't matter whether you use schematic or constructed paste, but either way you'll probably have to fix up some of the overlapping blocks afterward. You do still need to include the child hut's blueprints in your released style pack, and you do still have to paste it from your actual style pack and not your scans folder.\",\"With auto-levelling, the builder will upgrade the child at the same time as upgrading the parent, instead of the player needing to explicitly build or upgrade one after the other. While this may sound simpler, there are some downsides: the biggest is that won't work well for child buildings that have required functional blocks (such as beds, furnaces, racks, etc), although purely decorative ones are fine. You also should not use this where the child is locked behind research, unless you can be absolutely certain that it's already unlocked (e.g. if the parent is unlocked after the child -- though still be careful of loops). The \\\"level 0\\\" method doesn't have these issues.\",\"Since you can have multiple alternates of buildings (in the same or separate folders), it's possible to make a particular building type have both a standalone version as well as a version embedded as a child. It's strongly recommended to use the tag tool to mark any blueprint intended for use only as a child (in the child schematic itself) as invisible so that it doesn't show up for building standalone -- especially as child versions are often simpler or cheaper and may be missing walls or other things intended to be provided by the parent, so won't look good on their own or might break game balance. It's also possible to have each child of a parent be its own unique blueprint -- but that requires even more scans and more care when pasting to use the right alternate. {% endversion %}\"]},\"72\":{\"h\":\"What if I have another question?\",\"t\":[\"There's a channel in the Discord server specifically for asking questions about designing your own schematics.\"]},\"73\":{\"h\":\"世界生成\",\"t\":[\"As you explore the world, you'll notice that there are some colonies abandoned by the former residents. Moving into one of these abandoned colonies is a way to quickstart your own colony!\",\"(Note: This feature is only available in 1.18+. Vanilla villages will still spawn as normal. If you wish to turn off this feature, you can do so in the configuration options for your world.)\"]},\"74\":{\"h\":\"Getting Started\",\"t\":[\"To find a world generation colony... just start exploring! They spawn randomly at a low chance in the world in one of several styles. Currently, only a subset of official style colonies can spawn naturally in the world, but more will be added in the future!\",\"Only a subset of possible buildings can generate in a world generation colony, and most will be level 1, though some buildings might be level 2. Sometimes, multiple of the same type of building can spawn, too!\",\"First, find the town hall and click \\\"Create new colony.\\\" This is equivalent to you placing a town hall down from the supply camp.\",\"From there, go to each hut block in the found (and now, founded) colony and click \\\"Reactivate\\\" to reclaim the building and add it to the town hall.\",\"Additionally, you can repair each building to make your new colony look like new.\",\"That's it! You've claimed a colony in the world, and now you can start building your new colony!\",\"First, you need to design and build your own schematic. Once you've built your style, you can add jigsaw block connectors at appropriate places and export the structure as a .nbt file. That way, Minecraft knows how to build an abandoned colony in your style!\"]},\"75\":{\"h\":\"Tagging and Prepping\",\"t\":[\"The most important thing to ensure that colonies register as abandoned — and can be restored — is to use the tag tool to tag the hut block appropriately.\",\" Tag the hut block with its style name (e.g., \\\"medieval_oak\\\" for the Medieval Oak style). The name must match the style's folder name in the MineColonies.jar file or resource pack.\",\" Add the tag \\\"abandoned\\\" to the hut block. If you right-click the building with an empty hand, it should now say that the building is abandoned and tell you to seek out the town hall.\"]},\"76\":{\"h\":\"Adding Jigsaw Blocks\",\"t\":[\"Place jigsaw blocks where a structure would naturally connect to a road or — if creating a road — where it would connect to a structure. Make sure the block is placed at the edge of the structure facing toward a connecting block.\",\"When editing a jigsaw block, there are a few different properties that can be set.\",\" name: the name of this jigsaw block. The name can be unique or generic. For the styles in MineColonies, all buildings have the name \\\"minecolonies:building_entrance\\\" and all roads \\\"minecolonies:street\\\". Some styles will also use \\\"minecolonies:field\\\"; this one is used exclusively to connect a field to a farmer building when the farmer building does not a field as part of the level 1 structure.\",\" target: When a structure is placed, the target of its jigsaw block determines the next jigsaw block that is added. The target of a placed structure must match the name of the next one to be placed.\",\" pool: To restrict the list of applicable structures, use the target pool. MineColonies uses three dedicated pools for each colony style: \\\"/roads\\\", \\\"/buildings\\\", and \\\"/terminators\\\".\",\"Edit the jigsaw block to set the following properties. (Note that the following is an example using the Medieval Oak style. Replace \\\"medieval_oak\\\" with your style's name.)\",\" Buildings \",\" name: \\\"minecolonies:building_entrance\\\"\",\" pool: \\\"minecolonies:medieval_oak/roads\\\"\",\" target: \\\"minecolonies:building_entrance\\\"\",\" turns into: \\\"minecraft:structure_void\\\"\",\" Roads (Connecting to buildings) \",\" name: \\\"minecolonies:street\\\"\",\" pool: \\\"minecolonies:medieval_oak/buildings\\\"\",\" target: \\\"minecolonies:building_entrance\\\"\",\" turns into: \\\"minecraft:structure_void\\\"\",\" Roads (Connecting to roads) \",\" name: \\\"minecolonies:street\\\"\",\" pool: \\\"minecolonies:medieval_oak/roads\\\"\",\" target: \\\"minecolonies:street\\\"\",\" turns into: \\\"minecraft:structure_void\\\"\",\" Terminators (to end roads more decoratively and as fallback structures for roads and buildings) \",\" name: \\\"minecolonies:street\\\"\",\" turns into: \\\"minecraft:structure_void\\\"\"]},\"77\":{\"h\":\"Processors\",\"t\":[\"Processors are used to alter a structure's blocks during placement. Specifically for MineColonies, we use different processors depending on the structure that is placed.\",\"There are three processor files for each style.\"]},\"78\":{\"h\":\"street.json\",\"t\":[\"Road processors are defined in \\\"/street.json\\\". The main purpose of this processor is to replace porous materials like dirt, dirt paths, and gravel with wooden planks when the road is in water. This will also add minor decay in the form of grass blocks instead of dirt paths.\"]},\"79\":{\"h\":\"decoration.json\",\"t\":[\"Park processors are defined in \\\"/decoration.json\\\". This processor adds decay to the parks by turning some stone brick into weathered variants like mossy or cracked stone bricks or replaces some dirt blocks with coarse dirt.\"]},\"80\":{\"h\":\"placeholder_replacement.json\",\"t\":[\"Building processors are defined in \\\"/placeholder_replacement.json\\\". Similar to how zombie villages decay, this processor removes various building blocks or replaces them with cobweb. Which blocks and how often depends on the given style. In addition to decay, the placeholder replacement is also responsible for converting the Structurize placeholder blocks into suitable in-game similar to how a builder treats these blocks when constructing a building.\",\" \\\"structurize:blocksolidsubstitution\\\" turns into dirt, which may be converted to another block by a processor defined later in the same file.\",\" \\\"structurize:blocksubstitution\\\" is ignored, meaning that existing blocks in the world will remain in place when the structure generates.\"]},\"81\":{\"h\":\"Decay Example\",\"t\":[\"The rule below replaces oak logs with cobwebs at a 4% probability. That probability may be fine for one style but be too high or too low for another style.\",\"{ \\\"output_state\\\": { \\\"Name\\\": \\\"minecraft:cobweb\\\" }, \\\"input_predicate\\\": { \\\"block\\\": \\\"minecraft:oak_log\\\", \\\"probability\\\": 0.04, \\\"predicate_type\\\": \\\"minecraft:random_block_match\\\" }, \\\"location_predicate\\\": { \\\"predicate_type\\\": \\\"minecraft:always_true\\\" } },\"]},\"82\":{\"h\":\"Installation\"},\"83\":{\"h\":\"Tutorials\"}},\"dirtCount\":0,\"index\":[[\"世界生成\",{\"0\":{\"73\":1}}],[\"世界生成的结构等\",{\"1\":{\"27\":1}}],[\"04\",{\"1\":{\"81\":1}}],[\"0\",{\"1\":{\"71\":5,\"81\":1}}],[\"01e6a291\",{\"0\":{\"45\":1}}],[\"`blueprints\",{\"1\":{\"69\":1}}],[\"quickstart\",{\"1\":{\"73\":1}}],[\"quill\",{\"1\":{\"60\":1}}],[\"quills\",{\"1\":{\"60\":1}}],[\"quarrier\",{\"1\":{\"70\":1}}],[\"quarries\",{\"0\":{\"70\":1}}],[\"quarry\",{\"1\":{\"70\":5}}],[\"questions\",{\"1\":{\"41\":1,\"72\":1}}],[\"question\",{\"0\":{\"72\":1},\"1\":{\"34\":1}}],[\"zombie\",{\"1\":{\"80\":1}}],[\"z\",{\"1\":{\"60\":1}}],[\"zip\",{\"1\":{\"4\":1,\"11\":1,\"40\":1,\"42\":3}}],[\"yield\",{\"1\":{\"70\":1}}],[\"y\",{\"1\":{\"60\":1,\"70\":1}}],[\"you\",{\"1\":{\"1\":17,\"4\":3,\"6\":3,\"8\":2,\"9\":2,\"10\":2,\"11\":4,\"12\":4,\"28\":8,\"30\":3,\"31\":9,\"32\":9,\"33\":3,\"34\":9,\"35\":4,\"36\":10,\"37\":9,\"38\":1,\"39\":5,\"40\":6,\"42\":2,\"46\":1,\"47\":1,\"48\":10,\"50\":1,\"54\":1,\"56\":2,\"60\":2,\"63\":1,\"64\":3,\"65\":1,\"66\":1,\"68\":1,\"69\":1,\"70\":5,\"71\":30,\"73\":4,\"74\":7,\"75\":2}}],[\"yourstyle\",{\"1\":{\"69\":2}}],[\"yourself\",{\"1\":{\"65\":1}}],[\"your\",{\"0\":{\"4\":1,\"29\":1},\"1\":{\"1\":5,\"4\":1,\"8\":1,\"12\":1,\"28\":8,\"30\":2,\"31\":6,\"32\":2,\"33\":1,\"34\":6,\"35\":1,\"36\":3,\"37\":3,\"38\":3,\"39\":2,\"43\":3,\"46\":1,\"47\":2,\"48\":3,\"60\":1,\"64\":2,\"71\":12,\"72\":1,\"73\":2,\"74\":5,\"76\":1}}],[\"7x7\",{\"1\":{\"57\":1}}],[\"6\",{\"1\":{\"55\":1,\"71\":1}}],[\"6x5x1\",{\"1\":{\"51\":1}}],[\"xs\",{\"1\":{\"57\":4}}],[\"x\",{\"1\":{\"54\":10,\"60\":1,\"69\":2}}],[\"xxx\",{\"1\":{\"28\":1}}],[\"8a01\",{\"0\":{\"45\":1}}],[\"\",{\"1\":{\"50\":3}}],[\"\",{\"1\":{\"42\":1,\"76\":3,\"78\":1,\"79\":1,\"80\":1}}],[\"\",{\"1\":{\"36\":1,\"37\":1,\"43\":1}}],[\">\",{\"1\":{\"37\":2}}],[\"原理图\",{\"0\":{\"35\":1}}],[\"knows\",{\"1\":{\"74\":1}}],[\"kelp\",{\"1\":{\"54\":4,\"55\":1}}],[\"key\",{\"1\":{\"39\":1,\"71\":1}}],[\"keep\",{\"1\":{\"34\":1,\"60\":2}}],[\"keeping\",{\"1\":{\"34\":1}}],[\"kinds\",{\"1\":{\"30\":1}}],[\"36\",{\"1\":{\"51\":1}}],[\"3\",{\"0\":{\"32\":1},\"1\":{\"48\":1,\"49\":1,\"51\":2,\"52\":1,\"53\":1,\"55\":3}}],[\"25\",{\"1\":{\"55\":3}}],[\"26\",{\"1\":{\"54\":1}}],[\"20\",{\"1\":{\"54\":9}}],[\"2022\",{\"1\":{\"49\":1}}],[\"27\",{\"1\":{\"51\":1}}],[\"272\",{\"1\":{\"28\":1}}],[\"2\",{\"0\":{\"31\":1},\"1\":{\"32\":1,\"33\":1,\"36\":1,\"37\":1,\"42\":1,\"43\":1,\"44\":1,\"45\":4,\"48\":1,\"49\":1,\"50\":1,\"51\":4,\"52\":1,\"53\":2,\"54\":3,\"55\":3,\"63\":1,\"64\":1,\"68\":1,\"69\":1,\"70\":1,\"71\":3,\"74\":1}}],[\"9\",{\"1\":{\"28\":1,\"69\":2}}],[\"=\",{\"1\":{\"28\":1,\"54\":2}}],[\"4763\",{\"0\":{\"45\":1}}],[\"4\",{\"0\":{\"33\":1},\"1\":{\"28\":3,\"34\":2,\"49\":1,\"51\":7,\"52\":1,\"53\":1,\"54\":1,\"56\":1,\"69\":1,\"81\":1}}],[\"4x4区块\",{\"1\":{\"27\":1}}],[\"过时\",{\"0\":{\"28\":1}}],[\"放置在完美的位置\",{\"1\":{\"27\":1}}],[\"放置补给船或补给营地\",{\"0\":{\"26\":1}}],[\"以便您可以将所有小屋\",{\"1\":{\"27\":1}}],[\"以及它是否位于正确的y层级\",{\"1\":{\"17\":1}}],[\"从补给船\",{\"1\":{\"27\":1}}],[\"从基岩到天际限制\",{\"1\":{\"27\":1}}],[\"从该区块向每个方向延伸64个方块\",{\"1\":{\"27\":1}}],[\"洞穴\",{\"1\":{\"27\":1}}],[\"湖泊\",{\"1\":{\"27\":1}}],[\"丘陵\",{\"1\":{\"27\":1}}],[\"包括市政厅\",{\"1\":{\"27\":1}}],[\"包括山脉\",{\"1\":{\"27\":1}}],[\"包括木材\",{\"1\":{\"15\":1}}],[\"将是您受保护的城镇区域\",{\"1\":{\"27\":1}}],[\"将其打造成一个繁荣的城镇\",{\"1\":{\"25\":1}}],[\"使用默认配置\",{\"1\":{\"27\":1}}],[\"使用建筑工具可以确保你能够清楚地看到建筑将在哪里\",{\"1\":{\"17\":1}}],[\"珊瑚等\",{\"1\":{\"26\":1}}],[\"海洋\",{\"1\":{\"27\":1}}],[\"海藻\",{\"1\":{\"26\":1}}],[\"海底\",{\"1\":{\"0\":1}}],[\"蕨类\",{\"1\":{\"26\":1}}],[\"草\",{\"1\":{\"26\":1}}],[\"也不能有花朵\",{\"1\":{\"26\":1}}],[\"该区域不能包含任何洞穴\",{\"1\":{\"26\":1}}],[\"更近或更远离您清理的区域\",{\"1\":{\"26\":1}}],[\"更多内容正在开发和添加\",{\"1\":{\"0\":1}}],[\"向左\",{\"1\":{\"26\":1}}],[\"向右\",{\"1\":{\"26\":1}}],[\"而不是已经拥有一个\",{\"1\":{\"26\":1}}],[\"而且他们不能将小屋建造或升级到高于他们自己小屋的等级\",{\"1\":{\"18\":1}}],[\"请查看我们的建筑工具页面\",{\"1\":{\"27\":1}}],[\"请仔细规划您想要放置市政厅的位置\",{\"1\":{\"27\":1}}],[\"请仔细阅读整个指南\",{\"1\":{\"25\":1}}],[\"请逐块尝试\",{\"1\":{\"26\":1}}],[\"请不要在此时使用它\",{\"1\":{\"26\":1}}],[\"地面上的物品来放置供给船\",{\"1\":{\"26\":1}}],[\"通过直接右键单击水域\",{\"1\":{\"26\":1}}],[\"就不能在同一个世界中放置另一个了\",{\"1\":{\"26\":1}}],[\"就是您正在寻找的解决方案\",{\"1\":{\"23\":1}}],[\"营地获取一个\",{\"1\":{\"27\":1}}],[\"营地\",{\"1\":{\"26\":2}}],[\"营地时\",{\"1\":{\"26\":1}}],[\"当您放置供给船\",{\"1\":{\"26\":1}}],[\"当前的进度是将英文wiki的内容搬运过来后进行本地化\",{\"1\":{\"0\":1}}],[\"清晰的土地\",{\"1\":{\"26\":1}}],[\"平坦\",{\"1\":{\"26\":1}}],[\"要放置补给营地\",{\"1\":{\"26\":1}}],[\"要放置补给船\",{\"1\":{\"26\":1}}],[\"至少16x17方块\",{\"1\":{\"26\":1}}],[\"至少32x20\",{\"1\":{\"26\":1}}],[\"至少8x8区块大小\",{\"1\":{\"15\":1}}],[\"为了避免错误和挫折\",{\"1\":{\"25\":1}}],[\"查看游戏中的模拟殖民地成就\",{\"1\":{\"25\":1}}],[\"最终实现大都市的目标吗\",{\"1\":{\"25\":1}}],[\"最后\",{\"1\":{\"25\":1}}],[\"不断壮大成为一个城市\",{\"1\":{\"25\":1}}],[\"磨练您的领导技能\",{\"1\":{\"25\":1}}],[\"努力工作\",{\"1\":{\"25\":1}}],[\"征服并建立自己的殖民地\",{\"1\":{\"25\":1}}],[\"探索\",{\"1\":{\"25\":1}}],[\"并准备好踏上一场探险之旅\",{\"1\":{\"25\":1}}],[\"并且地形较为平坦\",{\"1\":{\"15\":1}}],[\"恭喜你\",{\"1\":{\"25\":1}}],[\"详细步骤\",{\"0\":{\"25\":1}}],[\"想要建造一个医院\",{\"1\":{\"24\":1}}],[\"因此\",{\"1\":{\"27\":1}}],[\"因此可能想要建造一个卫兵塔\",{\"1\":{\"24\":1}}],[\"因此建造一个矿井是下一个合乎逻辑的步骤\",{\"1\":{\"22\":1}}],[\"因此建议接下来建造一个酒馆\",{\"1\":{\"19\":1}}],[\"但是您有几个方向可供选择\",{\"1\":{\"24\":1}}],[\"但是建造一个渔夫小屋更快\",{\"1\":{\"20\":1}}],[\"其余的殖民地\",{\"0\":{\"24\":1}}],[\"剪贴板和资源卷轴可能会有帮助\",{\"1\":{\"23\":1}}],[\"和\",{\"1\":{\"23\":1}}],[\"好吧\",{\"1\":{\"23\":1}}],[\"然后再从渔夫\",{\"1\":{\"23\":1}}],[\"然后才能建造其他小屋\",{\"1\":{\"18\":1}}],[\"您在整个模组中最需要的工具是建筑工具\",{\"1\":{\"27\":1}}],[\"您殖民地的受保护区域将成为以您第一次放置市政厅方块的区块为中心的半径为4个区块的正方形\",{\"1\":{\"27\":1}}],[\"您预计从营地\",{\"1\":{\"26\":1}}],[\"您需要拥有足够大\",{\"1\":{\"26\":1}}],[\"您需要拥有足够大的水域\",{\"1\":{\"26\":1}}],[\"您需要根据您的游戏方式和殖民地的需求来决定下一步做什么\",{\"1\":{\"24\":1}}],[\"您能成为一位宏伟的领导者\",{\"1\":{\"25\":1}}],[\"您已经安装了模拟殖民地\",{\"1\":{\"25\":1}}],[\"您决定您的殖民地将如何发展\",{\"1\":{\"24\":1}}],[\"您可能会受到袭击\",{\"1\":{\"24\":1}}],[\"您可能还想将物品存放在一个地方\",{\"1\":{\"23\":1}}],[\"您可能已经厌倦了将所有资源交给建筑师\",{\"1\":{\"23\":1}}],[\"您的新护林员就可以开始为您的下一个建筑和工具等项目采集木材\",{\"1\":{\"21\":1}}],[\"仓库和信使\",{\"0\":{\"23\":1}}],[\"石材和矿石是殖民地的另一个主要需求\",{\"1\":{\"22\":1}}],[\"石头\",{\"1\":{\"15\":1}}],[\"矿工等处取回\",{\"1\":{\"23\":1}}],[\"矿工\",{\"0\":{\"22\":1}}],[\"这样\",{\"1\":{\"21\":1}}],[\"这是你开始使用建筑工具放置建筑的地方\",{\"1\":{\"17\":1}}],[\"如果您无法放置供给营地\",{\"1\":{\"26\":1}}],[\"如果您已经有一个建筑工具\",{\"1\":{\"26\":1}}],[\"如果您已经到达这里\",{\"1\":{\"25\":1}}],[\"如果您更青睐木材\",{\"1\":{\"21\":1}}],[\"如果你不想亲自为殖民者喂食\",{\"1\":{\"20\":1}}],[\"如果你想了解如何安装官方整合包\",{\"1\":{\"14\":1}}],[\"林业师\",{\"0\":{\"21\":1},\"1\":{\"23\":1}}],[\"或者制作另一个\",{\"1\":{\"27\":1}}],[\"或者找到了一个适合建造特定小屋的好地方\",{\"1\":{\"24\":1}}],[\"或者您可能只是想拥有一个特定的工人\",{\"1\":{\"24\":1}}],[\"或者可能决定建造一个锯木厂来为工人制作所需的物品\",{\"1\":{\"24\":1}}],[\"或者可能有一名生病的居民\",{\"1\":{\"24\":1}}],[\"或烹饪食物\",{\"1\":{\"20\":1}}],[\"或是天空中\",{\"1\":{\"0\":1}}],[\"获得食物的最快方式是建造一个渔夫小屋\",{\"1\":{\"20\":1}}],[\"食物\",{\"0\":{\"20\":1}}],[\"酒馆还允许游客来到你的殖民地\",{\"1\":{\"19\":1}}],[\"酒馆\",{\"0\":{\"19\":1}}],[\"建议接下来建造一个护林员小屋\",{\"1\":{\"21\":1}}],[\"建造一个餐厅也是明智的选择\",{\"1\":{\"20\":1}}],[\"建筑工具的教学视频\",{\"0\":{\"28\":1}}],[\"建筑工必须先建造他们自己的建筑工小屋\",{\"1\":{\"18\":1}}],[\"建筑工\",{\"0\":{\"18\":1}}],[\"建在山内\",{\"1\":{\"0\":1}}],[\"一旦放置了市政厅\",{\"1\":{\"27\":1}}],[\"一旦放置了市政厅方块\",{\"1\":{\"17\":1}}],[\"一旦放置了补给船\",{\"1\":{\"26\":1}}],[\"一旦获得七名居民\",{\"1\":{\"24\":1}}],[\"一旦你获得了市政厅方块和建筑工具\",{\"1\":{\"16\":1}}],[\"一旦你选择了殖民地的位置\",{\"1\":{\"16\":1}}],[\"一些建筑需要抬升到正确的y层级\",{\"1\":{\"17\":1}}],[\"朝向哪个方向\",{\"1\":{\"17\":1}}],[\"市政厅方块实际上是创建殖民地的核心\",{\"1\":{\"17\":1}}],[\"市政厅\",{\"0\":{\"17\":1,\"27\":1},\"1\":{\"31\":1,\"34\":1}}],[\"第9步\",{\"0\":{\"24\":1}}],[\"第8步\",{\"0\":{\"23\":1}}],[\"第7步\",{\"0\":{\"22\":1}}],[\"第6步\",{\"0\":{\"21\":1}}],[\"第5步\",{\"0\":{\"20\":1}}],[\"第4步\",{\"0\":{\"19\":1}}],[\"第3步\",{\"0\":{\"18\":1}}],[\"第2步\",{\"0\":{\"17\":1}}],[\"第1步\",{\"0\":{\"16\":1}}],[\"船\",{\"1\":{\"26\":1}}],[\"船中获取工具\",{\"1\":{\"26\":1}}],[\"船就只是个装饰物了\",{\"1\":{\"16\":1}}],[\"船提供了你正式启动殖民地所需的市政厅方块\",{\"1\":{\"16\":1}}],[\"剩下的营地\",{\"1\":{\"16\":1}}],[\"它将生成一个包含市政厅方块和建筑工具的箱子\",{\"1\":{\"26\":1}}],[\"它还充当殖民地的中心\",{\"1\":{\"17\":1}}],[\"它们还提供了在建设殖民地过程中可能需要的一些其他物资\",{\"1\":{\"16\":1}}],[\"它通过提供一切你需要的工具\",{\"1\":{\"0\":1}}],[\"在这一步\",{\"1\":{\"24\":1}}],[\"在这一点上\",{\"1\":{\"23\":1}}],[\"在仓库和所有工作场所之间传送物品\",{\"1\":{\"23\":1}}],[\"在开始游戏之前\",{\"1\":{\"25\":1}}],[\"在开始建设殖民地之前\",{\"1\":{\"18\":1}}],[\"在开始新的殖民地之前\",{\"1\":{\"15\":1}}],[\"在同一个世界中你只能放置其中一个\",{\"1\":{\"16\":1}}],[\"补给船\",{\"0\":{\"16\":1}}],[\"补给营地\",{\"0\":{\"16\":1},\"1\":{\"16\":1}}],[\"树苗和食物等\",{\"1\":{\"15\":1}}],[\"羊毛\",{\"1\":{\"15\":1}}],[\"皮革\",{\"1\":{\"15\":1}}],[\"线\",{\"1\":{\"15\":1}}],[\"花朵\",{\"1\":{\"15\":1}}],[\"铁矿石\",{\"1\":{\"15\":1}}],[\"煤炭\",{\"1\":{\"15\":1}}],[\"快速指南\",{\"0\":{\"15\":1}}],[\"你也可以建造农场或其中一种牲畜饲养工\",{\"1\":{\"20\":1}}],[\"你的殖民地需要的下一个重要物资是食物\",{\"1\":{\"20\":1}}],[\"你的市民需要一个居住和睡觉的地方\",{\"1\":{\"19\":1}}],[\"你需要一个建筑工\",{\"1\":{\"18\":1}}],[\"你需要足够大的空间来建设一个完整的城市\",{\"1\":{\"15\":1}}],[\"你将开始获得最初的4名居民\",{\"1\":{\"17\":1}}],[\"你可以招募他们留下成为居民\",{\"1\":{\"19\":1}}],[\"你可以选择保留或拆除它\",{\"1\":{\"16\":1}}],[\"你可以在java\",{\"1\":{\"14\":1}}],[\"你必须放置一个补给船或者补给营地\",{\"1\":{\"16\":1}}],[\"你还应该尽可能多的收集资源\",{\"1\":{\"15\":1}}],[\"你应该找到一个理想的位置\",{\"1\":{\"15\":1}}],[\"你每次都会打造一个不同的殖民地\",{\"1\":{\"0\":1}}],[\"本教程假设你已经安装了mod\",{\"1\":{\"14\":1}}],[\"本文为中文wiki原创\",{\"1\":{\"2\":1}}],[\"入门\",{\"0\":{\"14\":1}}],[\"数据包\",{\"0\":{\"13\":1}}],[\"jigsaw\",{\"0\":{\"76\":1},\"1\":{\"74\":1,\"76\":6}}],[\"json\",{\"0\":{\"39\":1,\"78\":1,\"79\":1,\"80\":1},\"1\":{\"39\":1,\"42\":1,\"78\":1,\"79\":1,\"80\":1}}],[\"java\",{\"1\":{\"11\":1}}],[\"java版\",{\"0\":{\"3\":1}}],[\"jar\",{\"1\":{\"9\":1,\"75\":1}}],[\"just\",{\"0\":{\"42\":1,\"47\":1},\"1\":{\"1\":1,\"4\":1,\"8\":1,\"9\":1,\"33\":1,\"48\":1,\"54\":1,\"71\":3,\"74\":1}}],[\"启动器\",{\"0\":{\"2\":1}}],[\"nbt\",{\"1\":{\"74\":1}}],[\"nylium\",{\"1\":{\"57\":2}}],[\"n\",{\"1\":{\"49\":2,\"55\":3}}],[\"nicely\",{\"1\":{\"40\":1,\"71\":1}}],[\"nice\",{\"1\":{\"40\":1}}],[\"numbers\",{\"1\":{\"48\":1}}],[\"number\",{\"1\":{\"39\":3,\"66\":1,\"68\":2}}],[\"normal\",{\"1\":{\"73\":1}}],[\"normally\",{\"1\":{\"70\":1,\"71\":1}}],[\"non\",{\"1\":{\"71\":1}}],[\"none\",{\"1\":{\"54\":1}}],[\"now\",{\"1\":{\"28\":1,\"31\":1,\"32\":1,\"34\":4,\"38\":1,\"74\":2,\"75\":1}}],[\"no\",{\"1\":{\"11\":2,\"45\":1,\"47\":1,\"58\":1,\"61\":1}}],[\"notice\",{\"1\":{\"73\":1}}],[\"notes\",{\"0\":{\"34\":1}}],[\"note\",{\"1\":{\"9\":1,\"36\":1,\"40\":1,\"46\":1,\"48\":2,\"49\":1,\"54\":2,\"56\":1,\"69\":1,\"71\":1,\"73\":1,\"76\":1}}],[\"not\",{\"1\":{\"4\":1,\"5\":1,\"9\":1,\"11\":2,\"30\":1,\"32\":1,\"36\":1,\"39\":2,\"40\":1,\"42\":1,\"46\":1,\"48\":1,\"49\":1,\"54\":5,\"57\":1,\"58\":1,\"63\":1,\"66\":1,\"69\":1,\"70\":1,\"71\":9,\"76\":1}}],[\"nethermine\",{\"1\":{\"51\":1}}],[\"nethership\",{\"1\":{\"50\":1}}],[\"nether\",{\"0\":{\"53\":1},\"1\":{\"50\":1,\"51\":1,\"52\":1,\"53\":2}}],[\"netherworker5\",{\"1\":{\"49\":1}}],[\"netherworker4\",{\"1\":{\"49\":1}}],[\"netherworker3\",{\"1\":{\"49\":1}}],[\"netherworker2\",{\"1\":{\"49\":1}}],[\"netherworker1\",{\"1\":{\"49\":1}}],[\"nearby\",{\"1\":{\"28\":1}}],[\"new\",{\"0\":{\"36\":1},\"1\":{\"12\":1,\"31\":1,\"32\":1,\"33\":1,\"36\":1,\"38\":2,\"39\":2,\"43\":2,\"48\":1,\"74\":4}}],[\"needing\",{\"1\":{\"71\":1}}],[\"needed\",{\"1\":{\"30\":1,\"35\":1,\"45\":3,\"46\":1}}],[\"need\",{\"1\":{\"12\":1,\"31\":1,\"32\":3,\"34\":1,\"36\":4,\"38\":1,\"39\":1,\"44\":2,\"48\":5,\"56\":1,\"64\":2,\"69\":2,\"71\":5,\"74\":1}}],[\"needs\",{\"1\":{\"10\":1,\"34\":2,\"36\":1,\"39\":1,\"42\":1,\"45\":1,\"71\":3}}],[\"next\",{\"1\":{\"1\":1,\"28\":2,\"34\":2,\"51\":1,\"68\":1,\"70\":1,\"76\":2}}],[\"naturally\",{\"1\":{\"58\":1,\"74\":1,\"76\":1}}],[\"naming\",{\"1\":{\"48\":2}}],[\"named\",{\"1\":{\"40\":1,\"48\":2,\"51\":6,\"69\":1,\"70\":1}}],[\"names\",{\"1\":{\"39\":2,\"48\":2,\"49\":2,\"69\":1,\"70\":2}}],[\"name\",{\"1\":{\"1\":5,\"10\":1,\"31\":1,\"36\":2,\"37\":2,\"38\":2,\"39\":4,\"48\":3,\"50\":2,\"63\":3,\"68\":3,\"70\":1,\"71\":2,\"75\":3,\"76\":10,\"81\":1}}],[\"navigate\",{\"0\":{\"8\":1}}],[\"npc\",{\"1\":{\"0\":1}}],[\"50\",{\"1\":{\"51\":1}}],[\"5\",{\"1\":{\"1\":1,\"7\":1,\"34\":1,\"48\":1,\"49\":1,\"51\":1,\"52\":1,\"53\":1,\"54\":1}}],[\"1x1x1\",{\"1\":{\"71\":1}}],[\"1x1x2\",{\"1\":{\"51\":1}}],[\"100\",{\"1\":{\"66\":1}}],[\"10\",{\"1\":{\"54\":1}}],[\"11\",{\"1\":{\"54\":6}}],[\"121\",{\"1\":{\"54\":3}}],[\"12\",{\"1\":{\"51\":1}}],[\"14\",{\"1\":{\"49\":1,\"51\":1}}],[\"144\",{\"1\":{\"28\":1}}],[\"19\",{\"1\":{\"36\":1,\"37\":2,\"42\":1,\"43\":1,\"44\":1,\"45\":3,\"48\":1,\"50\":1,\"53\":1,\"54\":1,\"63\":1,\"64\":1,\"68\":1,\"69\":1,\"70\":1,\"71\":1}}],[\"18+\",{\"1\":{\"73\":1}}],[\"18\",{\"0\":{\"49\":1},\"1\":{\"36\":1,\"37\":1,\"42\":1,\"43\":1,\"44\":1,\"45\":1,\"48\":1,\"50\":1,\"51\":1,\"63\":1,\"64\":1,\"68\":1,\"69\":1,\"70\":1,\"71\":1}}],[\"16\",{\"1\":{\"1\":1,\"7\":1,\"55\":1}}],[\"1\",{\"0\":{\"30\":1,\"49\":1},\"1\":{\"1\":1,\"7\":1,\"28\":1,\"34\":1,\"36\":2,\"37\":3,\"39\":2,\"42\":2,\"43\":2,\"44\":2,\"45\":4,\"48\":3,\"49\":1,\"50\":4,\"51\":20,\"52\":1,\"53\":2,\"54\":1,\"63\":3,\"64\":2,\"68\":2,\"69\":2,\"70\":2,\"71\":5,\"73\":1,\"74\":1,\"76\":1}}],[\"pit\",{\"1\":{\"70\":2}}],[\"pickles\",{\"1\":{\"54\":1,\"57\":3}}],[\"petrified\",{\"1\":{\"61\":1}}],[\"permitted\",{\"1\":{\"70\":1}}],[\"percentage\",{\"0\":{\"58\":1},\"1\":{\"58\":2}}],[\"performing\",{\"1\":{\"43\":1}}],[\"perfect\",{\"1\":{\"28\":1}}],[\"per\",{\"1\":{\"34\":1,\"51\":21,\"70\":1}}],[\"p\",{\"1\":{\"54\":2}}],[\"please\",{\"1\":{\"49\":1}}],[\"placeholders\",{\"1\":{\"60\":2,\"70\":1,\"71\":3}}],[\"placeholder\",{\"0\":{\"80\":1},\"1\":{\"36\":1,\"71\":2,\"80\":3}}],[\"places\",{\"1\":{\"34\":1,\"74\":1}}],[\"placement\",{\"1\":{\"31\":1,\"32\":1,\"77\":1}}],[\"placed\",{\"1\":{\"28\":1,\"30\":1,\"31\":3,\"32\":1,\"33\":1,\"36\":1,\"42\":1,\"44\":1,\"48\":1,\"50\":1,\"51\":1,\"76\":4,\"77\":1}}],[\"place\",{\"1\":{\"28\":3,\"30\":1,\"31\":2,\"32\":1,\"33\":1,\"34\":1,\"36\":2,\"47\":1,\"48\":2,\"56\":1,\"57\":1,\"58\":1,\"60\":2,\"71\":2,\"76\":1,\"80\":1}}],[\"placing\",{\"0\":{\"37\":1},\"1\":{\"28\":1,\"48\":1,\"54\":1,\"71\":2,\"74\":1}}],[\"planks\",{\"1\":{\"78\":1}}],[\"planting\",{\"1\":{\"54\":2,\"57\":1}}],[\"plants\",{\"0\":{\"55\":1,\"56\":1},\"1\":{\"54\":4,\"55\":4,\"56\":2,\"57\":5,\"58\":2}}],[\"plant\",{\"1\":{\"54\":4,\"55\":5,\"57\":2,\"58\":1}}],[\"planters\",{\"1\":{\"54\":1}}],[\"planter\",{\"1\":{\"54\":10,\"55\":3,\"57\":5,\"58\":1}}],[\"plantation\",{\"0\":{\"54\":1},\"1\":{\"51\":1,\"54\":2}}],[\"plantation5\",{\"1\":{\"49\":1}}],[\"plantation4\",{\"1\":{\"49\":1}}],[\"plantation3\",{\"1\":{\"49\":1}}],[\"plantation2\",{\"1\":{\"49\":1}}],[\"plantation1\",{\"1\":{\"49\":1}}],[\"planned\",{\"1\":{\"28\":1}}],[\"plan\",{\"1\":{\"6\":1,\"34\":1}}],[\"playing\",{\"1\":{\"45\":1}}],[\"players\",{\"0\":{\"65\":1,\"66\":1},\"1\":{\"45\":1,\"46\":1,\"66\":1,\"71\":1}}],[\"player\",{\"1\":{\"35\":1,\"38\":1,\"39\":1,\"46\":1,\"57\":1,\"58\":1,\"61\":1,\"66\":2,\"71\":2}}],[\"play\",{\"1\":{\"1\":1,\"11\":1,\"12\":2}}],[\"png\",{\"1\":{\"40\":2}}],[\"pumpkin\",{\"1\":{\"51\":1}}],[\"punctuation\",{\"1\":{\"48\":1}}],[\"purpose\",{\"1\":{\"78\":1}}],[\"purposes\",{\"1\":{\"46\":1}}],[\"purely\",{\"1\":{\"39\":1,\"71\":1}}],[\"putting\",{\"1\":{\"71\":1}}],[\"put\",{\"1\":{\"9\":1,\"40\":1,\"42\":1,\"68\":3,\"71\":1}}],[\"porous\",{\"1\":{\"78\":1}}],[\"portal\",{\"1\":{\"51\":1}}],[\"pools\",{\"1\":{\"76\":1}}],[\"pool\",{\"1\":{\"76\":5}}],[\"popular\",{\"1\":{\"71\":1}}],[\"possibly\",{\"1\":{\"46\":1}}],[\"possible\",{\"1\":{\"30\":1,\"34\":1,\"40\":2,\"54\":1,\"63\":1,\"66\":1,\"71\":4,\"74\":1}}],[\"positions\",{\"1\":{\"54\":2,\"56\":2,\"57\":1,\"58\":1}}],[\"position\",{\"1\":{\"28\":2,\"31\":1,\"51\":1,\"54\":7,\"69\":1,\"71\":1}}],[\"point\",{\"1\":{\"1\":1}}],[\"primary\",{\"1\":{\"48\":1}}],[\"predicate\",{\"1\":{\"81\":4}}],[\"prepping\",{\"0\":{\"75\":1}}],[\"pretty\",{\"1\":{\"70\":1}}],[\"preferred\",{\"1\":{\"71\":1}}],[\"preferably\",{\"1\":{\"36\":1,\"46\":1}}],[\"prefabs\",{\"1\":{\"47\":1}}],[\"previously\",{\"1\":{\"45\":1}}],[\"preview\",{\"1\":{\"45\":1}}],[\"prevents\",{\"1\":{\"54\":1}}],[\"prevent\",{\"1\":{\"39\":1,\"54\":1,\"60\":1}}],[\"preventing\",{\"1\":{\"28\":1}}],[\"press\",{\"1\":{\"28\":1,\"36\":2}}],[\"preset\",{\"1\":{\"6\":1}}],[\"properties\",{\"1\":{\"76\":2}}],[\"properly\",{\"1\":{\"46\":1}}],[\"probability\",{\"1\":{\"81\":3}}],[\"probably\",{\"1\":{\"34\":2,\"71\":1}}],[\"problem\",{\"1\":{\"71\":1}}],[\"provided\",{\"1\":{\"35\":1,\"47\":1,\"71\":1}}],[\"protected\",{\"1\":{\"28\":1,\"31\":1}}],[\"profile\",{\"0\":{\"12\":1},\"1\":{\"12\":1}}],[\"program\",{\"1\":{\"11\":1}}],[\"processor\",{\"1\":{\"77\":1,\"78\":1,\"79\":1,\"80\":2}}],[\"processors\",{\"0\":{\"77\":1},\"1\":{\"77\":2,\"78\":1,\"79\":1,\"80\":1}}],[\"process\",{\"1\":{\"4\":1,\"50\":1,\"58\":1}}],[\"prompt\",{\"1\":{\"1\":2}}],[\"parks\",{\"1\":{\"79\":1}}],[\"park\",{\"1\":{\"79\":1}}],[\"parent\",{\"0\":{\"71\":1},\"1\":{\"71\":30}}],[\"particular\",{\"1\":{\"70\":1,\"71\":1}}],[\"parts\",{\"1\":{\"70\":3}}],[\"part\",{\"1\":{\"70\":11,\"76\":1}}],[\"packs\",{\"0\":{\"38\":1,\"69\":1,\"70\":1},\"1\":{\"36\":1,\"38\":1,\"39\":1,\"46\":1,\"47\":1}}],[\"pack\",{\"0\":{\"39\":1},\"1\":{\"11\":1,\"36\":1,\"37\":2,\"38\":5,\"39\":6,\"42\":2,\"43\":1,\"44\":1,\"48\":1,\"63\":2,\"64\":1,\"69\":2,\"70\":1,\"71\":4,\"75\":1}}],[\"paths\",{\"1\":{\"78\":2}}],[\"path\",{\"1\":{\"6\":2,\"50\":4,\"68\":2}}],[\"page\",{\"1\":{\"5\":1,\"7\":1,\"10\":1,\"32\":1,\"40\":1}}],[\"pasting\",{\"1\":{\"71\":2}}],[\"pasted\",{\"1\":{\"71\":1}}],[\"pastes\",{\"1\":{\"71\":1}}],[\"paste\",{\"1\":{\"9\":1,\"71\":7}}],[\"past\",{\"1\":{\"1\":1}}],[\"+\",{\"1\":{\"1\":1,\"28\":2}}],[\"during\",{\"1\":{\"77\":1}}],[\"duplicate\",{\"1\":{\"71\":1}}],[\"dummy\",{\"1\":{\"51\":2}}],[\"due\",{\"1\":{\"4\":1,\"11\":1,\"28\":1}}],[\"dyer\",{\"1\":{\"51\":1}}],[\"dyer5\",{\"1\":{\"49\":1}}],[\"dyer4\",{\"1\":{\"49\":1}}],[\"dyer3\",{\"1\":{\"49\":1}}],[\"dyer2\",{\"1\":{\"49\":1}}],[\"dyer1\",{\"1\":{\"49\":1}}],[\"dropdown\",{\"1\":{\"37\":2}}],[\"dropdowns\",{\"1\":{\"1\":2}}],[\"dirt\",{\"1\":{\"78\":3,\"79\":2,\"80\":1}}],[\"directories\",{\"1\":{\"45\":1}}],[\"directory\",{\"1\":{\"6\":2,\"43\":2,\"45\":1,\"68\":1}}],[\"directly\",{\"1\":{\"40\":1,\"42\":2,\"56\":1,\"57\":2,\"60\":1,\"71\":2}}],[\"direction\",{\"1\":{\"28\":1}}],[\"divided\",{\"1\":{\"56\":1}}],[\"diving\",{\"1\":{\"54\":1}}],[\"difficult\",{\"1\":{\"52\":2,\"53\":2}}],[\"differ\",{\"1\":{\"1\":1}}],[\"differently\",{\"1\":{\"57\":1}}],[\"different\",{\"1\":{\"1\":1,\"6\":1,\"32\":1,\"40\":1,\"48\":2,\"50\":1,\"70\":2,\"71\":2,\"76\":1,\"77\":1}}],[\"dining\",{\"1\":{\"51\":1}}],[\"discord\",{\"1\":{\"72\":1}}],[\"disable\",{\"0\":{\"67\":1}}],[\"disabled\",{\"1\":{\"40\":1}}],[\"display\",{\"1\":{\"36\":1,\"40\":1}}],[\"displayed\",{\"1\":{\"28\":1}}],[\"district\",{\"1\":{\"71\":1}}],[\"distributes\",{\"1\":{\"11\":1}}],[\"distance\",{\"1\":{\"28\":1}}],[\"date\",{\"1\":{\"49\":1}}],[\"data\",{\"1\":{\"38\":1}}],[\"dat\",{\"1\":{\"4\":2}}],[\"dedicated\",{\"1\":{\"76\":1}}],[\"defined\",{\"1\":{\"78\":1,\"79\":1,\"80\":2}}],[\"define\",{\"1\":{\"54\":1}}],[\"default\",{\"1\":{\"28\":1,\"66\":1,\"69\":1,\"70\":1,\"71\":1}}],[\"deleting\",{\"1\":{\"66\":1}}],[\"delete\",{\"1\":{\"37\":1,\"46\":1,\"71\":1}}],[\"deliveryman5\",{\"1\":{\"49\":1}}],[\"deliveryman4\",{\"1\":{\"49\":1}}],[\"deliveryman3\",{\"1\":{\"49\":1}}],[\"deliveryman2\",{\"1\":{\"49\":1}}],[\"deliveryman1\",{\"1\":{\"49\":1}}],[\"details\",{\"1\":{\"36\":1,\"54\":1}}],[\"determines\",{\"1\":{\"76\":1}}],[\"determine\",{\"1\":{\"36\":1}}],[\"decay\",{\"0\":{\"81\":1},\"1\":{\"78\":1,\"79\":1,\"80\":2}}],[\"decoratively\",{\"1\":{\"76\":1}}],[\"decorative\",{\"1\":{\"70\":2,\"71\":1}}],[\"decorations\",{\"0\":{\"71\":1},\"1\":{\"40\":2,\"42\":1,\"46\":1,\"50\":4,\"66\":1}}],[\"decoration\",{\"0\":{\"66\":1,\"68\":1,\"79\":1},\"1\":{\"36\":1,\"68\":3,\"71\":3,\"79\":1}}],[\"deco\",{\"1\":{\"68\":2,\"71\":1}}],[\"decided\",{\"1\":{\"31\":1}}],[\"designers\",{\"1\":{\"54\":1}}],[\"designs\",{\"1\":{\"48\":2,\"71\":1}}],[\"designing\",{\"1\":{\"47\":1,\"70\":1,\"71\":1,\"72\":1}}],[\"design\",{\"1\":{\"47\":1,\"74\":1}}],[\"desired\",{\"1\":{\"33\":1,\"54\":1}}],[\"desc\",{\"1\":{\"39\":1}}],[\"descriptor\",{\"1\":{\"39\":1}}],[\"description\",{\"1\":{\"1\":2,\"38\":1,\"39\":2}}],[\"describing\",{\"1\":{\"39\":1}}],[\"debug\",{\"1\":{\"28\":1}}],[\"depth\",{\"1\":{\"4\":1}}],[\"depends\",{\"1\":{\"80\":1}}],[\"dependency\",{\"1\":{\"1\":1}}],[\"depending\",{\"1\":{\"1\":1,\"30\":1,\"42\":2,\"50\":1,\"71\":1,\"77\":1}}],[\"downsides\",{\"1\":{\"71\":1}}],[\"downwards\",{\"0\":{\"55\":1},\"1\":{\"54\":1,\"55\":1}}],[\"down\",{\"1\":{\"54\":1,\"58\":1,\"74\":1}}],[\"download\",{\"0\":{\"5\":1,\"7\":1},\"1\":{\"1\":2,\"5\":2,\"7\":2,\"9\":1,\"10\":2,\"11\":2,\"40\":1}}],[\"downloaded\",{\"0\":{\"42\":1},\"1\":{\"1\":1,\"4\":1,\"6\":1,\"9\":2,\"11\":1,\"42\":1}}],[\"double\",{\"1\":{\"36\":1}}],[\"don\",{\"0\":{\"61\":1},\"1\":{\"32\":1,\"39\":1,\"40\":2,\"48\":1,\"68\":1,\"71\":2}}],[\"done\",{\"1\":{\"1\":4,\"6\":1,\"31\":1}}],[\"do\",{\"0\":{\"10\":1,\"42\":1,\"60\":1},\"1\":{\"9\":1,\"11\":1,\"30\":1,\"34\":2,\"36\":1,\"49\":1,\"54\":1,\"61\":1,\"69\":1,\"71\":4,\"73\":1}}],[\"doesn\",{\"1\":{\"10\":1,\"40\":1,\"71\":6}}],[\"does\",{\"1\":{\"4\":1,\"76\":1}}],[\"d\",{\"1\":{\"1\":1}}],[\"edge\",{\"1\":{\"76\":1}}],[\"editing\",{\"1\":{\"66\":1,\"76\":1}}],[\"edit\",{\"1\":{\"66\":1,\"67\":1,\"76\":1}}],[\"equivalent\",{\"1\":{\"74\":1}}],[\"empty\",{\"1\":{\"75\":1}}],[\"employed\",{\"1\":{\"34\":1}}],[\"embed\",{\"1\":{\"71\":1}}],[\"embedding\",{\"1\":{\"71\":1}}],[\"embedded\",{\"1\":{\"71\":2}}],[\"effect\",{\"1\":{\"57\":1}}],[\"error\",{\"1\":{\"48\":1,\"71\":1}}],[\"either\",{\"1\":{\"42\":1,\"47\":2,\"55\":1,\"71\":4}}],[\"especially\",{\"1\":{\"40\":1,\"71\":1}}],[\"escape\",{\"1\":{\"36\":1}}],[\"easy\",{\"1\":{\"52\":2,\"53\":2}}],[\"easier\",{\"1\":{\"40\":1}}],[\"early\",{\"1\":{\"40\":1}}],[\"each\",{\"1\":{\"1\":2,\"28\":1,\"30\":1,\"34\":2,\"40\":2,\"48\":2,\"51\":2,\"54\":2,\"55\":1,\"70\":3,\"71\":4,\"74\":2,\"76\":1,\"77\":1}}],[\"e\",{\"1\":{\"36\":1,\"40\":1,\"48\":2,\"51\":1,\"69\":1,\"70\":1,\"71\":5,\"75\":1}}],[\"every\",{\"1\":{\"56\":1,\"57\":1,\"71\":1}}],[\"everything\",{\"1\":{\"36\":1}}],[\"everyone\",{\"1\":{\"34\":1}}],[\"even\",{\"1\":{\"0\":1,\"46\":1,\"48\":1,\"71\":2}}],[\"elements\",{\"1\":{\"70\":1}}],[\"eligible\",{\"1\":{\"36\":1}}],[\"else\",{\"1\":{\"31\":1,\"61\":1}}],[\"elsewhere\",{\"1\":{\"1\":1,\"70\":1}}],[\"elaborate\",{\"1\":{\"30\":1}}],[\"etc\",{\"1\":{\"28\":1,\"38\":1,\"42\":1,\"70\":1,\"71\":2}}],[\"encouraged\",{\"1\":{\"70\":1}}],[\"enclosed\",{\"1\":{\"51\":1}}],[\"enchanter5\",{\"1\":{\"49\":1}}],[\"enchanter4\",{\"1\":{\"49\":1}}],[\"enchanter3\",{\"1\":{\"49\":1}}],[\"enchanter2\",{\"1\":{\"49\":1}}],[\"enchanter1\",{\"1\":{\"49\":1}}],[\"ends\",{\"1\":{\"68\":1}}],[\"end\",{\"1\":{\"48\":2,\"52\":1,\"53\":1,\"76\":1}}],[\"endversion\",{\"1\":{\"36\":2,\"37\":2,\"40\":1,\"42\":2,\"43\":2,\"44\":2,\"45\":2,\"46\":1,\"48\":2,\"50\":2,\"58\":1,\"63\":2,\"64\":2,\"68\":2,\"69\":2,\"70\":2,\"71\":2}}],[\"enough\",{\"1\":{\"30\":1}}],[\"entrance\",{\"1\":{\"76\":4}}],[\"entity\",{\"1\":{\"35\":1}}],[\"entirely\",{\"1\":{\"69\":1}}],[\"entire\",{\"1\":{\"11\":1,\"36\":1,\"46\":1,\"63\":1}}],[\"enter\",{\"1\":{\"1\":3,\"36\":1}}],[\"ensure\",{\"1\":{\"10\":1,\"48\":1,\"54\":1,\"75\":1}}],[\"exclusively\",{\"1\":{\"76\":1}}],[\"exception\",{\"1\":{\"54\":1}}],[\"exceptions\",{\"1\":{\"40\":1}}],[\"except\",{\"1\":{\"10\":1,\"34\":1,\"48\":2}}],[\"excellent\",{\"1\":{\"4\":1}}],[\"export\",{\"1\":{\"74\":1}}],[\"expected\",{\"1\":{\"48\":1}}],[\"exploring\",{\"1\":{\"74\":1}}],[\"explored\",{\"1\":{\"28\":1}}],[\"explore\",{\"1\":{\"1\":1,\"73\":1}}],[\"explicitly\",{\"1\":{\"47\":1,\"71\":2}}],[\"explain\",{\"1\":{\"39\":1}}],[\"existing\",{\"1\":{\"47\":1,\"60\":1,\"63\":1,\"69\":1,\"80\":1}}],[\"exists\",{\"1\":{\"28\":1}}],[\"examples\",{\"1\":{\"40\":1}}],[\"example\",{\"0\":{\"81\":1},\"1\":{\"28\":1,\"48\":2,\"50\":2,\"54\":2,\"55\":1,\"76\":1}}],[\"exactly\",{\"1\":{\"48\":1,\"69\":1,\"70\":1}}],[\"exact\",{\"1\":{\"10\":1,\"36\":1}}],[\"extension\",{\"1\":{\"48\":1}}],[\"external\",{\"0\":{\"11\":1},\"1\":{\"11\":1}}],[\"extra\",{\"1\":{\"40\":1}}],[\"extracting\",{\"1\":{\"9\":1}}],[\"extract\",{\"1\":{\"9\":1}}],[\"written\",{\"1\":{\"60\":1}}],[\"writing\",{\"1\":{\"1\":1}}],[\"would\",{\"1\":{\"48\":1,\"50\":2,\"54\":1,\"76\":2}}],[\"world\",{\"1\":{\"47\":1,\"73\":2,\"74\":5,\"80\":1}}],[\"working\",{\"1\":{\"34\":1,\"56\":2}}],[\"worker\",{\"1\":{\"23\":1,\"30\":1,\"32\":4,\"34\":2,\"35\":1,\"37\":1,\"54\":7}}],[\"works\",{\"1\":{\"11\":1,\"45\":1,\"57\":1,\"71\":1}}],[\"work\",{\"1\":{\"10\":1,\"48\":1,\"51\":1,\"54\":11,\"57\":3,\"71\":2}}],[\"wooden\",{\"1\":{\"52\":1,\"63\":2,\"78\":1}}],[\"wood\",{\"1\":{\"30\":1,\"61\":1}}],[\"won\",{\"1\":{\"28\":1,\"46\":1,\"48\":1,\"71\":2}}],[\"weathered\",{\"1\":{\"79\":1}}],[\"weepv\",{\"1\":{\"54\":2}}],[\"weeping\",{\"1\":{\"54\":1,\"55\":1}}],[\"website\",{\"1\":{\"10\":1}}],[\"we\",{\"1\":{\"4\":2,\"48\":1,\"77\":1}}],[\"well\",{\"1\":{\"4\":2,\"34\":1,\"71\":2}}],[\"wildwestsupplycamp\",{\"1\":{\"50\":1}}],[\"wildwest\",{\"1\":{\"50\":3}}],[\"will\",{\"1\":{\"1\":2,\"4\":2,\"6\":1,\"8\":2,\"11\":2,\"28\":3,\"30\":4,\"31\":4,\"32\":6,\"34\":1,\"36\":1,\"37\":2,\"38\":1,\"39\":1,\"46\":1,\"51\":1,\"54\":7,\"55\":2,\"56\":1,\"57\":5,\"58\":1,\"65\":1,\"66\":1,\"67\":1,\"68\":1,\"71\":6,\"73\":1,\"74\":2,\"76\":1,\"78\":1,\"80\":1}}],[\"windows\",{\"1\":{\"11\":2}}],[\"within\",{\"1\":{\"38\":1,\"54\":1,\"55\":1,\"71\":4}}],[\"without\",{\"0\":{\"11\":1},\"1\":{\"9\":1,\"48\":2,\"50\":1,\"58\":1}}],[\"with\",{\"1\":{\"1\":1,\"4\":1,\"30\":2,\"32\":2,\"34\":3,\"35\":1,\"36\":1,\"37\":2,\"38\":3,\"39\":1,\"40\":2,\"48\":4,\"51\":6,\"57\":2,\"60\":1,\"63\":2,\"68\":3,\"69\":2,\"70\":2,\"71\":6,\"75\":2,\"76\":1,\"78\":1,\"79\":1,\"80\":1,\"81\":1}}],[\"wish\",{\"1\":{\"1\":1,\"11\":1,\"71\":1,\"73\":1}}],[\"what\",{\"0\":{\"43\":1,\"45\":1,\"46\":1,\"72\":1},\"1\":{\"31\":1,\"32\":2,\"34\":4,\"39\":1,\"54\":1,\"70\":1}}],[\"whatever\",{\"1\":{\"1\":1}}],[\"whilst\",{\"1\":{\"54\":1}}],[\"while\",{\"1\":{\"40\":1,\"68\":1,\"70\":1,\"71\":2}}],[\"which\",{\"1\":{\"10\":1,\"34\":1,\"39\":1,\"40\":3,\"42\":1,\"43\":1,\"54\":2,\"69\":2,\"70\":1,\"71\":1,\"80\":2}}],[\"white\",{\"1\":{\"1\":2,\"36\":1}}],[\"wherever\",{\"1\":{\"71\":2}}],[\"where\",{\"0\":{\"43\":1,\"44\":1},\"1\":{\"8\":1,\"10\":1,\"28\":1,\"31\":2,\"36\":1,\"37\":1,\"43\":1,\"45\":1,\"50\":1,\"51\":1,\"54\":2,\"57\":4,\"58\":2,\"60\":1,\"68\":1,\"70\":1,\"71\":2,\"76\":2}}],[\"whether\",{\"1\":{\"1\":1,\"50\":1,\"71\":2}}],[\"whenever\",{\"1\":{\"39\":3}}],[\"when\",{\"1\":{\"1\":3,\"6\":1,\"28\":1,\"30\":1,\"32\":2,\"36\":1,\"39\":1,\"40\":1,\"45\":2,\"46\":1,\"48\":1,\"50\":1,\"55\":2,\"60\":1,\"66\":1,\"70\":2,\"71\":8,\"76\":3,\"78\":1,\"80\":2}}],[\"walking\",{\"1\":{\"54\":1}}],[\"walk\",{\"1\":{\"54\":4,\"57\":2}}],[\"walls\",{\"1\":{\"42\":1,\"70\":1,\"71\":1}}],[\"warpedp\",{\"1\":{\"54\":2}}],[\"warped\",{\"1\":{\"54\":1,\"57\":1}}],[\"warehouse5\",{\"1\":{\"49\":1}}],[\"warehouse4\",{\"1\":{\"49\":1}}],[\"warehouse3\",{\"1\":{\"49\":1}}],[\"warehouse2\",{\"1\":{\"49\":1}}],[\"warehouse1\",{\"1\":{\"49\":1}}],[\"warehouse\",{\"1\":{\"0\":1,\"23\":1,\"51\":1,\"71\":1}}],[\"water\",{\"1\":{\"51\":3,\"54\":2,\"57\":2,\"78\":1}}],[\"want\",{\"1\":{\"31\":1,\"33\":1,\"36\":2,\"40\":1,\"54\":1,\"60\":1}}],[\"was\",{\"1\":{\"28\":1,\"42\":1,\"45\":2,\"70\":1,\"71\":1}}],[\"wait\",{\"1\":{\"1\":1,\"32\":1}}],[\"way\",{\"1\":{\"1\":1,\"46\":1,\"71\":2,\"73\":1,\"74\":1}}],[\"rule\",{\"1\":{\"81\":1}}],[\"rules\",{\"1\":{\"50\":1}}],[\"running\",{\"1\":{\"28\":1}}],[\"run\",{\"0\":{\"6\":1,\"12\":1},\"1\":{\"1\":1,\"6\":2,\"11\":1,\"12\":1}}],[\"road\",{\"1\":{\"76\":2,\"78\":2}}],[\"roads\",{\"1\":{\"40\":3,\"76\":9}}],[\"rotate\",{\"1\":{\"69\":1}}],[\"rotation\",{\"1\":{\"48\":1,\"60\":1,\"71\":3}}],[\"root\",{\"1\":{\"55\":2}}],[\"room\",{\"1\":{\"51\":2}}],[\"rts\",{\"1\":{\"47\":1}}],[\"random\",{\"1\":{\"81\":1}}],[\"randomly\",{\"1\":{\"74\":1}}],[\"rarer\",{\"1\":{\"53\":1}}],[\"rabbithutch5\",{\"1\":{\"49\":1}}],[\"rabbithutch4\",{\"1\":{\"49\":1}}],[\"rabbithutch3\",{\"1\":{\"49\":1}}],[\"rabbithutch2\",{\"1\":{\"49\":1}}],[\"rabbithutch1\",{\"1\":{\"49\":1}}],[\"racks\",{\"1\":{\"51\":1,\"60\":1,\"70\":1,\"71\":1}}],[\"rack\",{\"1\":{\"30\":1,\"51\":1}}],[\"radius\",{\"1\":{\"28\":1}}],[\"right\",{\"1\":{\"1\":3,\"30\":1,\"31\":2,\"32\":2,\"36\":3,\"37\":2,\"40\":1,\"48\":1,\"71\":2,\"75\":1}}],[\"replacement\",{\"0\":{\"80\":1},\"1\":{\"80\":2}}],[\"replaces\",{\"1\":{\"79\":1,\"80\":1,\"81\":1}}],[\"replace\",{\"1\":{\"76\":1,\"78\":1}}],[\"repair\",{\"1\":{\"74\":1}}],[\"repairs\",{\"1\":{\"71\":1}}],[\"register\",{\"1\":{\"75\":1}}],[\"regardless\",{\"1\":{\"70\":1,\"71\":1}}],[\"regarding\",{\"1\":{\"41\":1}}],[\"reactivate\",{\"1\":{\"74\":1}}],[\"reached\",{\"1\":{\"66\":1}}],[\"reach\",{\"1\":{\"54\":2,\"55\":1}}],[\"reasons\",{\"1\":{\"50\":1,\"70\":2}}],[\"real\",{\"1\":{\"47\":1,\"71\":1}}],[\"ready\",{\"1\":{\"1\":1,\"12\":1,\"33\":1,\"36\":1,\"48\":2}}],[\"read\",{\"1\":{\"1\":2}}],[\"remain\",{\"1\":{\"80\":1}}],[\"removes\",{\"1\":{\"80\":1}}],[\"removed\",{\"1\":{\"45\":2}}],[\"remember\",{\"1\":{\"31\":1,\"48\":1,\"71\":1}}],[\"relative\",{\"1\":{\"71\":2}}],[\"relationship\",{\"1\":{\"71\":1}}],[\"related\",{\"1\":{\"40\":1,\"71\":1}}],[\"released\",{\"1\":{\"71\":2}}],[\"release\",{\"1\":{\"39\":1}}],[\"renamed\",{\"1\":{\"43\":1}}],[\"rename\",{\"1\":{\"36\":1,\"37\":1,\"61\":1}}],[\"reclaim\",{\"1\":{\"74\":1}}],[\"recall\",{\"1\":{\"32\":1}}],[\"recommended\",{\"1\":{\"1\":1,\"5\":1,\"40\":2,\"69\":1,\"70\":1,\"71\":3}}],[\"red\",{\"1\":{\"32\":2,\"54\":1,\"57\":2}}],[\"requires\",{\"1\":{\"71\":1}}],[\"requirements\",{\"0\":{\"51\":1,\"52\":1,\"53\":1},\"1\":{\"51\":1,\"52\":1,\"53\":1,\"54\":1}}],[\"required\",{\"1\":{\"10\":1,\"11\":1,\"28\":3,\"55\":1,\"70\":1,\"71\":1}}],[\"require\",{\"1\":{\"4\":1,\"11\":1,\"30\":1,\"51\":1}}],[\"responsible\",{\"1\":{\"80\":1}}],[\"restrict\",{\"1\":{\"76\":1}}],[\"restored\",{\"1\":{\"75\":1}}],[\"restart\",{\"1\":{\"65\":1}}],[\"restaurant\",{\"1\":{\"34\":1,\"51\":1}}],[\"residents\",{\"1\":{\"73\":1}}],[\"residence\",{\"1\":{\"0\":1}}],[\"research\",{\"1\":{\"71\":2}}],[\"resource\",{\"1\":{\"34\":2,\"38\":1,\"75\":1}}],[\"resources\",{\"1\":{\"32\":2}}],[\"result\",{\"1\":{\"1\":1}}],[\"re\",{\"1\":{\"1\":7,\"33\":1,\"40\":1,\"46\":1,\"50\":1,\"60\":1,\"71\":1}}],[\"void\",{\"1\":{\"76\":4}}],[\"villages\",{\"1\":{\"73\":1,\"80\":1}}],[\"vines\",{\"1\":{\"54\":2,\"55\":2,\"58\":3}}],[\"vine\",{\"1\":{\"54\":6,\"58\":1}}],[\"view\",{\"1\":{\"48\":1}}],[\"visible\",{\"1\":{\"39\":3,\"48\":1}}],[\"visit\",{\"1\":{\"4\":1}}],[\"via\",{\"1\":{\"1\":1,\"47\":1}}],[\"variants\",{\"1\":{\"79\":1}}],[\"various\",{\"1\":{\"47\":1,\"80\":1}}],[\"variety\",{\"1\":{\"4\":1}}],[\"vanilla\",{\"1\":{\"1\":1,\"60\":1,\"73\":1}}],[\"vertically\",{\"0\":{\"55\":1},\"1\":{\"55\":2}}],[\"vertical\",{\"1\":{\"51\":1}}],[\"very\",{\"1\":{\"4\":1,\"52\":2,\"53\":2,\"69\":1,\"70\":1,\"71\":1}}],[\"versions\",{\"1\":{\"1\":1,\"4\":1,\"70\":1,\"71\":2}}],[\"version\",{\"1\":{\"1\":5,\"5\":2,\"6\":1,\"7\":1,\"10\":4,\"36\":2,\"37\":3,\"39\":5,\"42\":2,\"43\":2,\"44\":2,\"45\":3,\"48\":3,\"50\":2,\"53\":1,\"63\":2,\"64\":2,\"68\":2,\"69\":2,\"70\":2,\"71\":7}}],[\"ve\",{\"1\":{\"1\":1,\"31\":1,\"46\":1,\"71\":1,\"74\":2}}],[\"oak\",{\"1\":{\"75\":2,\"76\":5,\"81\":2}}],[\"older\",{\"1\":{\"71\":1}}],[\"ocean\",{\"1\":{\"52\":1,\"53\":1}}],[\"october\",{\"1\":{\"49\":1}}],[\"own\",{\"0\":{\"47\":1,\"65\":1},\"1\":{\"32\":1,\"37\":1,\"43\":1,\"47\":1,\"66\":2,\"71\":5,\"72\":1,\"73\":1,\"74\":1}}],[\"optionally\",{\"1\":{\"38\":1}}],[\"options\",{\"1\":{\"11\":1,\"32\":2,\"33\":1,\"73\":1}}],[\"option\",{\"1\":{\"9\":1,\"11\":1,\"71\":1}}],[\"open\",{\"1\":{\"1\":1,\"8\":2}}],[\"operating\",{\"1\":{\"1\":1}}],[\"our\",{\"1\":{\"4\":2}}],[\"output\",{\"1\":{\"81\":1}}],[\"outside\",{\"1\":{\"48\":1,\"70\":1}}],[\"outline\",{\"1\":{\"36\":1}}],[\"out\",{\"1\":{\"1\":1,\"48\":2,\"60\":2,\"75\":1}}],[\"overlapping\",{\"1\":{\"71\":1}}],[\"overlay\",{\"1\":{\"71\":1}}],[\"overboard\",{\"1\":{\"71\":1}}],[\"override\",{\"0\":{\"63\":1},\"1\":{\"63\":2}}],[\"overworld\",{\"0\":{\"52\":1},\"1\":{\"53\":1}}],[\"overview\",{\"1\":{\"40\":1}}],[\"over\",{\"1\":{\"1\":1,\"71\":1}}],[\"otherwise\",{\"1\":{\"71\":1}}],[\"others\",{\"1\":{\"39\":1,\"40\":1,\"71\":2}}],[\"other\",{\"1\":{\"1\":1,\"4\":1,\"11\":1,\"28\":1,\"32\":2,\"33\":2,\"48\":1,\"70\":1,\"71\":6}}],[\"orientation\",{\"1\":{\"71\":2}}],[\"oriented\",{\"1\":{\"69\":1}}],[\"originals\",{\"1\":{\"70\":1}}],[\"original\",{\"0\":{\"4\":1},\"1\":{\"4\":1,\"12\":1,\"60\":1,\"69\":1,\"71\":1}}],[\"order\",{\"1\":{\"32\":1,\"38\":1,\"39\":1}}],[\"or\",{\"0\":{\"71\":1},\"1\":{\"1\":2,\"4\":1,\"6\":1,\"11\":3,\"28\":2,\"30\":2,\"32\":1,\"35\":2,\"36\":2,\"38\":1,\"39\":1,\"40\":1,\"42\":1,\"47\":2,\"48\":4,\"50\":3,\"51\":2,\"55\":1,\"60\":3,\"61\":1,\"64\":1,\"70\":2,\"71\":16,\"75\":1,\"76\":2,\"79\":2,\"80\":1,\"81\":1}}],[\"onto\",{\"1\":{\"39\":1}}],[\"ones\",{\"1\":{\"71\":1}}],[\"one\",{\"1\":{\"30\":1,\"32\":1,\"34\":1,\"38\":2,\"39\":1,\"40\":2,\"47\":1,\"48\":1,\"70\":4,\"71\":4,\"73\":1,\"74\":1,\"76\":2,\"81\":1}}],[\"online\",{\"1\":{\"4\":1}}],[\"only\",{\"1\":{\"1\":2,\"4\":1,\"34\":2,\"40\":1,\"43\":1,\"48\":2,\"55\":2,\"56\":2,\"60\":1,\"68\":1,\"70\":3,\"71\":5,\"73\":1,\"74\":2}}],[\"on\",{\"0\":{\"4\":1,\"59\":1,\"65\":1,\"66\":1},\"1\":{\"1\":4,\"4\":2,\"6\":1,\"8\":2,\"10\":2,\"11\":2,\"30\":1,\"31\":1,\"32\":3,\"36\":1,\"37\":1,\"42\":2,\"45\":1,\"46\":2,\"51\":4,\"54\":2,\"56\":1,\"57\":2,\"58\":1,\"60\":2,\"65\":1,\"70\":2,\"71\":2,\"77\":1,\"80\":1}}],[\"once\",{\"1\":{\"1\":6,\"9\":1,\"31\":3,\"32\":1,\"33\":2,\"36\":4,\"37\":2,\"48\":2,\"64\":1,\"74\":1}}],[\"often\",{\"1\":{\"71\":1,\"80\":1}}],[\"off\",{\"1\":{\"73\":1}}],[\"offering\",{\"1\":{\"11\":1}}],[\"offer\",{\"1\":{\"4\":1}}],[\"officially\",{\"1\":{\"31\":1,\"32\":1,\"61\":1}}],[\"official\",{\"1\":{\"1\":3,\"4\":5,\"11\":1,\"28\":1,\"40\":1,\"60\":1,\"74\":1}}],[\"of\",{\"1\":{\"0\":1,\"1\":7,\"4\":3,\"7\":1,\"10\":1,\"28\":3,\"30\":2,\"31\":3,\"32\":2,\"34\":4,\"35\":2,\"36\":2,\"37\":2,\"39\":9,\"40\":3,\"45\":1,\"46\":1,\"47\":1,\"48\":4,\"49\":2,\"51\":5,\"54\":7,\"55\":2,\"56\":4,\"57\":2,\"58\":1,\"60\":3,\"66\":1,\"68\":2,\"70\":8,\"71\":21,\"73\":1,\"74\":5,\"76\":7,\"78\":3}}],[\"unused\",{\"1\":{\"66\":1}}],[\"unobtainable\",{\"1\":{\"61\":1}}],[\"unobstructed\",{\"1\":{\"51\":1}}],[\"unlocked\",{\"1\":{\"71\":2}}],[\"unlock\",{\"1\":{\"71\":1}}],[\"unlimited\",{\"1\":{\"57\":1}}],[\"unlike\",{\"1\":{\"54\":1}}],[\"unless\",{\"1\":{\"43\":1,\"61\":1,\"63\":1,\"71\":2}}],[\"unique\",{\"1\":{\"45\":1,\"71\":1,\"76\":1}}],[\"university5\",{\"1\":{\"49\":1}}],[\"university4\",{\"1\":{\"49\":1}}],[\"university3\",{\"1\":{\"49\":1}}],[\"university2\",{\"1\":{\"49\":1}}],[\"university1\",{\"1\":{\"49\":1}}],[\"university\",{\"1\":{\"0\":1,\"51\":1}}],[\"unzipped\",{\"1\":{\"42\":1}}],[\"unzip\",{\"1\":{\"42\":2}}],[\"under\",{\"1\":{\"37\":1,\"43\":2,\"44\":1,\"45\":1,\"48\":1}}],[\"unfortunately\",{\"1\":{\"11\":1,\"63\":1}}],[\"usual\",{\"1\":{\"64\":1}}],[\"usually\",{\"1\":{\"57\":1}}],[\"usable\",{\"1\":{\"46\":1}}],[\"uses\",{\"1\":{\"76\":1}}],[\"used\",{\"1\":{\"38\":1,\"39\":1,\"40\":1,\"45\":1,\"46\":1,\"56\":1,\"57\":1,\"71\":3,\"76\":1,\"77\":1}}],[\"use\",{\"0\":{\"64\":1,\"65\":1,\"66\":1,\"69\":1},\"1\":{\"11\":1,\"30\":1,\"31\":1,\"32\":1,\"33\":1,\"35\":1,\"37\":1,\"39\":1,\"47\":1,\"48\":2,\"49\":1,\"57\":1,\"60\":4,\"61\":1,\"66\":2,\"69\":2,\"70\":1,\"71\":7,\"75\":1,\"76\":2,\"77\":1}}],[\"using\",{\"1\":{\"4\":1,\"43\":1,\"51\":1,\"70\":1,\"76\":1}}],[\"upwards\",{\"0\":{\"55\":1},\"1\":{\"55\":2}}],[\"upgradable\",{\"0\":{\"68\":1}}],[\"upgrading\",{\"1\":{\"33\":1,\"71\":1}}],[\"upgradeable\",{\"1\":{\"71\":1}}],[\"upgraded\",{\"1\":{\"71\":1}}],[\"upgrades\",{\"1\":{\"30\":1}}],[\"upgrade\",{\"1\":{\"30\":1,\"33\":1,\"34\":1,\"71\":2}}],[\"up\",{\"0\":{\"29\":1},\"1\":{\"1\":3,\"49\":1,\"51\":1,\"54\":1,\"70\":2,\"71\":3}}],[\"generic\",{\"1\":{\"76\":1}}],[\"generates\",{\"1\":{\"80\":1}}],[\"generate\",{\"1\":{\"74\":1}}],[\"generation\",{\"1\":{\"74\":2}}],[\"gets\",{\"1\":{\"55\":1}}],[\"get\",{\"0\":{\"47\":1},\"1\":{\"28\":1,\"30\":1,\"34\":1,\"36\":1,\"54\":1,\"71\":3}}],[\"getting\",{\"0\":{\"74\":1},\"1\":{\"1\":3,\"47\":1,\"60\":1}}],[\"glowberries\",{\"1\":{\"55\":1}}],[\"glowb\",{\"1\":{\"54\":2}}],[\"glow\",{\"1\":{\"54\":1}}],[\"glowstone\",{\"1\":{\"51\":1}}],[\"glassblower\",{\"1\":{\"51\":1}}],[\"glassblower5\",{\"1\":{\"49\":1}}],[\"glassblower4\",{\"1\":{\"49\":1}}],[\"glassblower3\",{\"1\":{\"49\":1}}],[\"glassblower2\",{\"1\":{\"49\":1}}],[\"glassblower1\",{\"1\":{\"49\":1}}],[\"grass\",{\"1\":{\"78\":1}}],[\"gravel\",{\"1\":{\"78\":1}}],[\"graves\",{\"1\":{\"51\":6}}],[\"graveyard\",{\"1\":{\"51\":1}}],[\"graveyard5\",{\"1\":{\"49\":1}}],[\"graveyard4\",{\"1\":{\"49\":1}}],[\"graveyard3\",{\"1\":{\"49\":1}}],[\"graveyard2\",{\"1\":{\"49\":1}}],[\"graveyard1\",{\"1\":{\"49\":1}}],[\"grow\",{\"1\":{\"55\":1,\"56\":1,\"57\":4}}],[\"growth\",{\"1\":{\"55\":1}}],[\"grows\",{\"1\":{\"55\":2}}],[\"growing\",{\"0\":{\"55\":1},\"1\":{\"54\":1,\"55\":2}}],[\"ground\",{\"1\":{\"50\":1,\"54\":2,\"57\":4,\"60\":3,\"70\":1}}],[\"groundlevel\",{\"1\":{\"50\":1,\"60\":1}}],[\"group\",{\"1\":{\"40\":1}}],[\"greyed\",{\"1\":{\"48\":1}}],[\"green\",{\"1\":{\"31\":1,\"32\":1,\"36\":1}}],[\"giving\",{\"1\":{\"71\":1}}],[\"given\",{\"1\":{\"54\":2,\"58\":1,\"66\":1,\"80\":1}}],[\"give\",{\"1\":{\"30\":1,\"32\":1,\"34\":1,\"35\":1}}],[\"github\",{\"1\":{\"40\":2}}],[\"g\",{\"1\":{\"36\":1,\"40\":1,\"48\":2,\"71\":3,\"75\":1}}],[\"guessing\",{\"1\":{\"50\":1}}],[\"guardtower5\",{\"1\":{\"49\":1}}],[\"guardtower4\",{\"1\":{\"49\":1}}],[\"guardtower3\",{\"1\":{\"49\":1}}],[\"guardtower2\",{\"1\":{\"49\":1}}],[\"guardtower1\",{\"1\":{\"49\":1}}],[\"guardtower\",{\"1\":{\"34\":1,\"51\":1}}],[\"guidelines\",{\"1\":{\"48\":1}}],[\"gui\",{\"1\":{\"31\":1,\"32\":3,\"33\":1,\"36\":1}}],[\"gather\",{\"1\":{\"30\":1}}],[\"games\",{\"1\":{\"43\":3,\"44\":1}}],[\"game\",{\"1\":{\"4\":1,\"35\":1,\"40\":2,\"43\":1,\"46\":1,\"48\":1,\"64\":1,\"70\":1,\"71\":1,\"80\":1}}],[\"goals\",{\"1\":{\"71\":1}}],[\"goes\",{\"1\":{\"42\":1}}],[\"good\",{\"1\":{\"34\":1,\"71\":1}}],[\"google\",{\"1\":{\"4\":1}}],[\"go\",{\"1\":{\"1\":1,\"5\":1,\"7\":1,\"8\":1,\"12\":1,\"32\":1,\"33\":1,\"36\":1,\"40\":1,\"42\":1,\"51\":1,\"71\":2,\"74\":1}}],[\"gdlauncher以及curseforge\",{\"1\":{\"14\":1}}],[\"gdlauncher\",{\"0\":{\"1\":1},\"1\":{\"1\":15,\"4\":1,\"11\":1}}],[\"lumberjack5\",{\"1\":{\"49\":1}}],[\"lumberjack4\",{\"1\":{\"49\":1}}],[\"lumberjack3\",{\"1\":{\"49\":1}}],[\"lumberjack2\",{\"1\":{\"49\":1}}],[\"lumberjack1\",{\"1\":{\"49\":1}}],[\"lumberjack\",{\"1\":{\"34\":1}}],[\"lectern\",{\"1\":{\"60\":1}}],[\"leaves\",{\"1\":{\"51\":1}}],[\"least\",{\"1\":{\"51\":2}}],[\"legacy\",{\"1\":{\"50\":1}}],[\"levelling\",{\"1\":{\"71\":2}}],[\"level\",{\"0\":{\"52\":1,\"53\":1},\"1\":{\"33\":1,\"34\":3,\"40\":1,\"48\":7,\"49\":5,\"50\":3,\"51\":30,\"52\":6,\"53\":6,\"60\":4,\"63\":1,\"68\":1,\"70\":3,\"71\":17,\"74\":2,\"76\":1}}],[\"levels\",{\"1\":{\"30\":1,\"34\":1,\"60\":2,\"71\":3}}],[\"letters\",{\"1\":{\"48\":1,\"49\":1}}],[\"let\",{\"1\":{\"28\":1,\"57\":1}}],[\"left\",{\"1\":{\"1\":3,\"36\":2,\"37\":1}}],[\"low\",{\"1\":{\"74\":1,\"81\":1}}],[\"lowest\",{\"1\":{\"36\":1}}],[\"lowercase\",{\"1\":{\"48\":1}}],[\"lower\",{\"1\":{\"30\":1}}],[\"locked\",{\"1\":{\"71\":1}}],[\"located\",{\"1\":{\"43\":2}}],[\"location\",{\"1\":{\"28\":1,\"51\":1,\"57\":1,\"58\":1,\"60\":2,\"71\":3,\"81\":1}}],[\"loops\",{\"1\":{\"71\":2}}],[\"looks\",{\"1\":{\"37\":1}}],[\"look\",{\"1\":{\"28\":1,\"31\":1,\"43\":1,\"44\":1,\"54\":1,\"71\":1,\"74\":1}}],[\"loaded\",{\"1\":{\"12\":1}}],[\"longer\",{\"1\":{\"11\":2,\"45\":1}}],[\"logs\",{\"1\":{\"51\":1,\"81\":1}}],[\"logged\",{\"1\":{\"1\":1,\"46\":1}}],[\"log\",{\"1\":{\"1\":2,\"81\":1}}],[\"light\",{\"1\":{\"71\":3}}],[\"lightly\",{\"1\":{\"57\":1}}],[\"limited\",{\"1\":{\"71\":1}}],[\"limit\",{\"1\":{\"66\":2,\"71\":1}}],[\"limiting\",{\"1\":{\"28\":1}}],[\"list\",{\"1\":{\"49\":1,\"76\":1}}],[\"listed\",{\"1\":{\"48\":1}}],[\"live\",{\"1\":{\"38\":1}}],[\"line\",{\"1\":{\"55\":1,\"71\":1}}],[\"link\",{\"1\":{\"23\":3,\"30\":1,\"32\":2,\"34\":10,\"35\":1,\"37\":1,\"38\":1,\"48\":1,\"51\":28,\"54\":7,\"63\":1,\"70\":1}}],[\"linux\",{\"1\":{\"11\":1}}],[\"licensing\",{\"1\":{\"11\":1}}],[\"like\",{\"1\":{\"1\":1,\"31\":1,\"35\":1,\"37\":1,\"42\":1,\"47\":2,\"48\":2,\"54\":2,\"60\":1,\"70\":1,\"71\":4,\"74\":1,\"78\":1,\"79\":1}}],[\"library5\",{\"1\":{\"49\":1}}],[\"library4\",{\"1\":{\"49\":1}}],[\"library3\",{\"1\":{\"49\":1}}],[\"library2\",{\"1\":{\"49\":1}}],[\"library1\",{\"1\":{\"49\":1}}],[\"library\",{\"1\":{\"0\":1,\"51\":1}}],[\"labels\",{\"1\":{\"71\":1}}],[\"layers\",{\"1\":{\"71\":1}}],[\"layer\",{\"1\":{\"70\":3}}],[\"layout\",{\"1\":{\"31\":1,\"69\":1}}],[\"ladder\",{\"1\":{\"51\":1}}],[\"ladders\",{\"1\":{\"51\":2}}],[\"later\",{\"1\":{\"40\":1,\"45\":1,\"80\":1}}],[\"latest\",{\"1\":{\"1\":4,\"5\":1,\"7\":1,\"10\":1}}],[\"last\",{\"1\":{\"10\":1}}],[\"launch\",{\"1\":{\"1\":2}}],[\"launcher上找到相应的安装说明\",{\"1\":{\"14\":1}}],[\"launcher\",{\"0\":{\"4\":1},\"1\":{\"1\":1,\"4\":2,\"11\":3,\"12\":1}}],[\"ll\",{\"1\":{\"1\":4,\"10\":1,\"68\":1,\"71\":2,\"73\":1}}],[\"citizen5\",{\"1\":{\"49\":1}}],[\"citizen4\",{\"1\":{\"49\":1}}],[\"citizen3\",{\"1\":{\"49\":1}}],[\"citizen2\",{\"1\":{\"49\":1}}],[\"citizen1\",{\"1\":{\"49\":1}}],[\"citizens\",{\"1\":{\"31\":1,\"34\":5}}],[\"certain\",{\"1\":{\"35\":1,\"51\":1,\"54\":1,\"71\":1}}],[\"center\",{\"1\":{\"28\":1,\"31\":1,\"69\":1}}],[\"cracked\",{\"1\":{\"79\":1}}],[\"cranes\",{\"1\":{\"70\":1}}],[\"craftsmanship\",{\"1\":{\"71\":1}}],[\"craft\",{\"1\":{\"30\":1,\"32\":1,\"33\":1}}],[\"crimsonp\",{\"1\":{\"54\":2}}],[\"crimson\",{\"1\":{\"54\":1,\"57\":1}}],[\"crusher5\",{\"1\":{\"49\":1}}],[\"crusher4\",{\"1\":{\"49\":1}}],[\"crusher3\",{\"1\":{\"49\":1}}],[\"crusher2\",{\"1\":{\"49\":1}}],[\"crusher1\",{\"1\":{\"49\":1}}],[\"credit\",{\"1\":{\"39\":1}}],[\"creativity\",{\"1\":{\"71\":1}}],[\"creative\",{\"1\":{\"47\":1}}],[\"creating\",{\"1\":{\"1\":1,\"76\":1}}],[\"created\",{\"1\":{\"45\":2,\"46\":1,\"54\":1}}],[\"create\",{\"0\":{\"48\":1,\"68\":1,\"71\":1},\"1\":{\"1\":4,\"12\":1,\"31\":1,\"34\":1,\"48\":1,\"63\":2,\"69\":1,\"74\":1}}],[\"caveats\",{\"1\":{\"70\":2}}],[\"case\",{\"1\":{\"63\":1}}],[\"care\",{\"1\":{\"69\":1,\"71\":1}}],[\"careful\",{\"1\":{\"69\":2,\"71\":2}}],[\"carefully\",{\"1\":{\"28\":2,\"31\":1,\"70\":1}}],[\"carpets\",{\"1\":{\"51\":2}}],[\"cactus\",{\"1\":{\"51\":1,\"54\":4,\"55\":1}}],[\"cached\",{\"1\":{\"46\":1}}],[\"cache\",{\"0\":{\"45\":1},\"1\":{\"45\":1}}],[\"capital\",{\"1\":{\"49\":1}}],[\"capitals\",{\"1\":{\"48\":1}}],[\"categories\",{\"1\":{\"40\":1}}],[\"called\",{\"1\":{\"38\":1,\"48\":1,\"63\":1,\"71\":1}}],[\"camps\",{\"0\":{\"50\":1},\"1\":{\"50\":1}}],[\"camp\",{\"1\":{\"30\":2,\"50\":7,\"74\":1}}],[\"canonical\",{\"1\":{\"70\":1}}],[\"cane\",{\"1\":{\"51\":1,\"54\":1,\"55\":2}}],[\"cannot\",{\"0\":{\"11\":1},\"1\":{\"4\":1,\"31\":1,\"32\":1,\"34\":1}}],[\"can\",{\"0\":{\"47\":1},\"1\":{\"1\":2,\"4\":1,\"8\":1,\"11\":2,\"31\":3,\"32\":3,\"33\":2,\"34\":1,\"35\":1,\"36\":4,\"37\":4,\"38\":1,\"40\":3,\"43\":1,\"45\":2,\"46\":1,\"48\":5,\"54\":4,\"55\":1,\"56\":1,\"58\":1,\"64\":1,\"66\":1,\"70\":6,\"71\":14,\"73\":1,\"74\":6,\"75\":1,\"76\":2}}],[\"cmpdl\",{\"1\":{\"11\":1}}],[\"current\",{\"1\":{\"28\":2}}],[\"currently\",{\"1\":{\"4\":1,\"32\":1,\"56\":1,\"70\":1,\"74\":1}}],[\"curseforge\",{\"1\":{\"4\":2,\"7\":1,\"10\":1,\"11\":2}}],[\"custom\",{\"0\":{\"42\":1,\"48\":1,\"49\":1,\"50\":1,\"64\":1,\"69\":1,\"70\":1},\"1\":{\"1\":1,\"36\":1,\"42\":1,\"44\":3,\"47\":1,\"48\":2,\"50\":1,\"64\":2,\"69\":2}}],[\"claimed\",{\"1\":{\"74\":1}}],[\"classic\",{\"1\":{\"47\":1}}],[\"clear\",{\"1\":{\"28\":1}}],[\"clipboard\",{\"1\":{\"34\":2}}],[\"clients\",{\"0\":{\"46\":1}}],[\"client\",{\"1\":{\"6\":1,\"43\":1}}],[\"clicking\",{\"1\":{\"30\":1,\"32\":1}}],[\"click\",{\"1\":{\"1\":13,\"8\":1,\"10\":1,\"31\":2,\"32\":3,\"33\":2,\"36\":5,\"37\":2,\"48\":1,\"71\":2,\"74\":2,\"75\":1}}],[\"closest\",{\"1\":{\"28\":1}}],[\"close\",{\"1\":{\"1\":1,\"28\":2}}],[\"children\",{\"1\":{\"71\":2}}],[\"child\",{\"0\":{\"71\":1},\"1\":{\"71\":39}}],[\"chickenherder5\",{\"1\":{\"49\":1}}],[\"chickenherder4\",{\"1\":{\"49\":1}}],[\"chickenherder3\",{\"1\":{\"49\":1}}],[\"chickenherder2\",{\"1\":{\"49\":1}}],[\"chickenherder1\",{\"1\":{\"49\":1}}],[\"channel\",{\"1\":{\"72\":1}}],[\"chance\",{\"1\":{\"55\":1,\"74\":1}}],[\"changing\",{\"1\":{\"1\":1}}],[\"changes\",{\"1\":{\"39\":1}}],[\"changed\",{\"1\":{\"31\":1,\"32\":1,\"54\":1}}],[\"changelog\",{\"1\":{\"10\":1}}],[\"change\",{\"1\":{\"1\":2,\"6\":1,\"37\":1,\"50\":1,\"61\":1}}],[\"chapter\",{\"1\":{\"36\":1}}],[\"cheaper\",{\"1\":{\"71\":1}}],[\"checking\",{\"1\":{\"71\":1}}],[\"check\",{\"1\":{\"32\":1,\"36\":1}}],[\"checkmark\",{\"1\":{\"31\":1,\"32\":1,\"36\":1}}],[\"chest\",{\"1\":{\"30\":1}}],[\"chosen\",{\"1\":{\"30\":1}}],[\"choosing\",{\"1\":{\"1\":1}}],[\"choose\",{\"1\":{\"1\":2}}],[\"chunks\",{\"1\":{\"28\":1}}],[\"chunk\",{\"1\":{\"28\":2}}],[\"cobwebs\",{\"1\":{\"81\":1}}],[\"cobweb\",{\"1\":{\"80\":1,\"81\":1}}],[\"cobble\",{\"1\":{\"51\":1,\"70\":1}}],[\"cobblestone\",{\"1\":{\"30\":1}}],[\"coarse\",{\"1\":{\"79\":1}}],[\"cocoa\",{\"1\":{\"54\":3,\"56\":1}}],[\"cowboy5\",{\"1\":{\"49\":1}}],[\"cowboy4\",{\"1\":{\"49\":1}}],[\"cowboy3\",{\"1\":{\"49\":1}}],[\"cowboy2\",{\"1\":{\"49\":1}}],[\"cowboy1\",{\"1\":{\"49\":1}}],[\"cook5\",{\"1\":{\"49\":1}}],[\"cook4\",{\"1\":{\"49\":1}}],[\"cook3\",{\"1\":{\"49\":1}}],[\"cook2\",{\"1\":{\"49\":1}}],[\"cook1\",{\"1\":{\"49\":1}}],[\"cooks\",{\"1\":{\"0\":1}}],[\"copied\",{\"1\":{\"44\":1,\"64\":3}}],[\"copy\",{\"0\":{\"9\":1},\"1\":{\"9\":1,\"46\":1,\"60\":1,\"65\":1}}],[\"could\",{\"1\":{\"40\":1,\"48\":1,\"71\":1}}],[\"couple\",{\"1\":{\"40\":1}}],[\"course\",{\"1\":{\"35\":1}}],[\"courier\",{\"1\":{\"23\":2,\"34\":1}}],[\"couriers\",{\"1\":{\"0\":1,\"71\":1}}],[\"corresponding\",{\"1\":{\"70\":1}}],[\"correctly\",{\"1\":{\"71\":1}}],[\"correct\",{\"1\":{\"4\":1,\"36\":3,\"71\":3}}],[\"corner\",{\"1\":{\"36\":1}}],[\"combine\",{\"1\":{\"71\":1}}],[\"combination\",{\"1\":{\"71\":1}}],[\"combinations\",{\"1\":{\"71\":3}}],[\"combat\",{\"1\":{\"51\":1}}],[\"combatacademy\",{\"1\":{\"51\":1}}],[\"combatacademy5\",{\"1\":{\"49\":1}}],[\"combatacademy4\",{\"1\":{\"49\":1}}],[\"combatacademy3\",{\"1\":{\"49\":1}}],[\"combatacademy2\",{\"1\":{\"49\":1}}],[\"combatacademy1\",{\"1\":{\"49\":1}}],[\"command\",{\"1\":{\"61\":1}}],[\"common\",{\"1\":{\"41\":1,\"66\":1,\"67\":1}}],[\"commit\",{\"1\":{\"31\":1,\"32\":1}}],[\"compost\",{\"1\":{\"51\":2}}],[\"composter\",{\"1\":{\"51\":1}}],[\"composter5\",{\"1\":{\"49\":1}}],[\"composter4\",{\"1\":{\"49\":1}}],[\"composter3\",{\"1\":{\"49\":1}}],[\"composter2\",{\"1\":{\"49\":1}}],[\"composter1\",{\"1\":{\"49\":1}}],[\"composters\",{\"1\":{\"0\":1}}],[\"computer\",{\"1\":{\"8\":1}}],[\"completely\",{\"0\":{\"67\":1},\"1\":{\"48\":1,\"54\":1}}],[\"completed\",{\"1\":{\"34\":1}}],[\"complete\",{\"1\":{\"6\":1}}],[\"colonists\",{\"0\":{\"47\":1}}],[\"colonies\",{\"1\":{\"28\":1,\"73\":2,\"74\":1,\"75\":1}}],[\"colony\",{\"0\":{\"29\":1},\"1\":{\"28\":9,\"31\":5,\"34\":2,\"47\":1,\"48\":1,\"71\":1,\"73\":1,\"74\":8,\"76\":1}}],[\"converted\",{\"1\":{\"80\":1}}],[\"converting\",{\"1\":{\"80\":1}}],[\"convention\",{\"1\":{\"48\":1}}],[\"confirm\",{\"1\":{\"71\":1}}],[\"config\",{\"1\":{\"66\":1,\"67\":1}}],[\"configuration\",{\"1\":{\"66\":1,\"67\":1,\"73\":1}}],[\"configure\",{\"1\":{\"31\":1}}],[\"configs\",{\"1\":{\"4\":2}}],[\"concretemixer\",{\"1\":{\"51\":1}}],[\"concretemixer5\",{\"1\":{\"49\":1}}],[\"concretemixer4\",{\"1\":{\"49\":1}}],[\"concretemixer3\",{\"1\":{\"49\":1}}],[\"concretemixer2\",{\"1\":{\"49\":1}}],[\"concretemixer1\",{\"1\":{\"49\":1}}],[\"constructing\",{\"1\":{\"80\":1}}],[\"constructionworker1\",{\"1\":{\"48\":1}}],[\"constructed\",{\"1\":{\"47\":1,\"70\":2,\"71\":2}}],[\"consisting\",{\"1\":{\"70\":1}}],[\"consistent\",{\"1\":{\"69\":1}}],[\"consistently\",{\"1\":{\"48\":1}}],[\"consider\",{\"1\":{\"33\":1,\"34\":2}}],[\"congratulations\",{\"1\":{\"32\":1}}],[\"controller\",{\"1\":{\"68\":3,\"71\":1}}],[\"controllers\",{\"1\":{\"36\":1}}],[\"contain\",{\"1\":{\"38\":1,\"40\":1,\"42\":1,\"48\":1,\"71\":4}}],[\"contains\",{\"1\":{\"36\":1,\"38\":1,\"39\":1,\"40\":2,\"70\":1}}],[\"containing\",{\"1\":{\"4\":1,\"35\":1,\"42\":1,\"71\":2}}],[\"contents\",{\"1\":{\"9\":1,\"60\":1}}],[\"connectors\",{\"1\":{\"74\":1}}],[\"connecting\",{\"1\":{\"4\":1,\"76\":3}}],[\"connect\",{\"1\":{\"4\":2,\"76\":3}}],[\"安装\",{\"0\":{\"1\":1}}],[\"目前wiki正处于起步阶段\",{\"1\":{\"0\":1}}],[\"提示\",{\"1\":{\"0\":1,\"2\":1,\"26\":1,\"27\":1}}],[\"height\",{\"1\":{\"55\":5}}],[\"helpful\",{\"1\":{\"71\":1}}],[\"help\",{\"1\":{\"40\":1,\"58\":1,\"71\":1}}],[\"heads\",{\"1\":{\"61\":2}}],[\"head\",{\"1\":{\"32\":1}}],[\"here\",{\"1\":{\"1\":1,\"9\":2,\"10\":1,\"31\":1,\"40\":1,\"49\":1}}],[\"herders\",{\"1\":{\"0\":1}}],[\"hutlevel\",{\"1\":{\"48\":1}}],[\"hutname\",{\"1\":{\"48\":2}}],[\"huts\",{\"0\":{\"48\":1,\"64\":1,\"65\":1},\"1\":{\"34\":2,\"47\":1,\"48\":2,\"64\":2,\"66\":1,\"67\":1}}],[\"hut\",{\"0\":{\"49\":1,\"51\":1},\"1\":{\"32\":4,\"33\":2,\"34\":1,\"36\":3,\"48\":13,\"49\":1,\"50\":2,\"51\":1,\"60\":3,\"64\":1,\"70\":2,\"71\":12,\"74\":1,\"75\":3}}],[\"high\",{\"1\":{\"81\":1}}],[\"higher\",{\"1\":{\"55\":1,\"71\":4}}],[\"highest\",{\"1\":{\"34\":1,\"40\":1}}],[\"hidden\",{\"1\":{\"48\":1}}],[\"hint\",{\"1\":{\"30\":1,\"32\":1,\"33\":1,\"34\":1}}],[\"hit\",{\"1\":{\"8\":1,\"12\":1}}],[\"horizontally\",{\"1\":{\"56\":1}}],[\"horizontal\",{\"1\":{\"51\":1}}],[\"hospital\",{\"1\":{\"51\":1}}],[\"hospital5\",{\"1\":{\"49\":1}}],[\"hospital4\",{\"1\":{\"49\":1}}],[\"hospital3\",{\"1\":{\"49\":1}}],[\"hospital2\",{\"1\":{\"49\":1}}],[\"hospital1\",{\"1\":{\"49\":1}}],[\"holds\",{\"1\":{\"46\":1}}],[\"hot\",{\"1\":{\"40\":1}}],[\"housed\",{\"1\":{\"34\":1}}],[\"house\",{\"1\":{\"34\":2,\"51\":1}}],[\"how\",{\"0\":{\"42\":1,\"48\":1,\"63\":1,\"64\":1,\"65\":1,\"66\":1,\"67\":1,\"68\":1,\"69\":1,\"70\":1,\"71\":1},\"1\":{\"4\":1,\"40\":1,\"42\":1,\"74\":1,\"80\":3}}],[\"however\",{\"1\":{\"4\":1,\"45\":1,\"54\":1,\"57\":1,\"71\":1}}],[\"hover\",{\"1\":{\"1\":1}}],[\"hmcl\",{\"0\":{\"2\":1}}],[\"hand\",{\"1\":{\"75\":1}}],[\"handles\",{\"1\":{\"54\":1}}],[\"had\",{\"1\":{\"57\":1}}],[\"harvesting\",{\"0\":{\"58\":1},\"1\":{\"58\":1}}],[\"harvest\",{\"1\":{\"54\":2,\"55\":2}}],[\"hard\",{\"1\":{\"34\":1}}],[\"hay\",{\"1\":{\"51\":2}}],[\"has\",{\"1\":{\"33\":1,\"38\":1,\"54\":3,\"57\":1,\"58\":1}}],[\"hasn\",{\"1\":{\"32\":1}}],[\"happen\",{\"1\":{\"30\":1}}],[\"having\",{\"1\":{\"4\":1}}],[\"have\",{\"0\":{\"45\":1,\"46\":1,\"72\":1},\"1\":{\"1\":1,\"6\":1,\"10\":1,\"12\":1,\"28\":2,\"30\":2,\"31\":1,\"32\":3,\"34\":1,\"35\":1,\"36\":3,\"37\":4,\"39\":1,\"40\":4,\"43\":1,\"47\":1,\"48\":5,\"54\":1,\"55\":3,\"60\":1,\"64\":1,\"65\":1,\"70\":3,\"71\":13,\"76\":1}}],[\"hall\",{\"1\":{\"0\":1,\"74\":3,\"75\":1}}],[\"turning\",{\"1\":{\"79\":1}}],[\"turn\",{\"1\":{\"73\":1}}],[\"turns\",{\"1\":{\"60\":1,\"76\":4,\"80\":1}}],[\"tutorials\",{\"0\":{\"83\":1},\"1\":{\"4\":1}}],[\"tips\",{\"0\":{\"59\":1}}],[\"time\",{\"1\":{\"1\":1,\"46\":1,\"66\":1,\"71\":1}}],[\"treats\",{\"1\":{\"80\":1}}],[\"tree\",{\"1\":{\"56\":1}}],[\"treeside\",{\"0\":{\"56\":1},\"1\":{\"56\":1}}],[\"trees\",{\"1\":{\"51\":1,\"56\":1}}],[\"true\",{\"1\":{\"66\":1,\"67\":1,\"81\":1}}],[\"track\",{\"1\":{\"34\":2}}],[\"traits\",{\"1\":{\"32\":1}}],[\"typically\",{\"1\":{\"47\":1}}],[\"type\",{\"1\":{\"8\":1,\"39\":1,\"71\":1,\"74\":1,\"81\":2}}],[\"types\",{\"1\":{\"0\":1,\"71\":1}}],[\"twistv\",{\"1\":{\"54\":2}}],[\"twisting\",{\"1\":{\"54\":1,\"55\":1}}],[\"twitch\",{\"1\":{\"1\":2}}],[\"two\",{\"1\":{\"40\":1,\"70\":2,\"71\":1}}],[\"terminators\",{\"1\":{\"76\":2}}],[\"temporary\",{\"1\":{\"71\":1}}],[\"template\",{\"1\":{\"40\":2,\"69\":1}}],[\"teleport\",{\"1\":{\"54\":1}}],[\"tell\",{\"1\":{\"28\":1,\"57\":1,\"75\":1}}],[\"testing\",{\"1\":{\"39\":1}}],[\"test\",{\"1\":{\"38\":1}}],[\"target\",{\"1\":{\"76\":7}}],[\"taller\",{\"1\":{\"55\":1}}],[\"tagging\",{\"0\":{\"75\":1}}],[\"tagged\",{\"1\":{\"51\":1,\"54\":4,\"56\":1,\"57\":5}}],[\"tags\",{\"1\":{\"51\":2,\"54\":4,\"56\":1}}],[\"tag\",{\"1\":{\"36\":1,\"50\":2,\"51\":1,\"54\":6,\"56\":1,\"57\":5,\"58\":2,\"60\":1,\"69\":2,\"70\":1,\"71\":2,\"75\":4}}],[\"tavern3\",{\"1\":{\"49\":1}}],[\"tavern2\",{\"1\":{\"49\":1}}],[\"tavern1\",{\"1\":{\"49\":1}}],[\"tavern\",{\"1\":{\"34\":1,\"48\":1,\"51\":1}}],[\"take\",{\"1\":{\"28\":1,\"36\":1,\"69\":1,\"71\":1}}],[\"taken\",{\"1\":{\"10\":1}}],[\"tab\",{\"1\":{\"1\":3,\"32\":1}}],[\"t\",{\"0\":{\"61\":1},\"1\":{\"10\":1,\"28\":1,\"32\":2,\"39\":1,\"40\":3,\"43\":1,\"46\":1,\"48\":3,\"60\":1,\"68\":1,\"69\":1,\"71\":12}}],[\"through\",{\"1\":{\"60\":1}}],[\"three\",{\"1\":{\"10\":1,\"76\":1,\"77\":1}}],[\"than\",{\"1\":{\"34\":1,\"47\":1,\"48\":1,\"70\":1,\"71\":1}}],[\"that\",{\"0\":{\"45\":1,\"46\":1},\"1\":{\"10\":1,\"11\":1,\"12\":1,\"28\":1,\"32\":1,\"33\":1,\"35\":1,\"36\":2,\"37\":1,\"38\":1,\"40\":1,\"42\":1,\"44\":1,\"45\":1,\"46\":2,\"48\":7,\"54\":1,\"55\":2,\"56\":2,\"57\":2,\"63\":1,\"68\":1,\"69\":2,\"70\":2,\"71\":16,\"73\":1,\"74\":2,\"75\":2,\"76\":3,\"77\":1,\"80\":1,\"81\":1}}],[\"those\",{\"1\":{\"32\":1,\"39\":1,\"40\":1,\"42\":1,\"45\":2}}],[\"thought\",{\"1\":{\"28\":1}}],[\"though\",{\"1\":{\"4\":1,\"34\":1,\"46\":2,\"71\":2,\"74\":1}}],[\"things\",{\"1\":{\"48\":1,\"67\":1,\"71\":3}}],[\"thing\",{\"0\":{\"10\":1},\"1\":{\"75\":1}}],[\"this\",{\"1\":{\"1\":2,\"4\":1,\"8\":2,\"31\":1,\"32\":2,\"34\":1,\"38\":3,\"39\":3,\"41\":1,\"42\":1,\"43\":4,\"45\":3,\"46\":2,\"54\":5,\"56\":2,\"58\":1,\"63\":1,\"66\":1,\"70\":3,\"71\":8,\"73\":2,\"74\":1,\"76\":2,\"78\":2,\"79\":1,\"80\":1}}],[\"themselves\",{\"1\":{\"46\":1,\"58\":1}}],[\"them\",{\"1\":{\"32\":2,\"34\":1,\"35\":1,\"39\":1,\"40\":3,\"47\":1,\"48\":2,\"54\":1,\"55\":1,\"57\":1,\"64\":1,\"65\":1,\"70\":1,\"71\":2,\"80\":1}}],[\"their\",{\"0\":{\"65\":1,\"66\":1},\"1\":{\"32\":2,\"33\":1,\"34\":1,\"48\":2,\"54\":1,\"55\":1,\"58\":1,\"66\":2,\"71\":1}}],[\"they\",{\"1\":{\"30\":2,\"32\":5,\"36\":3,\"43\":2,\"45\":1,\"46\":3,\"48\":1,\"50\":1,\"54\":2,\"55\":1,\"60\":1,\"69\":1,\"71\":3,\"74\":1}}],[\"thereof\",{\"1\":{\"42\":1}}],[\"therefore\",{\"1\":{\"28\":1,\"34\":1}}],[\"there\",{\"1\":{\"4\":1,\"28\":2,\"30\":1,\"37\":1,\"40\":1,\"43\":1,\"44\":1,\"48\":1,\"54\":1,\"71\":4,\"72\":1,\"73\":1,\"74\":1,\"76\":1,\"77\":1}}],[\"these\",{\"1\":{\"4\":1,\"12\":1,\"46\":2,\"54\":1,\"55\":3,\"56\":1,\"57\":1,\"58\":1,\"71\":1,\"73\":1,\"80\":1}}],[\"then\",{\"0\":{\"47\":1},\"1\":{\"1\":1,\"30\":1,\"31\":1,\"32\":1,\"33\":1,\"35\":1,\"36\":3,\"48\":1,\"57\":1,\"58\":1,\"70\":1,\"71\":3}}],[\"the\",{\"0\":{\"10\":1,\"39\":1,\"40\":1,\"43\":1,\"44\":1,\"47\":1},\"1\":{\"0\":2,\"1\":37,\"4\":14,\"5\":3,\"6\":3,\"7\":2,\"8\":6,\"9\":6,\"10\":9,\"11\":6,\"12\":1,\"28\":8,\"30\":5,\"31\":13,\"32\":20,\"33\":7,\"34\":8,\"35\":3,\"36\":24,\"37\":11,\"38\":4,\"39\":15,\"40\":9,\"42\":9,\"43\":3,\"44\":2,\"45\":7,\"46\":3,\"47\":4,\"48\":43,\"49\":1,\"50\":12,\"51\":5,\"54\":43,\"55\":11,\"56\":6,\"57\":25,\"58\":6,\"60\":10,\"63\":4,\"64\":5,\"65\":2,\"66\":6,\"67\":1,\"68\":16,\"69\":15,\"70\":36,\"71\":95,\"72\":1,\"73\":3,\"74\":11,\"75\":13,\"76\":20,\"77\":1,\"78\":3,\"79\":1,\"80\":6,\"81\":1}}],[\"toml\",{\"1\":{\"66\":1,\"67\":1}}],[\"toward\",{\"1\":{\"76\":1}}],[\"towers\",{\"1\":{\"60\":1,\"71\":1}}],[\"tower\",{\"1\":{\"51\":1,\"71\":1}}],[\"townhall5\",{\"1\":{\"49\":1}}],[\"townhall4\",{\"1\":{\"49\":1}}],[\"townhall3\",{\"1\":{\"49\":1}}],[\"townhall2\",{\"1\":{\"49\":1}}],[\"townhall1\",{\"1\":{\"49\":1}}],[\"townhall\",{\"1\":{\"28\":4,\"30\":1,\"31\":5,\"32\":1}}],[\"town\",{\"1\":{\"0\":1,\"74\":3,\"75\":1}}],[\"together\",{\"1\":{\"40\":1,\"71\":2}}],[\"torches\",{\"1\":{\"30\":1}}],[\"totalling\",{\"1\":{\"54\":1}}],[\"total\",{\"1\":{\"28\":1}}],[\"tooltip\",{\"1\":{\"71\":1}}],[\"tool\",{\"1\":{\"30\":2,\"31\":1,\"32\":1,\"33\":1,\"35\":2,\"36\":1,\"37\":4,\"39\":2,\"40\":1,\"43\":1,\"45\":1,\"48\":4,\"50\":1,\"51\":1,\"64\":1,\"69\":2,\"71\":3,\"75\":1}}],[\"too\",{\"1\":{\"28\":1,\"57\":1,\"71\":2,\"74\":1,\"81\":2}}],[\"toc\",{\"1\":{\"2\":1}}],[\"top\",{\"1\":{\"1\":4,\"10\":1,\"36\":1,\"51\":1,\"54\":1,\"70\":7}}],[\"to\",{\"0\":{\"8\":1,\"9\":1,\"47\":1,\"48\":1,\"63\":1,\"64\":1,\"65\":2,\"66\":2,\"67\":1,\"68\":1,\"69\":1,\"70\":1,\"71\":1},\"1\":{\"1\":16,\"4\":10,\"5\":1,\"6\":2,\"7\":1,\"8\":3,\"10\":3,\"11\":6,\"12\":3,\"28\":10,\"30\":3,\"31\":6,\"32\":6,\"33\":3,\"34\":7,\"36\":13,\"37\":2,\"38\":5,\"39\":7,\"40\":10,\"41\":1,\"42\":1,\"44\":2,\"45\":3,\"46\":2,\"47\":2,\"48\":9,\"49\":1,\"51\":3,\"54\":15,\"55\":3,\"56\":2,\"57\":8,\"58\":4,\"60\":3,\"61\":1,\"63\":1,\"64\":2,\"65\":1,\"66\":3,\"67\":1,\"68\":1,\"69\":4,\"70\":5,\"71\":40,\"73\":2,\"74\":8,\"75\":5,\"76\":10,\"77\":1,\"78\":1,\"79\":1,\"80\":4}}],[\"skips\",{\"1\":{\"71\":1}}],[\"slightly\",{\"1\":{\"50\":1,\"57\":1,\"70\":1}}],[\"swineherder5\",{\"1\":{\"49\":1}}],[\"swineherder4\",{\"1\":{\"49\":1}}],[\"swineherder3\",{\"1\":{\"49\":1}}],[\"swineherder2\",{\"1\":{\"49\":1}}],[\"swineherder1\",{\"1\":{\"49\":1}}],[\"switch\",{\"1\":{\"37\":1}}],[\"sound\",{\"1\":{\"71\":1}}],[\"soul\",{\"1\":{\"51\":2}}],[\"solid\",{\"1\":{\"51\":1,\"60\":1}}],[\"soon\",{\"1\":{\"33\":1}}],[\"so\",{\"1\":{\"32\":1,\"33\":1,\"34\":1,\"38\":1,\"45\":2,\"50\":2,\"54\":1,\"61\":1,\"69\":1,\"71\":2,\"73\":1}}],[\"someone\",{\"1\":{\"61\":1,\"71\":1}}],[\"somewhere\",{\"1\":{\"57\":1,\"60\":1,\"68\":2}}],[\"sometimes\",{\"1\":{\"55\":1,\"74\":1}}],[\"something\",{\"1\":{\"48\":1}}],[\"some\",{\"0\":{\"63\":1},\"1\":{\"4\":1,\"38\":1,\"48\":1,\"51\":1,\"67\":1,\"70\":2,\"71\":4,\"73\":1,\"74\":1,\"76\":1,\"79\":2}}],[\"shepherd5\",{\"1\":{\"49\":1}}],[\"shepherd4\",{\"1\":{\"49\":1}}],[\"shepherd3\",{\"1\":{\"49\":1}}],[\"shepherd2\",{\"1\":{\"49\":1}}],[\"shepherd1\",{\"1\":{\"49\":1}}],[\"shaft\",{\"1\":{\"51\":1}}],[\"shapes\",{\"1\":{\"46\":1}}],[\"shared\",{\"1\":{\"43\":2}}],[\"shift\",{\"1\":{\"71\":2}}],[\"shift+right\",{\"1\":{\"48\":1}}],[\"shift+left\",{\"1\":{\"36\":1}}],[\"ships\",{\"0\":{\"50\":1},\"1\":{\"50\":1}}],[\"ship\",{\"1\":{\"30\":2,\"50\":6}}],[\"shown\",{\"1\":{\"40\":1}}],[\"showed\",{\"1\":{\"39\":1}}],[\"show\",{\"1\":{\"28\":1,\"71\":1}}],[\"should\",{\"1\":{\"1\":1,\"10\":1,\"42\":1,\"48\":1,\"50\":1,\"57\":2,\"58\":1,\"64\":1,\"70\":3,\"71\":5,\"75\":1}}],[\"spawn\",{\"1\":{\"73\":1,\"74\":3}}],[\"sparingly\",{\"1\":{\"71\":1}}],[\"spaces\",{\"1\":{\"48\":1}}],[\"split\",{\"1\":{\"70\":1,\"71\":1}}],[\"spilling\",{\"1\":{\"60\":1}}],[\"spread\",{\"1\":{\"58\":2}}],[\"speaking\",{\"1\":{\"71\":1}}],[\"specify\",{\"1\":{\"71\":1}}],[\"specifically\",{\"1\":{\"61\":1,\"72\":1,\"77\":1}}],[\"specific\",{\"1\":{\"40\":2}}],[\"special\",{\"1\":{\"36\":1,\"47\":1}}],[\"specialized\",{\"1\":{\"0\":1}}],[\"speed\",{\"1\":{\"34\":1}}],[\"spots\",{\"1\":{\"58\":1}}],[\"spot\",{\"1\":{\"28\":1}}],[\"smeltery\",{\"1\":{\"51\":1}}],[\"smeltery5\",{\"1\":{\"49\":1}}],[\"smeltery4\",{\"1\":{\"49\":1}}],[\"smeltery3\",{\"1\":{\"49\":1}}],[\"smeltery2\",{\"1\":{\"49\":1}}],[\"smeltery1\",{\"1\":{\"49\":1}}],[\"smelters\",{\"1\":{\"0\":1}}],[\"small\",{\"1\":{\"11\":1}}],[\"sand\",{\"1\":{\"51\":2}}],[\"sawmill5\",{\"1\":{\"49\":1}}],[\"sawmill4\",{\"1\":{\"49\":1}}],[\"sawmill3\",{\"1\":{\"49\":1}}],[\"sawmill2\",{\"1\":{\"49\":1}}],[\"sawmill1\",{\"1\":{\"49\":1}}],[\"safely\",{\"1\":{\"45\":2}}],[\"saved\",{\"1\":{\"36\":4,\"37\":1,\"43\":1,\"45\":1}}],[\"save\",{\"1\":{\"36\":1,\"45\":1,\"48\":1}}],[\"say\",{\"1\":{\"10\":1,\"75\":1}}],[\"same\",{\"0\":{\"10\":1},\"1\":{\"48\":3,\"54\":1,\"60\":4,\"63\":2,\"68\":1,\"69\":2,\"70\":2,\"71\":10,\"74\":1,\"80\":1}}],[\"suitable\",{\"1\":{\"80\":1}}],[\"subset\",{\"1\":{\"74\":2}}],[\"subfolder\",{\"1\":{\"42\":1,\"48\":1}}],[\"subfolders\",{\"1\":{\"40\":1,\"42\":1}}],[\"successfully\",{\"1\":{\"54\":1}}],[\"such\",{\"1\":{\"0\":1,\"58\":1,\"70\":2,\"71\":1}}],[\"sugar\",{\"1\":{\"51\":1,\"54\":3,\"55\":2}}],[\"suggested\",{\"1\":{\"51\":1,\"57\":2}}],[\"supposed\",{\"1\":{\"57\":2}}],[\"supported\",{\"1\":{\"71\":1}}],[\"support\",{\"1\":{\"4\":1,\"11\":1}}],[\"supplies\",{\"1\":{\"50\":4}}],[\"supplyship\",{\"1\":{\"50\":2}}],[\"supplycamp\",{\"1\":{\"50\":4}}],[\"supplycamps\",{\"1\":{\"42\":1}}],[\"supply\",{\"0\":{\"50\":1},\"1\":{\"30\":1,\"50\":5,\"74\":1}}],[\"surrounded\",{\"1\":{\"71\":1}}],[\"surroundings\",{\"1\":{\"58\":1}}],[\"surrounding\",{\"1\":{\"28\":1}}],[\"survival\",{\"1\":{\"48\":1}}],[\"sure\",{\"1\":{\"6\":1,\"12\":1,\"28\":1,\"54\":2,\"60\":1,\"68\":2,\"71\":2,\"76\":1}}],[\"scans\",{\"0\":{\"43\":1},\"1\":{\"36\":5,\"37\":3,\"43\":5,\"48\":3,\"71\":3}}],[\"scanning\",{\"0\":{\"36\":1},\"1\":{\"36\":1,\"61\":1,\"68\":2,\"71\":2}}],[\"scanned\",{\"0\":{\"66\":1},\"1\":{\"35\":1,\"36\":2,\"37\":2,\"38\":1,\"43\":1}}],[\"scan\",{\"1\":{\"35\":3,\"36\":7,\"37\":2,\"43\":2,\"48\":1,\"68\":1,\"69\":1,\"71\":2}}],[\"schematic\",{\"0\":{\"37\":1,\"44\":1},\"1\":{\"36\":1,\"38\":1,\"44\":1,\"48\":1,\"51\":1,\"55\":1,\"60\":1,\"63\":2,\"68\":4,\"71\":5,\"74\":1}}],[\"schematics\",{\"0\":{\"42\":1,\"63\":1,\"65\":1,\"66\":1,\"67\":1,\"68\":1},\"1\":{\"35\":1,\"36\":1,\"37\":1,\"38\":1,\"39\":1,\"41\":1,\"42\":3,\"43\":2,\"44\":3,\"45\":3,\"48\":3,\"50\":4,\"61\":1,\"64\":1,\"66\":3,\"67\":1,\"69\":1,\"70\":1,\"71\":1,\"72\":1}}],[\"school5\",{\"1\":{\"49\":1}}],[\"school4\",{\"1\":{\"49\":1}}],[\"school3\",{\"1\":{\"49\":1}}],[\"school2\",{\"1\":{\"49\":1}}],[\"school1\",{\"1\":{\"49\":1}}],[\"school\",{\"1\":{\"0\":1,\"51\":1}}],[\"scroll\",{\"1\":{\"34\":2}}],[\"screen\",{\"1\":{\"28\":1,\"39\":1}}],[\"scripts\",{\"1\":{\"4\":2}}],[\"scout\",{\"1\":{\"28\":1}}],[\"storage\",{\"1\":{\"71\":1}}],[\"stone\",{\"1\":{\"70\":1,\"79\":2}}],[\"stonesmeltery\",{\"1\":{\"51\":1}}],[\"stonesmeltery5\",{\"1\":{\"49\":1}}],[\"stonesmeltery4\",{\"1\":{\"49\":1}}],[\"stonesmeltery3\",{\"1\":{\"49\":1}}],[\"stonesmeltery2\",{\"1\":{\"49\":1}}],[\"stonesmeltery1\",{\"1\":{\"49\":1}}],[\"stonemason5\",{\"1\":{\"49\":1}}],[\"stonemason4\",{\"1\":{\"49\":1}}],[\"stonemason3\",{\"1\":{\"49\":1}}],[\"stonemason2\",{\"1\":{\"49\":1}}],[\"stonemason1\",{\"1\":{\"49\":1}}],[\"still\",{\"1\":{\"71\":4,\"73\":1}}],[\"stick\",{\"1\":{\"40\":1}}],[\"stem\",{\"1\":{\"54\":1,\"56\":2}}],[\"step\",{\"0\":{\"30\":1,\"31\":1,\"32\":1,\"33\":1},\"1\":{\"9\":1,\"34\":1,\"47\":1}}],[\"steps\",{\"1\":{\"1\":1,\"10\":1,\"12\":1,\"28\":1,\"34\":1}}],[\"street\",{\"0\":{\"78\":1},\"1\":{\"76\":5,\"78\":1}}],[\"strongly\",{\"1\":{\"40\":1,\"70\":1,\"71\":2}}],[\"strict\",{\"1\":{\"48\":1}}],[\"strictly\",{\"1\":{\"40\":1,\"71\":1}}],[\"strings\",{\"1\":{\"39\":2}}],[\"string\",{\"1\":{\"39\":3}}],[\"structures\",{\"1\":{\"76\":2}}],[\"structured\",{\"1\":{\"38\":1,\"40\":1}}],[\"structure\",{\"0\":{\"36\":1,\"40\":1},\"1\":{\"35\":1,\"36\":2,\"37\":2,\"38\":1,\"40\":2,\"74\":1,\"76\":10,\"77\":2,\"80\":1}}],[\"structurize\",{\"0\":{\"10\":1},\"1\":{\"1\":1,\"10\":4,\"36\":1,\"42\":1,\"43\":2,\"44\":1,\"45\":1,\"50\":4,\"60\":1,\"66\":2,\"67\":2,\"80\":3}}],[\"struggle\",{\"1\":{\"34\":1}}],[\"stylename\",{\"1\":{\"48\":1}}],[\"stylepacks\",{\"1\":{\"38\":1}}],[\"styles\",{\"0\":{\"52\":1,\"53\":1},\"1\":{\"30\":1,\"38\":1,\"40\":3,\"60\":1,\"74\":1,\"76\":2}}],[\"style\",{\"0\":{\"38\":1,\"69\":1,\"70\":1},\"1\":{\"30\":1,\"36\":2,\"37\":1,\"38\":5,\"39\":6,\"42\":2,\"43\":1,\"44\":1,\"46\":1,\"47\":1,\"48\":3,\"54\":1,\"61\":1,\"63\":4,\"64\":1,\"69\":2,\"70\":1,\"71\":5,\"74\":3,\"75\":3,\"76\":3,\"77\":1,\"80\":1,\"81\":2}}],[\"state\",{\"1\":{\"81\":1}}],[\"standalone\",{\"1\":{\"71\":3}}],[\"standard\",{\"1\":{\"6\":1,\"40\":1}}],[\"stand\",{\"1\":{\"51\":1,\"54\":1}}],[\"standing\",{\"1\":{\"51\":1,\"54\":2}}],[\"stay\",{\"1\":{\"36\":1}}],[\"started\",{\"0\":{\"74\":1}}],[\"starting\",{\"1\":{\"51\":2}}],[\"start\",{\"1\":{\"1\":1,\"8\":1,\"28\":1,\"30\":1,\"31\":2,\"33\":1,\"34\":3,\"39\":1,\"48\":1,\"64\":1,\"66\":1,\"74\":2}}],[\"second\",{\"1\":{\"55\":1,\"70\":1}}],[\"section\",{\"1\":{\"41\":1}}],[\"seapickle\",{\"1\":{\"54\":2}}],[\"sea\",{\"1\":{\"54\":1,\"57\":1}}],[\"seagrass\",{\"1\":{\"54\":3,\"57\":1}}],[\"searching\",{\"1\":{\"1\":1}}],[\"search\",{\"1\":{\"1\":3,\"8\":2}}],[\"send\",{\"1\":{\"45\":1}}],[\"separately\",{\"1\":{\"47\":1,\"71\":1}}],[\"separate\",{\"1\":{\"40\":1,\"47\":1,\"54\":1,\"71\":1}}],[\"separating\",{\"1\":{\"1\":1,\"40\":1}}],[\"several\",{\"1\":{\"40\":1,\"74\":1}}],[\"serveruuid\",{\"1\":{\"45\":2}}],[\"server\",{\"0\":{\"65\":1,\"66\":1},\"1\":{\"4\":6,\"6\":2,\"11\":1,\"28\":1,\"39\":1,\"45\":5,\"46\":2,\"65\":1,\"66\":1,\"72\":1}}],[\"servers\",{\"1\":{\"4\":2}}],[\"seek\",{\"1\":{\"75\":1}}],[\"see\",{\"1\":{\"1\":1,\"6\":1,\"31\":1,\"32\":6,\"36\":2,\"37\":1,\"48\":2,\"64\":1}}],[\"selection\",{\"1\":{\"39\":1}}],[\"select\",{\"0\":{\"12\":1},\"1\":{\"1\":1,\"31\":1,\"37\":1}}],[\"sets\",{\"1\":{\"40\":1}}],[\"set\",{\"1\":{\"1\":1,\"31\":1,\"36\":1,\"51\":1,\"56\":1,\"57\":1,\"66\":1,\"67\":1,\"70\":1,\"76\":2}}],[\"setting\",{\"0\":{\"29\":1},\"1\":{\"1\":3,\"32\":1}}],[\"s\",{\"1\":{\"1\":3,\"5\":1,\"6\":3,\"12\":1,\"28\":1,\"31\":1,\"32\":3,\"33\":3,\"38\":1,\"40\":2,\"43\":2,\"45\":2,\"48\":4,\"50\":2,\"51\":1,\"56\":1,\"58\":1,\"61\":1,\"69\":1,\"70\":3,\"71\":15,\"72\":1,\"74\":1,\"75\":1,\"76\":1,\"77\":1}}],[\"since\",{\"1\":{\"70\":1,\"71\":5}}],[\"singleylayer\",{\"1\":{\"43\":1}}],[\"single\",{\"1\":{\"39\":1,\"55\":1}}],[\"singleplayer\",{\"1\":{\"35\":1,\"43\":1,\"44\":1,\"64\":1}}],[\"size\",{\"1\":{\"69\":1,\"70\":2,\"71\":1}}],[\"sitting\",{\"1\":{\"60\":1}}],[\"site\",{\"1\":{\"4\":1,\"7\":1}}],[\"sifter5\",{\"1\":{\"49\":1}}],[\"sifter4\",{\"1\":{\"49\":1}}],[\"sifter3\",{\"1\":{\"49\":1}}],[\"sifter2\",{\"1\":{\"49\":1}}],[\"sifter1\",{\"1\":{\"49\":1}}],[\"sides\",{\"1\":{\"56\":1}}],[\"side\",{\"1\":{\"43\":1}}],[\"similarly\",{\"1\":{\"71\":1}}],[\"similar\",{\"1\":{\"38\":1,\"71\":1,\"80\":2}}],[\"simpler\",{\"1\":{\"71\":2}}],[\"simplequarryshaft1\",{\"1\":{\"70\":2}}],[\"simplequarry1\",{\"1\":{\"70\":2}}],[\"simple\",{\"1\":{\"1\":1,\"4\":1,\"33\":1,\"40\":1}}],[\"simply\",{\"1\":{\"1\":1,\"63\":1,\"71\":2}}],[\"sign\",{\"1\":{\"1\":1}}],[\"system\",{\"1\":{\"1\":1}}],[\"ignored\",{\"1\":{\"80\":1}}],[\"ignoreschematicsfromjar\",{\"1\":{\"67\":1}}],[\"iron\",{\"1\":{\"52\":1}}],[\"identifier\",{\"1\":{\"45\":1}}],[\"ids\",{\"1\":{\"39\":1}}],[\"i\",{\"0\":{\"42\":2,\"45\":1,\"46\":1,\"47\":1,\"72\":1},\"1\":{\"51\":1,\"69\":1,\"70\":1,\"71\":2}}],[\"implementation\",{\"1\":{\"54\":1}}],[\"importantly\",{\"1\":{\"70\":1}}],[\"important\",{\"1\":{\"34\":1,\"48\":1,\"75\":1}}],[\"image\",{\"1\":{\"38\":1,\"54\":1}}],[\"if\",{\"0\":{\"72\":1},\"1\":{\"4\":1,\"6\":2,\"9\":1,\"11\":2,\"12\":1,\"28\":2,\"30\":1,\"32\":3,\"34\":1,\"36\":2,\"39\":1,\"40\":2,\"43\":1,\"48\":1,\"51\":1,\"54\":3,\"55\":1,\"57\":1,\"60\":2,\"64\":1,\"67\":1,\"71\":8,\"73\":1,\"75\":1,\"76\":1}}],[\"icons\",{\"1\":{\"40\":2}}],[\"icon\",{\"1\":{\"1\":3,\"32\":1,\"37\":1,\"39\":2,\"40\":2}}],[\"isn\",{\"1\":{\"60\":1}}],[\"issues\",{\"1\":{\"11\":1,\"71\":1}}],[\"is\",{\"0\":{\"43\":1,\"44\":1,\"45\":1,\"46\":1},\"1\":{\"1\":4,\"4\":2,\"6\":1,\"11\":1,\"28\":3,\"32\":1,\"34\":2,\"36\":1,\"37\":1,\"38\":1,\"39\":5,\"40\":1,\"41\":1,\"43\":6,\"44\":1,\"45\":2,\"46\":1,\"47\":2,\"48\":5,\"49\":1,\"50\":2,\"54\":7,\"55\":2,\"56\":2,\"57\":2,\"63\":1,\"66\":3,\"69\":2,\"70\":10,\"71\":10,\"73\":2,\"74\":1,\"75\":2,\"76\":5,\"77\":1,\"78\":2,\"80\":2}}],[\"input\",{\"1\":{\"81\":1}}],[\"invisible\",{\"1\":{\"69\":1,\"71\":1}}],[\"involvement\",{\"1\":{\"58\":1}}],[\"inventory\",{\"1\":{\"48\":1,\"64\":1}}],[\"infested\",{\"1\":{\"61\":1}}],[\"infrastructure\",{\"1\":{\"40\":2,\"69\":1,\"70\":4}}],[\"info\",{\"1\":{\"28\":1}}],[\"information\",{\"0\":{\"62\":1},\"1\":{\"1\":1,\"35\":1,\"44\":1}}],[\"increasingly\",{\"1\":{\"55\":1}}],[\"increasing\",{\"1\":{\"51\":1}}],[\"increase\",{\"1\":{\"34\":1,\"39\":3}}],[\"including\",{\"1\":{\"46\":1,\"60\":1,\"61\":1}}],[\"included\",{\"1\":{\"47\":1,\"71\":1}}],[\"include\",{\"1\":{\"11\":1,\"54\":1,\"68\":1,\"71\":3}}],[\"includes\",{\"1\":{\"0\":1}}],[\"inital\",{\"1\":{\"34\":1}}],[\"initially\",{\"1\":{\"57\":1}}],[\"initial\",{\"1\":{\"31\":1}}],[\"instead\",{\"1\":{\"60\":1,\"71\":3,\"78\":1}}],[\"instances\",{\"1\":{\"1\":2}}],[\"instance\",{\"1\":{\"1\":15,\"63\":1}}],[\"installer\",{\"0\":{\"6\":1,\"11\":1},\"1\":{\"5\":1}}],[\"installed\",{\"1\":{\"1\":1,\"4\":1,\"6\":1,\"39\":1,\"42\":1,\"46\":2,\"47\":1}}],[\"install\",{\"0\":{\"42\":1},\"1\":{\"1\":3,\"4\":2,\"6\":1,\"11\":1,\"39\":1}}],[\"installations\",{\"1\":{\"12\":1}}],[\"installation\",{\"0\":{\"82\":1},\"1\":{\"1\":1,\"4\":2,\"6\":3,\"12\":1}}],[\"installing\",{\"0\":{\"4\":1},\"1\":{\"1\":9,\"4\":1,\"6\":1,\"11\":1}}],[\"inside\",{\"1\":{\"8\":1,\"30\":1,\"44\":1,\"48\":1,\"54\":1}}],[\"intended\",{\"1\":{\"71\":3}}],[\"integrating\",{\"1\":{\"51\":1}}],[\"integrate\",{\"1\":{\"4\":1}}],[\"introduced\",{\"1\":{\"71\":1}}],[\"into\",{\"1\":{\"4\":1,\"33\":1,\"40\":1,\"48\":1,\"54\":1,\"64\":1,\"70\":1,\"71\":6,\"73\":1,\"76\":4,\"79\":1,\"80\":2}}],[\"in\",{\"0\":{\"47\":1,\"63\":1,\"67\":1,\"69\":1,\"70\":1},\"1\":{\"1\":11,\"4\":2,\"6\":1,\"8\":1,\"9\":3,\"11\":1,\"28\":4,\"31\":1,\"32\":3,\"34\":1,\"35\":2,\"36\":10,\"37\":2,\"38\":4,\"39\":5,\"40\":3,\"41\":1,\"42\":5,\"43\":7,\"44\":1,\"45\":2,\"46\":1,\"47\":3,\"48\":7,\"49\":1,\"51\":1,\"54\":2,\"55\":1,\"58\":1,\"60\":3,\"61\":1,\"63\":1,\"64\":3,\"65\":1,\"68\":6,\"69\":3,\"70\":3,\"71\":18,\"72\":1,\"73\":2,\"74\":8,\"75\":1,\"76\":1,\"78\":3,\"79\":1,\"80\":6}}],[\"items\",{\"1\":{\"61\":1}}],[\"item\",{\"1\":{\"50\":1}}],[\"itself\",{\"1\":{\"54\":2,\"57\":1,\"70\":2,\"71\":3}}],[\"its\",{\"1\":{\"9\":1,\"32\":1,\"48\":1,\"68\":1,\"71\":4,\"75\":1,\"76\":1}}],[\"it\",{\"1\":{\"0\":1,\"1\":6,\"4\":1,\"6\":3,\"8\":1,\"9\":1,\"10\":1,\"12\":1,\"28\":3,\"30\":2,\"32\":2,\"33\":2,\"35\":1,\"36\":4,\"37\":1,\"38\":1,\"39\":2,\"40\":6,\"42\":1,\"47\":1,\"48\":3,\"51\":1,\"55\":1,\"57\":1,\"60\":1,\"65\":1,\"66\":1,\"68\":1,\"69\":1,\"70\":5,\"71\":29,\"74\":2,\"75\":1,\"76\":1}}],[\"available\",{\"1\":{\"73\":1}}],[\"avoid\",{\"1\":{\"48\":1,\"70\":1}}],[\"ambiguous\",{\"1\":{\"71\":1}}],[\"amount\",{\"1\":{\"51\":1,\"56\":2,\"57\":1,\"70\":1}}],[\"apart\",{\"1\":{\"71\":1}}],[\"applicable\",{\"1\":{\"76\":1}}],[\"apply\",{\"1\":{\"50\":1,\"71\":1}}],[\"approximately\",{\"1\":{\"70\":1}}],[\"appropriately\",{\"1\":{\"75\":1}}],[\"appropriate\",{\"1\":{\"4\":1,\"48\":1,\"74\":1}}],[\"appear\",{\"1\":{\"40\":1}}],[\"appearing\",{\"1\":{\"31\":1}}],[\"appears\",{\"1\":{\"9\":1}}],[\"appdata\",{\"1\":{\"8\":1}}],[\"affects\",{\"1\":{\"70\":1}}],[\"afterward\",{\"1\":{\"71\":1}}],[\"after=true\",{\"1\":{\"36\":1,\"37\":2,\"42\":1,\"43\":1,\"44\":1,\"45\":2,\"48\":1,\"50\":1,\"53\":1,\"63\":1,\"64\":1,\"68\":1,\"69\":1,\"70\":1,\"71\":1}}],[\"after\",{\"1\":{\"28\":1,\"31\":1,\"34\":2,\"36\":1,\"43\":1,\"54\":1,\"61\":1,\"68\":1,\"71\":4}}],[\"aware\",{\"1\":{\"67\":1}}],[\"away\",{\"1\":{\"28\":2,\"71\":1}}],[\"adjacent\",{\"1\":{\"54\":2,\"56\":1}}],[\"adds\",{\"1\":{\"79\":1}}],[\"added\",{\"1\":{\"74\":1,\"76\":1}}],[\"addons\",{\"1\":{\"47\":1}}],[\"addition\",{\"1\":{\"80\":1}}],[\"additionally\",{\"1\":{\"74\":1}}],[\"additional\",{\"0\":{\"62\":1},\"1\":{\"4\":1,\"34\":2,\"71\":1}}],[\"adding\",{\"0\":{\"76\":1},\"1\":{\"11\":1}}],[\"add\",{\"0\":{\"11\":1},\"1\":{\"1\":1,\"68\":1,\"74\":2,\"75\":1,\"78\":1}}],[\"aesthetics\",{\"1\":{\"51\":1}}],[\"auto\",{\"1\":{\"71\":2}}],[\"automatically\",{\"1\":{\"1\":1,\"32\":1,\"45\":2,\"56\":1,\"68\":1}}],[\"authors\",{\"1\":{\"39\":2}}],[\"air\",{\"1\":{\"36\":2,\"51\":1,\"54\":4,\"70\":2}}],[\"activating\",{\"1\":{\"48\":1}}],[\"actually\",{\"1\":{\"56\":1,\"68\":1}}],[\"actual\",{\"1\":{\"38\":1,\"70\":2,\"71\":4}}],[\"achievements\",{\"1\":{\"34\":1}}],[\"accessing\",{\"1\":{\"32\":1}}],[\"accepted\",{\"1\":{\"10\":1}}],[\"accept\",{\"1\":{\"10\":1}}],[\"according\",{\"1\":{\"6\":1}}],[\"account\",{\"1\":{\"1\":4}}],[\"abandoned\",{\"1\":{\"73\":2,\"74\":1,\"75\":3}}],[\"absolutely\",{\"1\":{\"70\":1,\"71\":1}}],[\"about\",{\"1\":{\"38\":1,\"39\":1,\"44\":1,\"54\":1,\"72\":1}}],[\"above\",{\"1\":{\"32\":1,\"40\":1,\"51\":1,\"54\":4}}],[\"able\",{\"1\":{\"1\":1,\"4\":3,\"8\":1,\"11\":1,\"28\":1,\"46\":1,\"48\":2,\"54\":1}}],[\"align\",{\"1\":{\"70\":1}}],[\"aligned\",{\"1\":{\"70\":1}}],[\"alchemist\",{\"1\":{\"51\":1}}],[\"alchemist5\",{\"1\":{\"49\":1}}],[\"alchemist4\",{\"1\":{\"49\":1}}],[\"alchemist3\",{\"1\":{\"49\":1}}],[\"alchemist2\",{\"1\":{\"49\":1}}],[\"alchemist1\",{\"1\":{\"49\":1}}],[\"alter\",{\"1\":{\"77\":1}}],[\"alternative\",{\"1\":{\"48\":2}}],[\"alternates\",{\"1\":{\"71\":1}}],[\"alternate\",{\"1\":{\"40\":1,\"48\":1,\"70\":1,\"71\":2}}],[\"although\",{\"1\":{\"70\":2,\"71\":1}}],[\"alt1builder1\",{\"1\":{\"48\":1}}],[\"altbuilder1\",{\"1\":{\"48\":1}}],[\"alt\",{\"1\":{\"48\":1}}],[\"already\",{\"1\":{\"30\":1,\"38\":1,\"40\":1,\"71\":1}}],[\"always\",{\"1\":{\"10\":1,\"50\":1,\"54\":3,\"55\":1,\"70\":1,\"71\":3,\"81\":1}}],[\"alpha\",{\"1\":{\"7\":1}}],[\"allows\",{\"1\":{\"66\":1}}],[\"allowplayerschematics\",{\"1\":{\"66\":1}}],[\"allow\",{\"0\":{\"65\":1,\"66\":1}}],[\"all\",{\"1\":{\"4\":3,\"30\":1,\"34\":1,\"35\":1,\"42\":1,\"43\":2,\"57\":2,\"58\":1,\"60\":3,\"69\":1,\"71\":1,\"76\":2}}],[\"along\",{\"1\":{\"1\":1,\"69\":1,\"71\":1}}],[\"also\",{\"1\":{\"0\":1,\"28\":1,\"32\":1,\"37\":2,\"40\":2,\"51\":1,\"66\":1,\"70\":1,\"71\":5,\"76\":1,\"78\":1,\"80\":1}}],[\"again\",{\"1\":{\"1\":1,\"31\":1,\"36\":1,\"71\":1}}],[\"archery\",{\"1\":{\"51\":2}}],[\"archery5\",{\"1\":{\"49\":1}}],[\"archery4\",{\"1\":{\"49\":1}}],[\"archery3\",{\"1\":{\"49\":1}}],[\"archery2\",{\"1\":{\"49\":1}}],[\"archery1\",{\"1\":{\"49\":1}}],[\"array\",{\"1\":{\"39\":2}}],[\"arrow\",{\"1\":{\"1\":3}}],[\"around\",{\"1\":{\"36\":1,\"54\":2,\"57\":1}}],[\"aren\",{\"1\":{\"43\":1,\"69\":1}}],[\"area\",{\"1\":{\"28\":2,\"31\":2,\"35\":1,\"36\":7,\"54\":3,\"57\":2}}],[\"are\",{\"1\":{\"1\":1,\"4\":3,\"9\":1,\"11\":1,\"12\":1,\"28\":1,\"32\":2,\"34\":4,\"35\":1,\"36\":6,\"38\":1,\"40\":3,\"43\":1,\"45\":2,\"48\":6,\"54\":2,\"55\":2,\"57\":9,\"58\":1,\"60\":1,\"67\":1,\"70\":3,\"71\":7,\"73\":1,\"76\":1,\"77\":2,\"78\":1,\"79\":1,\"80\":1}}],[\"attached\",{\"1\":{\"58\":1}}],[\"attempt\",{\"1\":{\"54\":3,\"57\":2,\"58\":1}}],[\"at\",{\"1\":{\"1\":4,\"10\":1,\"28\":1,\"31\":1,\"34\":1,\"39\":2,\"40\":1,\"46\":1,\"48\":2,\"51\":9,\"55\":1,\"60\":2,\"66\":2,\"67\":1,\"69\":3,\"70\":1,\"71\":4,\"74\":2,\"76\":1,\"81\":1}}],[\"a\",{\"0\":{\"36\":1,\"37\":1,\"45\":1,\"46\":1},\"1\":{\"1\":5,\"4\":2,\"6\":3,\"11\":2,\"12\":1,\"28\":4,\"30\":4,\"31\":1,\"32\":7,\"34\":3,\"35\":2,\"36\":6,\"37\":2,\"38\":7,\"39\":3,\"40\":3,\"41\":1,\"42\":1,\"43\":2,\"44\":1,\"45\":2,\"46\":2,\"47\":1,\"48\":4,\"49\":3,\"50\":2,\"51\":9,\"54\":4,\"55\":10,\"57\":1,\"58\":1,\"60\":5,\"63\":3,\"64\":1,\"68\":1,\"69\":1,\"70\":4,\"71\":27,\"72\":1,\"73\":1,\"74\":8,\"76\":12,\"77\":1,\"80\":3,\"81\":1}}],[\"assignment\",{\"1\":{\"32\":1}}],[\"assign\",{\"1\":{\"32\":1,\"34\":1}}],[\"assigned\",{\"1\":{\"32\":1}}],[\"asked\",{\"1\":{\"61\":1}}],[\"asking\",{\"1\":{\"32\":1,\"72\":1}}],[\"ask\",{\"1\":{\"1\":1,\"30\":1,\"32\":1}}],[\"as\",{\"1\":{\"0\":1,\"4\":3,\"11\":1,\"30\":2,\"33\":2,\"40\":2,\"45\":2,\"46\":1,\"47\":1,\"48\":1,\"49\":1,\"54\":2,\"57\":1,\"58\":1,\"63\":1,\"64\":1,\"69\":3,\"70\":2,\"71\":13,\"73\":2,\"74\":1,\"75\":1,\"76\":2}}],[\"answer\",{\"1\":{\"41\":1}}],[\"anchors\",{\"1\":{\"36\":1}}],[\"anchor\",{\"1\":{\"36\":2,\"69\":2,\"70\":5,\"71\":3}}],[\"another\",{\"0\":{\"72\":1},\"1\":{\"28\":1,\"71\":3,\"80\":1,\"81\":1}}],[\"anywhere\",{\"1\":{\"48\":1}}],[\"anymore\",{\"1\":{\"48\":1}}],[\"any\",{\"1\":{\"1\":1,\"28\":1,\"32\":3,\"33\":1,\"35\":1,\"37\":1,\"42\":1,\"46\":1,\"48\":2,\"51\":1,\"54\":1,\"60\":1,\"66\":1,\"70\":1,\"71\":2}}],[\"an\",{\"1\":{\"1\":5,\"11\":2,\"38\":1,\"39\":1,\"40\":1,\"47\":2,\"48\":2,\"51\":1,\"54\":1,\"55\":1,\"57\":1,\"63\":1,\"69\":1,\"71\":2,\"74\":1,\"75\":1,\"76\":1}}],[\"and\",{\"0\":{\"12\":1,\"43\":1,\"47\":1,\"50\":1,\"55\":1,\"75\":1},\"1\":{\"0\":2,\"1\":7,\"4\":4,\"5\":1,\"6\":1,\"7\":1,\"8\":3,\"9\":1,\"11\":1,\"12\":2,\"28\":1,\"30\":3,\"31\":1,\"32\":5,\"33\":2,\"34\":7,\"35\":3,\"36\":4,\"37\":1,\"38\":2,\"40\":5,\"42\":2,\"43\":2,\"44\":1,\"45\":2,\"46\":1,\"48\":4,\"50\":5,\"51\":6,\"54\":5,\"55\":1,\"60\":4,\"65\":1,\"66\":1,\"67\":1,\"68\":2,\"69\":2,\"70\":12,\"71\":25,\"74\":8,\"75\":2,\"76\":4,\"78\":1,\"80\":1}}],[\"animal\",{\"1\":{\"0\":1}}],[\"随着模组的发展\",{\"1\":{\"0\":1}}],[\"mycourier0\",{\"1\":{\"71\":1}}],[\"mysticalsite5\",{\"1\":{\"49\":1}}],[\"mysticalsite4\",{\"1\":{\"49\":1}}],[\"mysticalsite3\",{\"1\":{\"49\":1}}],[\"mysticalsite2\",{\"1\":{\"49\":1}}],[\"mysticalsite1\",{\"1\":{\"49\":1}}],[\"myownsupplyship\",{\"1\":{\"50\":1}}],[\"myownsupplycamp\",{\"1\":{\"50\":1}}],[\"myownalternative\",{\"1\":{\"48\":1}}],[\"myown\",{\"1\":{\"48\":4}}],[\"my\",{\"0\":{\"47\":1,\"65\":2,\"66\":2},\"1\":{\"37\":1}}],[\"much\",{\"1\":{\"70\":1}}],[\"must\",{\"1\":{\"32\":1,\"36\":1,\"46\":1,\"47\":1,\"48\":3,\"69\":2,\"70\":1,\"71\":1,\"75\":1,\"76\":1}}],[\"multiple\",{\"1\":{\"36\":1,\"71\":3,\"74\":1}}],[\"multiplayer\",{\"1\":{\"28\":1,\"35\":1,\"43\":2,\"44\":1,\"64\":1}}],[\"multimc\",{\"1\":{\"11\":1}}],[\"mistake\",{\"1\":{\"60\":1}}],[\"missing\",{\"1\":{\"32\":1,\"67\":1,\"71\":1}}],[\"minor\",{\"1\":{\"78\":1}}],[\"minimum\",{\"1\":{\"55\":4,\"58\":1}}],[\"mineshafts\",{\"0\":{\"69\":1},\"1\":{\"69\":5,\"70\":4}}],[\"miner\",{\"1\":{\"69\":1}}],[\"miner5\",{\"1\":{\"49\":1}}],[\"miner4\",{\"1\":{\"49\":1}}],[\"miner3\",{\"1\":{\"49\":1}}],[\"miner2\",{\"1\":{\"49\":1}}],[\"miner1\",{\"1\":{\"49\":1}}],[\"miners\",{\"1\":{\"0\":1,\"34\":1}}],[\"mine\",{\"1\":{\"34\":1,\"51\":1}}],[\"minecolonies\",{\"0\":{\"4\":1,\"7\":1,\"9\":1,\"45\":1},\"1\":{\"1\":9,\"4\":3,\"7\":2,\"9\":2,\"10\":3,\"12\":1,\"28\":1,\"36\":1,\"41\":1,\"43\":2,\"47\":1,\"75\":1,\"76\":15,\"77\":1}}],[\"minecraft\",{\"0\":{\"3\":1,\"4\":1,\"12\":1},\"1\":{\"0\":1,\"1\":7,\"4\":5,\"5\":1,\"6\":2,\"8\":2,\"9\":1,\"12\":1,\"38\":1,\"43\":2,\"45\":1,\"47\":1,\"66\":1,\"67\":1,\"74\":1,\"76\":4,\"81\":4}}],[\"mix\",{\"1\":{\"40\":1}}],[\"might\",{\"1\":{\"12\":1,\"71\":1,\"74\":1}}],[\"medieval\",{\"1\":{\"75\":2,\"76\":5}}],[\"mediumquarryshaft1\",{\"1\":{\"70\":2}}],[\"mediumquarry1\",{\"1\":{\"70\":2}}],[\"medium\",{\"1\":{\"52\":1,\"53\":1}}],[\"meaning\",{\"1\":{\"80\":1}}],[\"mean\",{\"1\":{\"71\":1}}],[\"means\",{\"1\":{\"56\":1}}],[\"mechanic5\",{\"1\":{\"49\":1}}],[\"mechanic4\",{\"1\":{\"49\":1}}],[\"mechanic3\",{\"1\":{\"49\":1}}],[\"mechanic2\",{\"1\":{\"49\":1}}],[\"mechanic1\",{\"1\":{\"49\":1}}],[\"metadata\",{\"1\":{\"38\":1,\"39\":1}}],[\"method\",{\"1\":{\"1\":1,\"71\":3}}],[\"message\",{\"1\":{\"6\":1,\"48\":1}}],[\"menu\",{\"1\":{\"1\":3,\"37\":2}}],[\"mark\",{\"1\":{\"71\":1}}],[\"match\",{\"1\":{\"75\":1,\"76\":1,\"81\":1}}],[\"matching\",{\"1\":{\"71\":3}}],[\"matter\",{\"1\":{\"71\":2}}],[\"materials\",{\"1\":{\"30\":5,\"32\":3,\"35\":1,\"78\":1}}],[\"may\",{\"1\":{\"51\":1,\"54\":1,\"71\":3,\"80\":1,\"81\":1}}],[\"maxcachedschematics\",{\"1\":{\"66\":1}}],[\"max\",{\"1\":{\"48\":1}}],[\"maximum\",{\"1\":{\"48\":1,\"54\":1,\"55\":3}}],[\"made\",{\"1\":{\"37\":1,\"42\":1,\"60\":1}}],[\"making\",{\"1\":{\"34\":1,\"50\":1,\"71\":1}}],[\"make\",{\"0\":{\"70\":1},\"1\":{\"6\":1,\"12\":1,\"28\":1,\"34\":1,\"38\":2,\"39\":1,\"40\":2,\"46\":1,\"48\":1,\"54\":2,\"57\":1,\"60\":2,\"63\":1,\"68\":2,\"69\":2,\"70\":2,\"71\":4,\"74\":1,\"76\":1}}],[\"macos\",{\"1\":{\"11\":2}}],[\"mandatory\",{\"1\":{\"71\":1}}],[\"manually\",{\"1\":{\"4\":1,\"11\":1,\"32\":1,\"70\":1}}],[\"manager\",{\"1\":{\"1\":1}}],[\"manage\",{\"1\":{\"1\":3}}],[\"many\",{\"1\":{\"0\":1,\"4\":1,\"30\":1,\"34\":2,\"54\":1}}],[\"mainly\",{\"1\":{\"30\":1}}],[\"main\",{\"1\":{\"1\":2,\"71\":1,\"78\":1}}],[\"mossy\",{\"1\":{\"79\":1}}],[\"mostly\",{\"1\":{\"70\":1}}],[\"most\",{\"1\":{\"30\":1,\"34\":1,\"71\":1,\"74\":1,\"75\":1}}],[\"moving\",{\"1\":{\"73\":1}}],[\"moves\",{\"1\":{\"71\":1}}],[\"move\",{\"0\":{\"47\":1},\"1\":{\"48\":1,\"71\":1}}],[\"moved\",{\"1\":{\"36\":1,\"60\":1}}],[\"mob\",{\"1\":{\"61\":1}}],[\"moment\",{\"1\":{\"39\":1}}],[\"mode\",{\"1\":{\"48\":1}}],[\"mods\",{\"0\":{\"8\":1,\"9\":1},\"1\":{\"1\":3,\"4\":4,\"8\":2,\"9\":1,\"11\":1,\"39\":3}}],[\"modpack\",{\"0\":{\"11\":1},\"1\":{\"1\":5,\"4\":1,\"11\":2}}],[\"modpacks\",{\"1\":{\"1\":1,\"11\":2}}],[\"mod\",{\"0\":{\"4\":1},\"1\":{\"1\":5,\"4\":2,\"47\":1}}],[\"more\",{\"1\":{\"0\":1,\"4\":1,\"30\":1,\"34\":4,\"36\":1,\"44\":1,\"47\":1,\"51\":1,\"70\":1,\"71\":4,\"74\":1,\"76\":1}}],[\"biggest\",{\"1\":{\"71\":1}}],[\"big\",{\"1\":{\"57\":1}}],[\"bit\",{\"1\":{\"32\":1}}],[\"bricks\",{\"1\":{\"79\":1}}],[\"brick\",{\"1\":{\"79\":1}}],[\"break\",{\"1\":{\"55\":2,\"67\":1,\"71\":1}}],[\"brewing\",{\"1\":{\"51\":1}}],[\"broken\",{\"1\":{\"39\":1,\"55\":1}}],[\"bcae\",{\"0\":{\"45\":1}}],[\"blank\",{\"1\":{\"60\":1}}],[\"blacksmith5\",{\"1\":{\"49\":1}}],[\"blacksmith4\",{\"1\":{\"49\":1}}],[\"blacksmith3\",{\"1\":{\"49\":1}}],[\"blacksmith2\",{\"1\":{\"49\":1}}],[\"blacksmith1\",{\"1\":{\"49\":1}}],[\"blue\",{\"1\":{\"54\":1,\"57\":2}}],[\"blueprintmyown\",{\"1\":{\"48\":4}}],[\"blueprint\",{\"1\":{\"48\":2,\"63\":1,\"71\":3}}],[\"blueprints\",{\"0\":{\"46\":1},\"1\":{\"36\":1,\"38\":1,\"42\":2,\"43\":1,\"48\":1,\"50\":5,\"65\":1,\"69\":1,\"71\":1}}],[\"block\",{\"1\":{\"30\":2,\"31\":4,\"32\":3,\"33\":2,\"35\":1,\"36\":5,\"48\":6,\"51\":4,\"54\":11,\"55\":1,\"56\":1,\"57\":3,\"60\":2,\"64\":1,\"69\":1,\"70\":1,\"71\":7,\"74\":2,\"75\":3,\"76\":7,\"80\":1,\"81\":2}}],[\"blocksubstitution\",{\"1\":{\"80\":1}}],[\"blocksolidsubstitution\",{\"1\":{\"80\":1}}],[\"blocks\",{\"0\":{\"76\":1},\"1\":{\"28\":2,\"36\":2,\"51\":5,\"54\":2,\"55\":1,\"57\":4,\"58\":1,\"60\":2,\"61\":2,\"69\":1,\"70\":3,\"71\":5,\"76\":1,\"77\":1,\"78\":1,\"79\":1,\"80\":5}}],[\"by\",{\"1\":{\"30\":1,\"32\":1,\"45\":1,\"46\":1,\"47\":2,\"50\":1,\"54\":1,\"56\":1,\"66\":1,\"70\":2,\"71\":4,\"73\":1,\"79\":1,\"80\":1}}],[\"book\",{\"1\":{\"60\":1}}],[\"books\",{\"1\":{\"60\":3}}],[\"bookshelves\",{\"1\":{\"51\":2}}],[\"bonemealing\",{\"1\":{\"57\":1}}],[\"bonemeal\",{\"1\":{\"57\":4}}],[\"bonemealed\",{\"0\":{\"57\":1},\"1\":{\"57\":2}}],[\"bounds\",{\"1\":{\"55\":1}}],[\"body\",{\"1\":{\"51\":1}}],[\"borders\",{\"1\":{\"48\":1}}],[\"both\",{\"1\":{\"11\":1,\"40\":1,\"44\":1,\"70\":1,\"71\":2}}],[\"bottom\",{\"1\":{\"1\":4,\"69\":1,\"70\":8}}],[\"box\",{\"1\":{\"8\":1}}],[\"but\",{\"1\":{\"34\":1,\"40\":4,\"48\":1,\"54\":1,\"68\":1,\"70\":2,\"71\":6,\"74\":1,\"81\":1}}],[\"button\",{\"1\":{\"1\":4,\"8\":1,\"37\":1,\"40\":1,\"48\":1,\"51\":1}}],[\"built\",{\"0\":{\"63\":1,\"67\":1},\"1\":{\"32\":2,\"70\":1,\"71\":3,\"74\":1}}],[\"builds\",{\"1\":{\"61\":1}}],[\"builderalt1\",{\"1\":{\"48\":1}}],[\"builder5\",{\"1\":{\"48\":1,\"49\":1}}],[\"builder4\",{\"1\":{\"48\":1,\"49\":1}}],[\"builder3\",{\"1\":{\"48\":1,\"49\":1}}],[\"builder2\",{\"1\":{\"48\":1,\"49\":1}}],[\"builder1\",{\"1\":{\"48\":2,\"49\":1,\"50\":2,\"63\":1}}],[\"builder\",{\"1\":{\"30\":1,\"32\":15,\"33\":3,\"34\":1,\"35\":1,\"36\":1,\"47\":2,\"48\":4,\"50\":2,\"51\":1,\"63\":1,\"70\":1,\"71\":1,\"80\":1}}],[\"builders\",{\"1\":{\"0\":1,\"34\":1}}],[\"build\",{\"0\":{\"47\":1},\"1\":{\"30\":2,\"31\":1,\"32\":7,\"33\":3,\"34\":2,\"35\":1,\"36\":1,\"37\":4,\"39\":2,\"40\":1,\"45\":1,\"48\":4,\"50\":1,\"64\":1,\"71\":6,\"74\":2}}],[\"building\",{\"0\":{\"59\":1},\"1\":{\"23\":2,\"28\":4,\"30\":4,\"31\":5,\"32\":7,\"33\":4,\"34\":11,\"35\":1,\"47\":1,\"48\":2,\"49\":1,\"51\":29,\"63\":1,\"70\":1,\"71\":8,\"74\":4,\"75\":2,\"76\":6,\"80\":3}}],[\"buildings\",{\"0\":{\"47\":1,\"71\":1},\"1\":{\"0\":1,\"32\":1,\"33\":1,\"40\":4,\"46\":1,\"47\":1,\"48\":1,\"51\":1,\"71\":9,\"74\":2,\"76\":6}}],[\"behind\",{\"1\":{\"71\":1}}],[\"behaviour\",{\"1\":{\"54\":1}}],[\"better\",{\"1\":{\"71\":1}}],[\"between\",{\"1\":{\"43\":2}}],[\"because\",{\"1\":{\"57\":1}}],[\"beans\",{\"1\":{\"56\":1}}],[\"berries\",{\"1\":{\"54\":1}}],[\"beyond\",{\"1\":{\"54\":1}}],[\"beds\",{\"1\":{\"51\":1,\"71\":1}}],[\"bed\",{\"1\":{\"51\":6}}],[\"beekeeper5\",{\"1\":{\"49\":1}}],[\"beekeeper4\",{\"1\":{\"49\":1}}],[\"beekeeper3\",{\"1\":{\"49\":1}}],[\"beekeeper2\",{\"1\":{\"49\":1}}],[\"beekeeper1\",{\"1\":{\"49\":1}}],[\"been\",{\"1\":{\"43\":1,\"54\":1}}],[\"below\",{\"1\":{\"48\":1,\"51\":1,\"54\":2,\"57\":2,\"60\":1,\"70\":1,\"81\":1}}],[\"best\",{\"1\":{\"32\":1,\"70\":1}}],[\"before=true\",{\"1\":{\"36\":1,\"37\":1,\"42\":1,\"43\":1,\"44\":1,\"45\":1,\"48\":1,\"50\":1,\"63\":1,\"64\":1,\"68\":1,\"69\":1,\"70\":1,\"71\":1}}],[\"before\",{\"1\":{\"32\":1,\"47\":1,\"71\":1}}],[\"be\",{\"1\":{\"1\":2,\"4\":3,\"8\":1,\"10\":1,\"11\":1,\"28\":2,\"30\":2,\"31\":4,\"32\":3,\"36\":5,\"37\":1,\"38\":1,\"39\":2,\"40\":1,\"42\":1,\"43\":1,\"44\":2,\"45\":2,\"46\":4,\"47\":1,\"48\":6,\"50\":2,\"51\":1,\"54\":3,\"56\":1,\"64\":2,\"67\":1,\"69\":4,\"70\":7,\"71\":21,\"74\":3,\"75\":1,\"76\":3,\"80\":1,\"81\":2}}],[\"based\",{\"0\":{\"58\":1},\"1\":{\"54\":1,\"58\":1}}],[\"bamboo\",{\"1\":{\"51\":1,\"54\":3,\"55\":1}}],[\"bale\",{\"1\":{\"51\":2}}],[\"balance\",{\"1\":{\"46\":1,\"70\":1,\"71\":1}}],[\"balanced\",{\"1\":{\"4\":1}}],[\"barrels\",{\"1\":{\"51\":2}}],[\"barrel\",{\"1\":{\"51\":1}}],[\"barrackstower\",{\"1\":{\"51\":1}}],[\"barrackstower5\",{\"1\":{\"49\":1}}],[\"barrackstower4\",{\"1\":{\"49\":1}}],[\"barrackstower3\",{\"1\":{\"49\":1}}],[\"barrackstower2\",{\"1\":{\"49\":1}}],[\"barrackstower1\",{\"1\":{\"49\":1}}],[\"barracks5\",{\"1\":{\"49\":1}}],[\"barracks4\",{\"1\":{\"49\":1}}],[\"barracks3\",{\"1\":{\"49\":1}}],[\"barracks2\",{\"1\":{\"49\":1}}],[\"barracks1\",{\"1\":{\"49\":1}}],[\"barracks\",{\"1\":{\"0\":1,\"36\":2,\"51\":2,\"60\":2,\"71\":3}}],[\"bar\",{\"1\":{\"40\":2}}],[\"baker5\",{\"1\":{\"49\":1}}],[\"baker4\",{\"1\":{\"49\":1}}],[\"baker3\",{\"1\":{\"49\":1}}],[\"baker2\",{\"1\":{\"49\":1}}],[\"baker1\",{\"1\":{\"49\":1}}],[\"bakery\",{\"1\":{\"34\":1,\"51\":1}}],[\"bakers\",{\"1\":{\"0\":1}}],[\"feature\",{\"1\":{\"73\":2}}],[\"fences\",{\"1\":{\"70\":1}}],[\"few\",{\"1\":{\"40\":1,\"51\":1,\"76\":1}}],[\"flexibility\",{\"1\":{\"71\":1}}],[\"fletcher5\",{\"1\":{\"49\":1}}],[\"fletcher4\",{\"1\":{\"49\":1}}],[\"fletcher3\",{\"1\":{\"49\":1}}],[\"fletcher2\",{\"1\":{\"49\":1}}],[\"fletcher1\",{\"1\":{\"49\":1}}],[\"flowershop\",{\"1\":{\"51\":1}}],[\"flowing\",{\"1\":{\"51\":1}}],[\"florist5\",{\"1\":{\"49\":1}}],[\"florist4\",{\"1\":{\"49\":1}}],[\"florist3\",{\"1\":{\"49\":1}}],[\"florist2\",{\"1\":{\"49\":1}}],[\"florist1\",{\"1\":{\"49\":1}}],[\"fallback\",{\"1\":{\"76\":1}}],[\"facing\",{\"1\":{\"76\":1}}],[\"faq\",{\"0\":{\"41\":1},\"1\":{\"41\":1}}],[\"farmer5\",{\"1\":{\"49\":1}}],[\"farmer4\",{\"1\":{\"49\":1}}],[\"farmer3\",{\"1\":{\"49\":1}}],[\"farmer2\",{\"1\":{\"49\":1}}],[\"farmer1\",{\"1\":{\"49\":1}}],[\"farmer\",{\"1\":{\"37\":1,\"54\":2,\"71\":1,\"76\":2}}],[\"farmers\",{\"1\":{\"0\":1,\"34\":1}}],[\"farm\",{\"1\":{\"34\":1}}],[\"freshly\",{\"1\":{\"43\":1}}],[\"free\",{\"1\":{\"40\":1,\"54\":1}}],[\"from\",{\"1\":{\"1\":1,\"28\":1,\"40\":1,\"45\":1,\"54\":3,\"55\":1,\"60\":1,\"70\":2,\"71\":5,\"74\":2}}],[\"future\",{\"1\":{\"74\":1}}],[\"furnaces\",{\"1\":{\"60\":1,\"71\":1}}],[\"furnace\",{\"1\":{\"51\":6}}],[\"further\",{\"1\":{\"30\":1}}],[\"fully\",{\"1\":{\"55\":1}}],[\"full\",{\"1\":{\"31\":1,\"36\":1,\"49\":1}}],[\"fundamentals\",{\"1\":{\"50\":1}}],[\"functional\",{\"1\":{\"46\":1,\"47\":1,\"71\":1}}],[\"fun\",{\"1\":{\"1\":1}}],[\"f3a8797b1d52\",{\"0\":{\"45\":1}}],[\"f3\",{\"1\":{\"28\":1}}],[\"footprint\",{\"1\":{\"48\":1,\"60\":1}}],[\"four\",{\"1\":{\"31\":1,\"34\":1}}],[\"founded\",{\"1\":{\"74\":1}}],[\"found\",{\"1\":{\"28\":1,\"37\":1,\"40\":1,\"43\":1,\"74\":1}}],[\"following\",{\"1\":{\"76\":2}}],[\"followed\",{\"1\":{\"12\":1}}],[\"follow\",{\"1\":{\"10\":1,\"40\":1,\"48\":2}}],[\"folders\",{\"1\":{\"40\":4,\"42\":1,\"46\":1,\"71\":2}}],[\"folder\",{\"0\":{\"8\":1,\"40\":1,\"43\":1,\"44\":1,\"45\":1,\"46\":1},\"1\":{\"8\":6,\"9\":1,\"36\":2,\"38\":4,\"40\":3,\"42\":7,\"43\":4,\"44\":2,\"45\":1,\"46\":1,\"48\":2,\"64\":1,\"65\":1,\"68\":1,\"70\":1,\"71\":8,\"75\":1}}],[\"former\",{\"1\":{\"73\":1}}],[\"form\",{\"1\":{\"54\":1,\"78\":1}}],[\"format\",{\"1\":{\"39\":2}}],[\"forge\",{\"0\":{\"5\":1,\"6\":1},\"1\":{\"1\":2,\"4\":3,\"5\":1,\"12\":1,\"14\":1}}],[\"for\",{\"0\":{\"10\":1,\"45\":1,\"46\":1,\"52\":1,\"53\":1},\"1\":{\"1\":7,\"4\":4,\"10\":2,\"11\":1,\"28\":1,\"30\":4,\"32\":3,\"33\":1,\"34\":4,\"35\":1,\"36\":1,\"37\":1,\"39\":2,\"40\":4,\"44\":2,\"46\":1,\"48\":9,\"50\":9,\"51\":2,\"54\":3,\"55\":1,\"56\":2,\"60\":2,\"63\":1,\"66\":1,\"70\":3,\"71\":5,\"72\":1,\"73\":1,\"75\":1,\"76\":3,\"77\":2,\"80\":1,\"81\":2}}],[\"foresters\",{\"1\":{\"0\":1,\"34\":1}}],[\"fix\",{\"1\":{\"71\":1}}],[\"fit\",{\"1\":{\"71\":1}}],[\"field\",{\"1\":{\"54\":22,\"76\":3}}],[\"fields\",{\"0\":{\"54\":1,\"57\":1},\"1\":{\"54\":2,\"57\":3,\"58\":1,\"71\":1}}],[\"fishing\",{\"1\":{\"51\":1}}],[\"fisherman5\",{\"1\":{\"49\":1}}],[\"fisherman4\",{\"1\":{\"49\":1}}],[\"fisherman3\",{\"1\":{\"49\":1}}],[\"fisherman2\",{\"1\":{\"49\":1}}],[\"fisherman1\",{\"1\":{\"49\":1}}],[\"fisher\",{\"1\":{\"34\":1,\"51\":1}}],[\"fishers\",{\"1\":{\"0\":1,\"34\":1}}],[\"fine\",{\"1\":{\"71\":2,\"81\":1}}],[\"final\",{\"0\":{\"34\":1},\"1\":{\"70\":1,\"71\":2}}],[\"finally\",{\"1\":{\"11\":1}}],[\"find\",{\"1\":{\"4\":1,\"8\":3,\"10\":1,\"40\":1,\"42\":1,\"68\":1,\"74\":2}}],[\"finished\",{\"1\":{\"1\":1,\"32\":1,\"33\":1}}],[\"finish\",{\"1\":{\"1\":1}}],[\"first\",{\"1\":{\"1\":1,\"10\":1,\"12\":1,\"31\":1,\"32\":1,\"54\":1,\"74\":2}}],[\"filenames\",{\"0\":{\"49\":1},\"1\":{\"48\":1,\"71\":1}}],[\"files\",{\"1\":{\"11\":1,\"35\":1,\"38\":2,\"40\":1,\"77\":1}}],[\"file\",{\"1\":{\"1\":1,\"4\":2,\"9\":3,\"10\":1,\"36\":2,\"38\":1,\"39\":2,\"50\":2,\"63\":2,\"66\":1,\"67\":1,\"68\":2,\"74\":1,\"75\":1,\"80\":1}}],[\"five\",{\"1\":{\"0\":1}}],[\"例如\",{\"1\":{\"0\":1}}],[\"工人\",{\"1\":{\"0\":1}}],[\"唯一的限制就是你的想象力\",{\"1\":{\"0\":1}}],[\"山顶\",{\"1\":{\"0\":1}}],[\"适应任何生态区域\",{\"1\":{\"0\":1}}],[\"有了如此多的选择\",{\"1\":{\"0\":1}}],[\"让你创建一个与其他玩家独一无二的殖民地\",{\"1\":{\"0\":1}}],[\"让你的领导技能得以发挥\",{\"1\":{\"0\":1}}],[\"模拟殖民地拥有\",{\"1\":{\"0\":1}}],[\"模拟殖民地提供了灵活性\",{\"1\":{\"0\":1}}],[\"模拟殖民地是一个交互式建筑模组\",{\"1\":{\"0\":1}}],[\"中创建自己的繁荣城镇\",{\"1\":{\"0\":1}}],[\"可让你在\",{\"1\":{\"0\":1}}],[\"开始\",{\"0\":{\"0\":1}}]],\"serializationVersion\":2}}")).map(([e,t])=>[e,zt(t,{fields:["h","t","c"],storeFields:["h","t","c"]})]));self.onmessage=({data:{type:e="all",query:t,locale:s,options:n}})=>{e==="suggest"?self.postMessage(st(t,v[s],n)):e==="search"?self.postMessage(et(t,v[s],n)):self.postMessage({suggestions:st(t,v[s],n),results:et(t,v[s],n)})}; +const nt="ENTRIES",V="KEYS",T="VALUES",F="";class D{set;_type;_path;constructor(t,s){const n=t._tree,u=Array.from(n.keys());this.set=t,this._type=s,this._path=u.length>0?[{node:n,keys:u}]:[]}next(){const t=this.dive();return this.backtrack(),t}dive(){if(this._path.length===0)return{done:!0,value:void 0};const{node:t,keys:s}=E(this._path);if(E(s)===F)return{done:!1,value:this.result()};const n=t.get(E(s));return this._path.push({node:n,keys:Array.from(n.keys())}),this.dive()}backtrack(){if(this._path.length===0)return;const t=E(this._path).keys;t.pop(),!(t.length>0)&&(this._path.pop(),this.backtrack())}key(){return this.set._prefix+this._path.map(({keys:t})=>E(t)).filter(t=>t!==F).join("")}value(){return E(this._path).node.get(F)}result(){switch(this._type){case T:return this.value();case V:return this.key();default:return[this.key(),this.value()]}}[Symbol.iterator](){return this}}const E=e=>e[e.length-1],ut=(e,t,s)=>{const n=new Map;if(t===void 0)return n;const u=t.length+1,o=u+s,i=new Uint8Array(o*u).fill(s+1);for(let r=0;r{const d=o*i;t:for(const l of e.keys())if(l===F){const a=u[d-1];a<=s&&n.set(r,[e.get(l),a])}else{let a=o;for(let h=0;hs)continue t}R(e.get(l),t,s,n,u,a,i,r+l)}};class C{_tree;_prefix;_size=void 0;constructor(t=new Map,s=""){this._tree=t,this._prefix=s}atPrefix(t){if(!t.startsWith(this._prefix))throw new Error("Mismatched prefix");const[s,n]=x(this._tree,t.slice(this._prefix.length));if(s===void 0){const[u,o]=M(n);for(const i of u.keys())if(i!==F&&i.startsWith(o)){const r=new Map;return r.set(i.slice(o.length),u.get(i)),new C(r,t)}}return new C(s,t)}clear(){this._size=void 0,this._tree.clear()}delete(t){return this._size=void 0,ot(this._tree,t)}entries(){return new D(this,nt)}forEach(t){for(const[s,n]of this)t(s,n,this)}fuzzyGet(t,s){return ut(this._tree,t,s)}get(t){const s=I(this._tree,t);return s!==void 0?s.get(F):void 0}has(t){const s=I(this._tree,t);return s!==void 0&&s.has(F)}keys(){return new D(this,V)}set(t,s){if(typeof t!="string")throw new Error("key must be a string");return this._size=void 0,O(this._tree,t).set(F,s),this}get size(){if(this._size)return this._size;this._size=0;const t=this.entries();for(;!t.next().done;)this._size+=1;return this._size}update(t,s){if(typeof t!="string")throw new Error("key must be a string");this._size=void 0;const n=O(this._tree,t);return n.set(F,s(n.get(F))),this}fetch(t,s){if(typeof t!="string")throw new Error("key must be a string");this._size=void 0;const n=O(this._tree,t);let u=n.get(F);return u===void 0&&n.set(F,u=s()),u}values(){return new D(this,T)}[Symbol.iterator](){return this.entries()}static from(t){const s=new C;for(const[n,u]of t)s.set(n,u);return s}static fromObject(t){return C.from(Object.entries(t))}}const x=(e,t,s=[])=>{if(t.length===0||e==null)return[e,s];for(const n of e.keys())if(n!==F&&t.startsWith(n))return s.push([e,n]),x(e.get(n),t.slice(n.length),s);return s.push([e,t]),x(void 0,"",s)},I=(e,t)=>{if(t.length===0||e==null)return e;for(const s of e.keys())if(s!==F&&t.startsWith(s))return I(e.get(s),t.slice(s.length))},O=(e,t)=>{const s=t.length;t:for(let n=0;e&&n{const[s,n]=x(e,t);if(s!==void 0){if(s.delete(F),s.size===0)W(n);else if(s.size===1){const[u,o]=s.entries().next().value;q(n,u,o)}}},W=e=>{if(e.length===0)return;const[t,s]=M(e);if(t.delete(s),t.size===0)W(e.slice(0,-1));else if(t.size===1){const[n,u]=t.entries().next().value;n!==F&&q(e.slice(0,-1),n,u)}},q=(e,t,s)=>{if(e.length===0)return;const[n,u]=M(e);n.set(u+t,s),n.delete(u)},M=e=>e[e.length-1],it=(e,t)=>{const s=e._idToShortId.get(t);if(s!=null)return e._storedFields.get(s)},rt=/[\n\r -#%-*,-/:;?@[-\]_{}\u00A0\u00A1\u00A7\u00AB\u00B6\u00B7\u00BB\u00BF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u1680\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2000-\u200A\u2010-\u2029\u202F-\u2043\u2045-\u2051\u2053-\u205F\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u3000-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]+/u,S="or",$="and",ct="and_not",lt=(e,t)=>{e.includes(t)||e.push(t)},P=(e,t)=>{for(const s of t)e.includes(s)||e.push(s)},N=({score:e},{score:t})=>t-e,ht=()=>new Map,k=e=>{const t=new Map;for(const s of Object.keys(e))t.set(parseInt(s,10),e[s]);return t},G=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0,dt={[S]:(e,t)=>{for(const s of t.keys()){const n=e.get(s);if(n==null)e.set(s,t.get(s));else{const{score:u,terms:o,match:i}=t.get(s);n.score=n.score+u,n.match=Object.assign(n.match,i),P(n.terms,o)}}return e},[$]:(e,t)=>{const s=new Map;for(const n of t.keys()){const u=e.get(n);if(u==null)continue;const{score:o,terms:i,match:r}=t.get(n);P(u.terms,i),s.set(n,{score:u.score+o,terms:u.terms,match:Object.assign(u.match,r)})}return s},[ct]:(e,t)=>{for(const s of t.keys())e.delete(s);return e}},at=(e,t,s,n,u,o)=>{const{k:i,b:r,d}=o;return Math.log(1+(s-t+.5)/(t+.5))*(d+e*(i+1)/(e+i*(1-r+r*n/u)))},ft=e=>(t,s,n)=>{const u=typeof e.fuzzy=="function"?e.fuzzy(t,s,n):e.fuzzy||!1,o=typeof e.prefix=="function"?e.prefix(t,s,n):e.prefix===!0;return{term:t,fuzzy:u,prefix:o}},H=(e,t,s,n)=>{for(const u of Object.keys(e._fieldIds))if(e._fieldIds[u]===s){e._options.logger("warn",`SlimSearch: document with ID ${e._documentIds.get(t)} has changed before removal: term "${n}" was not present in field "${u}". Removing a document after it has changed can corrupt the index!`,"version_conflict");return}},gt=(e,t,s,n)=>{if(!e._index.has(n)){H(e,s,t,n);return}const u=e._index.fetch(n,ht),o=u.get(t);o==null||o.get(s)==null?H(e,s,t,n):o.get(s)<=1?o.size<=1?u.delete(t):o.delete(s):o.set(s,o.get(s)-1),e._index.get(n).size===0&&e._index.delete(n)},mt={k:1.2,b:.7,d:.5},pt={idField:"id",extractField:(e,t)=>e[t],tokenize:e=>e.split(rt),processTerm:e=>e.toLowerCase(),fields:void 0,searchOptions:void 0,storeFields:[],logger:(e,t)=>{typeof console?.[e]=="function"&&console[e](t)},autoVacuum:!0},J={combineWith:S,prefix:!1,fuzzy:!1,maxFuzzy:6,boost:{},weights:{fuzzy:.45,prefix:.375},bm25:mt},Ft={combineWith:$,prefix:(e,t,s)=>t===s.length-1},_t={batchSize:1e3,batchWait:10},U={minDirtFactor:.1,minDirtCount:20},yt={..._t,...U},Y=(e,t=S)=>{if(e.length===0)return new Map;const s=t.toLowerCase();return e.reduce(dt[s])||new Map},B=(e,t,s,n,u,o,i,r,d=new Map)=>{if(u==null)return d;for(const l of Object.keys(o)){const a=o[l],h=e._fieldIds[l],m=u.get(h);if(m==null)continue;let p=m.size;const f=e._avgFieldLength[h];for(const c of m.keys()){if(!e._documentIds.has(c)){gt(e,h,c,s),p-=1;continue}const g=i?i(e._documentIds.get(c),s,e._storedFields.get(c)):1;if(!g)continue;const _=m.get(c),y=e._fieldLength.get(c)[h],b=at(_,p,e._documentCount,y,f,r),z=n*a*g*b,A=d.get(c);if(A){A.score+=z,lt(A.terms,t);const w=G(A.match,s);w?w.push(l):A.match[s]=[l]}else d.set(c,{score:z,terms:[t],match:{[s]:[l]}})}}return d},At=(e,t,s)=>{const n={...e._options.searchOptions,...s},u=(n.fields||e._options.fields).reduce((c,g)=>({...c,[g]:G(n.boost,g)||1}),{}),{boostDocument:o,weights:i,maxFuzzy:r,bm25:d}=n,{fuzzy:l,prefix:a}={...J.weights,...i},h=e._index.get(t.term),m=B(e,t.term,t.term,1,h,u,o,d);let p,f;if(t.prefix&&(p=e._index.atPrefix(t.term)),t.fuzzy){const c=t.fuzzy===!0?.2:t.fuzzy,g=c<1?Math.min(r,Math.round(t.term.length*c)):c;g&&(f=e._index.fuzzyGet(t.term,g))}if(p)for(const[c,g]of p){const _=c.length-t.term.length;if(!_)continue;f?.delete(c);const y=a*c.length/(c.length+.3*_);B(e,t.term,c,y,g,u,o,d,m)}if(f)for(const c of f.keys()){const[g,_]=f.get(c);if(!_)continue;const y=l*c.length/(c.length+_);B(e,t.term,c,y,g,u,o,d,m)}return m},X=(e,t,s={})=>{if(typeof t!="string"){const a={...s,...t,queries:void 0},h=t.queries.map(m=>X(e,m,a));return Y(h,a.combineWith)}const{tokenize:n,processTerm:u,searchOptions:o}=e._options,i={tokenize:n,processTerm:u,...o,...s},{tokenize:r,processTerm:d}=i,l=r(t).flatMap(a=>d(a)).filter(a=>!!a).map(ft(i)).map(a=>At(e,a,i));return Y(l,i.combineWith)},K=(e,t,s={})=>{const n=X(e,t,s),u=[];for(const[o,{score:i,terms:r,match:d}]of n){const l=r.length,a={id:e._documentIds.get(o),score:i*l,terms:Object.keys(d),match:d};Object.assign(a,e._storedFields.get(o)),(s.filter==null||s.filter(a))&&u.push(a)}return u.sort(N),u},Ct=(e,t,s={})=>{s={...e._options.autoSuggestOptions,...s};const n=new Map;for(const{score:o,terms:i}of K(e,t,s)){const r=i.join(" "),d=n.get(r);d!=null?(d.score+=o,d.count+=1):n.set(r,{score:o,terms:i,count:1})}const u=[];for(const[o,{score:i,terms:r,count:d}]of n)u.push({suggestion:o,terms:r,score:i/d});return u.sort(N),u};class Et{_options;_index;_documentCount;_documentIds;_idToShortId;_fieldIds;_fieldLength;_avgFieldLength;_nextId;_storedFields;_dirtCount;_currentVacuum;_enqueuedVacuum;_enqueuedVacuumConditions;constructor(t){if(t?.fields==null)throw new Error('SlimSearch: option "fields" must be provided');const s=t.autoVacuum==null||t.autoVacuum===!0?yt:t.autoVacuum;this._options={...pt,...t,autoVacuum:s,searchOptions:{...J,...t.searchOptions||{}},autoSuggestOptions:{...Ft,...t.autoSuggestOptions||{}}},this._index=new C,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldIds={},this._fieldLength=new Map,this._avgFieldLength=[],this._nextId=0,this._storedFields=new Map,this._dirtCount=0,this._currentVacuum=null,this._enqueuedVacuum=null,this._enqueuedVacuumConditions=U,this.addFields(this._options.fields)}get isVacuuming(){return this._currentVacuum!=null}get dirtCount(){return this._dirtCount}get dirtFactor(){return this._dirtCount/(1+this._documentCount+this._dirtCount)}get documentCount(){return this._documentCount}get termCount(){return this._index.size}toJSON(){const t=[];for(const[s,n]of this._index){const u={};for(const[o,i]of n)u[o]=Object.fromEntries(i);t.push([s,u])}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:t,serializationVersion:2}}addFields(t){for(let s=0;s{if(l!==1&&l!==2)throw new Error("SlimSearch: cannot deserialize an index created with an incompatible version");const h=new Et(a);h._documentCount=t,h._nextId=s,h._documentIds=k(n),h._idToShortId=new Map,h._fieldIds=u,h._fieldLength=k(o),h._avgFieldLength=i,h._storedFields=k(r),h._dirtCount=d||0,h._index=new C;for(const[m,p]of h._documentIds)h._idToShortId.set(p,m);for(const[m,p]of e){const f=new Map;for(const c of Object.keys(p)){let g=p[c];l===1&&(g=g.ds),f.set(parseInt(c,10),k(g))}h._index.set(m,f)}return h},Q=Object.entries,wt=Object.fromEntries,j=(e,t)=>{const s=e.toLowerCase(),n=t.toLowerCase(),u=[];let o=0,i=0;const r=(l,a=!1)=>{let h="";i===0?h=l.length>20?`… ${l.slice(-20)}`:l:a?h=l.length+i>100?`${l.slice(0,100-i)}… `:l:h=l.length>20?`${l.slice(0,20)} … ${l.slice(-20)}`:l,h&&u.push(h),i+=h.length,a||(u.push(["mark",t]),i+=t.length,i>=100&&u.push(" …"))};let d=s.indexOf(n,o);if(d===-1)return null;for(;d>=0;){const l=d+n.length;if(r(e.slice(o,d)),o=l,i>100)break;d=s.indexOf(n,o)}return i<100&&r(e.slice(o),!0),u},Z=/[\u4e00-\u9fa5]/g,tt=(e={})=>({fuzzy:.2,prefix:!0,processTerm:t=>{const s=t.match(Z)||[],n=t.replace(Z,"").toLowerCase();return n?[n,...s]:[...s]},...e}),xt=(e,t)=>t.contents.reduce((s,[,n])=>s+n,0)-e.contents.reduce((s,[,n])=>s+n,0),kt=(e,t)=>Math.max(...t.contents.map(([,s])=>s))-Math.max(...e.contents.map(([,s])=>s)),et=(e,t,s={})=>{const n={};return K(t,e,tt({boost:{h:2,t:1,c:4},...s})).forEach(u=>{const{id:o,terms:i,score:r}=u,d=o.includes("@"),l=o.includes("#"),[a,h]=o.split(/[#@]/),m=i.sort((f,c)=>f.length-c.length).filter((f,c)=>i.slice(c+1).every(g=>!g.includes(f))),{contents:p}=n[a]??={title:"",contents:[]};if(d)p.push([{type:"customField",key:a,index:h,display:m.map(f=>u.c.map(c=>j(c,f))).flat().filter(f=>f!==null)},r]);else{const f=m.map(c=>j(u.h,c)).filter(c=>c!==null);if(f.length&&p.push([{type:l?"heading":"title",key:a,...l&&{anchor:h},display:f},r]),"t"in u)for(const c of u.t){const g=m.map(_=>j(c,_)).filter(_=>_!==null);g.length&&p.push([{type:"text",key:a,...l&&{anchor:h},display:g},r])}}}),Q(n).sort(([,u],[,o])=>"max"==="total"?xt(u,o):kt(u,o)).map(([u,{title:o,contents:i}])=>{if(!o){const r=it(t,u);r&&(o=r.h)}return{title:o,contents:i.map(([r])=>r)}})},st=(e,t,s={})=>Ct(t,e,tt(s)).map(({suggestion:n})=>n),v=wt(Q(JSON.parse("{\"/\":{\"documentCount\":107,\"nextId\":107,\"documentIds\":{\"0\":\"v-8daa1a0e\",\"1\":\"v-8daa1a0e#让我们开始吧\",\"2\":\"v-712c96ac\",\"3\":\"v-2b686fa9\",\"4\":\"v-1ef620e5\",\"5\":\"v-1ef620e5#创建新的殖民地\",\"6\":\"v-1ef620e5#勘察区域\",\"7\":\"v-1ef620e5#放置您的市政厅\",\"8\":\"v-1ef620e5#创建您的殖民地\",\"9\":\"v-1ef620e5#保护区域\",\"10\":\"v-1ef620e5#deleting-a-colony\",\"11\":\"v-1ef620e5#building-gui\",\"12\":\"v-1ef620e5#information-this-is-the-overall-information-section-of-the-town-hall-gui\",\"13\":\"v-1ef620e5#actions-this-is-the-most-important-section\",\"14\":\"v-1ef620e5#permissions-here-you-can-invite-other-players-to-your-colony-to-collaborate\",\"15\":\"v-1ef620e5#citizens-this-section-displays-the-names-and-skill-levels-of-the-citizens-in-your-colony\",\"16\":\"v-1ef620e5#settings-this-section-is-where-you-can-control-how-your-citizens-will-be-hired-and-assigned-housing-in-your-colony-among-other-things\",\"17\":\"v-1ef620e5#work-orders-here-you-will-see-the-work-orders-your\",\"18\":\"v-1ef620e5#statistics-this-is-the-section-for-the-global-happiness-of-your-colony-so-you-can-see-what-area-needs-more-attention-to-raise-the-happiness-level\",\"19\":\"v-384502bc\",\"20\":\"v-7d932540\",\"21\":\"v-3631dba2\",\"22\":\"v-3631dba2#下载hello-minecraft-launcher\",\"23\":\"v-3631dba2#安装minecraft-1-20-1\",\"24\":\"v-3631dba2#安装模拟殖民地\",\"25\":\"v-3631dba2#安装前置\",\"26\":\"v-3631dba2#启动游戏\",\"27\":\"v-0932ecbb\",\"28\":\"v-0932ecbb#installing-minecolonies-mod-on-your-original-minecraft-launcher\",\"29\":\"v-0932ecbb#download-forge\",\"30\":\"v-0932ecbb#run-forge-installer\",\"31\":\"v-0932ecbb#download-minecolonies\",\"32\":\"v-0932ecbb#navigate-to-mods-folder\",\"33\":\"v-0932ecbb#copy-minecolonies-to-mods\",\"34\":\"v-0932ecbb#do-the-same-thing-for-structurize\",\"35\":\"v-0932ecbb#cannot-add-modpack-without-external-installer\",\"36\":\"v-0932ecbb#run-minecraft-and-select-profile\",\"37\":\"v-f45ff45a\",\"38\":\"v-117ff75c\",\"39\":\"v-3d245998\",\"40\":\"v-3d245998#快速指南\",\"41\":\"v-3d245998#第1步-补给营地-补给船\",\"42\":\"v-3d245998#第2步-市政厅\",\"43\":\"v-3d245998#第3步-建筑工\",\"44\":\"v-3d245998#第4步-酒馆\",\"45\":\"v-3d245998#第5步-食物\",\"46\":\"v-3d245998#第6步-护林员\",\"47\":\"v-3d245998#第7步-矿工\",\"48\":\"v-3d245998#第8步-仓库和快递员\",\"49\":\"v-3d245998#第9步-其余的殖民地\",\"50\":\"v-3d245998#详细步骤\",\"51\":\"v-3d245998#放置补给船或补给营地\",\"52\":\"v-3d245998#市政厅\",\"53\":\"v-3d245998#建筑工具的教学视频-过时\",\"54\":\"v-3d245998#设置你的殖民地\",\"55\":\"v-3d245998#第1步\",\"56\":\"v-3d245998#第2步\",\"57\":\"v-3d245998#第3步\",\"58\":\"v-3d245998#第4步\",\"59\":\"v-3d245998#最后说明\",\"60\":\"v-f61210c0\",\"61\":\"v-f61210c0#scanning-a-new-structure\",\"62\":\"v-f61210c0#placing-a-schematic\",\"63\":\"v-f61210c0#style-packs\",\"64\":\"v-f61210c0#the-pack-json\",\"65\":\"v-f61210c0#the-folder-structure\",\"66\":\"v-f61210c0#faq\",\"67\":\"v-f61210c0#how-do-i-install-custom-schematics-i-just-downloaded\",\"68\":\"v-f61210c0#what-and-where-is-the-scans-folder\",\"69\":\"v-f61210c0#where-is-the-schematic-folder\",\"70\":\"v-f61210c0#i-have-a-minecolonies-01e6a291-8a01-4763-bcae-f3a8797b1d52-cache-folder-what-is-that-for\",\"71\":\"v-f61210c0#i-have-a-blueprints-clients-folder-what-is-that-for\",\"72\":\"v-f61210c0#can-i-just-build-my-own-buildings-and-then-get-the-colonists-to-move-in\",\"73\":\"v-f61210c0#how-to-create-custom-huts\",\"74\":\"v-f61210c0#_1-18-custom-hut-filenames\",\"75\":\"v-f61210c0#custom-supply-ships-and-camps\",\"76\":\"v-f61210c0#hut-requirements\",\"77\":\"v-f61210c0#level-requirements-for-overworld-styles\",\"78\":\"v-f61210c0#level-requirements-for-nether-styles\",\"79\":\"v-f61210c0#plantation-fields\",\"80\":\"v-f61210c0#vertically-growing-plants-upwards-and-downwards\",\"81\":\"v-f61210c0#treeside-plants\",\"82\":\"v-f61210c0#bonemealed-fields\",\"83\":\"v-f61210c0#percentage-based-harvesting\",\"84\":\"v-f61210c0#tips-on-building\",\"85\":\"v-f61210c0#do\",\"86\":\"v-f61210c0#don-t\",\"87\":\"v-f61210c0#additional-information\",\"88\":\"v-f61210c0#how-to-override-some-built-in-schematics\",\"89\":\"v-f61210c0#how-to-use-custom-huts\",\"90\":\"v-f61210c0#how-to-allow-my-players-to-use-their-own-huts-schematics-on-my-server\",\"91\":\"v-f61210c0#how-to-allow-my-players-to-use-their-scanned-decoration-schematics-on-my-server\",\"92\":\"v-f61210c0#how-to-disable-built-in-schematics-completely\",\"93\":\"v-f61210c0#how-to-create-upgradable-decoration-schematics\",\"94\":\"v-f61210c0#how-to-use-custom-mineshafts-in-style-packs\",\"95\":\"v-f61210c0#how-to-make-custom-quarries-in-style-packs\",\"96\":\"v-f61210c0#how-to-create-parent-child-buildings-or-decorations\",\"97\":\"v-f61210c0#what-if-i-have-another-question\",\"98\":\"v-dd87a1e0\",\"99\":\"v-dd87a1e0#getting-started\",\"100\":\"v-dd87a1e0#tagging-and-prepping\",\"101\":\"v-dd87a1e0#adding-jigsaw-blocks\",\"102\":\"v-dd87a1e0#processors\",\"103\":\"v-dd87a1e0#street-json\",\"104\":\"v-dd87a1e0#decoration-json\",\"105\":\"v-dd87a1e0#placeholder-replacement-json\",\"106\":\"v-dd87a1e0#decay-example\"},\"fieldIds\":{\"h\":0,\"t\":1,\"c\":2},\"fieldLength\":{\"0\":[1,130],\"1\":[2,5],\"2\":[1],\"3\":[1],\"4\":[1,7],\"5\":[1],\"6\":[1,7],\"7\":[1,19],\"8\":[1,7],\"9\":[1,37],\"10\":[3,40],\"11\":[3],\"12\":[12,114],\"13\":[8,104],\"14\":[12,100],\"15\":[15,50],\"16\":[23,179],\"17\":[10,97],\"18\":[24,64],\"19\":[1],\"20\":[2,183],\"21\":[2,4],\"22\":[3,1],\"23\":[3,17],\"24\":[1,20],\"25\":[1,8],\"26\":[1,3],\"27\":[2],\"28\":[8,105],\"29\":[2,16],\"30\":[3,44],\"31\":[2,18],\"32\":[4,35],\"33\":[4,33],\"34\":[6,52],\"35\":[6,73],\"36\":[5,38],\"37\":[1],\"38\":[1],\"39\":[1,7],\"40\":[1,16],\"41\":[3,11],\"42\":[2,10],\"43\":[2,6],\"44\":[2,5],\"45\":[2,8],\"46\":[2,5],\"47\":[2,3],\"48\":[2,17],\"49\":[2,13],\"50\":[1,18],\"51\":[1,35],\"52\":[1,25],\"53\":[3,30],\"54\":[1],\"55\":[1,19],\"56\":[1,21],\"57\":[1,40],\"58\":[1,15],\"59\":[1,47],\"60\":[1,51],\"61\":[4,132],\"62\":[4,73],\"63\":[2,67],\"64\":[3,93],\"65\":[3,136],\"66\":[1,14],\"67\":[9,65],\"68\":[8,69],\"69\":[6,40],\"70\":[16,67],\"71\":[11,69],\"72\":[16,64],\"73\":[6,198],\"74\":[6,266],\"75\":[5,80],\"76\":[2,160],\"77\":[5,16],\"78\":[5,20],\"79\":[2,193],\"80\":[7,86],\"81\":[2,49],\"82\":[2,89],\"83\":[3,55],\"84\":[3],\"85\":[1,89],\"86\":[2,32],\"87\":[2],\"88\":[8,47],\"89\":[6,46],\"90\":[13,17],\"91\":[13,53],\"92\":[8,28],\"93\":[7,57],\"94\":[9,87],\"95\":[9,174],\"96\":[9,374],\"97\":[7,18],\"98\":[1,56],\"99\":[2,116],\"100\":[3,65],\"101\":[3,122],\"102\":[1,31],\"103\":[2,42],\"104\":[2,34],\"105\":[3,78],\"106\":[2,43]},\"averageFieldLength\":[4.271028037383178,59.142782626707614],\"storedFields\":{\"0\":{\"h\":\"开始\",\"t\":[\"模拟殖民地是一个交互式建筑模组,可让你在Minecraft中创建自己的繁荣城镇。它通过提供一切你需要的工具,让你的领导技能得以发挥。模拟殖民地提供了灵活性,让你创建一个与其他玩家独一无二的殖民地。有了如此多的选择,你每次都会打造一个不同的殖民地,适应任何生态区域,建在山内、山顶、海底,或是天空中。 唯一的限制就是你的想象力! 模拟殖民地拥有NPC工人,例如 建筑工, [Farmers], [渔夫], [护林员], [矿工], [Smelters], [Bakers], [Cooks], C[ouriers], 五种牧民, [Composters]等等,随着模组的发展,更多内容正在开发和添加。 It also includes specialized buildings such as the [Warehouse], [Residence], 市政厅, [Barracks], [图书馆], [大学], and even the School.\",\"MineColonies is a free and open-source mod developed by Let's Dev Together (LDT), a non-profit community. The source code is available on GitHub. Our developers are a hard-working, well-integrated coding team, continuously adding more content to make the MineColonies experience even greater. However, we are always looking for more people to contribute to the mod, whether as a coder, builder, artist, voice actor, wiki editor, tester, or simply supporting us on Patreon!\",\"Found a bug? Report it as an issue to help us give you the best gaming experience. If you require any help or just want to join the conversation, check us out on Discord!\"]},\"1\":{\"h\":\"让我们开始吧!\",\"t\":[\"在导航栏中选择你要查看的页面。\",\"提示\",\"目前Wiki正处于起步阶段,当前的进度是将英文Wiki的内容搬运过来后进行本地化。\"]},\"2\":{\"h\":\"\"},\"3\":{\"h\":\"建筑\"},\"4\":{\"h\":\"市政厅\",\"t\":[\"市政厅是殖民地的中心部分。\",\"市政厅方块不能在已经放置了通过补给营地/船获得的市政厅之前在工作台制作。如果有需要,它也可以像其他方块一样在创造模式下获得,或通过命令获取。\"]},\"5\":{\"h\":\"创建新的殖民地\"},\"6\":{\"h\":\"勘察区域\",\"t\":[\"在决定放置市政厅的位置之前,请确保仔细勘察您的区域。您的殖民地将以市政厅方块为中心的4块半径(每个方向4块)开始。确保这是您想要建立殖民地的地方。\"]},\"7\":{\"h\":\"放置您的市政厅\",\"t\":[\"在仔细决定放置市政厅的位置后(请记住,您放置市政厅方块的位置将是您殖民地受保护区域的中心。一旦放置,该区域将被确定,无法更改),使用您的建筑工具将市政厅方块放置在地面上。\",\"右键单击您希望放置市政厅的区域。建筑的GUI将显示,显示建筑的3D预览。您可以使用箭头按钮将建筑移动到所需的位置。\",\"确保在GUI中使用+和-选项,以确保小屋的地面水平位于您希望的位置。并非所有的小屋方块都位于地面上。\",\"一旦您确认放置市政厅(绿色对勾),市政厅方块将被放置。\"]},\"8\":{\"h\":\"创建您的殖民地\",\"t\":[\"一旦您放置了市政厅方块,您需要右键点击它并选择“创建新殖民地”。\",\"一个新的殖民地将被创建,您的殖民地的范围将被确定,并且整个区域将被保护。\"]},\"9\":{\"h\":\"保护区域\",\"t\":[\"当您开始一个殖民地时,最初设置的区域还具有附加的保护。保护系统包括阻止任何玩家放置/破坏或与任何类型的方块交互,放置熔岩或水以及放置/点燃TNT。一旦建立,它还将显示在信息屏幕中。\",\"殖民地的受保护区域(一旦放置了市政厅)将取决于配置,但默认情况下将是以您首次放置市政厅方块的位置为中心的4块半径。因此,请仔细规划您想要放置市政厅的位置。您受保护的殖民地区域包括从基岩到天际限制的山脉、丘陵、湖泊、海洋、洞穴、世界生成的结构等。\",\"由于每个殖民地的受保护区域,您必须仔细勘察周围环境,确保您周围没有其他殖民地,以防止您放置市政厅或在该方向上限制您的殖民地区域。\",\"一旦放置市政厅方块,这将是您城镇受保护半径的中心。如果您决定希望实际的市政厅建筑建在不同的位置(在当前设置的受保护半径内),您可以使用建筑工具打破方块,然后再次放置它。删除并替换市政厅方块不会移除您城镇的受保护区域。唯一的方法是通过拥有OP或管理员权限的人通过命令删除您的殖民地。\",\"如果有另一个殖民地离您当前位置太近,您将无法放置市政厅。\",\"如果您尝试在受保护区域之外放置另一个市政厅,您将收到一条消息:\"]},\"10\":{\"h\":\"Deleting a Colony\",\"t\":[\"To delete your colony, place a Town Hall outside your current colony border (either by mining or deconstructing your old Town Hall or by crafting a new one). Interacting with the newly placed Town Hall outside of the current borders will prompt you to delete your colony. Alternatively, if you have the proper permissions, you can use commands.\"]},\"11\":{\"h\":\"{% building %} GUI\"},\"12\":{\"h\":\"Information: This is the overall information section of the Town Hall GUI.\",\"t\":[\"{% building_gui_content_block_custom image_key=\\\"th_information\\\" image_alt=\\\"Townhall information\\\" cols=6 %}Page 1: Here you will see some statistics on your citizens, like the number of citizens you have out of your max. Green is less than 90% of your max, orange is above 90%, and red is full. If it's red, hovering over the numbers will show what you need to do to get more citizens. The page also shows how many of each type of worker you have.\",\"Page 2: Here you will see the overall happiness of the colony's citizens and any events that happened within the colony (the newest events are at the bottom). You can click the button to switch to a permission log, which will show any illegal actions that happened in the colony (like if a player tried to break a block when they aren't allowed to). Clicking the plus next to an illegal action will change it to a legal action if the player tries to do it again. For more information, see the Protection system and the Permission tab of the {% building townhall %} GUI. {% endbuilding_gui_content_block_custom %}\"]},\"13\":{\"h\":\"Actions: This is the most important section.\",\"t\":[\"{% building_gui_content_block_custom image_key=\\\"th_actions\\\" image_alt=\\\"Townhall actions\\\" cols=6 %}Page 1: Here you will see the name of your colony as well as the building level of the {% building townhall %}. And the buttons:\",\"Build Options: Lets you create a build, upgrade, reposition, or repair build order for the {% building townhall %}. To learn more about the building system, please visit the {% building_link builder %} page.\",\"Rename Colony: To change the name of your colony (from Your Username's Colony, which is the default) to anything you want.\",\"Hire Mercenaries: Here you can hire mercenaries to help defend your colony. Be warned, they're mean and will steal from citizens!\",\"Page 2: This is only enabled if PVP is turned on in the config file. Here you have:\",\"Allies: Other colonies that you have added as allies and that have confirmed your colony as an ally as well.\",\"Feuds: Other colonies that you have added as a feud and that have confirmed your colony as a feud as well. {% endbuilding_gui_content_block_custom %}\"]},\"14\":{\"h\":\"Permissions: Here you can invite other players to your colony to collaborate.\",\"t\":[\"{% building_gui_content_block_custom image_key=\\\"th_permissions1\\\" image_alt=\\\"Townhall permissions\\\" cols=6 %}Page 1: Here you type the name of the player you want to add.\",\"Page 2: Shows the list of players that have ben added as well as their current rank. You can click on the \\\"-\\\" or \\\"+\\\" to give them a higher rank or lower rank. {% endbuilding_gui_content_block_custom %}\",\"{% building_gui_content_block_custom image_key=\\\"th_permissions2\\\" image_alt=\\\"Townhall permissions\\\" cols=6 %}Page 3: Here you can select the rank that you would like to manage.\",\"Page 4: Here are the individual permissions (for the rank you have selected on the previous page) that you can toggle ON or OFF, giving each rank the permission you want. Note: the Fight Guards permission causes Guards to treat the player as an enemy and attack them. It is only recommended for Hostile players. {% endbuilding_gui_content_block_custom %}\",\"{% building_gui_content_block_custom image_key=\\\"th_permissions3\\\" image_alt=\\\"Townhall permissions\\\" cols=6 %}Page 5: Where you enter the position (X, Y, Z) of the block that you want to make free for interaction.\",\"Page 6: Here you will see the list of block positions that you have added as free for interaction and can remove them. {% endbuilding_gui_content_block_custom %}\"]},\"15\":{\"h\":\"Citizens: This section displays the names and skill levels of the citizens in your colony.\",\"t\":[\"{% building_gui_content_block_custom image_key=\\\"th_citizens\\\" image_alt=\\\"Townhall citizens\\\" cols=6 %}Page 1: When you select a citizen, their stats and job will appear here. You can also recall them to the Town Hall block on this page.\",\"Page 2: Here you will see a list of the citizens in your colony. Select a citizen to see their skills. {% endbuilding_gui_content_block_custom %}\"]},\"16\":{\"h\":\"Settings: This section is where you can control how your citizens will be hired and assigned housing in your colony, among other things.\",\"t\":[\"{% building_gui_content_block_custom image_key=\\\"th_settings\\\" image_alt=\\\"Townhall settings\\\" cols=6 %}Page 1: There are four buttons here:\",\"Worker hiring mode: Clicking on this button lets you switch between automatic or manual. If it's in automatic mode, you can't fire or hire any citizen from any worker hut and the best unemployed citizen will be hired for you. In manual mode you will be able to hire and fire whichever citizen you want at any time.\",\"Housing assignment mode: Clicking on this button lets you switch between automatic or manual. If it's in automatic mode, citizens will be assigned a house as soon as they spawn (if housing is available). In manual mode, you can select which citizens will be housed in each House or Tavern. This is better if you have a large colony and many workers spread out in a large area so you can house your citizens as close as possible to their workplace.\",\"Print help messages: Clicking on this button lets you choose whether MineColonies help messages will appear in the chat. It is recommended that this be turned on for first-time players.\",\"Kids will be born: Clicking on this button lets you choose whether new kids will be born in your colony.\",\"Page 2: There are three buttons here:\",\"Pick Team Color: Whatever color you pick from here, your Guards will have a glow of this color around them when you put them in follow mode at their {% building_link guardtower %} or {% building_link barrackstower %}. This is for the PVP system, so you know which Guards are yours when you are fighting. Your citizens' names will also be in this color.\",\"Edit Colony Flag: Clicking this button will open up a banner designer where you can design your colony banner. Your {% worker_link knight %} will wear the finished design on their shields, and it is also used in some schematics.\",\"Switch Colony Pack: This option controls the default selected style pack when opening the build tool.\",\"Pick Citizen Style: The option controls how the citizens look. This feature is exclusive for donators. {% endbuilding_gui_content_block_custom %}\"]},\"17\":{\"h\":\"Work Orders: Here you will see the work orders your\",\"t\":[\"{% building_gui_content_block_custom image_key=\\\"th_workorders\\\" image_alt=\\\"Townhall work orders\\\" cols=6 %} All the work orders in the order they have been assigned. {% worker_link builder plural=true %} will not start another order until they have successfully completed the top one.\",\"Page 1: Blank page except for the header.\",\"Page 2: Here are all the build orders for this colony (including decorations and your own schematics as well as huts). Your {% worker_link builder plural=true %} will complete the builds from top to bottom, and you can change the priority of the builds by moving them up or down in the list. You can also delete work orders. When you delete a work order that is currently being built, the Builder will stop building and will continue where they left off if you create the work order again.\\\" {% endbuilding_gui_content_block_custom %}\"]},\"18\":{\"h\":\"Statistics: This is the section for the global happiness of your colony so you can see what area needs more attention to raise the happiness level.\",\"t\":[\"{% building_gui_content_block_custom image_key=\\\"th_statistics\\\" image_alt=\\\"Townhall happiness\\\" cols=6 %}Page 1: The happiness indices. You can keep track of the areas that will lower or raise the happiness of your citizens here. The colors, in order from best to worst, are:\",\"Green (positive)\",\"Blue (neutral)\",\"Yellow (slightly negative)\",\"Red (negative)\",\"There's also black, which will show up if something went wrong.\",\"Page 2: Blank page.\\n{% endbuilding_gui_content_block_custom %}\"]},\"19\":{\"h\":\"安装\"},\"20\":{\"h\":\"GDLauncher 安装\",\"t\":[\"Installing MineColonies via GDLauncher, a custom Minecraft launcher, is the recommended method.\",\"GDLauncher Installation Getting GDLauncher Setting Up GDLauncher Account Create an Instance Installing MineColonies Mod Only Installing MineColonies Official Modpacks Getting the Modpack Installing the Modpack Getting GDLauncher GDLauncher can be downloaded here. Simply choose the version for your operating system and run the file.\",\"GDLauncher Download\",\"Setting Up GDLauncher Once you’ve installed GDLauncher, setting it up is simple.\",\"Account When you first open GDLauncher, it’ll ask you to log in to your Minecraft account. Enter your account information and click Sign In.\",\"Log In\",\"Create an Instance Once you’re logged in, you’ll be able to create an “instance.” Instances are GDLauncher’s way of separating each version of Minecraft and each different set of mods you wish to install.\",\"To create an instance, click the + button in the bottom left.\",\"Instance Button\",\"The steps past this point differ, depending on whether you’re installing the mod or the modpack.\",\"Installing MineColonies Mod Only Change the dropdowns to select the latest Forge version for the latest version of Minecraft. (At the time of this writing, the latest Minecraft version is 1.16.5.)\",\"Changing Dropdowns\",\"Next, click the white arrow in the bottom right. It’ll prompt you to enter a name for your instance; enter whatever you’d like.\",\"Instance Name\",\"Once you’re done choosing a name, click the bottom-right arrow again. Wait for GDLauncher to finish installing Forge. Once it’s done, you should see the instance in the main menu (along with any other instances). Right-click it and click Manage.\",\"Manage Button\",\"Once you’re in the Manage Instance menu, go to the Mods tab and click the Add Mod button at the top.\",\"Mods Tab\",\"Search for “MineColonies” at the top, then click Install. (You can click elsewhere on the mod’s icon to read the description.) GDLauncher will automatically install Structurize, a dependency of MineColonies.\",\"MineColonies Search\",\"You’re ready to play! To launch Minecraft, close out of the instance manager and left-click on the instance icon (in the main menu).\",\"Installing MineColonies Official Modpack When creating an instance, change from Vanilla to Twitch at the top. Search for “MineColonies Official”.\",\"Searching in Twitch Tab\",\"Hover over the top result and click Download Latest (or Explore / Versions to read the description). It’ll prompt you to choose a name for your instance.\",\"Instance Name\",\"When you’re done, click the white arrow in the bottom left. GDLauncher will start installing the modpack.\",\"Once GDLauncher is finished, you’re done! Just click on the instance icon to launch Minecraft. Have fun!\"]},\"21\":{\"h\":\"HMCL 启动器\",\"t\":[\"本教程将通过使用Hello Minecraft! Launcher下载并安装模拟殖民地。\"]},\"22\":{\"h\":\"下载Hello Minecraft! Launcher\",\"t\":[\"点击这里前往官方下载页面\"]},\"23\":{\"h\":\"安装Minecraft 1.20.1\",\"t\":[\"打开启动器,在左侧选择游戏-下载->新游戏-游戏,游戏版本选择1.20.1正式版,安装最新版本的Forge。\",\"提示\",\"你可以重命名这个版本,例如模拟殖民地,以便于识别。\",\"警告\",\"不要安装Optifine!这可能会导致出现一些莫名其妙的问题!\"]},\"24\":{\"h\":\"安装模拟殖民地\",\"t\":[\"返回主页,在左侧选择游戏-下载->游戏内容-模组,在名称处输入Minecolonies,选择游戏版本为1.20.1,点击搜索。\",\"提示\",\"你也可以搜索模拟殖民地,正常情况下也是可以搜索到的。\",\"搜索结果出现后,选择对应的结果,下拉找到1.20.1,点击展开后选择最新的版本(日期最接近现在的),确认安装。\"]},\"25\":{\"h\":\"安装前置\",\"t\":[\"下载完成后,点击上方对应的前置模组,重复上述步骤,安装全部的前置模组。\",\"警告\",\"所有的前置模组缺一不可,缺少任何一个都无法启动游戏!\"]},\"26\":{\"h\":\"启动游戏\",\"t\":[\"当以上步骤完成后就可以启动游戏了!不过在这之前记得添加一个游戏账户哦!\"]},\"27\":{\"h\":\"Minecraft Java版\"},\"28\":{\"h\":\"Installing MineColonies Mod on your original Minecraft Launcher\",\"t\":[\"This process is for installing only the MineColonies mod in your original Minecraft launcher. You will not be able to connect to the MineColonies Official Servers due to the servers having a balanced variety of other mods as well.\",\"For connecting to the official server, install GDLauncher or the Curseforge Launcher. You can visit the CurseForge site for a zip file containing all mods (with the correct versions) we are currently using on the official server, as well as all the appropriate configs, scripts, and the server.dat file for our modpack official server. If all these additional mods, configs, scripts, and the server.dat are downloaded and installed manually, you will be able to connect to our official server.\",\"Installation of the MineColonies mod is very simple. It does require Minecraft Forge to be able to integrate mods into the Minecraft game, though.\",\"We cannot offer support on the installation of Minecraft Forge, however, there are many excellent (and more in-depth) tutorials online. Just Google 'how to install minecraft forge' to find some.\"]},\"29\":{\"h\":\"Download Forge\",\"t\":[\"Go to the Minecraft Forge Download page and download the latest version's installer (not the recommended version).\"]},\"30\":{\"h\":\"Run Forge Installer\",\"t\":[\"Run the downloaded version and make sure it's on Install Client (or Server if you plan to run a Minecraft server). The installation path is preset according to Minecraft's standard installation path. If you have it installed in a different directory, change the installation directory. When it's done installing, you will see a complete message.\"]},\"31\":{\"h\":\"Download MineColonies\",\"t\":[\"Go to the MineColonies CurseForge Download page site and download the latest 1.16.5 alpha version of MineColonies.\"]},\"32\":{\"h\":\"Navigate to Mods Folder\",\"t\":[\"On your computer, go to the .minecraft/mods folder. To be able to find this folder, just click on the start button and in the search box type: %appdata% and hit \\\"search\\\". It will open the folder where you can find the .minecraft folder. Open this folder and inside you will find the mods folder.\"]},\"33\":{\"h\":\"Copy MineColonies to Mods\",\"t\":[\"Once you are in the .minecraft/mods folder, copy the downloaded MineColonies file you downloaded in the Download MineColonies step and paste it here. Note: DO NOT extract the file if the option appears. Just put the .jar file in here without extracting its contents.\"]},\"34\":{\"h\":\"Do the Same Thing for Structurize\",\"t\":[\"Follow the last three steps, except for Structurize (which MineColonies needs to work). Find the download page for Structurize here.\",\"MineColonies doesn't always accept the latest version of Structurize. To ensure you have the required version, first, click on the MineColonies file name (on the Curseforge website). You'll be taken to the changelog, where it should say the accepted Structurize version at the top. Download that exact version.\"]},\"35\":{\"h\":\"Cannot Add Modpack Without External Installer\",\"t\":[\"If you are adding the entire modpack to be able to play on the official server, you will require an external launcher to download the pack. The Curseforge launcher works on Windows or macOS. Other options include GDlauncher or MultiMC, both offering Windows, macOS and Linux support. Finally, if you can not or do not wish to 'install' a launcher you can use CMPDL that will run a small Java program to download the required modpack.\",\"Unfortunately, manually 'installing' modpacks is no longer an option as Curseforge no longer distributes mods in the downloaded zip files for modpacks due to licensing issues.\"]},\"36\":{\"h\":\"Run Minecraft and Select Profile\",\"t\":[\"Run your original Minecraft launcher. Make sure you have the Forge profile loaded and hit play. (You might need to go to Installations and create a new installation first.)\",\"That's it. If you followed these steps, you are ready to play MineColonies!\"]},\"37\":{\"h\":\"教程\"},\"38\":{\"h\":\"数据包\"},\"39\":{\"h\":\"入门\",\"t\":[\"本教程假设你已经安装了mod。如果你想了解如何安装官方整合包, 你可以在Java (Forge)、GDLauncher以及Curseforge Launcher上找到相应的安装说明。\"]},\"40\":{\"h\":\"快速指南\",\"t\":[\"在开始新的殖民地之前,你应该找到一个理想的位置。你需要足够大的空间来建设一个完整的城市,至少8x8区块大小,并且地形较为平坦。\",\"你还应该尽可能多的收集资源,包括木材、石头、煤炭、铁矿石、花朵、线、皮革、羊毛、树苗和食物等。\"]},\"41\":{\"h\":\"第1步:补给营地/补给船\",\"t\":[\"一旦你选择了殖民地的位置,你必须放置一个补给船或者补给营地。在同一个世界中你只能放置其中一个。补给营地/船提供了你正式启动殖民地所需的市政厅方块。它们还提供了在建设殖民地过程中可能需要的一些其他物资。一旦你获得了市政厅方块和建筑工具,剩下的营地/船就只是个装饰物了。你可以选择保留或拆除它。\"]},\"42\":{\"h\":\"第2步:市政厅\",\"t\":[\"市政厅方块实际上是创建殖民地的核心。它还充当殖民地的中心。这是你开始使用建筑工具放置建筑的地方。使用建筑工具可以确保你能够清楚地看到建筑将在哪里,朝向哪个方向,以及它是否位于正确的Y层级(一些建筑需要抬升到正确的Y层级)。\",\"一旦放置了市政厅方块,你将开始获得最初的4名居民。\"]},\"43\":{\"h\":\"第3步:建筑工\",\"t\":[\"在开始建设殖民地之前,你需要一个建筑工。建筑工必须先建造他们自己的建筑工小屋,然后才能建造其他小屋,而且他们不能将小屋建造或升级到高于他们自己小屋的等级。\"]},\"44\":{\"h\":\"第4步:酒馆\",\"t\":[\"你的市民需要一个居住和睡觉的地方,因此建议接下来建造一个酒馆。酒馆还允许游客来到你的殖民地,你可以招募他们留下成为居民。\"]},\"45\":{\"h\":\"第5步:食物\",\"t\":[\"你的殖民地需要的下一个重要物资是食物。获得食物的最快方式是建造一个渔夫小屋。你也可以建造农场或其中一种牲畜饲养工,但是建造一个渔夫小屋更快。如果你不想亲自为殖民者喂食(或烹饪食物),建造一个餐厅也是明智的选择。\"]},\"46\":{\"h\":\"第6步:护林员\",\"t\":[\"如果你更青睐木材,建议接下来建造一个护林员小屋。这样,你的新护林员就可以开始为你的下一个建筑和工具等项目采集木材。\"]},\"47\":{\"h\":\"第7步:矿工\",\"t\":[\"石材和矿石是殖民地的另一个主要需求,因此建造一个矿井是下一个合乎逻辑的步骤。\"]},\"48\":{\"h\":\"第8步:仓库和快递员\",\"t\":[\"在这一点上,你可能已经厌倦了将所有资源交给建筑师,然后再从渔夫、林业师、矿工等处取回。你可能还想将物品存放在一个地方。好吧,{% building_link warehouse %} 和 {% building_link courier %} 就是你正在寻找的解决方案!{% worker_link courier %} 在仓库和所有工作场所之间传送物品。剪贴板和资源卷轴可能会有帮助!\"]},\"49\":{\"h\":\"第9步:其余的殖民地\",\"t\":[\"在这一步,你需要根据你的游戏方式和殖民地的需求来决定下一步做什么。但是你有几个方向可供选择。一旦获得七名居民,你可能会受到袭击,因此可能想要建造一个卫兵塔,或者可能有一名生病的居民,想要建造一个医院,或者可能决定建造一个锯木厂来为工人制作所需的物品。或者你可能只是想拥有一个特定的工人,或者找到了一个适合建造特定小屋的好地方。你决定你的殖民地将如何发展!\"]},\"50\":{\"h\":\"详细步骤\",\"t\":[\"如果你已经到达这里,恭喜你! 你已经安装了模拟殖民地,并准备好踏上一场探险之旅,探索、征服并建立自己的殖民地。努力工作,将其打造成一个繁荣的城镇。磨练你的领导技能,不断壮大成为一个城市!最后,你能成为一位宏伟的领导者,最终实现大都市的目标吗?(查看游戏中的模拟殖民地成就。)\",\"为了避免错误和挫折,在开始游戏之前,请仔细阅读整个指南。\"]},\"51\":{\"h\":\"放置补给船或补给营地\",\"t\":[\"要放置补给船,你需要拥有足够大的水域(至少32x20)。 要放置补给营地,你需要拥有足够大、平坦、清晰的土地(至少16x17方块)。\",\"当你放置供给船/营地时,它将生成一个包含市政厅方块和建筑工具的箱子。 一旦放置了补给船/营地,就不能在同一个世界中放置另一个了。\",\"通过直接右键单击水域/地面上的物品来放置供给船/营地 - 如果你已经有一个建筑工具,请不要在此时使用它(你预计从营地/船中获取工具,而不是已经拥有一个)。\",\"提示\",\"如果你无法放置供给营地/船,请逐块尝试:向右、向左、更近或更远离你清理的区域。该区域不能包含任何洞穴,也不能有花朵、草、蕨类、海藻、珊瑚等。\"]},\"52\":{\"h\":\"市政厅\",\"t\":[\"一旦放置了市政厅,你殖民地的受保护区域将成为以你第一次放置市政厅方块的区块为中心的半径为4个区块的正方形(使用默认配置)。因此,请仔细规划你想要放置市政厅的位置。从该区块向每个方向延伸64个方块(4x4区块)将是你受保护的城镇区域,包括山脉、丘陵、湖泊、海洋、洞穴、世界生成的结构等,从基岩到天际限制。\",\"提示\",\"你在整个模组中最需要的工具是建筑工具(请查看我们的建筑工具页面)。从补给船/营地获取一个,或者制作另一个,以便你可以将所有小屋(包括市政厅)放置在完美的位置。\"]},\"53\":{\"h\":\"建筑工具的教学视频(过时)\",\"t\":[\"由于每个殖民地的受保护区域,你必须仔细勘察周围环境,确保你周围没有其他殖民地,以防止你放置市政厅或在该方向上限制你的殖民地区域(在多人游戏等情况下)。如果另一个殖民地离你当前位置太近,你将无法放置市政厅。\",\"关于下一个最近殖民地的位置信息存在于调试屏幕中(按下F3键时显示)。如果有一个殖民地靠近你当前的位置,它还会显示你需要远离的距离以放置市政厅。\",\"例如,在官方MineColonies服务器上,它将是默认的4块半径(4 + 4 + 1 {放置市政厅的中心区块} = 9块或144总共所需的方块)。因此,它会告诉你:下一个殖民地距离为XXX方块。 (放置殖民地所需的方块为272)。\",\"现在,在你已经探索、深思熟虑、规划并找到了开始殖民地的完美地点之后,让我们看一下让你的殖民地运行起来的步骤!\"]},\"54\":{\"h\":\"设置你的殖民地\"},\"55\":{\"h\":\"第1步\",\"t\":[\"获得足够的材料并制作你的供给船/营地,然后通过右键单击一个方块将其放置(如果你已经拥有建筑工具,请不要使用建筑工具)。放置的船/营地内将有一个箱子(或架子),其中包含一个市政厅方块和一个建筑工具。\",\"提示\",\"尽可能多地收集材料,以便在建筑工小屋开始建造时提供给他们。他们会根据你选择的建筑风格,为每个建筑或升级向你索要各种材料。大多数风格所需的材料主要是木材、石头和火把,用于较低级别。进一步的升级将需要更复杂的材料。\"]},\"56\":{\"h\":\"第2步\",\"t\":[\"在你仔细决定放置市政厅的位置后(记住,你首次放置市政厅方块的位置将是你殖民地受保护区域的中心。一旦放置,该区域将被确定,无法更改),使用你的建筑工具来放置市政厅。一旦你确认放置市政厅(绿色的对勾),市政厅方块将被放置。要正式启动殖民地,你需要右键单击该方块,然后选择“创建新殖民地”。一旦你完成了这个步骤,你的最初的四名居民将开始出现!\",\"你现在可以再次右键单击市政厅方块,查看你在殖民地中可以配置的其他内容,比如你的殖民地名称!\",\"你可以在这里查看GUI的完整布局。\"]},\"57\":{\"h\":\"第3步\",\"t\":[\"在建造任何其他建筑之前,你必须制作[建筑工小屋]方块并使用你的建筑工具将其放置。一旦你确认放置建筑师小屋(绿色的对勾),方块将被放置,并且将自动分配一个建筑师((或者你可以在市政厅GUI的设置选项卡中手动分配一个拥有最佳特质的建筑师,如果你在其中更改了此设置)。\",\"你现在正式拥有一个[建筑工小屋]!恭喜!\",\"通过右键单击[建筑工小屋]方块访问它时,你将看到一个具有不同选项的GUI:\",\"你将点击[建筑工小屋]上的“建造选项”,然后点击“建造建筑”。这将为你的新建筑工提供建造任务,以便他们首先建造自己的小屋。如果[建筑工小屋]没有建造,建筑工将无法建造任何其他建筑。\",\"建筑工将询问他们需要的材料。当他们头顶上方有红色图标时,右键单击他们以查看他们当前所需的材料。\",\"提示\",\"如果你发现建筑师没有完成建造任务并且你看不到他们正在请求任何材料,请前往建筑师小屋,召回建筑师,并等待一段时间以查看他们需要什么。此外,检查建筑师小屋 GUI 的第二页,查看哪些资源是红色的(这些是缺少的资源)。\"]},\"58\":{\"h\":\"第4步\",\"t\":[\"一旦建筑师完成了他们的小屋,你就可以开始建造任何其他你想要的建筑了!只需制作所需的方块,并使用你的建筑工具将其放置。一旦放置,进入新方块的GUI,点击“建造选项”,然后点击“建造建筑”。就是这么简单!\",\"提示\",\"考虑尽早将建筑师小屋升级到第2级,这样建筑师就可以升级其他建筑物。\"]},\"59\":{\"h\":\"最后说明\",\"t\":[\"你现在已经完成了开始和创建殖民地的最重要步骤!\",\"你现在可能的问题是,接下来要建造什么?市政厅、[矿场]、[伐木工]、农场、渔夫、卫兵塔、{% building_link courier %}、面包房、餐厅等可能是一个不错的开始。\",\"但是你只有4名居民!现在怎么办呢?嗯,在你的4名居民就业并努力工作之后,下一个步骤是计划并放置[住宅]。这将为你的殖民地每建造一个房屋的每个级别(在你的最初四名居民得到住宿后)提供额外的居民!那么,对于这么多居民,你该怎么办呢?你不能为每个小屋分配超过1名工人。因此,考虑建造更多的小屋,以获取更多的矿工、林业师、建筑师、农民、渔夫等!如果你难以跟踪每个人的需求,请考虑制作一个剪贴板和资源卷轴。尽管你只需要一个剪贴板,但你可以为每位建筑师制作一个资源卷轴,以跟踪他们的需求!\",\"提示\",\"将你的小屋升级到最高可能的级别(除了[酒馆],它的最高级别为5)以获得成就,并提高工人等级的升级速度。\"]},\"60\":{\"h\":\"原理图\",\"t\":[\"Schematics are files containing block and entity information of a certain area a player scanned with the Scan Tool in-game. You can use the scan tool and scan ANY building or structure you like in singleplayer or multiplayer and then have your {% worker_link builder %} build it for you (provided that you give them all the materials needed, of course).\"]},\"61\":{\"h\":\"Scanning a New Structure\",\"t\":[\"Once you have a structure or area you want to scan to have your Builder build, you need to determine the exact area that needs to be scanned.\",\"Take your Scan Tool and left-click the lowest left block of the area and then place a block (it can be a placeholder block in the top right corner and right-click on it.\",\"Then click in the air to see the entire structure.\",\"Once you have the full area set, you can press Escape and the white outline of the scan area will stay in place. Go around it to double-check that everything you want is in the scan area. If the area contains multiple eligible anchor blocks (hut blocks, tag anchors or decoration controllers), you need to shift+left click the correct anchor block (e.g. the barracks hut block in a barracks schematic). When you are ready, you can right-click in the air again to get the GUI to display where you can enter your scan name. Then press the green checkmark to save the scan.\",\"SPECIAL NOTE: Do not rename the file after scanning. It MUST be scanned with the correct name.\",\"{% version \\\"1.18.2\\\" before=true %} Scans are saved in ../minecolonies/scan/new/.... Once the scans are saved, they need to be moved to the ../structurize/schematics/(folder)/file if they are a custom hut. {% endversion %}\",\"{% version \\\"1.19\\\" after=true %} Scans are saved in */blueprints//scans. Once the scans are saved, they need to be placed in a style pack, preferably in the correct folder. See the style packs chapter for more details. {% endversion %}\"]},\"62\":{\"h\":\"Placing a Schematic.\",\"t\":[\"{% version \\\"1.18.2\\\" before=true %} Once you have scanned a structure, you can use the build tool to have your {% worker_link farmer %} build it for you. Once you right-click with the build tool, you will have to select \\\"My Schematics\\\" (in the left dropdown menu) and on the right dropdown menu you will see the scans that you have made. There is also a Rename button where you can change the name of the scan. You can also delete any of your saved scans. {% endversion %}\",\"{% version \\\"1.19\\\" after=true %} The scanned structure can be found in the build tool under the style pack with your own name. Click \\\"Switch Pack\\\" -> \\\"\\\" (icon looks like the scan tool) -> \\\"scans\\\". {% endversion %}\",\"{% version \\\"1.19\\\" after=true %}\"]},\"63\":{\"h\":\"Style packs\",\"t\":[\"Styles are now structured in so-called style packs. This is similar to a resource pack or data pack, in that it has a file with some metadata about the style (the name, a description, optionally a link to an image, etc.), and a folder structure with the actual files.\",\"Stylepacks live in the blueprints folder, within your Minecraft folder. This folder already contains one style pack: One with your player's name. This style pack will contain your scanned files, and can be used to test schematics. In order to make a new style, you need to make a new schematic pack.\"]},\"64\":{\"h\":\"The pack.json\",\"t\":[\"This json file contains metadata describing the style:\",\"Key Name\",\"Type\",\"Description\",\"\\\"version\\\"\",\"number\",\"Pack version, start at 1, increase it whenever you make a new version of the pack\",\"\\\"pack-format\\\"\",\"number\",\"Descriptor for the pack format, needs to be 1 at the moment\",\"\\\"desc\\\"\",\"string\",\"Description of the style. This will be visible in the build tool to explain what your style is about\",\"\\\"authors\\\"\",\"array of strings\",\"Names of the authors, in order to credit them. This is visible in the build tool\",\"\\\"mods\\\"\",\"array of strings\",\"Names of used mods (ids). The style is not visible if one of those mods is not installed, to prevent broken schematics\",\"\\\"name\\\"\",\"string\",\"The name of the style pack\",\"\\\"icon\\\"\",\"string\",\"The name of the file with an icon which is showed in the style packs selection screen\",\"You have to increase the version number whenever you release your pack for others to use, or whenever you install a new version onto a server. You don't need to increase it when testing changes purely in single-player.\"]},\"65\":{\"h\":\"The folder structure\",\"t\":[\"There are several folders, separating the buildings and decorations in categories. Each of the folders at the highest level can have a couple of icons, named icon.png and icon_disabled.png. Those are shown in the button bar right above the hot bar.\",\"You can download a template folder structure from github (template.zip), which contains the icons used for the official styles already. That github page also contains examples how different styles are structured. An overview with which buildings go into which folders can also be found here.\",\"With a few specific exceptions, you don't have to strictly follow the standard folder structure -- but it's recommended to stick to it when possible to make it easier for others to find specific buildings and decorations. But you're free to make extra folders to help group separate but related sets together, especially if you don't want them to appear directly as alternate buildings. E.g. if you have two styles of roads, one for early game and one for later game, you could put them in infrastructure/roads/simple/ and infrastructure/roads/nice/.\",\"Note: It's strongly recommended to have each folder only contain files or subfolders, but not both. While it is possible to mix them, the build tool doesn't display it as nicely. {% endversion %}\"]},\"66\":{\"h\":\"FAQ\",\"t\":[\"This is a FAQ section to answer common questions regarding schematics in MineColonies.\"]},\"67\":{\"h\":\"How do I install custom schematics I just downloaded?\",\"t\":[\"{% version \\\"1.18.2\\\" before=true %} Those custom schematics go in */structurize/schematics. Unzip the zip you downloaded, and put all subfolders in the schematics folder. That folder should contain folders like , decorations, walls, supplycamps etc. (depending on which style you installed) {% endversion %}\",\"{% version \\\"1.19\\\" after=true %} The style pack goes in the \\\"blueprints\\\" folder. Unzip the zip, and find the folder containing the pack.json (either the unzipped folder, or a folder directly in it, depending on how the zip was made). This folder needs to be placed in */blueprints directly, not any subfolder thereof. {% endversion %}\"]},\"68\":{\"h\":\"What and where is the scans folder?\",\"t\":[\"The scans folder is where the schematics are saved after performing a scan using the scan tool in MineColonies. {% version \\\"1.18.2\\\" before=true %} This is a client-side-only directory which is located in Minecraft's folder under: */structurize/scans/. Freshly scanned schematics can be found in */structurize/scans/new/ unless they have been renamed in-game. (If they aren't there, look in */minecolonies/scans/new.) This directory is shared between all your singleplayer games and multiplayer games. {% endversion %}\",\"{% version \\\"1.19\\\" after=true %} This is located in your own style pack in Minecraft's folder under: */blueprints//scans/. This folder is shared between all your singleylayer and multiplayer games. {% endversion %}\"]},\"69\":{\"h\":\"Where is the schematic folder?\",\"t\":[\"{% version \\\"1.18.2\\\" before=true %} Custom schematics need to be copied inside the schematic folder. For both singleplayer and multiplayer games, the folder is under */structurize/schematics/. {% endversion %}\",\"{% version \\\"1.19\\\" after=true %} Custom schematics need to be placed in a (custom) style pack. For more information about that, look there. {% endversion %}\"]},\"70\":{\"h\":\"I have a \\\"*/minecolonies/01e6a291-8a01-4763-bcae-f3a8797b1d52/cache/\\\" folder, what is that for?\",\"t\":[\"{% version \\\"1.18.2\\\" before=true %} When playing on a server, the server needs to send the schematics to the players so that the build tool's preview works. Those schematics are saved in Minecraft's directory under */structurize/{ServerUUID}/cache/, where ServerUUID is the unique identifier of the server. Those directories can be safely removed as they are automatically created by the server when needed. {% endversion %}\",\"{% version \\\"1.19.2\\\" after=true %} This was previously used to save schematics from a server and was automatically created as needed. However, this is no longer needed in 1.19.2 and later, so this folder can be removed safely. {% endversion %}\",\"{% version \\\"1.19.2\\\" after=true %}\"]},\"71\":{\"h\":\"I have a \\\" /blueprints/clients/ \\\" folder, what is that for?\",\"t\":[\"On a server, this folder holds a cached copy of the decorations and shapes used by your players -- possibly even including entire style packs that they've installed themselves (though note that for game balance purposes they won't be able to make functional buildings this way; these must be installed \\\"properly\\\" on the server to be usable).\",\"You can delete these folders at any time (though preferably when the player is not logged in); they will be re-created as needed. {% endversion %}\"]},\"72\":{\"h\":\"Can I just build my own buildings and then get the colonists to \\\"move in\\\"?\",\"t\":[\"No. Functional buildings must be constructed by the Builder. You have to either use one of the prefabs provided by existing style packs (either included in the mod or via various addons installed separately), or design your own custom huts as an explicitly separate step (typically in a special creative designing world), before getting the builder to place them in your real colony. MineColonies is more like an RTS than it is like classic Minecraft building.\"]},\"73\":{\"h\":\"How to create custom huts ?\",\"t\":[\"To create new schematics, there are some guidelines that you must follow: the scans MUST have the same footprint for each level of the hut; the scans must contain the hut's block, for example the Builder's Hut block for the {% building_link builder %}; the hut block need to be exactly at the same place and have the same rotation for each level.\",\"Ensure you are building your custom hut outside of any colony borders. When placing the hut block inside the custom hut, shift+right click to place it without activating it. Then you can scan and save the schematic.\",\"{% version \\\"1.18.2\\\" before=true %} The scans' filenames need to follow the naming convention: {StyleName}/{HutName}{HutLevel}.blueprint. For example, for the Builder's Huts with the MyOwn style, we would have:\",\"myown/builder1.blueprintmyown/builder2.blueprintmyown/builder3.blueprintmyown/builder4.blueprintmyown/builder5.blueprint\",\"Note: In the build tool, the extension is hidden. HutName can be any of the listed huts below. The maximum level is 5 (except for the Tavern; its max level is 3).\",\"Alternative designs can be placed under a style name like \\\"myownalternative\\\", or a subfolder like myown/alt/*. {% endversion %}\",\"Once ready, move the myown folder into the blueprints folder and start your game. You should be able to see it with the the build tool.\",\"Note: Remember that you need the appropriate hut in your inventory to be able to see the schematics in the build tool.\",\"{% version \\\"1.19\\\" after=true %} The naming for the buildings is not strict anymore. The only things that are important are that they are named consistently, that their names end with the hut level, and that you only use lowercase letters in the hut names (avoid capitals, spaces, or other punctuation). Alternate designs can just have a different name than the primary one. E.g. if you named the level 1 builder's hut \\\"builder1\\\", an alternative version could be called \\\"altbuilder1\\\" or \\\"builderalt1\\\" or even something completely different (\\\"constructionworker1\\\"). Don't use numbers anywhere in the name except right at the end for the level. E.g. \\\"alt1builder1\\\" won't work as expected.\",\"Once ready, you need to make a style pack out of them. The schematics are visible in the build tool without the hut block, but you can't view them in survival mode (their button is greyed out, with an error message that you need to have the hut block). {% endversion %}\"]},\"74\":{\"h\":\"[1.18] Custom Hut Filenames\",\"t\":[\"Here is a full list, up-to-date as of 14 October 2022, of the building names. Please note do not use capital letters in hut names.\",\"Level 1\",\"Level 2\",\"Level 3\",\"Level 4\",\"Level 5\",\"archery1\",\"archery2\",\"archery3\",\"archery4\",\"archery5\",\"alchemist1\",\"alchemist2\",\"alchemist3\",\"alchemist4\",\"alchemist5\",\"baker1\",\"baker2\",\"baker3\",\"baker4\",\"baker5\",\"barracks1\",\"barracks2\",\"barracks3\",\"barracks4\",\"barracks5\",\"barrackstower1\",\"barrackstower2\",\"barrackstower3\",\"barrackstower4\",\"barrackstower5\",\"beekeeper1\",\"beekeeper2\",\"beekeeper3\",\"beekeeper4\",\"beekeeper5\",\"blacksmith1\",\"blacksmith2\",\"blacksmith3\",\"blacksmith4\",\"blacksmith5\",\"builder1\",\"builder2\",\"builder3\",\"builder4\",\"builder5\",\"chickenherder1\",\"chickenherder2\",\"chickenherder3\",\"chickenherder4\",\"chickenherder5\",\"citizen1\",\"citizen2\",\"citizen3\",\"citizen4\",\"citizen5\",\"combatacademy1\",\"combatacademy2\",\"combatacademy3\",\"combatacademy4\",\"combatacademy5\",\"composter1\",\"composter2\",\"composter3\",\"composter4\",\"composter5\",\"concretemixer1\",\"concretemixer2\",\"concretemixer3\",\"concretemixer4\",\"concretemixer5\",\"cook1\",\"cook2\",\"cook3\",\"cook4\",\"cook5\",\"cowboy1\",\"cowboy2\",\"cowboy3\",\"cowboy4\",\"cowboy5\",\"crusher1\",\"crusher2\",\"crusher3\",\"crusher4\",\"crusher5\",\"deliveryman1\",\"deliveryman2\",\"deliveryman3\",\"deliveryman4\",\"deliveryman5\",\"dyer1\",\"dyer2\",\"dyer3\",\"dyer4\",\"dyer5\",\"enchanter1\",\"enchanter2\",\"enchanter3\",\"enchanter4\",\"enchanter5\",\"farmer1\",\"farmer2\",\"farmer3\",\"farmer4\",\"farmer5\",\"fisherman1\",\"fisherman2\",\"fisherman3\",\"fisherman4\",\"fisherman5\",\"fletcher1\",\"fletcher2\",\"fletcher3\",\"fletcher4\",\"fletcher5\",\"florist1\",\"florist2\",\"florist3\",\"florist4\",\"florist5\",\"glassblower1\",\"glassblower2\",\"glassblower3\",\"glassblower4\",\"glassblower5\",\"graveyard1\",\"graveyard2\",\"graveyard3\",\"graveyard4\",\"graveyard5\",\"guardtower1\",\"guardtower2\",\"guardtower3\",\"guardtower4\",\"guardtower5\",\"hospital1\",\"hospital2\",\"hospital3\",\"hospital4\",\"hospital5\",\"library1\",\"library2\",\"library3\",\"library4\",\"library5\",\"lumberjack1\",\"lumberjack2\",\"lumberjack3\",\"lumberjack4\",\"lumberjack5\",\"mechanic1\",\"mechanic2\",\"mechanic3\",\"mechanic4\",\"mechanic5\",\"miner1\",\"miner2\",\"miner3\",\"miner4\",\"miner5\",\"mysticalsite1\",\"mysticalsite2\",\"mysticalsite3\",\"mysticalsite4\",\"mysticalsite5\",\"netherworker1\",\"netherworker2\",\"netherworker3\",\"netherworker4\",\"netherworker5\",\"plantation1\",\"plantation2\",\"plantation3\",\"plantation4\",\"plantation5\",\"rabbithutch1\",\"rabbithutch2\",\"rabbithutch3\",\"rabbithutch4\",\"rabbithutch5\",\"sawmill1\",\"sawmill2\",\"sawmill3\",\"sawmill4\",\"sawmill5\",\"school1\",\"school2\",\"school3\",\"school4\",\"school5\",\"shepherd1\",\"shepherd2\",\"shepherd3\",\"shepherd4\",\"shepherd5\",\"sifter1\",\"sifter2\",\"sifter3\",\"sifter4\",\"sifter5\",\"smeltery1\",\"smeltery2\",\"smeltery3\",\"smeltery4\",\"smeltery5\",\"stonemason1\",\"stonemason2\",\"stonemason3\",\"stonemason4\",\"stonemason5\",\"stonesmeltery1\",\"stonesmeltery2\",\"stonesmeltery3\",\"stonesmeltery4\",\"stonesmeltery5\",\"swineherder1\",\"swineherder2\",\"swineherder3\",\"swineherder4\",\"swineherder5\",\"tavern1\",\"tavern2\",\"tavern3\",\"N/A\",\"N/A\",\"townhall1\",\"townhall2\",\"townhall3\",\"townhall4\",\"townhall5\",\"university1\",\"university2\",\"university3\",\"university4\",\"university5\",\"warehouse1\",\"warehouse2\",\"warehouse3\",\"warehouse4\",\"warehouse5\"]},\"75\":{\"h\":\"Custom Supply Ships and Camps\",\"t\":[\"The process for custom supply ships and camps is slightly different:\",\"{% version \\\"1.18.2\\\" before=true %}\",\"Camp or Ship\",\"File Name and Path\",\"Camp\",\"structurize/schematics/supplycamp/myownsupplycamp\",\"Ship\",\"structurize/schematics/supplyship/myownsupplyship\",\"So, for example, the path would be structurize/schematics/wildwest/builder1 for the Builder's Hut level 1 and structurize/schematics/supplycamp/wildwestsupplycamp for the supply camp. {% endversion %}\",\"{% version \\\"1.19\\\" after=true %}\",\"Camp or Ship\",\"File Name and Path\",\"Camp\",\"blueprints//decorations/supplies/supplycamp\",\"Ship\",\"blueprints//decorations/supplies/supplyship\",\"Nether Ship\",\"blueprints//decorations/supplies/nethership\",\"So, for example, the path would be blueprints/wildwest/fundamentals/builder1 for the Builder's Hut level 1 and blueprints/wildwest/decorations/supplies/supplycamp for the supply camp. {% endversion %}\",\"You should always apply a groundlevel tag when making a supply camp/ship. The rules for guessing where the ground level is without the tag change depending whether they're placed by the build tool or the supply item, for legacy reasons.\"]},\"76\":{\"h\":\"Hut Requirements\",\"t\":[\"Building\",\"Requirements\",\"Suggested\",\"{% building_link archery %}\",\"1 archery dummy (a hay bale with a button on it); 1 bed per level\",\"at least 1 standing position per level (a glowstone block, or any block tagged with work)\",\"{% building_link alchemist %}\",\"1 brewing stand per level; 2 soul sand per level starting at level 2 (with 4 soul sand); leaves next to logs, i.e. \\\"trees\\\"\",\"{% building_link bakery %}\",\"1 furnace\",\"{% building_link barracks %}\",\"1 Barracks Tower per level (up to level 4)\",\"{% building_link barrackstower %}\",\"1 bed per level\",\"{% building_link builder %}\",\"1 rack per level\",\"{% building_link combatacademy %}\",\"1 combat dummy per level (a pumpkin on top of a bale of hay); 1 bed per level\",\"{% building_link composter %}\",\"1 compost barrel per level\",\"{% building_link concretemixer %}\",\"3 blocks of flowing water with solid blocks below and air blocks above\",\"{% building_link dyer %}\",\"1 furnace\",\"{% building_link fisher %}\",\"Hut block placed on a block at water level\",\"At least 6x5x1 unobstructed body of water if integrating fishing location in the schematic\",\"{% building_link flowershop %}\",\"4 compost blocks per level\",\"{% building_link glassblower %}\",\"1 furnace per level\",\"{% building_link graveyard %}\",\"Named Graves, with the amount increasing per level\",\"14 named graves at level 1, 18 named graves at level 2, 27 named graves at level 3, 36 named graves at level 4, 50 named graves at level 5\",\"{% building_link guardtower %}\",\"1 bed for aesthetics\",\"{% building_link hospital %}\",\"1 bed per level\",\"{% building_link house %}\",\"1 bed per level\",\"{% building_link library %}\",\"Bookshelves\",\"{% building_link mine %}\",\"A few starting ladders where the shaft's ladders will go with the tags [cobble] and [ladder]\",\"{% building_link nethermine %}\",\"A nether portal, and an enclosed 1x1x2 room\",\"{% building_link plantation %}\",\"12 per level, 4 for each of sugar cane, cactus and bamboo\",\"{% building_link restaurant %}\",\"1 furnace per level\",\"{% building_link school %}\",\"2 carpets per level\",\"4 carpets per level\",\"{% building_link smeltery %}\",\"1 furnace per level\",\"{% building_link stonesmeltery %}\",\"1 furnace per level\",\"{% building_link tavern %}\",\"4 beds and a dining room\",\"Horizontal barrels and/or vertical barrels\",\"{% building_link university %}\",\"Bookshelves\",\"{% building_link warehouse %}\",\"Racks (more each level)\",\"Some buildings may also require tags to be set on certain blocks using the tag tool.\"]},\"77\":{\"h\":\"Level Requirements for Overworld Styles\",\"t\":[\"Level\",\"Requirements\",\"Level 1\",\"Very Easy - Wooden\",\"Level 2\",\"Easy - Iron\",\"Level 3\",\"Medium - Nether\",\"Level 4\",\"Difficult - Ocean\",\"Level 5\",\"Very Difficult - End\"]},\"78\":{\"h\":\"Level Requirements for Nether Styles\",\"t\":[\"Level\",\"Requirements\",\"Level 1\",\"Very Easy - Nether\",\"Level 2\",\"Easy - Rarer Nether\",\"Level 3\",\"Medium - Overworld\",\"Level 4\",\"Difficult - Ocean\",\"Level 5\",\"Very Difficult - End\",\"{% version \\\"1.19.2\\\" after=true %}\"]},\"79\":{\"h\":\"Plantation Fields\",\"t\":[\"In 1.19.2 and beyond, the plantation has been changed to include fields, just like the {% worker_link farmer %}. However, unlike the {% worker_link farmer %}, these fields can be completely free-form and created by the style designers. Each field has certain requirements for the {% worker_link planter %} to do their work successfully.\",\"Each plant has 2 separate tags: a field tag and a work tag. The field tags are given to the plantation field block to define what plants this field handles. The work tag is given based on the implementation of the field.\",\"A field can have as many field tags as you want, but not 2 of the same.\",\"Plant\",\"Field tag\",\"Work tag\",\"Maximum work tags\",\"Sugar cane\",\"sugar_field\",\"sugar\",\"20\",\"Cactus\",\"cactus_field\",\"cactus\",\"20\",\"Bamboo\",\"bamboo_field\",\"bamboo\",\"20\",\"Cocoa\",\"cocoa_field\",\"cocoa\",\"5 (totalling 20 positions; details below)\",\"Vine\",\"vine_field\",\"vine\",\"20\",\"Kelp\",\"kelp_field\",\"kelp\",\"20\",\"Seagrass\",\"seagrass_field\",\"seagrass\",\"121 (11 x 11 area)\",\"Sea Pickles\",\"seapickle_field\",\"seapickle\",\"10\",\"Glow Berries\",\"glowb_field\",\"glowb_vine\",\"20\",\"Weeping Vines\",\"weepv_field\",\"weepv_vine\",\"20\",\"Twisting Vines\",\"twistv_field\",\"twistv_vine\",\"20\",\"Crimson Plants\",\"crimsonp_field\",\"crimsonp_ground\",\"121 (11 x 11 area)\",\"Warped Plants\",\"warpedp_field\",\"warpedp_ground\",\"121 (11 x 11 area)\",\"The {% worker_link planter %} will always attempt to walk to any adjacent air block around the planting position. If none of the adjacent positions are air, the planter will attempt to walk to the block itself. This prevents the {% worker_link planter %} from standing on the block itself whilst, for example, placing a block down like cactus, after which the {% worker_link planter %} would be standing inside of the plant.Note: Make sure that the {% worker_link planter %} can always get within about 4 blocks of the desired position. If not, they will teleport around to reach the position, which may not always work.\",\"X\",\"X\",\"P\",\"X\",\"X\",\"X = walking position\",\"P = planting position\",\"Note: Kelp is an exception to this behaviour. To prevent planters from diving into the water, the planter will walk to the first air block above the work tagged block and look up 26 blocks from the work tagged block. If this is not possible, they will not be able to harvest this plant, so ensure there is air above the water above the work tagged block.\",\"The red X is the position where the planter will walk to in the example image.\",\"The blue X is the position where the work tag of the block is.\",\"For downwards-growing plants, the planter will attempt to stand above the work tagged block and harvest below them. Make sure the planter can reach the top of the stem.\"]},\"80\":{\"h\":\"Vertically Growing Plants (Upwards and Downwards)\",\"t\":[\"A \\\"vertically growing plant\\\" is a plant that grows in a single line, either upwards or downwards; for example, Sugar Cane is a vertically growing plant that grows upwards. These plants always break fully when their root blocks are broken. The planter will break these at the second block from the root.\",\"Each of these plants have a minimum and sometimes a maximum growth height. The planter can only harvest them when they reach the minimum. If plants have a maximum height, the planter will have an increasingly higher chance to harvest the plant the taller it gets. Plants are only required to grow to the minimum height within the bounds of the schematic.\",\"Plant\",\"Minimum height\",\"Maximum height\",\"Sugar cane\",\"3\",\"N/A\",\"Cactus\",\"3\",\"N/A\",\"Bamboo\",\"6\",\"16\",\"Kelp\",\"2\",\"25\",\"Glowberries\",\"3\",\"N/A\",\"Weeping vines\",\"2\",\"25\",\"Twisting vines\",\"2\",\"25\"]},\"81\":{\"h\":\"Treeside Plants\",\"t\":[\"Treeside plants grow directly on the sides of trees. For these plants, you only need to tag the tree's stem; the working positions will automatically be set to every horizontally adjacent block of the tagged stem. Currently this is only used for Cocoa beans.\",\"Note that this means that the amount of tags you can actually place is the amount of working positions divided by 4!\"]},\"82\":{\"h\":\"Bonemealed Fields\",\"t\":[\"Bonemealed fields will tell the planter to use bonemeal somewhere on the ground to grow plants as if the player had used bonemeal.\",\"The amount of planting positions on these fields are usually unlimited because bonemealing the ground has a set area of effect. However, it is suggested not to make the fields too big; an area around 7x7 is lightly suggested.\",\"Every bonemealed plant works slightly differently.\",\"Plant\",\"Work tag location\",\"Seagrass\",\"The block directly below the water should tagged; the planter will bonemeal the tagged block itself. Red Xs are where the planter will attempt to walk. Blue Xs are the blocks that are tagged with the work tag.\",\"Sea pickles\",\"The block directly below the water should tagged. The planter will initially place the pickles, then bonemeal the pickles to let them grow. Red Xs are where the planter will attempt to walk. Blue Xs are the blocks that are tagged with the work tag.\",\"Crimson plants\",\"Tag all the nylium ground blocks where the plants are supposed to grow.\",\"Warped plants\",\"Tag all the nylium ground blocks where the plants are supposed to grow.\"]},\"83\":{\"h\":\"Percentage-based Harvesting\",\"t\":[\"Percentage based harvesting fields will attempt to place a minimum percentage of plants down on given spots. These plants — such as vines — should then naturally spread to their surroundings without the player's help. The planter has no involvement in this process.\",\"Plant\",\"Tag location\",\"Vine\",\"Tag all the positions where the vines themselves can spread to, NOT the blocks where the vines are attached to.\",\"{% endversion %}\"]},\"84\":{\"h\":\"Tips on Building\"},\"85\":{\"h\":\"Do\",\"t\":[\"Make all levels of a hut have the same footprint for x, y, and z\",\"Place the hut block in the same location with the same rotation\",\"Make sure all racks and furnaces are in the same location through all levels (to prevent the contents spilling out when they're getting moved)\",\"Use placeholders where you want to keep any existing block (including from level to level), like the Barracks Towers in the Barracks schematic\",\"Use solid placeholders at or below ground level\",\"Place a groundlevel tag at ground level if your hut isn't sitting directly on the ground.\",\"Use only vanilla blocks or Structurize blocks (for official styles)\",\"Use Books and Quills instead of blank books, or written books on a lectern. (Keep a copy of the original book and quill somewhere, if it turns out you made a mistake!)\"]},\"86\":{\"h\":\"Don't\",\"t\":[\"Use unobtainable items in builds (no command blocks, petrified wood, infested blocks, or mob heads (including player heads))\",\"Change someone else's style (officially) unless specifically asked to do so\",\"Rename schematics after scanning\"]},\"87\":{\"h\":\"Additional Information\"},\"88\":{\"h\":\"How to override some built-in schematics?\",\"t\":[\"{% version \\\"1.18.2\\\" before=true %} Simply create a schematic file with the same style/name. For instance, to override the {% building_link builder %} wooden level 1, create a schematic file name called wooden/builder1.blueprint. {% endversion %}\",\"{% version \\\"1.19\\\" after=true %} Unfortunately, this is not possible, unless you override the entire style (make a style pack with the same name as an existing style pack, in that case). {% endversion %}\"]},\"89\":{\"h\":\"How to use custom huts?\",\"t\":[\"{% version \\\"1.18.2\\\" before=true %} The custom huts need to be copied in the schematics folder. {% endversion %}\",\"{% version \\\"1.19\\\" after=true %} The custom huts need to be copied into a style pack. {% endversion %}\",\"Once copied, you can start your singleplayer or multiplayer game as usual. You should see them in the build tool (if you have the hut block in your inventory).\"]},\"90\":{\"h\":\"How to allow my players to use their own huts' schematics on my server?\",\"t\":[\"You will have to copy them yourself in the blueprints folder on the server and restart it.\"]},\"91\":{\"h\":\"How to allow my players to use their scanned decoration schematics on my server?\",\"t\":[\"Edit the Structurize configuration file at minecraft/config/structurize-common.toml and set allowPlayerSchematics to true. This allows the player to use their own decorations. It is not possible for the player to use their own huts' schematics. You can also limit the number of players' schematics at any given time by editing maxCachedSchematics (default is 100). When the limit is reached, the server will start deleting unused schematics.\"]},\"92\":{\"h\":\"How to disable built-in schematics completely?\",\"t\":[\"Edit the Structurize configuration file at minecraft/config/structurize-common.toml and set ignoreSchematicsFromJar to true. Be aware: things will break if some huts' schematics are missing.\"]},\"93\":{\"h\":\"How to create upgradable decoration schematics?\",\"t\":[\"{% version \\\"1.18.2\\\" before=true %} Add the deco controller somewhere in the schematic with the name of the schematic, where you'll put it in the file directory, and its level. Make sure to actually put the decoration in that file path, but only after scanning - don't include the path in the scan name. {% endversion %}\",\"{% version \\\"1.19\\\" after=true %} Put the deco controller somewhere in the schematic, and make sure the name of the schematic ends with a number while scanning. The decoration controller will automatically find the decoration in the same folder with the next number. {% endversion %}\"]},\"94\":{\"h\":\"How to use custom mineshafts in style packs?\",\"t\":[\"The size must be 9 x 4 x 9 blocks. They must be named and oriented exactly the same (i.e. do not rotate at all) as in the default style pack (careful: the names aren't entirely consistent with the layout, so make careful note which is which!) Use an existing style pack as a template along with the scan tool to create the blueprints.\",\"{% version \\\"1.18.2\\\" before=true %} The custom mineshafts need to be at schematics/yourstyle/miner/*. {% endversion %}\",\"{% version \\\"1.19\\\" after=true %} The custom mineshafts need to be at `blueprints/yourstyle/infrastructure/mineshafts/*.\",\"It's recommended that you use the tag tool and Tag Anchor to make the mineshafts invisible. Take care that the anchor is in the same position as in the original mineshafts -- the very center bottom block. {% endversion %}\"]},\"95\":{\"h\":\"How to make custom quarries in style packs?\",\"t\":[\"The {% building_link quarry %} is split into a \\\"top part\\\" and a \\\"bottom part\\\". Both parts only have one level each.\",\"The top part is constructed by the Builder and is the part outside of the quarry pit -- decorative walls, fences, cranes, racks, etc. This contains the actual quarry hut block itself, which should pretty much always be on the second y level up from the bottom (i.e. the bottom layer is the ground level, then the hut is on the next layer up), although with some caveats this is not absolutely required.\",\"The bottom part is constructed by the Quarrier and is the actual quarry pit itself, consisting mostly of placeholders, air blocks, and decorative elements. While you can also set the anchor manually, it's recommended to use a Tag Anchor. The anchor should normally be at the very top layer, although with some caveats it can be elsewhere.\",\"{% version \\\"1.18.2\\\" before=true %} The top parts must be named simplequarry1 and mediumquarry1, and the corresponding bottom parts are simplequarryshaft1 and mediumquarryshaft1. {% endversion %}\",\"{% version \\\"1.19\\\" after=true %} The top part can be in any folder and name that you like (and you can have more than one alternate), but the canonical names are infrastructure/mineshafts/simplequarry1 and infrastructure/mineshafts/mediumquarry1. (For reasons, it's currently best to avoid using different names.)\",\"The bottom part can only be infrastructure/mineshafts/simplequarryshaft1 and infrastructure/mineshafts/mediumquarryshaft1, regardless of what or where the top part was. As such, you can only make one of each per style pack. {% endversion %}\",\"Importantly: when built, the two schematics are aligned such that the anchor of the bottom part is exactly two blocks below the anchor of the top part. You should carefully align them when designing.\",\"It is permitted for the quarry to be a slightly different size from the default versions, but it's strongly encouraged (for game balance reasons) to make each one approximately the same size as the originals, and in particular to have the same amount of air blocks in the bottom part, since this affects the final yield of cobble or other stone.\"]},\"96\":{\"h\":\"How to create parent/child buildings or decorations?\",\"t\":[\"The Barracks and Barracks Tower always have a parent/child relationship (i.e. the towers are embedded within the barracks, not directly built separately with the build tool). It's also possible to do the same with other buildings -- either putting one or more buildings into a containing decoration (e.g. a \\\"district\\\" of related buildings) or even embedding buildings within other buildings.\",\"Some popular combinations are to embed couriers within the warehouse, and fields within the farmer. Others combinations are possible, depending on your goals for the style -- but don't go too overboard! Some players like combination buildings since they fit nicely together, but others don't like them since they can take away flexibility and creativity when building a colony.\",\"When designing parent/child schematics, the key is the light placeholder. The parent schematic needs to contain the child hut block in the correct position and rotation, along with light placeholders wherever there should be a block from the child, and the parent's own blocks. Similarly, the child schematic needs its own hut block and other blocks, and light placeholders wherever there should be a block from the parent. It can be helpful to make a temporary scan of either the parent or child and overlay them over the other to help line things up, or to build both together and then duplicate it and split apart the designs.\",\"While strictly speaking it's only mandatory to include the child hut at the level that it's introduced into the parent and you could put only a placeholder at higher levels, it's strongly recommended to always include the child hut in every higher level of the parent. This works better when someone moves or repairs the parent, or skips levels and pastes it directly at a higher level.\",\"Also remember that the child building can't be upgraded to a higher level than the parent building. This limit doesn't apply if the parent is a non-upgradeable decoration.\",\"Be careful of \\\"research loops\\\" -- if the player needs to build a child before they can unlock a parent, that's a problem (unless you also have an alternate standalone of the child).\",\"Since the parent will contain multiple hut blocks, you will always need to explicitly specify the anchor block (the main parent hut block if a building, or a deco controller or tag anchor if it's a decoration) when you scan, otherwise you'll get an error that the anchor was ambiguous and it will not work correctly.\",\"{% version \\\"1.18.2\\\" before=true %} Since you can only have one version of each building in each folder, combinations should be used very sparingly. The parent and child need to be in the same folder.\",\"To place the child hut in the parent, you can simply shift-click it, just like when placing it in the child itself. Be sure to get the location and rotation correct -- the child hut will be built with the matching orientation relative to that. {% endversion %}\",\"{% version \\\"1.19\\\" after=true %} The parent and child need to be in the same folder. This doesn't mean that you can't combine buildings that are normally in different folders -- just that the version that's intended to be the child must be in the same folder as the parent. You may still have another version of the child (to be used by itself, not as a child) in the original folder if you like.\",\"It's not supported to have a child contain additional children of its own -- you're limited to just the two layers (though the parent can contain multiple children of either the same or different types).\",\"Regardless of which method you use to build, be sure to get the location and rotation of the child hut correct when placing it in the parent -- the building will be built with the matching orientation relative to that.\",\"If you've used the default folder and filenames for your child, then you can simply shift-click the child hut to place it into the parent, similar to older versions. However this is not the most recommended way to do things any more.\",\"The preferred method is to make another level of your child containing only the hut block, giving it the same folder and name as your actual child, but level 0 (e.g. craftsmanship/storage/mycourier0). You can make it the same size as your real child (surrounded by placeholders) if you wish, but scanning a 1x1x1 is fine too. After scanning, you need to move this to its final location in your actual style pack, and then paste it from there (not from your scans!) into your parent. It doesn't matter whether you use schematic or constructed paste. Paste the same level 0 into all levels of the parent. After it's pasted, you can delete the level 0 blueprint -- it should not be included in your final released style pack. (Note that when you go to paste it, the build tool labels it as \\\"level 1\\\" of 6. You can confirm you have the right one by checking the tooltip name.)\",\"Another option is called \\\"auto-levelling\\\". This is where instead of making and pasting a level 0 into each level of the parent, you instead paste the actual matching child level (i.e. level 1 child in the level 1 parent, level 2 child in the level 2 parent, etc). Again it doesn't matter whether you use schematic or constructed paste, but either way you'll probably have to fix up some of the overlapping blocks afterward. You do still need to include the child hut's blueprints in your released style pack, and you do still have to paste it from your actual style pack and not your scans folder.\",\"With auto-levelling, the builder will upgrade the child at the same time as upgrading the parent, instead of the player needing to explicitly build or upgrade one after the other. While this may sound simpler, there are some downsides: the biggest is that won't work well for child buildings that have required functional blocks (such as beds, furnaces, racks, etc), although purely decorative ones are fine. You also should not use this where the child is locked behind research, unless you can be absolutely certain that it's already unlocked (e.g. if the parent is unlocked after the child -- though still be careful of loops). The \\\"level 0\\\" method doesn't have these issues.\",\"Since you can have multiple alternates of buildings (in the same or separate folders), it's possible to make a particular building type have both a standalone version as well as a version embedded as a child. It's strongly recommended to use the tag tool to mark any blueprint intended for use only as a child (in the child schematic itself) as invisible so that it doesn't show up for building standalone -- especially as child versions are often simpler or cheaper and may be missing walls or other things intended to be provided by the parent, so won't look good on their own or might break game balance. It's also possible to have each child of a parent be its own unique blueprint -- but that requires even more scans and more care when pasting to use the right alternate. {% endversion %}\"]},\"97\":{\"h\":\"What if I have another question?\",\"t\":[\"There's a channel in the Discord server specifically for asking questions about designing your own schematics.\"]},\"98\":{\"h\":\"世界生成\",\"t\":[\"As you explore the world, you'll notice that there are some colonies abandoned by the former residents. Moving into one of these abandoned colonies is a way to quickstart your own colony!\",\"(Note: This feature is only available in 1.18+. Vanilla villages will still spawn as normal. If you wish to turn off this feature, you can do so in the configuration options for your world.)\"]},\"99\":{\"h\":\"Getting Started\",\"t\":[\"To find a world generation colony... just start exploring! They spawn randomly at a low chance in the world in one of several styles. Currently, only a subset of official style colonies can spawn naturally in the world, but more will be added in the future!\",\"Only a subset of possible buildings can generate in a world generation colony, and most will be level 1, though some buildings might be level 2. Sometimes, multiple of the same type of building can spawn, too!\",\"First, find the town hall and click \\\"Create new colony.\\\" This is equivalent to you placing a town hall down from the supply camp.\",\"From there, go to each hut block in the found (and now, founded) colony and click \\\"Reactivate\\\" to reclaim the building and add it to the town hall.\",\"Additionally, you can repair each building to make your new colony look like new.\",\"That's it! You've claimed a colony in the world, and now you can start building your new colony!\",\"First, you need to design and build your own schematic. Once you've built your style, you can add jigsaw block connectors at appropriate places and export the structure as a .nbt file. That way, Minecraft knows how to build an abandoned colony in your style!\"]},\"100\":{\"h\":\"Tagging and Prepping\",\"t\":[\"The most important thing to ensure that colonies register as abandoned — and can be restored — is to use the tag tool to tag the hut block appropriately.\",\" Tag the hut block with its style name (e.g., \\\"medieval_oak\\\" for the Medieval Oak style). The name must match the style's folder name in the MineColonies.jar file or resource pack.\",\" Add the tag \\\"abandoned\\\" to the hut block. If you right-click the building with an empty hand, it should now say that the building is abandoned and tell you to seek out the town hall.\"]},\"101\":{\"h\":\"Adding Jigsaw Blocks\",\"t\":[\"Place jigsaw blocks where a structure would naturally connect to a road or — if creating a road — where it would connect to a structure. Make sure the block is placed at the edge of the structure facing toward a connecting block.\",\"When editing a jigsaw block, there are a few different properties that can be set.\",\" name: the name of this jigsaw block. The name can be unique or generic. For the styles in MineColonies, all buildings have the name \\\"minecolonies:building_entrance\\\" and all roads \\\"minecolonies:street\\\". Some styles will also use \\\"minecolonies:field\\\"; this one is used exclusively to connect a field to a farmer building when the farmer building does not a field as part of the level 1 structure.\",\" target: When a structure is placed, the target of its jigsaw block determines the next jigsaw block that is added. The target of a placed structure must match the name of the next one to be placed.\",\" pool: To restrict the list of applicable structures, use the target pool. MineColonies uses three dedicated pools for each colony style: \\\"/roads\\\", \\\"/buildings\\\", and \\\"/terminators\\\".\",\"Edit the jigsaw block to set the following properties. (Note that the following is an example using the Medieval Oak style. Replace \\\"medieval_oak\\\" with your style's name.)\",\" Buildings \",\" name: \\\"minecolonies:building_entrance\\\"\",\" pool: \\\"minecolonies:medieval_oak/roads\\\"\",\" target: \\\"minecolonies:building_entrance\\\"\",\" turns into: \\\"minecraft:structure_void\\\"\",\" Roads (Connecting to buildings) \",\" name: \\\"minecolonies:street\\\"\",\" pool: \\\"minecolonies:medieval_oak/buildings\\\"\",\" target: \\\"minecolonies:building_entrance\\\"\",\" turns into: \\\"minecraft:structure_void\\\"\",\" Roads (Connecting to roads) \",\" name: \\\"minecolonies:street\\\"\",\" pool: \\\"minecolonies:medieval_oak/roads\\\"\",\" target: \\\"minecolonies:street\\\"\",\" turns into: \\\"minecraft:structure_void\\\"\",\" Terminators (to end roads more decoratively and as fallback structures for roads and buildings) \",\" name: \\\"minecolonies:street\\\"\",\" turns into: \\\"minecraft:structure_void\\\"\"]},\"102\":{\"h\":\"Processors\",\"t\":[\"Processors are used to alter a structure's blocks during placement. Specifically for MineColonies, we use different processors depending on the structure that is placed.\",\"There are three processor files for each style.\"]},\"103\":{\"h\":\"street.json\",\"t\":[\"Road processors are defined in \\\"/street.json\\\". The main purpose of this processor is to replace porous materials like dirt, dirt paths, and gravel with wooden planks when the road is in water. This will also add minor decay in the form of grass blocks instead of dirt paths.\"]},\"104\":{\"h\":\"decoration.json\",\"t\":[\"Park processors are defined in \\\"/decoration.json\\\". This processor adds decay to the parks by turning some stone brick into weathered variants like mossy or cracked stone bricks or replaces some dirt blocks with coarse dirt.\"]},\"105\":{\"h\":\"placeholder_replacement.json\",\"t\":[\"Building processors are defined in \\\"/placeholder_replacement.json\\\". Similar to how zombie villages decay, this processor removes various building blocks or replaces them with cobweb. Which blocks and how often depends on the given style. In addition to decay, the placeholder replacement is also responsible for converting the Structurize placeholder blocks into suitable in-game similar to how a builder treats these blocks when constructing a building.\",\" \\\"structurize:blocksolidsubstitution\\\" turns into dirt, which may be converted to another block by a processor defined later in the same file.\",\" \\\"structurize:blocksubstitution\\\" is ignored, meaning that existing blocks in the world will remain in place when the structure generates.\"]},\"106\":{\"h\":\"Decay Example\",\"t\":[\"The rule below replaces oak logs with cobwebs at a 4% probability. That probability may be fine for one style but be too high or too low for another style.\",\"{ \\\"output_state\\\": { \\\"Name\\\": \\\"minecraft:cobweb\\\" }, \\\"input_predicate\\\": { \\\"block\\\": \\\"minecraft:oak_log\\\", \\\"probability\\\": 0.04, \\\"predicate_type\\\": \\\"minecraft:random_block_match\\\" }, \\\"location_predicate\\\": { \\\"predicate_type\\\": \\\"minecraft:always_true\\\" } },\"]}},\"dirtCount\":0,\"index\":[[\"世界生成\",{\"0\":{\"98\":1}}],[\"世界生成的结构等\",{\"1\":{\"9\":1,\"52\":1}}],[\"04\",{\"1\":{\"106\":1}}],[\"0\",{\"1\":{\"96\":5,\"106\":1}}],[\"01e6a291\",{\"0\":{\"70\":1}}],[\"`blueprints\",{\"1\":{\"94\":1}}],[\"quickstart\",{\"1\":{\"98\":1}}],[\"quill\",{\"1\":{\"85\":1}}],[\"quills\",{\"1\":{\"85\":1}}],[\"question\",{\"0\":{\"97\":1}}],[\"questions\",{\"1\":{\"66\":1,\"97\":1}}],[\"quarrier\",{\"1\":{\"95\":1}}],[\"quarries\",{\"0\":{\"95\":1}}],[\"quarry\",{\"1\":{\"95\":5}}],[\"7x7\",{\"1\":{\"82\":1}}],[\"8a01\",{\"0\":{\"70\":1}}],[\"\",{\"1\":{\"75\":3}}],[\"\",{\"1\":{\"67\":1,\"101\":3,\"103\":1,\"104\":1,\"105\":1}}],[\"\",{\"1\":{\"61\":1,\"62\":1,\"68\":1}}],[\"原理图\",{\"0\":{\"60\":1}}],[\"除了\",{\"1\":{\"59\":1}}],[\"尽管你只需要一个剪贴板\",{\"1\":{\"59\":1}}],[\"尽可能多地收集材料\",{\"1\":{\"55\":1}}],[\"农民\",{\"1\":{\"59\":1}}],[\"农场\",{\"1\":{\"59\":1}}],[\"考虑建造更多的小屋\",{\"1\":{\"59\":1}}],[\"考虑尽早将建筑师小屋升级到第2级\",{\"1\":{\"58\":1}}],[\"对于这么多居民\",{\"1\":{\"59\":1}}],[\"那么\",{\"1\":{\"59\":1}}],[\"提供额外的居民\",{\"1\":{\"59\":1}}],[\"提示\",{\"1\":{\"1\":1,\"23\":1,\"24\":1,\"51\":1,\"52\":1,\"55\":1,\"57\":1,\"58\":1,\"59\":1}}],[\"住宅\",{\"1\":{\"59\":1}}],[\"嗯\",{\"1\":{\"59\":1}}],[\"餐厅等可能是一个不错的开始\",{\"1\":{\"59\":1}}],[\"面包房\",{\"1\":{\"59\":1}}],[\"卫兵塔\",{\"1\":{\"59\":1}}],[\"伐木工\",{\"1\":{\"59\":1}}],[\"矿场\",{\"1\":{\"59\":1}}],[\"矿工等处取回\",{\"1\":{\"48\":1}}],[\"矿工\",{\"0\":{\"47\":1},\"1\":{\"0\":1}}],[\"接下来要建造什么\",{\"1\":{\"59\":1}}],[\"进入新方块的gui\",{\"1\":{\"58\":1}}],[\"进一步的升级将需要更复杂的材料\",{\"1\":{\"55\":1}}],[\"只需制作所需的方块\",{\"1\":{\"58\":1}}],[\"的第二页\",{\"1\":{\"57\":1}}],[\"检查建筑师小屋\",{\"1\":{\"57\":1}}],[\"此外\",{\"1\":{\"57\":1}}],[\"召回建筑师\",{\"1\":{\"57\":1}}],[\"右键单击他们以查看他们当前所需的材料\",{\"1\":{\"57\":1}}],[\"右键单击您希望放置市政厅的区域\",{\"1\":{\"7\":1}}],[\"没有建造\",{\"1\":{\"57\":1}}],[\"上的\",{\"1\":{\"57\":1}}],[\"通过右键单击\",{\"1\":{\"57\":1}}],[\"通过直接右键单击水域\",{\"1\":{\"51\":1}}],[\"恭喜\",{\"1\":{\"57\":1}}],[\"恭喜你\",{\"1\":{\"50\":1}}],[\"方块访问它时\",{\"1\":{\"57\":1}}],[\"方块将被放置\",{\"1\":{\"57\":1}}],[\"方块并使用你的建筑工具将其放置\",{\"1\":{\"57\":1}}],[\"比如你的殖民地名称\",{\"1\":{\"56\":1}}],[\"查看哪些资源是红色的\",{\"1\":{\"57\":1}}],[\"查看你在殖民地中可以配置的其他内容\",{\"1\":{\"56\":1}}],[\"查看游戏中的模拟殖民地成就\",{\"1\":{\"50\":1}}],[\"要正式启动殖民地\",{\"1\":{\"56\":1}}],[\"要放置补给营地\",{\"1\":{\"51\":1}}],[\"要放置补给船\",{\"1\":{\"51\":1}}],[\"绿色的对勾\",{\"1\":{\"56\":1,\"57\":1}}],[\"绿色对勾\",{\"1\":{\"7\":1}}],[\"记住\",{\"1\":{\"56\":1}}],[\"用于较低级别\",{\"1\":{\"55\":1}}],[\"大多数风格所需的材料主要是木材\",{\"1\":{\"55\":1}}],[\"大学\",{\"1\":{\"0\":1}}],[\"为每个建筑或升级向你索要各种材料\",{\"1\":{\"55\":1}}],[\"为了避免错误和挫折\",{\"1\":{\"50\":1}}],[\"他们会根据你选择的建筑风格\",{\"1\":{\"55\":1}}],[\"其中包含一个市政厅方块和一个建筑工具\",{\"1\":{\"55\":1}}],[\"其余的殖民地\",{\"0\":{\"49\":1}}],[\"获得足够的材料并制作你的供给船\",{\"1\":{\"55\":1}}],[\"获得食物的最快方式是建造一个渔夫小屋\",{\"1\":{\"45\":1}}],[\"设置你的殖民地\",{\"0\":{\"54\":1}}],[\"规划并找到了开始殖民地的完美地点之后\",{\"1\":{\"53\":1}}],[\"深思熟虑\",{\"1\":{\"53\":1}}],[\"现在怎么办呢\",{\"1\":{\"59\":1}}],[\"现在\",{\"1\":{\"53\":1}}],[\"9\",{\"1\":{\"94\":2}}],[\"9块或144总共所需的方块\",{\"1\":{\"53\":1}}],[\"90\",{\"1\":{\"12\":2}}],[\"=\",{\"1\":{\"53\":1,\"79\":2}}],[\"按下f3键时显示\",{\"1\":{\"53\":1}}],[\"关于下一个最近殖民地的位置信息存在于调试屏幕中\",{\"1\":{\"53\":1}}],[\"过时\",{\"0\":{\"53\":1}}],[\"从补给船\",{\"1\":{\"52\":1}}],[\"从基岩到天际限制\",{\"1\":{\"52\":1}}],[\"从该区块向每个方向延伸64个方块\",{\"1\":{\"52\":1}}],[\"包括市政厅\",{\"1\":{\"52\":1}}],[\"包括山脉\",{\"1\":{\"52\":1}}],[\"包括木材\",{\"1\":{\"40\":1}}],[\"珊瑚等\",{\"1\":{\"51\":1}}],[\"蕨类\",{\"1\":{\"51\":1}}],[\"草\",{\"1\":{\"51\":1}}],[\"也不能有花朵\",{\"1\":{\"51\":1}}],[\"该区域不能包含任何洞穴\",{\"1\":{\"51\":1}}],[\"该区域将被确定\",{\"1\":{\"7\":1,\"56\":1}}],[\"更近或更远离你清理的区域\",{\"1\":{\"51\":1}}],[\"更多内容正在开发和添加\",{\"1\":{\"0\":1}}],[\"向左\",{\"1\":{\"51\":1}}],[\"向右\",{\"1\":{\"51\":1}}],[\"而不是已经拥有一个\",{\"1\":{\"51\":1}}],[\"而且他们不能将小屋建造或升级到高于他们自己小屋的等级\",{\"1\":{\"43\":1}}],[\"地面上的物品来放置供给船\",{\"1\":{\"51\":1}}],[\"就是这么简单\",{\"1\":{\"58\":1}}],[\"就是你正在寻找的解决方案\",{\"1\":{\"48\":1}}],[\"就不能在同一个世界中放置另一个了\",{\"1\":{\"51\":1}}],[\"营地内将有一个箱子\",{\"1\":{\"55\":1}}],[\"营地获取一个\",{\"1\":{\"52\":1}}],[\"营地\",{\"1\":{\"51\":2,\"55\":1}}],[\"营地时\",{\"1\":{\"51\":1}}],[\"清晰的土地\",{\"1\":{\"51\":1}}],[\"平坦\",{\"1\":{\"51\":1}}],[\"至少16x17方块\",{\"1\":{\"51\":1}}],[\"至少32x20\",{\"1\":{\"51\":1}}],[\"至少8x8区块大小\",{\"1\":{\"40\":1}}],[\"最终实现大都市的目标吗\",{\"1\":{\"50\":1}}],[\"最后说明\",{\"0\":{\"59\":1}}],[\"最后\",{\"1\":{\"50\":1}}],[\"最初设置的区域还具有附加的保护\",{\"1\":{\"9\":1}}],[\"磨练你的领导技能\",{\"1\":{\"50\":1}}],[\"将你的小屋升级到最高可能的级别\",{\"1\":{\"59\":1}}],[\"将是你受保护的城镇区域\",{\"1\":{\"52\":1}}],[\"将其打造成一个繁荣的城镇\",{\"1\":{\"50\":1}}],[\"将取决于配置\",{\"1\":{\"9\":1}}],[\"努力工作\",{\"1\":{\"50\":1}}],[\"征服并建立自己的殖民地\",{\"1\":{\"50\":1}}],[\"探索\",{\"1\":{\"50\":1}}],[\"详细步骤\",{\"0\":{\"50\":1}}],[\"想要建造一个医院\",{\"1\":{\"49\":1}}],[\"剪贴板和资源卷轴可能会有帮助\",{\"1\":{\"48\":1}}],[\"和\",{\"1\":{\"48\":1}}],[\"好吧\",{\"1\":{\"48\":1}}],[\"林业师\",{\"1\":{\"48\":1,\"59\":1}}],[\"仓库和快递员\",{\"0\":{\"48\":1}}],[\"石材和矿石是殖民地的另一个主要需求\",{\"1\":{\"47\":1}}],[\"石头和火把\",{\"1\":{\"55\":1}}],[\"石头\",{\"1\":{\"40\":1}}],[\"但你可以为每位建筑师制作一个资源卷轴\",{\"1\":{\"59\":1}}],[\"但是你只有4名居民\",{\"1\":{\"59\":1}}],[\"但是你有几个方向可供选择\",{\"1\":{\"49\":1}}],[\"但是建造一个渔夫小屋更快\",{\"1\":{\"45\":1}}],[\"但默认情况下将是以您首次放置市政厅方块的位置为中心的4块半径\",{\"1\":{\"9\":1}}],[\"食物\",{\"0\":{\"45\":1}}],[\"酒馆还允许游客来到你的殖民地\",{\"1\":{\"44\":1}}],[\"酒馆\",{\"0\":{\"44\":1},\"1\":{\"59\":1}}],[\"然后点击\",{\"1\":{\"57\":1,\"58\":1}}],[\"然后选择\",{\"1\":{\"56\":1}}],[\"然后通过右键单击一个方块将其放置\",{\"1\":{\"55\":1}}],[\"然后再从渔夫\",{\"1\":{\"48\":1}}],[\"然后再次放置它\",{\"1\":{\"9\":1}}],[\"然后才能建造其他小屋\",{\"1\":{\"43\":1}}],[\"朝向哪个方向\",{\"1\":{\"42\":1}}],[\"使用你的建筑工具来放置市政厅\",{\"1\":{\"56\":1}}],[\"使用默认配置\",{\"1\":{\"52\":1}}],[\"使用建筑工具可以确保你能够清楚地看到建筑将在哪里\",{\"1\":{\"42\":1}}],[\"使用您的建筑工具将市政厅方块放置在地面上\",{\"1\":{\"7\":1}}],[\"第9步\",{\"0\":{\"49\":1}}],[\"第8步\",{\"0\":{\"48\":1}}],[\"第7步\",{\"0\":{\"47\":1}}],[\"第6步\",{\"0\":{\"46\":1}}],[\"第5步\",{\"0\":{\"45\":1}}],[\"第4步\",{\"0\":{\"44\":1,\"58\":1}}],[\"第3步\",{\"0\":{\"43\":1,\"57\":1}}],[\"第2步\",{\"0\":{\"42\":1,\"56\":1}}],[\"第1步\",{\"0\":{\"41\":1,\"55\":1}}],[\"剩下的营地\",{\"1\":{\"41\":1}}],[\"船\",{\"1\":{\"51\":1}}],[\"船中获取工具\",{\"1\":{\"51\":1}}],[\"船就只是个装饰物了\",{\"1\":{\"41\":1}}],[\"船提供了你正式启动殖民地所需的市政厅方块\",{\"1\":{\"41\":1}}],[\"船获得的市政厅之前在工作台制作\",{\"1\":{\"4\":1}}],[\"补给船\",{\"0\":{\"41\":1}}],[\"补给营地\",{\"0\":{\"41\":1},\"1\":{\"41\":1}}],[\"树苗和食物等\",{\"1\":{\"40\":1}}],[\"羊毛\",{\"1\":{\"40\":1}}],[\"皮革\",{\"1\":{\"40\":1}}],[\"线\",{\"1\":{\"40\":1}}],[\"花朵\",{\"1\":{\"40\":1}}],[\"铁矿石\",{\"1\":{\"40\":1}}],[\"煤炭\",{\"1\":{\"40\":1}}],[\"快速指南\",{\"0\":{\"40\":1}}],[\"本教程假设你已经安装了mod\",{\"1\":{\"39\":1}}],[\"本教程将通过使用hello\",{\"1\":{\"21\":1}}],[\"入门\",{\"0\":{\"39\":1}}],[\"数据包\",{\"0\":{\"38\":1}}],[\"教程\",{\"0\":{\"37\":1}}],[\"不断壮大成为一个城市\",{\"1\":{\"50\":1}}],[\"不过在这之前记得添加一个游戏账户哦\",{\"1\":{\"26\":1}}],[\"不要安装optifine\",{\"1\":{\"23\":1}}],[\"启动游戏\",{\"0\":{\"26\":1}}],[\"启动器\",{\"0\":{\"21\":1}}],[\"缺少任何一个都无法启动游戏\",{\"1\":{\"25\":1}}],[\"所有的前置模组缺一不可\",{\"1\":{\"25\":1}}],[\"重复上述步骤\",{\"1\":{\"25\":1}}],[\"确认安装\",{\"1\":{\"24\":1}}],[\"确保你周围没有其他殖民地\",{\"1\":{\"53\":1}}],[\"确保您周围没有其他殖民地\",{\"1\":{\"9\":1}}],[\"确保在gui中使用+和\",{\"1\":{\"7\":1}}],[\"确保这是您想要建立殖民地的地方\",{\"1\":{\"6\":1}}],[\"日期最接近现在的\",{\"1\":{\"24\":1}}],[\"下一个步骤是计划并放置\",{\"1\":{\"59\":1}}],[\"下一个殖民地距离为xxx方块\",{\"1\":{\"53\":1}}],[\"下拉找到1\",{\"1\":{\"24\":1}}],[\"下载完成后\",{\"1\":{\"25\":1}}],[\"下载\",{\"1\":{\"23\":1,\"24\":1}}],[\"下载hello\",{\"0\":{\"22\":1}}],[\"搜索结果出现后\",{\"1\":{\"24\":1}}],[\"正常情况下也是可以搜索到的\",{\"1\":{\"24\":1}}],[\"选择对应的结果\",{\"1\":{\"24\":1}}],[\"选择游戏版本为1\",{\"1\":{\"24\":1}}],[\"选项\",{\"1\":{\"7\":1}}],[\"模组\",{\"1\":{\"24\":1}}],[\"模拟殖民地拥有npc工人\",{\"1\":{\"0\":1}}],[\"模拟殖民地提供了灵活性\",{\"1\":{\"0\":1}}],[\"模拟殖民地是一个交互式建筑模组\",{\"1\":{\"0\":1}}],[\">\",{\"1\":{\"62\":2}}],[\">游戏内容\",{\"1\":{\"24\":1}}],[\">新游戏\",{\"1\":{\"23\":1}}],[\"返回主页\",{\"1\":{\"24\":1}}],[\"这些是缺少的资源\",{\"1\":{\"57\":1}}],[\"这将为你的殖民地每建造一个房屋的每个级别\",{\"1\":{\"59\":1}}],[\"这将为你的新建筑工提供建造任务\",{\"1\":{\"57\":1}}],[\"这将是您城镇受保护半径的中心\",{\"1\":{\"9\":1}}],[\"这样建筑师就可以升级其他建筑物\",{\"1\":{\"58\":1}}],[\"这样\",{\"1\":{\"46\":1}}],[\"这是你开始使用建筑工具放置建筑的地方\",{\"1\":{\"42\":1}}],[\"这可能会导致出现一些莫名其妙的问题\",{\"1\":{\"23\":1}}],[\"警告\",{\"1\":{\"23\":1,\"25\":1}}],[\"你不能为每个小屋分配超过1名工人\",{\"1\":{\"59\":1}}],[\"你该怎么办呢\",{\"1\":{\"59\":1}}],[\"你就可以开始建造任何其他你想要的建筑了\",{\"1\":{\"58\":1}}],[\"你现在可能的问题是\",{\"1\":{\"59\":1}}],[\"你现在可以再次右键单击市政厅方块\",{\"1\":{\"56\":1}}],[\"你现在已经完成了开始和创建殖民地的最重要步骤\",{\"1\":{\"59\":1}}],[\"你现在正式拥有一个\",{\"1\":{\"57\":1}}],[\"你首次放置市政厅方块的位置将是你殖民地受保护区域的中心\",{\"1\":{\"56\":1}}],[\"你将点击\",{\"1\":{\"57\":1}}],[\"你将看到一个具有不同选项的gui\",{\"1\":{\"57\":1}}],[\"你将无法放置市政厅\",{\"1\":{\"53\":1}}],[\"你将开始获得最初的4名居民\",{\"1\":{\"42\":1}}],[\"你必须制作\",{\"1\":{\"57\":1}}],[\"你必须仔细勘察周围环境\",{\"1\":{\"53\":1}}],[\"你必须放置一个补给船或者补给营地\",{\"1\":{\"41\":1}}],[\"你在整个模组中最需要的工具是建筑工具\",{\"1\":{\"52\":1}}],[\"你殖民地的受保护区域将成为以你第一次放置市政厅方块的区块为中心的半径为4个区块的正方形\",{\"1\":{\"52\":1}}],[\"你预计从营地\",{\"1\":{\"51\":1}}],[\"你能成为一位宏伟的领导者\",{\"1\":{\"50\":1}}],[\"你已经安装了模拟殖民地\",{\"1\":{\"50\":1}}],[\"你决定你的殖民地将如何发展\",{\"1\":{\"49\":1}}],[\"你可能会受到袭击\",{\"1\":{\"49\":1}}],[\"你可能还想将物品存放在一个地方\",{\"1\":{\"48\":1}}],[\"你可能已经厌倦了将所有资源交给建筑师\",{\"1\":{\"48\":1}}],[\"你可以在这里查看gui的完整布局\",{\"1\":{\"56\":1}}],[\"你可以在java\",{\"1\":{\"39\":1}}],[\"你可以招募他们留下成为居民\",{\"1\":{\"44\":1}}],[\"你可以选择保留或拆除它\",{\"1\":{\"41\":1}}],[\"你可以重命名这个版本\",{\"1\":{\"23\":1}}],[\"你也可以建造农场或其中一种牲畜饲养工\",{\"1\":{\"45\":1}}],[\"你也可以搜索模拟殖民地\",{\"1\":{\"24\":1}}],[\"你的最初的四名居民将开始出现\",{\"1\":{\"56\":1}}],[\"你的新护林员就可以开始为你的下一个建筑和工具等项目采集木材\",{\"1\":{\"46\":1}}],[\"你的殖民地需要的下一个重要物资是食物\",{\"1\":{\"45\":1}}],[\"你的市民需要一个居住和睡觉的地方\",{\"1\":{\"44\":1}}],[\"你需要右键单击该方块\",{\"1\":{\"56\":1}}],[\"你需要拥有足够大\",{\"1\":{\"51\":1}}],[\"你需要拥有足够大的水域\",{\"1\":{\"51\":1}}],[\"你需要根据你的游戏方式和殖民地的需求来决定下一步做什么\",{\"1\":{\"49\":1}}],[\"你需要一个建筑工\",{\"1\":{\"43\":1}}],[\"你需要足够大的空间来建设一个完整的城市\",{\"1\":{\"40\":1}}],[\"你还应该尽可能多的收集资源\",{\"1\":{\"40\":1}}],[\"你应该找到一个理想的位置\",{\"1\":{\"40\":1}}],[\"你每次都会打造一个不同的殖民地\",{\"1\":{\"0\":1}}],[\"游戏版本选择1\",{\"1\":{\"23\":1}}],[\"游戏\",{\"1\":{\"23\":1}}],[\"打开启动器\",{\"1\":{\"23\":1}}],[\"点击\",{\"1\":{\"58\":1}}],[\"点击上方对应的前置模组\",{\"1\":{\"25\":1}}],[\"点击展开后选择最新的版本\",{\"1\":{\"24\":1}}],[\"点击搜索\",{\"1\":{\"24\":1}}],[\"点击这里前往官方下载页面\",{\"1\":{\"22\":1}}],[\"点燃tnt\",{\"1\":{\"9\":1}}],[\"安装全部的前置模组\",{\"1\":{\"25\":1}}],[\"安装前置\",{\"0\":{\"25\":1}}],[\"安装模拟殖民地\",{\"0\":{\"24\":1}}],[\"安装最新版本的forge\",{\"1\":{\"23\":1}}],[\"安装minecraft\",{\"0\":{\"23\":1}}],[\"安装\",{\"0\":{\"19\":1,\"20\":1}}],[\"kelp\",{\"1\":{\"79\":4,\"80\":1}}],[\"key\",{\"1\":{\"64\":1,\"96\":1}}],[\"key=\",{\"1\":{\"12\":1,\"13\":1,\"14\":3,\"15\":1,\"16\":1,\"17\":1,\"18\":1}}],[\"keep\",{\"1\":{\"18\":1,\"85\":2}}],[\"knight\",{\"1\":{\"16\":1}}],[\"knows\",{\"1\":{\"99\":1}}],[\"know\",{\"1\":{\"16\":1}}],[\"kids\",{\"1\":{\"16\":2}}],[\"6x5x1\",{\"1\":{\"76\":1}}],[\"6\",{\"1\":{\"14\":1,\"80\":1,\"96\":1}}],[\"zombie\",{\"1\":{\"105\":1}}],[\"zip\",{\"1\":{\"28\":1,\"35\":1,\"65\":1,\"67\":3}}],[\"z\",{\"1\":{\"14\":1,\"85\":1}}],[\"yield\",{\"1\":{\"95\":1}}],[\"yellow\",{\"1\":{\"18\":1}}],[\"y\",{\"1\":{\"14\":1,\"85\":1,\"95\":1}}],[\"yourstyle\",{\"1\":{\"94\":2}}],[\"yourself\",{\"1\":{\"90\":1}}],[\"yours\",{\"1\":{\"16\":1}}],[\"your\",{\"0\":{\"14\":1,\"15\":1,\"16\":2,\"17\":1,\"18\":1,\"28\":1},\"1\":{\"10\":4,\"12\":3,\"13\":6,\"15\":1,\"16\":6,\"17\":2,\"18\":1,\"20\":5,\"28\":1,\"32\":1,\"36\":1,\"60\":1,\"61\":3,\"62\":3,\"63\":3,\"64\":2,\"68\":3,\"71\":1,\"72\":2,\"73\":3,\"85\":1,\"89\":2,\"96\":12,\"97\":1,\"98\":2,\"99\":5,\"101\":1}}],[\"you\",{\"0\":{\"14\":1,\"16\":1,\"17\":1,\"18\":1},\"1\":{\"0\":2,\"10\":3,\"12\":6,\"13\":7,\"14\":12,\"15\":3,\"16\":16,\"17\":4,\"18\":1,\"20\":17,\"28\":3,\"30\":3,\"32\":2,\"33\":2,\"34\":2,\"35\":4,\"36\":4,\"60\":4,\"61\":10,\"62\":9,\"63\":1,\"64\":5,\"65\":6,\"67\":2,\"71\":1,\"72\":1,\"73\":10,\"75\":1,\"79\":1,\"81\":2,\"85\":2,\"88\":1,\"89\":3,\"90\":1,\"91\":1,\"93\":1,\"94\":1,\"95\":5,\"96\":30,\"98\":4,\"99\":7,\"100\":2}}],[\"xs\",{\"1\":{\"82\":4}}],[\"x\",{\"1\":{\"14\":1,\"79\":10,\"85\":1,\"94\":2}}],[\"50\",{\"1\":{\"76\":1}}],[\"5\",{\"1\":{\"14\":1,\"20\":1,\"31\":1,\"73\":1,\"74\":1,\"76\":1,\"77\":1,\"78\":1,\"79\":1}}],[\"4763\",{\"0\":{\"70\":1}}],[\"4x4区块\",{\"1\":{\"52\":1}}],[\"4\",{\"1\":{\"14\":1,\"53\":2,\"74\":1,\"76\":7,\"77\":1,\"78\":1,\"79\":1,\"81\":1,\"94\":1,\"106\":1}}],[\"36\",{\"1\":{\"76\":1}}],[\"3\",{\"1\":{\"14\":1,\"73\":1,\"74\":1,\"76\":2,\"77\":1,\"78\":1,\"80\":3}}],[\"+\",{\"1\":{\"14\":1,\"20\":1,\"53\":2}}],[\"rule\",{\"1\":{\"106\":1}}],[\"rules\",{\"1\":{\"75\":1}}],[\"run\",{\"0\":{\"30\":1,\"36\":1},\"1\":{\"20\":1,\"30\":2,\"35\":1,\"36\":1}}],[\"road\",{\"1\":{\"101\":2,\"103\":2}}],[\"roads\",{\"1\":{\"65\":3,\"101\":9}}],[\"rotate\",{\"1\":{\"94\":1}}],[\"rotation\",{\"1\":{\"73\":1,\"85\":1,\"96\":3}}],[\"root\",{\"1\":{\"80\":2}}],[\"room\",{\"1\":{\"76\":2}}],[\"rts\",{\"1\":{\"72\":1}}],[\"right\",{\"1\":{\"20\":3,\"61\":3,\"62\":2,\"65\":1,\"73\":1,\"96\":2,\"100\":1}}],[\"random\",{\"1\":{\"106\":1}}],[\"randomly\",{\"1\":{\"99\":1}}],[\"rank\",{\"1\":{\"14\":6}}],[\"rarer\",{\"1\":{\"78\":1}}],[\"racks\",{\"1\":{\"76\":1,\"85\":1,\"95\":1,\"96\":1}}],[\"rack\",{\"1\":{\"76\":1}}],[\"rabbithutch5\",{\"1\":{\"74\":1}}],[\"rabbithutch4\",{\"1\":{\"74\":1}}],[\"rabbithutch3\",{\"1\":{\"74\":1}}],[\"rabbithutch2\",{\"1\":{\"74\":1}}],[\"rabbithutch1\",{\"1\":{\"74\":1}}],[\"raise\",{\"0\":{\"18\":1},\"1\":{\"18\":1}}],[\"register\",{\"1\":{\"100\":1}}],[\"regardless\",{\"1\":{\"95\":1,\"96\":1}}],[\"regarding\",{\"1\":{\"66\":1}}],[\"remain\",{\"1\":{\"105\":1}}],[\"remember\",{\"1\":{\"73\":1,\"96\":1}}],[\"removes\",{\"1\":{\"105\":1}}],[\"removed\",{\"1\":{\"70\":2}}],[\"remove\",{\"1\":{\"14\":1}}],[\"reactivate\",{\"1\":{\"99\":1}}],[\"reached\",{\"1\":{\"91\":1}}],[\"reach\",{\"1\":{\"79\":2,\"80\":1}}],[\"reasons\",{\"1\":{\"75\":1,\"95\":2}}],[\"real\",{\"1\":{\"72\":1,\"96\":1}}],[\"ready\",{\"1\":{\"20\":1,\"36\":1,\"61\":1,\"73\":2}}],[\"read\",{\"1\":{\"20\":2}}],[\"relative\",{\"1\":{\"96\":2}}],[\"relationship\",{\"1\":{\"96\":1}}],[\"related\",{\"1\":{\"65\":1,\"96\":1}}],[\"released\",{\"1\":{\"96\":2}}],[\"release\",{\"1\":{\"64\":1}}],[\"responsible\",{\"1\":{\"105\":1}}],[\"restrict\",{\"1\":{\"101\":1}}],[\"restored\",{\"1\":{\"100\":1}}],[\"restart\",{\"1\":{\"90\":1}}],[\"restaurant\",{\"1\":{\"76\":1}}],[\"residents\",{\"1\":{\"98\":1}}],[\"residence\",{\"1\":{\"0\":1}}],[\"research\",{\"1\":{\"96\":2}}],[\"resource\",{\"1\":{\"63\":1,\"100\":1}}],[\"result\",{\"1\":{\"20\":1}}],[\"reclaim\",{\"1\":{\"99\":1}}],[\"recall\",{\"1\":{\"15\":1}}],[\"recommended\",{\"1\":{\"14\":1,\"16\":1,\"20\":1,\"29\":1,\"65\":2,\"94\":1,\"95\":1,\"96\":3}}],[\"re\",{\"1\":{\"13\":1,\"20\":7,\"65\":1,\"71\":1,\"75\":1,\"85\":1,\"96\":1}}],[\"renamed\",{\"1\":{\"68\":1}}],[\"rename\",{\"1\":{\"13\":1,\"61\":1,\"62\":1,\"86\":1}}],[\"replacement\",{\"0\":{\"105\":1},\"1\":{\"105\":2}}],[\"replaces\",{\"1\":{\"104\":1,\"105\":1,\"106\":1}}],[\"replace\",{\"1\":{\"101\":1,\"103\":1}}],[\"repairs\",{\"1\":{\"96\":1}}],[\"repair\",{\"1\":{\"13\":1,\"99\":1}}],[\"reposition\",{\"1\":{\"13\":1}}],[\"report\",{\"1\":{\"0\":1}}],[\"red\",{\"1\":{\"12\":2,\"18\":1,\"79\":1,\"82\":2}}],[\"requires\",{\"1\":{\"96\":1}}],[\"requirements\",{\"0\":{\"76\":1,\"77\":1,\"78\":1},\"1\":{\"76\":1,\"77\":1,\"78\":1,\"79\":1}}],[\"required\",{\"1\":{\"34\":1,\"35\":1,\"80\":1,\"95\":1,\"96\":1}}],[\"require\",{\"1\":{\"0\":1,\"28\":1,\"35\":1,\"76\":1}}],[\"void\",{\"1\":{\"101\":4}}],[\"voice\",{\"1\":{\"0\":1}}],[\"variants\",{\"1\":{\"104\":1}}],[\"various\",{\"1\":{\"72\":1,\"105\":1}}],[\"variety\",{\"1\":{\"28\":1}}],[\"vanilla\",{\"1\":{\"20\":1,\"85\":1,\"98\":1}}],[\"vertically\",{\"0\":{\"80\":1},\"1\":{\"80\":2}}],[\"vertical\",{\"1\":{\"76\":1}}],[\"very\",{\"1\":{\"28\":1,\"77\":2,\"78\":2,\"94\":1,\"95\":1,\"96\":1}}],[\"versions\",{\"1\":{\"20\":1,\"28\":1,\"95\":1,\"96\":2}}],[\"version\",{\"1\":{\"20\":5,\"29\":2,\"30\":1,\"31\":1,\"34\":4,\"61\":2,\"62\":3,\"64\":5,\"67\":2,\"68\":2,\"69\":2,\"70\":3,\"73\":3,\"75\":2,\"78\":1,\"88\":2,\"89\":2,\"93\":2,\"94\":2,\"95\":2,\"96\":7}}],[\"ve\",{\"1\":{\"20\":1,\"71\":1,\"96\":1,\"99\":2}}],[\"villages\",{\"1\":{\"98\":1,\"105\":1}}],[\"vines\",{\"1\":{\"79\":2,\"80\":2,\"83\":3}}],[\"vine\",{\"1\":{\"79\":6,\"83\":1}}],[\"view\",{\"1\":{\"73\":1}}],[\"visible\",{\"1\":{\"64\":3,\"73\":1}}],[\"visit\",{\"1\":{\"13\":1,\"28\":1}}],[\"via\",{\"1\":{\"20\":1,\"72\":1}}],[\"unused\",{\"1\":{\"91\":1}}],[\"unobtainable\",{\"1\":{\"86\":1}}],[\"unobstructed\",{\"1\":{\"76\":1}}],[\"unlocked\",{\"1\":{\"96\":2}}],[\"unlock\",{\"1\":{\"96\":1}}],[\"unlimited\",{\"1\":{\"82\":1}}],[\"unlike\",{\"1\":{\"79\":1}}],[\"unless\",{\"1\":{\"68\":1,\"86\":1,\"88\":1,\"96\":2}}],[\"university\",{\"1\":{\"76\":1}}],[\"university5\",{\"1\":{\"74\":1}}],[\"university4\",{\"1\":{\"74\":1}}],[\"university3\",{\"1\":{\"74\":1}}],[\"university2\",{\"1\":{\"74\":1}}],[\"university1\",{\"1\":{\"74\":1}}],[\"unique\",{\"1\":{\"70\":1,\"96\":1,\"101\":1}}],[\"unzipped\",{\"1\":{\"67\":1}}],[\"unzip\",{\"1\":{\"67\":2}}],[\"under\",{\"1\":{\"62\":1,\"68\":2,\"69\":1,\"70\":1,\"73\":1}}],[\"unfortunately\",{\"1\":{\"35\":1,\"88\":1}}],[\"until\",{\"1\":{\"17\":1}}],[\"unemployed\",{\"1\":{\"16\":1}}],[\"upgrading\",{\"1\":{\"96\":1}}],[\"upgradable\",{\"0\":{\"93\":1}}],[\"upgradeable\",{\"1\":{\"96\":1}}],[\"upgraded\",{\"1\":{\"96\":1}}],[\"upgrade\",{\"1\":{\"13\":1,\"96\":2}}],[\"upwards\",{\"0\":{\"80\":1},\"1\":{\"80\":2}}],[\"up\",{\"1\":{\"16\":1,\"17\":1,\"18\":1,\"20\":3,\"74\":1,\"76\":1,\"79\":1,\"95\":2,\"96\":3}}],[\"usual\",{\"1\":{\"89\":1}}],[\"usually\",{\"1\":{\"82\":1}}],[\"usable\",{\"1\":{\"71\":1}}],[\"using\",{\"1\":{\"28\":1,\"68\":1,\"76\":1,\"95\":1,\"101\":1}}],[\"uses\",{\"1\":{\"101\":1}}],[\"used\",{\"1\":{\"16\":1,\"63\":1,\"64\":1,\"65\":1,\"70\":1,\"71\":1,\"81\":1,\"82\":1,\"96\":3,\"101\":1,\"102\":1}}],[\"username\",{\"1\":{\"13\":1}}],[\"use\",{\"0\":{\"89\":1,\"90\":1,\"91\":1,\"94\":1},\"1\":{\"10\":1,\"35\":1,\"60\":1,\"62\":1,\"64\":1,\"72\":1,\"73\":2,\"74\":1,\"82\":1,\"85\":4,\"86\":1,\"91\":2,\"94\":2,\"95\":1,\"96\":7,\"100\":1,\"101\":2,\"102\":1}}],[\"us\",{\"1\":{\"0\":3}}],[\"25\",{\"1\":{\"80\":3}}],[\"26\",{\"1\":{\"79\":1}}],[\"27\",{\"1\":{\"76\":1}}],[\"2022\",{\"1\":{\"74\":1}}],[\"20\",{\"0\":{\"23\":1},\"1\":{\"23\":1,\"24\":2,\"79\":9}}],[\"2\",{\"1\":{\"12\":1,\"13\":1,\"14\":1,\"15\":1,\"16\":1,\"17\":1,\"18\":1,\"61\":1,\"62\":1,\"67\":1,\"68\":1,\"69\":1,\"70\":4,\"73\":1,\"74\":1,\"75\":1,\"76\":4,\"77\":1,\"78\":2,\"79\":3,\"80\":3,\"88\":1,\"89\":1,\"93\":1,\"94\":1,\"95\":1,\"96\":3,\"99\":1}}],[\"1x1x1\",{\"1\":{\"96\":1}}],[\"1x1x2\",{\"1\":{\"76\":1}}],[\"100\",{\"1\":{\"91\":1}}],[\"10\",{\"1\":{\"79\":1}}],[\"11\",{\"1\":{\"79\":6}}],[\"121\",{\"1\":{\"79\":3}}],[\"12\",{\"1\":{\"76\":1}}],[\"14\",{\"1\":{\"74\":1,\"76\":1}}],[\"19\",{\"1\":{\"61\":1,\"62\":2,\"67\":1,\"68\":1,\"69\":1,\"70\":3,\"73\":1,\"75\":1,\"78\":1,\"79\":1,\"88\":1,\"89\":1,\"93\":1,\"94\":1,\"95\":1,\"96\":1}}],[\"18+\",{\"1\":{\"98\":1}}],[\"18\",{\"0\":{\"74\":1},\"1\":{\"61\":1,\"62\":1,\"67\":1,\"68\":1,\"69\":1,\"70\":1,\"73\":1,\"75\":1,\"76\":1,\"88\":1,\"89\":1,\"93\":1,\"94\":1,\"95\":1,\"96\":1}}],[\"1正式版\",{\"1\":{\"23\":1}}],[\"16\",{\"1\":{\"20\":1,\"31\":1,\"80\":1}}],[\"1\",{\"0\":{\"23\":2,\"74\":1},\"1\":{\"12\":1,\"13\":1,\"14\":1,\"15\":1,\"16\":1,\"17\":1,\"18\":1,\"20\":1,\"24\":2,\"31\":1,\"53\":1,\"61\":2,\"62\":3,\"64\":2,\"67\":2,\"68\":2,\"69\":2,\"70\":4,\"73\":3,\"74\":1,\"75\":4,\"76\":20,\"77\":1,\"78\":2,\"79\":1,\"88\":3,\"89\":2,\"93\":2,\"94\":2,\"95\":2,\"96\":5,\"98\":1,\"99\":1,\"101\":1}}],[\"nbt\",{\"1\":{\"99\":1}}],[\"nylium\",{\"1\":{\"82\":2}}],[\"n\",{\"1\":{\"74\":2,\"80\":3}}],[\"nicely\",{\"1\":{\"65\":1,\"96\":1}}],[\"nice\",{\"1\":{\"65\":1}}],[\"naturally\",{\"1\":{\"83\":1,\"99\":1,\"101\":1}}],[\"naming\",{\"1\":{\"73\":2}}],[\"named\",{\"1\":{\"65\":1,\"73\":2,\"76\":6,\"94\":1,\"95\":1}}],[\"names\",{\"0\":{\"15\":1},\"1\":{\"16\":1,\"64\":2,\"73\":2,\"74\":2,\"94\":1,\"95\":2}}],[\"name\",{\"1\":{\"13\":2,\"14\":1,\"20\":5,\"34\":1,\"61\":2,\"62\":2,\"63\":2,\"64\":4,\"73\":3,\"75\":2,\"88\":3,\"93\":3,\"95\":1,\"96\":2,\"100\":3,\"101\":10,\"106\":1}}],[\"navigate\",{\"0\":{\"32\":1}}],[\"normal\",{\"1\":{\"98\":1}}],[\"normally\",{\"1\":{\"95\":1,\"96\":1}}],[\"now\",{\"1\":{\"63\":1,\"99\":2,\"100\":1}}],[\"no\",{\"1\":{\"35\":2,\"70\":1,\"72\":1,\"83\":1,\"86\":1}}],[\"notice\",{\"1\":{\"98\":1}}],[\"not\",{\"1\":{\"17\":1,\"28\":1,\"29\":1,\"33\":1,\"35\":2,\"61\":1,\"64\":2,\"65\":1,\"67\":1,\"71\":1,\"73\":1,\"74\":1,\"79\":5,\"82\":1,\"83\":1,\"88\":1,\"91\":1,\"94\":1,\"95\":1,\"96\":9,\"101\":1}}],[\"note\",{\"1\":{\"14\":1,\"33\":1,\"61\":1,\"65\":1,\"71\":1,\"73\":2,\"74\":1,\"79\":2,\"81\":1,\"94\":1,\"96\":1,\"98\":1,\"101\":1}}],[\"none\",{\"1\":{\"79\":1}}],[\"non\",{\"1\":{\"0\":1,\"96\":1}}],[\"nethermine\",{\"1\":{\"76\":1}}],[\"nethership\",{\"1\":{\"75\":1}}],[\"nether\",{\"0\":{\"78\":1},\"1\":{\"75\":1,\"76\":1,\"77\":1,\"78\":2}}],[\"netherworker5\",{\"1\":{\"74\":1}}],[\"netherworker4\",{\"1\":{\"74\":1}}],[\"netherworker3\",{\"1\":{\"74\":1}}],[\"netherworker2\",{\"1\":{\"74\":1}}],[\"netherworker1\",{\"1\":{\"74\":1}}],[\"negative\",{\"1\":{\"18\":2}}],[\"neutral\",{\"1\":{\"18\":1}}],[\"next\",{\"1\":{\"12\":1,\"20\":1,\"76\":1,\"93\":1,\"95\":1,\"101\":2}}],[\"needing\",{\"1\":{\"96\":1}}],[\"needed\",{\"1\":{\"60\":1,\"70\":3,\"71\":1}}],[\"needs\",{\"0\":{\"18\":1},\"1\":{\"34\":1,\"61\":1,\"64\":1,\"67\":1,\"70\":1,\"96\":3}}],[\"need\",{\"1\":{\"12\":1,\"36\":1,\"61\":4,\"63\":1,\"64\":1,\"69\":2,\"73\":5,\"81\":1,\"89\":2,\"94\":2,\"96\":5,\"99\":1}}],[\"newest\",{\"1\":{\"12\":1}}],[\"newly\",{\"1\":{\"10\":1}}],[\"new\",{\"0\":{\"61\":1},\"1\":{\"10\":1,\"16\":1,\"36\":1,\"61\":1,\"63\":2,\"64\":2,\"68\":2,\"73\":1,\"99\":4}}],[\"numbers\",{\"1\":{\"12\":1,\"73\":1}}],[\"number\",{\"1\":{\"12\":1,\"64\":3,\"91\":1,\"93\":2}}],[\"唯一的方法是通过拥有op或管理员权限的人通过命令删除您的殖民地\",{\"1\":{\"9\":1}}],[\"唯一的限制就是你的想象力\",{\"1\":{\"0\":1}}],[\"删除并替换市政厅方块不会移除您城镇的受保护区域\",{\"1\":{\"9\":1}}],[\"如果\",{\"1\":{\"57\":1}}],[\"如果另一个殖民地离你当前位置太近\",{\"1\":{\"53\":1}}],[\"如果你难以跟踪每个人的需求\",{\"1\":{\"59\":1}}],[\"如果你发现建筑师没有完成建造任务并且你看不到他们正在请求任何材料\",{\"1\":{\"57\":1}}],[\"如果你在其中更改了此设置\",{\"1\":{\"57\":1}}],[\"如果你无法放置供给营地\",{\"1\":{\"51\":1}}],[\"如果你已经拥有建筑工具\",{\"1\":{\"55\":1}}],[\"如果你已经有一个建筑工具\",{\"1\":{\"51\":1}}],[\"如果你已经到达这里\",{\"1\":{\"50\":1}}],[\"如果你更青睐木材\",{\"1\":{\"46\":1}}],[\"如果你不想亲自为殖民者喂食\",{\"1\":{\"45\":1}}],[\"如果你想了解如何安装官方整合包\",{\"1\":{\"39\":1}}],[\"如果您尝试在受保护区域之外放置另一个市政厅\",{\"1\":{\"9\":1}}],[\"如果您决定希望实际的市政厅建筑建在不同的位置\",{\"1\":{\"9\":1}}],[\"如果有一个殖民地靠近你当前的位置\",{\"1\":{\"53\":1}}],[\"如果有另一个殖民地离您当前位置太近\",{\"1\":{\"9\":1}}],[\"如果有需要\",{\"1\":{\"4\":1}}],[\"以获得成就\",{\"1\":{\"59\":1}}],[\"以获取更多的矿工\",{\"1\":{\"59\":1}}],[\"以跟踪他们的需求\",{\"1\":{\"59\":1}}],[\"以防止你放置市政厅或在该方向上限制你的殖民地区域\",{\"1\":{\"53\":1}}],[\"以防止您放置市政厅或在该方向上限制您的殖民地区域\",{\"1\":{\"9\":1}}],[\"以便他们首先建造自己的小屋\",{\"1\":{\"57\":1}}],[\"以便在建筑工小屋开始建造时提供给他们\",{\"1\":{\"55\":1}}],[\"以便你可以将所有小屋\",{\"1\":{\"52\":1}}],[\"以便于识别\",{\"1\":{\"23\":1}}],[\"以及它是否位于正确的y层级\",{\"1\":{\"42\":1}}],[\"以确保小屋的地面水平位于您希望的位置\",{\"1\":{\"7\":1}}],[\"由于每个殖民地的受保护区域\",{\"1\":{\"9\":1,\"53\":1}}],[\"洞穴\",{\"1\":{\"9\":1,\"52\":1}}],[\"海藻\",{\"1\":{\"51\":1}}],[\"海洋\",{\"1\":{\"9\":1,\"52\":1}}],[\"海底\",{\"1\":{\"0\":1}}],[\"湖泊\",{\"1\":{\"9\":1,\"52\":1}}],[\"丘陵\",{\"1\":{\"9\":1,\"52\":1}}],[\"因此可能想要建造一个卫兵塔\",{\"1\":{\"49\":1}}],[\"因此建造一个矿井是下一个合乎逻辑的步骤\",{\"1\":{\"47\":1}}],[\"因此建议接下来建造一个酒馆\",{\"1\":{\"44\":1}}],[\"因此\",{\"1\":{\"9\":1,\"52\":1,\"53\":1,\"59\":1}}],[\"殖民地的受保护区域\",{\"1\":{\"9\":1}}],[\"放置的船\",{\"1\":{\"55\":1}}],[\"放置殖民地所需的方块为272\",{\"1\":{\"53\":1}}],[\"放置市政厅的中心区块\",{\"1\":{\"53\":1}}],[\"放置在完美的位置\",{\"1\":{\"52\":1}}],[\"放置补给船或补给营地\",{\"0\":{\"51\":1}}],[\"放置熔岩或水以及放置\",{\"1\":{\"9\":1}}],[\"放置您的市政厅\",{\"0\":{\"7\":1}}],[\"破坏或与任何类型的方块交互\",{\"1\":{\"9\":1}}],[\"保护系统包括阻止任何玩家放置\",{\"1\":{\"9\":1}}],[\"保护区域\",{\"0\":{\"9\":1}}],[\"当他们头顶上方有红色图标时\",{\"1\":{\"57\":1}}],[\"当你放置供给船\",{\"1\":{\"51\":1}}],[\"当以上步骤完成后就可以启动游戏了\",{\"1\":{\"26\":1}}],[\"当您开始一个殖民地时\",{\"1\":{\"9\":1}}],[\"当前的进度是将英文wiki的内容搬运过来后进行本地化\",{\"1\":{\"1\":1}}],[\"并提高工人等级的升级速度\",{\"1\":{\"59\":1}}],[\"并使用你的建筑工具将其放置\",{\"1\":{\"58\":1}}],[\"并等待一段时间以查看他们需要什么\",{\"1\":{\"57\":1}}],[\"并准备好踏上一场探险之旅\",{\"1\":{\"50\":1}}],[\"并且将自动分配一个建筑师\",{\"1\":{\"57\":1}}],[\"并且地形较为平坦\",{\"1\":{\"40\":1}}],[\"并且整个区域将被保护\",{\"1\":{\"8\":1}}],[\"并非所有的小屋方块都位于地面上\",{\"1\":{\"7\":1}}],[\"一些建筑需要抬升到正确的y层级\",{\"1\":{\"42\":1}}],[\"一个新的殖民地将被创建\",{\"1\":{\"8\":1}}],[\"一旦建筑师完成了他们的小屋\",{\"1\":{\"58\":1}}],[\"一旦建立\",{\"1\":{\"9\":1}}],[\"一旦获得七名居民\",{\"1\":{\"49\":1}}],[\"一旦你确认放置建筑师小屋\",{\"1\":{\"57\":1}}],[\"一旦你确认放置市政厅\",{\"1\":{\"56\":1}}],[\"一旦你完成了这个步骤\",{\"1\":{\"56\":1}}],[\"一旦你获得了市政厅方块和建筑工具\",{\"1\":{\"41\":1}}],[\"一旦你选择了殖民地的位置\",{\"1\":{\"41\":1}}],[\"一旦您放置了市政厅方块\",{\"1\":{\"8\":1}}],[\"一旦您确认放置市政厅\",{\"1\":{\"7\":1}}],[\"一旦放置了补给船\",{\"1\":{\"51\":1}}],[\"一旦放置了市政厅方块\",{\"1\":{\"42\":1}}],[\"一旦放置了市政厅\",{\"1\":{\"9\":1,\"52\":1}}],[\"一旦放置市政厅方块\",{\"1\":{\"9\":1}}],[\"一旦放置\",{\"1\":{\"7\":1,\"56\":1,\"58\":1}}],[\"创建新殖民地\",{\"1\":{\"8\":1,\"56\":1}}],[\"创建新的殖民地\",{\"0\":{\"5\":1}}],[\"创建您的殖民地\",{\"0\":{\"8\":1}}],[\"显示建筑的3d预览\",{\"1\":{\"7\":1}}],[\"无法更改\",{\"1\":{\"7\":1,\"56\":1}}],[\"您将收到一条消息\",{\"1\":{\"9\":1}}],[\"您将无法放置市政厅\",{\"1\":{\"9\":1}}],[\"您可以使用建筑工具打破方块\",{\"1\":{\"9\":1}}],[\"您可以使用箭头按钮将建筑移动到所需的位置\",{\"1\":{\"7\":1}}],[\"您必须仔细勘察周围环境\",{\"1\":{\"9\":1}}],[\"您受保护的殖民地区域包括从基岩到天际限制的山脉\",{\"1\":{\"9\":1}}],[\"您的殖民地的范围将被确定\",{\"1\":{\"8\":1}}],[\"您的殖民地将以市政厅方块为中心的4块半径\",{\"1\":{\"6\":1}}],[\"您需要右键点击它并选择\",{\"1\":{\"8\":1}}],[\"您放置市政厅方块的位置将是您殖民地受保护区域的中心\",{\"1\":{\"7\":1}}],[\"请考虑制作一个剪贴板和资源卷轴\",{\"1\":{\"59\":1}}],[\"请前往建筑师小屋\",{\"1\":{\"57\":1}}],[\"请不要使用建筑工具\",{\"1\":{\"55\":1}}],[\"请不要在此时使用它\",{\"1\":{\"51\":1}}],[\"请查看我们的建筑工具页面\",{\"1\":{\"52\":1}}],[\"请逐块尝试\",{\"1\":{\"51\":1}}],[\"请仔细规划你想要放置市政厅的位置\",{\"1\":{\"52\":1}}],[\"请仔细规划您想要放置市政厅的位置\",{\"1\":{\"9\":1}}],[\"请仔细阅读整个指南\",{\"1\":{\"50\":1}}],[\"请记住\",{\"1\":{\"7\":1}}],[\"请确保仔细勘察您的区域\",{\"1\":{\"6\":1}}],[\"每个方向4块\",{\"1\":{\"6\":1}}],[\"在建造任何其他建筑之前\",{\"1\":{\"57\":1}}],[\"在你的最初四名居民得到住宿后\",{\"1\":{\"59\":1}}],[\"在你的4名居民就业并努力工作之后\",{\"1\":{\"59\":1}}],[\"在你仔细决定放置市政厅的位置后\",{\"1\":{\"56\":1}}],[\"在你已经探索\",{\"1\":{\"53\":1}}],[\"在官方minecolonies服务器上\",{\"1\":{\"53\":1}}],[\"在多人游戏等情况下\",{\"1\":{\"53\":1}}],[\"在这一步\",{\"1\":{\"49\":1}}],[\"在这一点上\",{\"1\":{\"48\":1}}],[\"在仓库和所有工作场所之间传送物品\",{\"1\":{\"48\":1}}],[\"在开始游戏之前\",{\"1\":{\"50\":1}}],[\"在开始建设殖民地之前\",{\"1\":{\"43\":1}}],[\"在开始新的殖民地之前\",{\"1\":{\"40\":1}}],[\"在同一个世界中你只能放置其中一个\",{\"1\":{\"41\":1}}],[\"在名称处输入minecolonies\",{\"1\":{\"24\":1}}],[\"在左侧选择游戏\",{\"1\":{\"23\":1,\"24\":1}}],[\"在当前设置的受保护半径内\",{\"1\":{\"9\":1}}],[\"在仔细决定放置市政厅的位置后\",{\"1\":{\"7\":1}}],[\"在决定放置市政厅的位置之前\",{\"1\":{\"6\":1}}],[\"在导航栏中选择你要查看的页面\",{\"1\":{\"1\":1}}],[\"勘察区域\",{\"0\":{\"6\":1}}],[\"或架子\",{\"1\":{\"55\":1}}],[\"或者你可以在市政厅gui的设置选项卡中手动分配一个拥有最佳特质的建筑师\",{\"1\":{\"57\":1}}],[\"或者你可能只是想拥有一个特定的工人\",{\"1\":{\"49\":1}}],[\"或者制作另一个\",{\"1\":{\"52\":1}}],[\"或者找到了一个适合建造特定小屋的好地方\",{\"1\":{\"49\":1}}],[\"或者可能决定建造一个锯木厂来为工人制作所需的物品\",{\"1\":{\"49\":1}}],[\"或者可能有一名生病的居民\",{\"1\":{\"49\":1}}],[\"或烹饪食物\",{\"1\":{\"45\":1}}],[\"或通过命令获取\",{\"1\":{\"4\":1}}],[\"或是天空中\",{\"1\":{\"0\":1}}],[\"它的最高级别为5\",{\"1\":{\"59\":1}}],[\"它会告诉你\",{\"1\":{\"53\":1}}],[\"它将是默认的4块半径\",{\"1\":{\"53\":1}}],[\"它将生成一个包含市政厅方块和建筑工具的箱子\",{\"1\":{\"51\":1}}],[\"它还会显示你需要远离的距离以放置市政厅\",{\"1\":{\"53\":1}}],[\"它还充当殖民地的中心\",{\"1\":{\"42\":1}}],[\"它还将显示在信息屏幕中\",{\"1\":{\"9\":1}}],[\"它们还提供了在建设殖民地过程中可能需要的一些其他物资\",{\"1\":{\"41\":1}}],[\"它也可以像其他方块一样在创造模式下获得\",{\"1\":{\"4\":1}}],[\"它通过提供一切你需要的工具\",{\"1\":{\"0\":1}}],[\"目前wiki正处于起步阶段\",{\"1\":{\"1\":1}}],[\"让我们看一下让你的殖民地运行起来的步骤\",{\"1\":{\"53\":1}}],[\"让我们开始吧\",{\"0\":{\"1\":1}}],[\"让你创建一个与其他玩家独一无二的殖民地\",{\"1\":{\"0\":1}}],[\"让你的领导技能得以发挥\",{\"1\":{\"0\":1}}],[\"during\",{\"1\":{\"102\":1}}],[\"duplicate\",{\"1\":{\"96\":1}}],[\"dummy\",{\"1\":{\"76\":2}}],[\"due\",{\"1\":{\"28\":1,\"35\":1}}],[\"dyer\",{\"1\":{\"76\":1}}],[\"dyer5\",{\"1\":{\"74\":1}}],[\"dyer4\",{\"1\":{\"74\":1}}],[\"dyer3\",{\"1\":{\"74\":1}}],[\"dyer2\",{\"1\":{\"74\":1}}],[\"dyer1\",{\"1\":{\"74\":1}}],[\"dropdown\",{\"1\":{\"62\":2}}],[\"dropdowns\",{\"1\":{\"20\":2}}],[\"date\",{\"1\":{\"74\":1}}],[\"data\",{\"1\":{\"63\":1}}],[\"dat\",{\"1\":{\"28\":2}}],[\"d\",{\"1\":{\"20\":1}}],[\"dirt\",{\"1\":{\"103\":3,\"104\":2,\"105\":1}}],[\"directories\",{\"1\":{\"70\":1}}],[\"directory\",{\"1\":{\"30\":2,\"68\":2,\"70\":1,\"93\":1}}],[\"directly\",{\"1\":{\"65\":1,\"67\":2,\"81\":1,\"82\":2,\"85\":1,\"96\":2}}],[\"divided\",{\"1\":{\"81\":1}}],[\"diving\",{\"1\":{\"79\":1}}],[\"difficult\",{\"1\":{\"77\":2,\"78\":2}}],[\"differ\",{\"1\":{\"20\":1}}],[\"differently\",{\"1\":{\"82\":1}}],[\"different\",{\"1\":{\"20\":1,\"30\":1,\"65\":1,\"73\":2,\"75\":1,\"95\":2,\"96\":2,\"101\":1,\"102\":1}}],[\"dining\",{\"1\":{\"76\":1}}],[\"district\",{\"1\":{\"96\":1}}],[\"distributes\",{\"1\":{\"35\":1}}],[\"disable\",{\"0\":{\"92\":1}}],[\"disabled\",{\"1\":{\"65\":1}}],[\"display\",{\"1\":{\"61\":1,\"65\":1}}],[\"displays\",{\"0\":{\"15\":1}}],[\"discord\",{\"1\":{\"0\":1,\"97\":1}}],[\"double\",{\"1\":{\"61\":1}}],[\"doesn\",{\"1\":{\"34\":1,\"65\":1,\"96\":6}}],[\"does\",{\"1\":{\"28\":1,\"101\":1}}],[\"don\",{\"0\":{\"86\":1},\"1\":{\"64\":1,\"65\":2,\"73\":1,\"93\":1,\"96\":2}}],[\"done\",{\"1\":{\"20\":4,\"30\":1}}],[\"donators\",{\"1\":{\"16\":1}}],[\"downsides\",{\"1\":{\"96\":1}}],[\"downwards\",{\"0\":{\"80\":1},\"1\":{\"79\":1,\"80\":1}}],[\"download\",{\"0\":{\"29\":1,\"31\":1},\"1\":{\"20\":2,\"29\":2,\"31\":2,\"33\":1,\"34\":2,\"35\":2,\"65\":1}}],[\"downloaded\",{\"0\":{\"67\":1},\"1\":{\"20\":1,\"28\":1,\"30\":1,\"33\":2,\"35\":1,\"67\":1}}],[\"down\",{\"1\":{\"17\":1,\"79\":1,\"83\":1,\"99\":1}}],[\"do\",{\"0\":{\"34\":1,\"67\":1,\"85\":1},\"1\":{\"12\":2,\"33\":1,\"35\":1,\"61\":1,\"74\":1,\"79\":1,\"86\":1,\"94\":1,\"96\":4,\"98\":1}}],[\"decay\",{\"0\":{\"106\":1},\"1\":{\"103\":1,\"104\":1,\"105\":2}}],[\"decoratively\",{\"1\":{\"101\":1}}],[\"decorative\",{\"1\":{\"95\":2,\"96\":1}}],[\"decoration\",{\"0\":{\"91\":1,\"93\":1,\"104\":1},\"1\":{\"61\":1,\"93\":3,\"96\":3,\"104\":1}}],[\"decorations\",{\"0\":{\"96\":1},\"1\":{\"17\":1,\"65\":2,\"67\":1,\"71\":1,\"75\":4,\"91\":1}}],[\"deco\",{\"1\":{\"93\":2,\"96\":1}}],[\"deconstructing\",{\"1\":{\"10\":1}}],[\"dedicated\",{\"1\":{\"101\":1}}],[\"deliveryman5\",{\"1\":{\"74\":1}}],[\"deliveryman4\",{\"1\":{\"74\":1}}],[\"deliveryman3\",{\"1\":{\"74\":1}}],[\"deliveryman2\",{\"1\":{\"74\":1}}],[\"deliveryman1\",{\"1\":{\"74\":1}}],[\"delete\",{\"1\":{\"10\":2,\"17\":2,\"62\":1,\"71\":1,\"96\":1}}],[\"deleting\",{\"0\":{\"10\":1},\"1\":{\"91\":1}}],[\"details\",{\"1\":{\"61\":1,\"79\":1}}],[\"determines\",{\"1\":{\"101\":1}}],[\"determine\",{\"1\":{\"61\":1}}],[\"depth\",{\"1\":{\"28\":1}}],[\"depends\",{\"1\":{\"105\":1}}],[\"dependency\",{\"1\":{\"20\":1}}],[\"depending\",{\"1\":{\"20\":1,\"67\":2,\"75\":1,\"96\":1,\"102\":1}}],[\"desired\",{\"1\":{\"79\":1}}],[\"designs\",{\"1\":{\"73\":2,\"96\":1}}],[\"designing\",{\"1\":{\"72\":1,\"95\":1,\"96\":1,\"97\":1}}],[\"design\",{\"1\":{\"16\":2,\"72\":1,\"99\":1}}],[\"designers\",{\"1\":{\"79\":1}}],[\"designer\",{\"1\":{\"16\":1}}],[\"desc\",{\"1\":{\"64\":1}}],[\"descriptor\",{\"1\":{\"64\":1}}],[\"description\",{\"1\":{\"20\":2,\"63\":1,\"64\":2}}],[\"describing\",{\"1\":{\"64\":1}}],[\"defined\",{\"1\":{\"103\":1,\"104\":1,\"105\":2}}],[\"define\",{\"1\":{\"79\":1}}],[\"defend\",{\"1\":{\"13\":1}}],[\"default\",{\"1\":{\"13\":1,\"16\":1,\"91\":1,\"94\":1,\"95\":1,\"96\":1}}],[\"developers\",{\"1\":{\"0\":1}}],[\"developed\",{\"1\":{\"0\":1}}],[\"dev\",{\"1\":{\"0\":1}}],[\"jigsaw\",{\"0\":{\"101\":1},\"1\":{\"99\":1,\"101\":6}}],[\"json\",{\"0\":{\"64\":1,\"103\":1,\"104\":1,\"105\":1},\"1\":{\"64\":1,\"67\":1,\"103\":1,\"104\":1,\"105\":1}}],[\"java\",{\"1\":{\"35\":1}}],[\"java版\",{\"0\":{\"27\":1}}],[\"jar\",{\"1\":{\"33\":1,\"100\":1}}],[\"job\",{\"1\":{\"15\":1}}],[\"join\",{\"1\":{\"0\":1}}],[\"just\",{\"0\":{\"67\":1,\"72\":1},\"1\":{\"0\":1,\"20\":1,\"28\":1,\"32\":1,\"33\":1,\"73\":1,\"79\":1,\"96\":3,\"99\":1}}],[\"pit\",{\"1\":{\"95\":2}}],[\"pickles\",{\"1\":{\"79\":1,\"82\":3}}],[\"pick\",{\"1\":{\"16\":3}}],[\"p\",{\"1\":{\"79\":2}}],[\"png\",{\"1\":{\"65\":2}}],[\"pumpkin\",{\"1\":{\"76\":1}}],[\"punctuation\",{\"1\":{\"73\":1}}],[\"purpose\",{\"1\":{\"103\":1}}],[\"purposes\",{\"1\":{\"71\":1}}],[\"purely\",{\"1\":{\"64\":1,\"96\":1}}],[\"putting\",{\"1\":{\"96\":1}}],[\"put\",{\"1\":{\"16\":1,\"33\":1,\"65\":1,\"67\":1,\"93\":3,\"96\":1}}],[\"porous\",{\"1\":{\"103\":1}}],[\"portal\",{\"1\":{\"76\":1}}],[\"pools\",{\"1\":{\"101\":1}}],[\"pool\",{\"1\":{\"101\":5}}],[\"popular\",{\"1\":{\"96\":1}}],[\"point\",{\"1\":{\"20\":1}}],[\"possibly\",{\"1\":{\"71\":1}}],[\"possible\",{\"1\":{\"16\":1,\"65\":2,\"79\":1,\"88\":1,\"91\":1,\"96\":4,\"99\":1}}],[\"positive\",{\"1\":{\"18\":1}}],[\"positions\",{\"1\":{\"14\":1,\"79\":2,\"81\":2,\"82\":1,\"83\":1}}],[\"position\",{\"1\":{\"14\":1,\"76\":1,\"79\":7,\"94\":1,\"96\":1}}],[\"predicate\",{\"1\":{\"106\":4}}],[\"prepping\",{\"0\":{\"100\":1}}],[\"pretty\",{\"1\":{\"95\":1}}],[\"preferred\",{\"1\":{\"96\":1}}],[\"preferably\",{\"1\":{\"61\":1,\"71\":1}}],[\"prefabs\",{\"1\":{\"72\":1}}],[\"preview\",{\"1\":{\"70\":1}}],[\"previously\",{\"1\":{\"70\":1}}],[\"previous\",{\"1\":{\"14\":1}}],[\"prevents\",{\"1\":{\"79\":1}}],[\"prevent\",{\"1\":{\"64\":1,\"79\":1,\"85\":1}}],[\"press\",{\"1\":{\"61\":2}}],[\"preset\",{\"1\":{\"30\":1}}],[\"primary\",{\"1\":{\"73\":1}}],[\"priority\",{\"1\":{\"17\":1}}],[\"print\",{\"1\":{\"16\":1}}],[\"probability\",{\"1\":{\"106\":3}}],[\"probably\",{\"1\":{\"96\":1}}],[\"problem\",{\"1\":{\"96\":1}}],[\"provided\",{\"1\":{\"60\":1,\"72\":1,\"96\":1}}],[\"profile\",{\"0\":{\"36\":1},\"1\":{\"36\":1}}],[\"profit\",{\"1\":{\"0\":1}}],[\"program\",{\"1\":{\"35\":1}}],[\"processor\",{\"1\":{\"102\":1,\"103\":1,\"104\":1,\"105\":2}}],[\"processors\",{\"0\":{\"102\":1},\"1\":{\"102\":2,\"103\":1,\"104\":1,\"105\":1}}],[\"process\",{\"1\":{\"28\":1,\"75\":1,\"83\":1}}],[\"protection\",{\"1\":{\"12\":1}}],[\"properties\",{\"1\":{\"101\":2}}],[\"properly\",{\"1\":{\"71\":1}}],[\"proper\",{\"1\":{\"10\":1}}],[\"prompt\",{\"1\":{\"10\":1,\"20\":2}}],[\"pvp\",{\"1\":{\"13\":1,\"16\":1}}],[\"plural=true\",{\"1\":{\"17\":2}}],[\"plus\",{\"1\":{\"12\":1}}],[\"please\",{\"1\":{\"13\":1,\"74\":1}}],[\"placing\",{\"0\":{\"62\":1},\"1\":{\"73\":1,\"79\":1,\"96\":2,\"99\":1}}],[\"placement\",{\"1\":{\"102\":1}}],[\"places\",{\"1\":{\"99\":1}}],[\"placeholders\",{\"1\":{\"85\":2,\"95\":1,\"96\":3}}],[\"placeholder\",{\"0\":{\"105\":1},\"1\":{\"61\":1,\"96\":2,\"105\":3}}],[\"placed\",{\"1\":{\"10\":1,\"61\":1,\"67\":1,\"69\":1,\"73\":1,\"75\":1,\"76\":1,\"101\":4,\"102\":1}}],[\"place\",{\"1\":{\"10\":1,\"61\":2,\"72\":1,\"73\":2,\"81\":1,\"82\":1,\"83\":1,\"85\":2,\"96\":2,\"101\":1,\"105\":1}}],[\"planks\",{\"1\":{\"103\":1}}],[\"planting\",{\"1\":{\"79\":2,\"82\":1}}],[\"plants\",{\"0\":{\"80\":1,\"81\":1},\"1\":{\"79\":4,\"80\":4,\"81\":2,\"82\":5,\"83\":2}}],[\"plant\",{\"1\":{\"79\":4,\"80\":5,\"82\":2,\"83\":1}}],[\"planters\",{\"1\":{\"79\":1}}],[\"planter\",{\"1\":{\"79\":10,\"80\":3,\"82\":5,\"83\":1}}],[\"plantation\",{\"0\":{\"79\":1},\"1\":{\"76\":1,\"79\":2}}],[\"plantation5\",{\"1\":{\"74\":1}}],[\"plantation4\",{\"1\":{\"74\":1}}],[\"plantation3\",{\"1\":{\"74\":1}}],[\"plantation2\",{\"1\":{\"74\":1}}],[\"plantation1\",{\"1\":{\"74\":1}}],[\"plan\",{\"1\":{\"30\":1}}],[\"playing\",{\"1\":{\"70\":1}}],[\"play\",{\"1\":{\"20\":1,\"35\":1,\"36\":2}}],[\"players\",{\"0\":{\"14\":1,\"90\":1,\"91\":1},\"1\":{\"14\":2,\"16\":1,\"70\":1,\"71\":1,\"91\":1,\"96\":1}}],[\"player\",{\"1\":{\"12\":2,\"14\":2,\"60\":1,\"63\":1,\"64\":1,\"71\":1,\"82\":1,\"83\":1,\"86\":1,\"91\":2,\"96\":2}}],[\"parks\",{\"1\":{\"104\":1}}],[\"park\",{\"1\":{\"104\":1}}],[\"parent\",{\"0\":{\"96\":1},\"1\":{\"96\":30}}],[\"particular\",{\"1\":{\"95\":1,\"96\":1}}],[\"parts\",{\"1\":{\"95\":3}}],[\"part\",{\"1\":{\"95\":11,\"101\":1}}],[\"paths\",{\"1\":{\"103\":2}}],[\"path\",{\"1\":{\"30\":2,\"75\":4,\"93\":2}}],[\"patreon\",{\"1\":{\"0\":1}}],[\"pasting\",{\"1\":{\"96\":2}}],[\"pasted\",{\"1\":{\"96\":1}}],[\"pastes\",{\"1\":{\"96\":1}}],[\"paste\",{\"1\":{\"33\":1,\"96\":7}}],[\"past\",{\"1\":{\"20\":1}}],[\"packs\",{\"0\":{\"63\":1,\"94\":1,\"95\":1},\"1\":{\"61\":1,\"63\":1,\"64\":1,\"71\":1,\"72\":1}}],[\"pack\",{\"0\":{\"64\":1},\"1\":{\"16\":2,\"35\":1,\"61\":1,\"62\":2,\"63\":5,\"64\":6,\"67\":2,\"68\":1,\"69\":1,\"73\":1,\"88\":2,\"89\":1,\"94\":2,\"95\":1,\"96\":4,\"100\":1}}],[\"page\",{\"1\":{\"12\":3,\"13\":3,\"14\":7,\"15\":3,\"16\":2,\"17\":3,\"18\":3,\"29\":1,\"31\":1,\"34\":1,\"65\":1}}],[\"petrified\",{\"1\":{\"86\":1}}],[\"permitted\",{\"1\":{\"95\":1}}],[\"permission\",{\"1\":{\"12\":2,\"14\":2}}],[\"permissions3\",{\"1\":{\"14\":1}}],[\"permissions2\",{\"1\":{\"14\":1}}],[\"permissions1\",{\"1\":{\"14\":1}}],[\"permissions\",{\"0\":{\"14\":1},\"1\":{\"10\":1,\"14\":4}}],[\"percentage\",{\"0\":{\"83\":1},\"1\":{\"83\":2}}],[\"per\",{\"1\":{\"76\":21,\"95\":1}}],[\"performing\",{\"1\":{\"68\":1}}],[\"people\",{\"1\":{\"0\":1}}],[\"hmcl\",{\"0\":{\"21\":1}}],[\"hutlevel\",{\"1\":{\"73\":1}}],[\"hutname\",{\"1\":{\"73\":2}}],[\"huts\",{\"0\":{\"73\":1,\"89\":1,\"90\":1},\"1\":{\"17\":1,\"72\":1,\"73\":2,\"89\":2,\"91\":1,\"92\":1}}],[\"hut\",{\"0\":{\"74\":1,\"76\":1},\"1\":{\"16\":1,\"61\":3,\"73\":13,\"74\":1,\"75\":2,\"76\":1,\"85\":3,\"89\":1,\"95\":2,\"96\":12,\"99\":1,\"100\":3}}],[\"high\",{\"1\":{\"106\":1}}],[\"highest\",{\"1\":{\"65\":1}}],[\"higher\",{\"1\":{\"14\":1,\"80\":1,\"96\":4}}],[\"hidden\",{\"1\":{\"73\":1}}],[\"hit\",{\"1\":{\"32\":1,\"36\":1}}],[\"hiring\",{\"1\":{\"16\":1}}],[\"hired\",{\"0\":{\"16\":1},\"1\":{\"16\":1}}],[\"hire\",{\"1\":{\"13\":2,\"16\":2}}],[\"horizontally\",{\"1\":{\"81\":1}}],[\"horizontal\",{\"1\":{\"76\":1}}],[\"hospital\",{\"1\":{\"76\":1}}],[\"hospital5\",{\"1\":{\"74\":1}}],[\"hospital4\",{\"1\":{\"74\":1}}],[\"hospital3\",{\"1\":{\"74\":1}}],[\"hospital2\",{\"1\":{\"74\":1}}],[\"hospital1\",{\"1\":{\"74\":1}}],[\"hostile\",{\"1\":{\"14\":1}}],[\"holds\",{\"1\":{\"71\":1}}],[\"hot\",{\"1\":{\"65\":1}}],[\"hover\",{\"1\":{\"20\":1}}],[\"hovering\",{\"1\":{\"12\":1}}],[\"housed\",{\"1\":{\"16\":1}}],[\"house\",{\"1\":{\"16\":3,\"76\":1}}],[\"housing\",{\"0\":{\"16\":1},\"1\":{\"16\":2}}],[\"how\",{\"0\":{\"16\":1,\"67\":1,\"73\":1,\"88\":1,\"89\":1,\"90\":1,\"91\":1,\"92\":1,\"93\":1,\"94\":1,\"95\":1,\"96\":1},\"1\":{\"12\":1,\"16\":1,\"28\":1,\"65\":1,\"67\":1,\"99\":1,\"105\":3}}],[\"however\",{\"1\":{\"0\":1,\"28\":1,\"70\":1,\"79\":1,\"82\":1,\"96\":1}}],[\"heads\",{\"1\":{\"86\":2}}],[\"header\",{\"1\":{\"17\":1}}],[\"height\",{\"1\":{\"80\":5}}],[\"here\",{\"0\":{\"14\":1,\"17\":1},\"1\":{\"12\":2,\"13\":3,\"14\":4,\"15\":2,\"16\":3,\"17\":1,\"18\":1,\"20\":1,\"33\":2,\"34\":1,\"65\":1,\"74\":1}}],[\"helpful\",{\"1\":{\"96\":1}}],[\"help\",{\"1\":{\"0\":2,\"13\":1,\"16\":2,\"65\":1,\"83\":1,\"96\":1}}],[\"hand\",{\"1\":{\"100\":1}}],[\"handles\",{\"1\":{\"79\":1}}],[\"had\",{\"1\":{\"82\":1}}],[\"harvesting\",{\"0\":{\"83\":1},\"1\":{\"83\":1}}],[\"harvest\",{\"1\":{\"79\":2,\"80\":2}}],[\"hard\",{\"1\":{\"0\":1}}],[\"hay\",{\"1\":{\"76\":2}}],[\"has\",{\"1\":{\"63\":1,\"79\":3,\"82\":1,\"83\":1}}],[\"having\",{\"1\":{\"28\":1}}],[\"have\",{\"0\":{\"70\":1,\"71\":1,\"97\":1},\"1\":{\"10\":1,\"12\":2,\"13\":5,\"14\":3,\"16\":2,\"17\":2,\"20\":1,\"30\":1,\"34\":1,\"36\":1,\"60\":1,\"61\":3,\"62\":4,\"64\":1,\"65\":4,\"68\":1,\"72\":1,\"73\":5,\"79\":1,\"80\":3,\"85\":1,\"89\":1,\"90\":1,\"95\":3,\"96\":13,\"101\":1}}],[\"happened\",{\"1\":{\"12\":2}}],[\"happiness\",{\"0\":{\"18\":2},\"1\":{\"12\":1,\"18\":3}}],[\"hall\",{\"0\":{\"12\":1},\"1\":{\"10\":3,\"15\":1,\"99\":3,\"100\":1}}],[\"generic\",{\"1\":{\"101\":1}}],[\"generates\",{\"1\":{\"105\":1}}],[\"generate\",{\"1\":{\"99\":1}}],[\"generation\",{\"1\":{\"99\":2}}],[\"gets\",{\"1\":{\"80\":1}}],[\"getting\",{\"0\":{\"99\":1},\"1\":{\"20\":3,\"72\":1,\"85\":1}}],[\"get\",{\"0\":{\"72\":1},\"1\":{\"12\":1,\"61\":1,\"79\":1,\"96\":3}}],[\"glassblower\",{\"1\":{\"76\":1}}],[\"glassblower5\",{\"1\":{\"74\":1}}],[\"glassblower4\",{\"1\":{\"74\":1}}],[\"glassblower3\",{\"1\":{\"74\":1}}],[\"glassblower2\",{\"1\":{\"74\":1}}],[\"glassblower1\",{\"1\":{\"74\":1}}],[\"global\",{\"0\":{\"18\":1}}],[\"glowberries\",{\"1\":{\"80\":1}}],[\"glowb\",{\"1\":{\"79\":2}}],[\"glowstone\",{\"1\":{\"76\":1}}],[\"glow\",{\"1\":{\"16\":1,\"79\":1}}],[\"grass\",{\"1\":{\"103\":1}}],[\"gravel\",{\"1\":{\"103\":1}}],[\"graves\",{\"1\":{\"76\":6}}],[\"graveyard\",{\"1\":{\"76\":1}}],[\"graveyard5\",{\"1\":{\"74\":1}}],[\"graveyard4\",{\"1\":{\"74\":1}}],[\"graveyard3\",{\"1\":{\"74\":1}}],[\"graveyard2\",{\"1\":{\"74\":1}}],[\"graveyard1\",{\"1\":{\"74\":1}}],[\"grow\",{\"1\":{\"80\":1,\"81\":1,\"82\":4}}],[\"growth\",{\"1\":{\"80\":1}}],[\"grows\",{\"1\":{\"80\":2}}],[\"growing\",{\"0\":{\"80\":1},\"1\":{\"79\":1,\"80\":2}}],[\"ground\",{\"1\":{\"75\":1,\"79\":2,\"82\":4,\"85\":3,\"95\":1}}],[\"groundlevel\",{\"1\":{\"75\":1,\"85\":1}}],[\"group\",{\"1\":{\"65\":1}}],[\"greyed\",{\"1\":{\"73\":1}}],[\"green\",{\"1\":{\"12\":1,\"18\":1,\"61\":1}}],[\"greater\",{\"1\":{\"0\":1}}],[\"g\",{\"1\":{\"61\":1,\"65\":1,\"73\":2,\"96\":3,\"100\":1}}],[\"games\",{\"1\":{\"68\":3,\"69\":1}}],[\"game\",{\"1\":{\"28\":1,\"60\":1,\"65\":2,\"68\":1,\"71\":1,\"73\":1,\"89\":1,\"95\":1,\"96\":1,\"105\":1}}],[\"gaming\",{\"1\":{\"0\":1}}],[\"good\",{\"1\":{\"96\":1}}],[\"google\",{\"1\":{\"28\":1}}],[\"goals\",{\"1\":{\"96\":1}}],[\"goes\",{\"1\":{\"67\":1}}],[\"go\",{\"1\":{\"20\":1,\"29\":1,\"31\":1,\"32\":1,\"36\":1,\"61\":1,\"65\":1,\"67\":1,\"76\":1,\"96\":2,\"99\":1}}],[\"gdlauncher以及curseforge\",{\"1\":{\"39\":1}}],[\"gdlauncher\",{\"0\":{\"20\":1},\"1\":{\"20\":15,\"28\":1,\"35\":1}}],[\"guessing\",{\"1\":{\"75\":1}}],[\"guardtower5\",{\"1\":{\"74\":1}}],[\"guardtower4\",{\"1\":{\"74\":1}}],[\"guardtower3\",{\"1\":{\"74\":1}}],[\"guardtower2\",{\"1\":{\"74\":1}}],[\"guardtower1\",{\"1\":{\"74\":1}}],[\"guardtower\",{\"1\":{\"16\":1,\"76\":1}}],[\"guards\",{\"1\":{\"14\":2,\"16\":2}}],[\"guidelines\",{\"1\":{\"73\":1}}],[\"gui\",{\"0\":{\"11\":1,\"12\":1},\"1\":{\"12\":3,\"13\":2,\"14\":6,\"15\":2,\"16\":2,\"17\":2,\"18\":2,\"57\":1,\"61\":1}}],[\"giving\",{\"1\":{\"14\":1,\"96\":1}}],[\"given\",{\"1\":{\"79\":2,\"83\":1,\"91\":1,\"105\":1}}],[\"give\",{\"1\":{\"0\":1,\"14\":1,\"60\":1}}],[\"github\",{\"1\":{\"0\":1,\"65\":2}}],[\"edge\",{\"1\":{\"101\":1}}],[\"editing\",{\"1\":{\"91\":1,\"101\":1}}],[\"edit\",{\"1\":{\"16\":1,\"91\":1,\"92\":1,\"101\":1}}],[\"editor\",{\"1\":{\"0\":1}}],[\"empty\",{\"1\":{\"100\":1}}],[\"embed\",{\"1\":{\"96\":1}}],[\"embedding\",{\"1\":{\"96\":1}}],[\"embedded\",{\"1\":{\"96\":2}}],[\"equivalent\",{\"1\":{\"99\":1}}],[\"effect\",{\"1\":{\"82\":1}}],[\"error\",{\"1\":{\"73\":1,\"96\":1}}],[\"especially\",{\"1\":{\"65\":1,\"96\":1}}],[\"escape\",{\"1\":{\"61\":1}}],[\"easy\",{\"1\":{\"77\":2,\"78\":2}}],[\"easier\",{\"1\":{\"65\":1}}],[\"early\",{\"1\":{\"65\":1}}],[\"each\",{\"1\":{\"12\":1,\"14\":1,\"16\":1,\"20\":2,\"65\":2,\"73\":2,\"76\":2,\"79\":2,\"80\":1,\"95\":3,\"96\":4,\"99\":2,\"101\":1,\"102\":1}}],[\"etc\",{\"1\":{\"63\":1,\"67\":1,\"95\":1,\"96\":2}}],[\"e\",{\"1\":{\"61\":1,\"65\":1,\"73\":2,\"76\":1,\"94\":1,\"95\":1,\"96\":5,\"100\":1}}],[\"elements\",{\"1\":{\"95\":1}}],[\"else\",{\"1\":{\"86\":1}}],[\"elsewhere\",{\"1\":{\"20\":1,\"95\":1}}],[\"eligible\",{\"1\":{\"61\":1}}],[\"every\",{\"1\":{\"81\":1,\"82\":1,\"96\":1}}],[\"everything\",{\"1\":{\"61\":1}}],[\"events\",{\"1\":{\"12\":2}}],[\"even\",{\"1\":{\"0\":2,\"71\":1,\"73\":1,\"96\":2}}],[\"existing\",{\"1\":{\"72\":1,\"85\":1,\"88\":1,\"94\":1,\"105\":1}}],[\"example\",{\"0\":{\"106\":1},\"1\":{\"73\":2,\"75\":2,\"79\":2,\"80\":1,\"101\":1}}],[\"examples\",{\"1\":{\"65\":1}}],[\"exactly\",{\"1\":{\"73\":1,\"94\":1,\"95\":1}}],[\"exact\",{\"1\":{\"34\":1,\"61\":1}}],[\"extension\",{\"1\":{\"73\":1}}],[\"external\",{\"0\":{\"35\":1},\"1\":{\"35\":1}}],[\"extra\",{\"1\":{\"65\":1}}],[\"extracting\",{\"1\":{\"33\":1}}],[\"extract\",{\"1\":{\"33\":1}}],[\"export\",{\"1\":{\"99\":1}}],[\"expected\",{\"1\":{\"73\":1}}],[\"experience\",{\"1\":{\"0\":2}}],[\"exploring\",{\"1\":{\"99\":1}}],[\"explore\",{\"1\":{\"20\":1,\"98\":1}}],[\"explicitly\",{\"1\":{\"72\":1,\"96\":2}}],[\"explain\",{\"1\":{\"64\":1}}],[\"excellent\",{\"1\":{\"28\":1}}],[\"exception\",{\"1\":{\"79\":1}}],[\"exceptions\",{\"1\":{\"65\":1}}],[\"except\",{\"1\":{\"17\":1,\"34\":1,\"73\":2}}],[\"exclusively\",{\"1\":{\"101\":1}}],[\"exclusive\",{\"1\":{\"16\":1}}],[\"encouraged\",{\"1\":{\"95\":1}}],[\"enclosed\",{\"1\":{\"76\":1}}],[\"enchanter5\",{\"1\":{\"74\":1}}],[\"enchanter4\",{\"1\":{\"74\":1}}],[\"enchanter3\",{\"1\":{\"74\":1}}],[\"enchanter2\",{\"1\":{\"74\":1}}],[\"enchanter1\",{\"1\":{\"74\":1}}],[\"ends\",{\"1\":{\"93\":1}}],[\"end\",{\"1\":{\"73\":2,\"77\":1,\"78\":1,\"101\":1}}],[\"endversion\",{\"1\":{\"61\":2,\"62\":2,\"65\":1,\"67\":2,\"68\":2,\"69\":2,\"70\":2,\"71\":1,\"73\":2,\"75\":2,\"83\":1,\"88\":2,\"89\":2,\"93\":2,\"94\":2,\"95\":2,\"96\":2}}],[\"endbuilding\",{\"1\":{\"12\":1,\"13\":1,\"14\":3,\"15\":1,\"16\":1,\"17\":1,\"18\":1}}],[\"entrance\",{\"1\":{\"101\":4}}],[\"entity\",{\"1\":{\"60\":1}}],[\"entirely\",{\"1\":{\"94\":1}}],[\"entire\",{\"1\":{\"35\":1,\"61\":1,\"71\":1,\"88\":1}}],[\"enter\",{\"1\":{\"14\":1,\"20\":3,\"61\":1}}],[\"ensure\",{\"1\":{\"34\":1,\"73\":1,\"79\":1,\"100\":1}}],[\"enemy\",{\"1\":{\"14\":1}}],[\"enabled\",{\"1\":{\"13\":1}}],[\"either\",{\"1\":{\"10\":1,\"67\":1,\"72\":2,\"80\":1,\"96\":4}}],[\"written\",{\"1\":{\"85\":1}}],[\"writing\",{\"1\":{\"20\":1}}],[\"wrong\",{\"1\":{\"18\":1}}],[\"wood\",{\"1\":{\"86\":1}}],[\"wooden\",{\"1\":{\"77\":1,\"88\":2,\"103\":1}}],[\"won\",{\"1\":{\"71\":1,\"73\":1,\"96\":2}}],[\"world\",{\"1\":{\"72\":1,\"98\":2,\"99\":5,\"105\":1}}],[\"worst\",{\"1\":{\"18\":1}}],[\"works\",{\"1\":{\"35\":1,\"70\":1,\"82\":1,\"96\":1}}],[\"workorders\",{\"1\":{\"17\":1}}],[\"work\",{\"0\":{\"17\":2},\"1\":{\"17\":5,\"34\":1,\"73\":1,\"76\":1,\"79\":11,\"82\":3,\"96\":2}}],[\"workplace\",{\"1\":{\"16\":1}}],[\"workers\",{\"1\":{\"16\":1}}],[\"worker\",{\"1\":{\"12\":1,\"16\":3,\"17\":2,\"48\":1,\"60\":1,\"62\":1,\"79\":7}}],[\"working\",{\"1\":{\"0\":1,\"81\":2}}],[\"would\",{\"1\":{\"14\":1,\"73\":1,\"75\":2,\"79\":1,\"101\":2}}],[\"whilst\",{\"1\":{\"79\":1}}],[\"while\",{\"1\":{\"65\":1,\"93\":1,\"95\":1,\"96\":2}}],[\"white\",{\"1\":{\"20\":2,\"61\":1}}],[\"whichever\",{\"1\":{\"16\":1}}],[\"which\",{\"1\":{\"12\":1,\"13\":1,\"16\":2,\"18\":1,\"34\":1,\"64\":1,\"65\":3,\"67\":1,\"68\":1,\"79\":2,\"94\":2,\"95\":1,\"96\":1,\"105\":2}}],[\"wherever\",{\"1\":{\"96\":2}}],[\"where\",{\"0\":{\"16\":1,\"68\":1,\"69\":1},\"1\":{\"14\":1,\"16\":1,\"17\":1,\"32\":1,\"34\":1,\"61\":1,\"62\":1,\"68\":1,\"70\":1,\"75\":1,\"76\":1,\"79\":2,\"82\":4,\"83\":2,\"85\":1,\"93\":1,\"95\":1,\"96\":2,\"101\":2}}],[\"whenever\",{\"1\":{\"64\":3}}],[\"when\",{\"1\":{\"12\":1,\"15\":1,\"16\":3,\"17\":1,\"20\":3,\"30\":1,\"61\":1,\"64\":1,\"65\":1,\"70\":2,\"71\":1,\"73\":1,\"75\":1,\"80\":2,\"85\":1,\"91\":1,\"95\":2,\"96\":8,\"101\":3,\"103\":1,\"105\":2}}],[\"whether\",{\"1\":{\"0\":1,\"16\":2,\"20\":1,\"75\":1,\"96\":2}}],[\"whatever\",{\"1\":{\"16\":1,\"20\":1}}],[\"what\",{\"0\":{\"18\":1,\"68\":1,\"70\":1,\"71\":1,\"97\":1},\"1\":{\"12\":1,\"64\":1,\"79\":1,\"95\":1}}],[\"wildwestsupplycamp\",{\"1\":{\"75\":1}}],[\"wildwest\",{\"1\":{\"75\":3}}],[\"will\",{\"0\":{\"16\":1,\"17\":1},\"1\":{\"10\":1,\"12\":5,\"13\":2,\"14\":1,\"15\":2,\"16\":11,\"17\":4,\"18\":2,\"20\":2,\"28\":2,\"30\":1,\"32\":2,\"35\":2,\"61\":1,\"62\":2,\"63\":1,\"64\":1,\"71\":1,\"76\":1,\"79\":7,\"80\":2,\"81\":1,\"82\":5,\"83\":1,\"90\":1,\"91\":1,\"92\":1,\"93\":1,\"96\":6,\"98\":1,\"99\":2,\"101\":1,\"103\":1,\"105\":1}}],[\"windows\",{\"1\":{\"35\":2}}],[\"wish\",{\"1\":{\"20\":1,\"35\":1,\"96\":1,\"98\":1}}],[\"without\",{\"0\":{\"35\":1},\"1\":{\"33\":1,\"73\":2,\"75\":1,\"83\":1}}],[\"within\",{\"1\":{\"12\":1,\"63\":1,\"79\":1,\"80\":1,\"96\":4}}],[\"with\",{\"1\":{\"10\":1,\"20\":1,\"28\":1,\"60\":1,\"61\":1,\"62\":2,\"63\":3,\"64\":1,\"65\":2,\"73\":4,\"76\":6,\"82\":2,\"85\":1,\"88\":2,\"93\":3,\"94\":2,\"95\":2,\"96\":6,\"100\":2,\"101\":1,\"103\":1,\"104\":1,\"105\":1,\"106\":1}}],[\"wiki\",{\"1\":{\"0\":1}}],[\"walking\",{\"1\":{\"79\":1}}],[\"walk\",{\"1\":{\"79\":4,\"82\":2}}],[\"walls\",{\"1\":{\"67\":1,\"95\":1,\"96\":1}}],[\"water\",{\"1\":{\"76\":3,\"79\":2,\"82\":2,\"103\":1}}],[\"was\",{\"1\":{\"67\":1,\"70\":2,\"95\":1,\"96\":1}}],[\"wait\",{\"1\":{\"20\":1}}],[\"way\",{\"1\":{\"20\":1,\"71\":1,\"96\":2,\"98\":1,\"99\":1}}],[\"warpedp\",{\"1\":{\"79\":2}}],[\"warped\",{\"1\":{\"79\":1,\"82\":1}}],[\"warned\",{\"1\":{\"13\":1}}],[\"warehouse5\",{\"1\":{\"74\":1}}],[\"warehouse4\",{\"1\":{\"74\":1}}],[\"warehouse3\",{\"1\":{\"74\":1}}],[\"warehouse2\",{\"1\":{\"74\":1}}],[\"warehouse1\",{\"1\":{\"74\":1}}],[\"warehouse\",{\"1\":{\"0\":1,\"48\":1,\"76\":1,\"96\":1}}],[\"want\",{\"1\":{\"0\":1,\"13\":1,\"14\":3,\"16\":1,\"61\":2,\"65\":1,\"79\":1,\"85\":1}}],[\"weathered\",{\"1\":{\"104\":1}}],[\"wear\",{\"1\":{\"16\":1}}],[\"weepv\",{\"1\":{\"79\":2}}],[\"weeping\",{\"1\":{\"79\":1,\"80\":1}}],[\"website\",{\"1\":{\"34\":1}}],[\"went\",{\"1\":{\"18\":1}}],[\"we\",{\"1\":{\"0\":1,\"28\":2,\"73\":1,\"102\":1}}],[\"well\",{\"1\":{\"0\":1,\"13\":3,\"14\":1,\"17\":1,\"28\":2,\"96\":2}}],[\"lumberjack5\",{\"1\":{\"74\":1}}],[\"lumberjack4\",{\"1\":{\"74\":1}}],[\"lumberjack3\",{\"1\":{\"74\":1}}],[\"lumberjack2\",{\"1\":{\"74\":1}}],[\"lumberjack1\",{\"1\":{\"74\":1}}],[\"ll\",{\"1\":{\"20\":4,\"34\":1,\"93\":1,\"96\":2,\"98\":1}}],[\"labels\",{\"1\":{\"96\":1}}],[\"layers\",{\"1\":{\"96\":1}}],[\"layer\",{\"1\":{\"95\":3}}],[\"layout\",{\"1\":{\"94\":1}}],[\"ladder\",{\"1\":{\"76\":1}}],[\"ladders\",{\"1\":{\"76\":2}}],[\"later\",{\"1\":{\"65\":1,\"70\":1,\"105\":1}}],[\"latest\",{\"1\":{\"20\":4,\"29\":1,\"31\":1,\"34\":1}}],[\"last\",{\"1\":{\"34\":1}}],[\"launch\",{\"1\":{\"20\":2}}],[\"launcher上找到相应的安装说明\",{\"1\":{\"39\":1}}],[\"launcher下载并安装模拟殖民地\",{\"1\":{\"21\":1}}],[\"launcher\",{\"0\":{\"22\":1,\"28\":1},\"1\":{\"20\":1,\"28\":2,\"35\":3,\"36\":1}}],[\"large\",{\"1\":{\"16\":2}}],[\"light\",{\"1\":{\"96\":3}}],[\"lightly\",{\"1\":{\"82\":1}}],[\"limited\",{\"1\":{\"96\":1}}],[\"limit\",{\"1\":{\"91\":2,\"96\":1}}],[\"library\",{\"1\":{\"76\":1}}],[\"library5\",{\"1\":{\"74\":1}}],[\"library4\",{\"1\":{\"74\":1}}],[\"library3\",{\"1\":{\"74\":1}}],[\"library2\",{\"1\":{\"74\":1}}],[\"library1\",{\"1\":{\"74\":1}}],[\"live\",{\"1\":{\"63\":1}}],[\"licensing\",{\"1\":{\"35\":1}}],[\"line\",{\"1\":{\"80\":1,\"96\":1}}],[\"linux\",{\"1\":{\"35\":1}}],[\"link\",{\"1\":{\"13\":1,\"16\":3,\"17\":2,\"48\":3,\"59\":1,\"60\":1,\"62\":1,\"63\":1,\"73\":1,\"76\":28,\"79\":7,\"88\":1,\"95\":1}}],[\"listed\",{\"1\":{\"73\":1}}],[\"list\",{\"1\":{\"14\":2,\"15\":1,\"17\":1,\"74\":1,\"101\":1}}],[\"like\",{\"1\":{\"12\":2,\"14\":1,\"20\":1,\"60\":1,\"62\":1,\"67\":1,\"72\":2,\"73\":2,\"79\":2,\"85\":1,\"95\":1,\"96\":4,\"99\":1,\"103\":1,\"104\":1}}],[\"low\",{\"1\":{\"99\":1,\"106\":1}}],[\"lowest\",{\"1\":{\"61\":1}}],[\"lowercase\",{\"1\":{\"73\":1}}],[\"lower\",{\"1\":{\"14\":1,\"18\":1}}],[\"locked\",{\"1\":{\"96\":1}}],[\"location\",{\"1\":{\"76\":1,\"82\":1,\"83\":1,\"85\":2,\"96\":3,\"106\":1}}],[\"located\",{\"1\":{\"68\":2}}],[\"loops\",{\"1\":{\"96\":2}}],[\"looks\",{\"1\":{\"62\":1}}],[\"look\",{\"1\":{\"16\":1,\"68\":1,\"69\":1,\"79\":1,\"96\":1,\"99\":1}}],[\"looking\",{\"1\":{\"0\":1}}],[\"loaded\",{\"1\":{\"36\":1}}],[\"longer\",{\"1\":{\"35\":2,\"70\":1}}],[\"logs\",{\"1\":{\"76\":1,\"106\":1}}],[\"logged\",{\"1\":{\"20\":1,\"71\":1}}],[\"log\",{\"1\":{\"12\":1,\"20\":2,\"106\":1}}],[\"lectern\",{\"1\":{\"85\":1}}],[\"leaves\",{\"1\":{\"76\":1}}],[\"least\",{\"1\":{\"76\":2}}],[\"learn\",{\"1\":{\"13\":1}}],[\"legacy\",{\"1\":{\"75\":1}}],[\"legal\",{\"1\":{\"12\":1}}],[\"left\",{\"1\":{\"17\":1,\"20\":3,\"61\":2,\"62\":1}}],[\"levelling\",{\"1\":{\"96\":2}}],[\"levels\",{\"0\":{\"15\":1},\"1\":{\"85\":2,\"96\":3}}],[\"level\",{\"0\":{\"18\":1,\"77\":1,\"78\":1},\"1\":{\"13\":1,\"65\":1,\"73\":7,\"74\":5,\"75\":3,\"76\":30,\"77\":6,\"78\":6,\"85\":4,\"88\":1,\"93\":1,\"95\":3,\"96\":17,\"99\":2,\"101\":1}}],[\"less\",{\"1\":{\"12\":1}}],[\"letters\",{\"1\":{\"73\":1,\"74\":1}}],[\"lets\",{\"1\":{\"13\":1,\"16\":4}}],[\"let\",{\"1\":{\"0\":1,\"82\":1}}],[\"ldt\",{\"1\":{\"0\":1}}],[\"tips\",{\"0\":{\"84\":1}}],[\"time\",{\"1\":{\"16\":2,\"20\":1,\"71\":1,\"91\":1,\"96\":1}}],[\"typically\",{\"1\":{\"72\":1}}],[\"types\",{\"1\":{\"96\":1}}],[\"type\",{\"1\":{\"12\":1,\"14\":1,\"32\":1,\"64\":1,\"96\":1,\"99\":1,\"106\":2}}],[\"twistv\",{\"1\":{\"79\":2}}],[\"twisting\",{\"1\":{\"79\":1,\"80\":1}}],[\"twitch\",{\"1\":{\"20\":2}}],[\"two\",{\"1\":{\"65\":1,\"95\":2,\"96\":1}}],[\"turning\",{\"1\":{\"104\":1}}],[\"turn\",{\"1\":{\"98\":1}}],[\"turns\",{\"1\":{\"85\":1,\"101\":4,\"105\":1}}],[\"turned\",{\"1\":{\"13\":1,\"16\":1}}],[\"tutorials\",{\"1\":{\"28\":1}}],[\"target\",{\"1\":{\"101\":7}}],[\"taller\",{\"1\":{\"80\":1}}],[\"tagging\",{\"0\":{\"100\":1}}],[\"tagged\",{\"1\":{\"76\":1,\"79\":4,\"81\":1,\"82\":5}}],[\"tags\",{\"1\":{\"76\":2,\"79\":4,\"81\":1}}],[\"tag\",{\"1\":{\"61\":1,\"75\":2,\"76\":1,\"79\":6,\"81\":1,\"82\":5,\"83\":2,\"85\":1,\"94\":2,\"95\":1,\"96\":2,\"100\":4}}],[\"take\",{\"1\":{\"61\":1,\"94\":1,\"96\":1}}],[\"taken\",{\"1\":{\"34\":1}}],[\"tavern3\",{\"1\":{\"74\":1}}],[\"tavern2\",{\"1\":{\"74\":1}}],[\"tavern1\",{\"1\":{\"74\":1}}],[\"tavern\",{\"1\":{\"16\":1,\"73\":1,\"76\":1}}],[\"tab\",{\"1\":{\"12\":1,\"20\":3}}],[\"true\",{\"1\":{\"91\":1,\"92\":1,\"106\":1}}],[\"tree\",{\"1\":{\"81\":1}}],[\"treeside\",{\"0\":{\"81\":1},\"1\":{\"81\":1}}],[\"trees\",{\"1\":{\"76\":1,\"81\":1}}],[\"treats\",{\"1\":{\"105\":1}}],[\"treat\",{\"1\":{\"14\":1}}],[\"track\",{\"1\":{\"18\":1}}],[\"tries\",{\"1\":{\"12\":1}}],[\"tried\",{\"1\":{\"12\":1}}],[\"t\",{\"0\":{\"86\":1},\"1\":{\"12\":1,\"16\":1,\"34\":1,\"64\":1,\"65\":3,\"68\":1,\"71\":1,\"73\":3,\"85\":1,\"93\":1,\"94\":1,\"96\":12}}],[\"through\",{\"1\":{\"85\":1}}],[\"three\",{\"1\":{\"16\":1,\"34\":1,\"101\":1,\"102\":1}}],[\"those\",{\"1\":{\"64\":1,\"65\":1,\"67\":1,\"70\":2}}],[\"though\",{\"1\":{\"28\":1,\"71\":2,\"96\":2,\"99\":1}}],[\"thing\",{\"0\":{\"34\":1},\"1\":{\"100\":1}}],[\"things\",{\"0\":{\"16\":1},\"1\":{\"73\":1,\"92\":1,\"96\":3}}],[\"this\",{\"0\":{\"12\":1,\"13\":1,\"15\":1,\"16\":1,\"18\":1},\"1\":{\"13\":1,\"15\":1,\"16\":12,\"17\":1,\"20\":2,\"28\":1,\"32\":2,\"63\":3,\"64\":3,\"66\":1,\"67\":1,\"68\":4,\"70\":3,\"71\":2,\"79\":5,\"81\":2,\"83\":1,\"88\":1,\"91\":1,\"95\":3,\"96\":8,\"98\":2,\"99\":1,\"101\":2,\"103\":2,\"104\":1,\"105\":1}}],[\"that\",{\"0\":{\"70\":1,\"71\":1},\"1\":{\"12\":2,\"13\":4,\"14\":5,\"16\":1,\"17\":1,\"18\":1,\"34\":1,\"35\":1,\"36\":1,\"60\":1,\"61\":2,\"62\":1,\"63\":1,\"65\":1,\"67\":1,\"69\":1,\"70\":1,\"71\":2,\"73\":7,\"79\":1,\"80\":2,\"81\":2,\"82\":2,\"88\":1,\"93\":1,\"94\":2,\"95\":2,\"96\":16,\"98\":1,\"99\":2,\"100\":2,\"101\":3,\"102\":1,\"105\":1,\"106\":1}}],[\"than\",{\"1\":{\"12\":1,\"72\":1,\"73\":1,\"95\":1,\"96\":1}}],[\"th\",{\"1\":{\"12\":1,\"13\":1,\"14\":3,\"15\":1,\"16\":1,\"17\":1,\"18\":1}}],[\"these\",{\"1\":{\"28\":1,\"36\":1,\"71\":2,\"79\":1,\"80\":3,\"81\":1,\"82\":1,\"83\":1,\"96\":1,\"98\":1,\"105\":1}}],[\"then\",{\"0\":{\"72\":1},\"1\":{\"20\":1,\"60\":1,\"61\":3,\"73\":1,\"82\":1,\"83\":1,\"95\":1,\"96\":3}}],[\"thereof\",{\"1\":{\"67\":1}}],[\"there\",{\"1\":{\"16\":2,\"18\":1,\"28\":1,\"62\":1,\"65\":1,\"68\":1,\"69\":1,\"73\":1,\"79\":1,\"96\":4,\"97\":1,\"98\":1,\"99\":1,\"101\":1,\"102\":1}}],[\"themselves\",{\"1\":{\"71\":1,\"83\":1}}],[\"them\",{\"1\":{\"14\":3,\"15\":1,\"16\":2,\"17\":1,\"60\":1,\"64\":1,\"65\":3,\"72\":1,\"73\":2,\"79\":1,\"80\":1,\"82\":1,\"89\":1,\"90\":1,\"95\":1,\"96\":2,\"105\":1}}],[\"their\",{\"0\":{\"90\":1,\"91\":1},\"1\":{\"14\":1,\"15\":2,\"16\":3,\"73\":2,\"79\":1,\"80\":1,\"83\":1,\"91\":2,\"96\":1}}],[\"they\",{\"1\":{\"12\":1,\"13\":1,\"16\":1,\"17\":3,\"61\":3,\"68\":2,\"70\":1,\"71\":3,\"73\":1,\"75\":1,\"79\":2,\"80\":1,\"85\":1,\"94\":1,\"96\":3,\"99\":1}}],[\"the\",{\"0\":{\"12\":2,\"13\":1,\"15\":2,\"17\":1,\"18\":3,\"34\":1,\"64\":1,\"65\":1,\"68\":1,\"69\":1,\"72\":1},\"1\":{\"0\":7,\"10\":3,\"12\":15,\"13\":10,\"14\":14,\"15\":2,\"16\":8,\"17\":11,\"18\":4,\"20\":37,\"28\":14,\"29\":3,\"30\":3,\"31\":2,\"32\":6,\"33\":6,\"34\":9,\"35\":6,\"36\":1,\"60\":3,\"61\":24,\"62\":11,\"63\":4,\"64\":15,\"65\":9,\"67\":9,\"68\":3,\"69\":2,\"70\":7,\"71\":3,\"72\":4,\"73\":43,\"74\":1,\"75\":12,\"76\":5,\"79\":43,\"80\":11,\"81\":6,\"82\":25,\"83\":6,\"85\":10,\"88\":4,\"89\":5,\"90\":2,\"91\":6,\"92\":1,\"93\":16,\"94\":15,\"95\":36,\"96\":95,\"97\":1,\"98\":3,\"99\":11,\"100\":13,\"101\":20,\"102\":1,\"103\":3,\"104\":1,\"105\":6,\"106\":1}}],[\"terminators\",{\"1\":{\"101\":2}}],[\"temporary\",{\"1\":{\"96\":1}}],[\"template\",{\"1\":{\"65\":2,\"94\":1}}],[\"tell\",{\"1\":{\"82\":1,\"100\":1}}],[\"teleport\",{\"1\":{\"79\":1}}],[\"testing\",{\"1\":{\"64\":1}}],[\"test\",{\"1\":{\"63\":1}}],[\"tester\",{\"1\":{\"0\":1}}],[\"team\",{\"1\":{\"0\":1,\"16\":1}}],[\"toml\",{\"1\":{\"91\":1,\"92\":1}}],[\"too\",{\"1\":{\"82\":1,\"96\":2,\"99\":1,\"106\":2}}],[\"tooltip\",{\"1\":{\"96\":1}}],[\"tool\",{\"1\":{\"16\":1,\"60\":2,\"61\":1,\"62\":4,\"64\":2,\"65\":1,\"68\":1,\"70\":1,\"73\":4,\"75\":1,\"76\":1,\"89\":1,\"94\":2,\"96\":3,\"100\":1}}],[\"totalling\",{\"1\":{\"79\":1}}],[\"toward\",{\"1\":{\"101\":1}}],[\"towers\",{\"1\":{\"85\":1,\"96\":1}}],[\"tower\",{\"1\":{\"76\":1,\"96\":1}}],[\"townhall5\",{\"1\":{\"74\":1}}],[\"townhall4\",{\"1\":{\"74\":1}}],[\"townhall3\",{\"1\":{\"74\":1}}],[\"townhall2\",{\"1\":{\"74\":1}}],[\"townhall1\",{\"1\":{\"74\":1}}],[\"townhall\",{\"1\":{\"12\":2,\"13\":3,\"14\":3,\"15\":1,\"16\":1,\"17\":1,\"18\":1}}],[\"town\",{\"0\":{\"12\":1},\"1\":{\"10\":3,\"15\":1,\"99\":3,\"100\":1}}],[\"top\",{\"1\":{\"17\":2,\"20\":4,\"34\":1,\"61\":1,\"76\":1,\"79\":1,\"95\":7}}],[\"toggle\",{\"1\":{\"14\":1}}],[\"together\",{\"1\":{\"0\":1,\"65\":1,\"96\":2}}],[\"to\",{\"0\":{\"14\":2,\"18\":1,\"32\":1,\"33\":1,\"72\":1,\"73\":1,\"88\":1,\"89\":1,\"90\":2,\"91\":2,\"92\":1,\"93\":1,\"94\":1,\"95\":1,\"96\":1},\"1\":{\"0\":5,\"10\":2,\"12\":9,\"13\":4,\"14\":5,\"15\":2,\"16\":2,\"17\":1,\"18\":1,\"20\":16,\"28\":10,\"29\":1,\"30\":2,\"31\":1,\"32\":3,\"34\":3,\"35\":6,\"36\":3,\"61\":13,\"62\":2,\"63\":5,\"64\":7,\"65\":10,\"66\":1,\"67\":1,\"69\":2,\"70\":3,\"71\":2,\"72\":2,\"73\":9,\"74\":1,\"76\":3,\"79\":15,\"80\":3,\"81\":2,\"82\":8,\"83\":4,\"85\":3,\"86\":1,\"88\":1,\"89\":2,\"90\":1,\"91\":3,\"92\":1,\"93\":1,\"94\":4,\"95\":5,\"96\":40,\"98\":2,\"99\":8,\"100\":5,\"101\":10,\"102\":1,\"103\":1,\"104\":1,\"105\":4}}],[\"mycourier0\",{\"1\":{\"96\":1}}],[\"mysticalsite5\",{\"1\":{\"74\":1}}],[\"mysticalsite4\",{\"1\":{\"74\":1}}],[\"mysticalsite3\",{\"1\":{\"74\":1}}],[\"mysticalsite2\",{\"1\":{\"74\":1}}],[\"mysticalsite1\",{\"1\":{\"74\":1}}],[\"myownsupplyship\",{\"1\":{\"75\":1}}],[\"myownsupplycamp\",{\"1\":{\"75\":1}}],[\"myownalternative\",{\"1\":{\"73\":1}}],[\"myown\",{\"1\":{\"73\":4}}],[\"my\",{\"0\":{\"72\":1,\"90\":2,\"91\":2},\"1\":{\"62\":1}}],[\"much\",{\"1\":{\"95\":1}}],[\"must\",{\"1\":{\"61\":1,\"71\":1,\"72\":1,\"73\":3,\"94\":2,\"95\":1,\"96\":1,\"100\":1,\"101\":1}}],[\"multiple\",{\"1\":{\"61\":1,\"96\":3,\"99\":1}}],[\"multiplayer\",{\"1\":{\"60\":1,\"68\":2,\"69\":1,\"89\":1}}],[\"multimc\",{\"1\":{\"35\":1}}],[\"missing\",{\"1\":{\"92\":1,\"96\":1}}],[\"mistake\",{\"1\":{\"85\":1}}],[\"mix\",{\"1\":{\"65\":1}}],[\"might\",{\"1\":{\"36\":1,\"96\":1,\"99\":1}}],[\"minor\",{\"1\":{\"103\":1}}],[\"minimum\",{\"1\":{\"80\":4,\"83\":1}}],[\"mining\",{\"1\":{\"10\":1}}],[\"mineshafts\",{\"0\":{\"94\":1},\"1\":{\"94\":5,\"95\":4}}],[\"mine\",{\"1\":{\"76\":1}}],[\"miner\",{\"1\":{\"94\":1}}],[\"miner5\",{\"1\":{\"74\":1}}],[\"miner4\",{\"1\":{\"74\":1}}],[\"miner3\",{\"1\":{\"74\":1}}],[\"miner2\",{\"1\":{\"74\":1}}],[\"miner1\",{\"1\":{\"74\":1}}],[\"minecraft\",{\"0\":{\"22\":1,\"27\":1,\"28\":1,\"36\":1},\"1\":{\"20\":7,\"21\":1,\"28\":5,\"29\":1,\"30\":2,\"32\":2,\"33\":1,\"36\":1,\"63\":1,\"68\":2,\"70\":1,\"72\":1,\"91\":1,\"92\":1,\"99\":1,\"101\":4,\"106\":4}}],[\"minecolonies\",{\"0\":{\"28\":1,\"31\":1,\"33\":1,\"70\":1},\"1\":{\"0\":2,\"16\":1,\"20\":9,\"28\":3,\"31\":2,\"33\":2,\"34\":3,\"36\":1,\"61\":1,\"66\":1,\"68\":2,\"72\":1,\"100\":1,\"101\":15,\"102\":1}}],[\"medieval\",{\"1\":{\"100\":2,\"101\":5}}],[\"mediumquarryshaft1\",{\"1\":{\"95\":2}}],[\"mediumquarry1\",{\"1\":{\"95\":2}}],[\"medium\",{\"1\":{\"77\":1,\"78\":1}}],[\"mechanic5\",{\"1\":{\"74\":1}}],[\"mechanic4\",{\"1\":{\"74\":1}}],[\"mechanic3\",{\"1\":{\"74\":1}}],[\"mechanic2\",{\"1\":{\"74\":1}}],[\"mechanic1\",{\"1\":{\"74\":1}}],[\"metadata\",{\"1\":{\"63\":1,\"64\":1}}],[\"method\",{\"1\":{\"20\":1,\"96\":3}}],[\"message\",{\"1\":{\"30\":1,\"73\":1}}],[\"messages\",{\"1\":{\"16\":2}}],[\"menu\",{\"1\":{\"20\":3,\"62\":2}}],[\"meaning\",{\"1\":{\"105\":1}}],[\"means\",{\"1\":{\"81\":1}}],[\"mean\",{\"1\":{\"13\":1,\"96\":1}}],[\"mercenaries\",{\"1\":{\"13\":2}}],[\"mark\",{\"1\":{\"96\":1}}],[\"match\",{\"1\":{\"100\":1,\"101\":1,\"106\":1}}],[\"matching\",{\"1\":{\"96\":3}}],[\"matter\",{\"1\":{\"96\":2}}],[\"materials\",{\"1\":{\"60\":1,\"103\":1}}],[\"may\",{\"1\":{\"76\":1,\"79\":1,\"96\":3,\"105\":1,\"106\":1}}],[\"making\",{\"1\":{\"75\":1,\"96\":1}}],[\"make\",{\"0\":{\"95\":1},\"1\":{\"0\":1,\"14\":1,\"30\":1,\"36\":1,\"63\":2,\"64\":1,\"65\":2,\"71\":1,\"73\":1,\"79\":2,\"82\":1,\"85\":2,\"88\":1,\"93\":2,\"94\":2,\"95\":2,\"96\":4,\"99\":1,\"101\":1}}],[\"made\",{\"1\":{\"62\":1,\"67\":1,\"85\":1}}],[\"macos\",{\"1\":{\"35\":2}}],[\"main\",{\"1\":{\"20\":2,\"96\":1,\"103\":1}}],[\"mandatory\",{\"1\":{\"96\":1}}],[\"manually\",{\"1\":{\"28\":1,\"35\":1,\"95\":1}}],[\"manual\",{\"1\":{\"16\":4}}],[\"manager\",{\"1\":{\"20\":1}}],[\"manage\",{\"1\":{\"14\":1,\"20\":3}}],[\"many\",{\"1\":{\"12\":1,\"16\":1,\"28\":1,\"79\":1}}],[\"maxcachedschematics\",{\"1\":{\"91\":1}}],[\"maximum\",{\"1\":{\"73\":1,\"79\":1,\"80\":3}}],[\"max\",{\"1\":{\"12\":2,\"73\":1}}],[\"mossy\",{\"1\":{\"104\":1}}],[\"mostly\",{\"1\":{\"95\":1}}],[\"most\",{\"0\":{\"13\":1},\"1\":{\"96\":1,\"99\":1,\"100\":1}}],[\"mob\",{\"1\":{\"86\":1}}],[\"moment\",{\"1\":{\"64\":1}}],[\"moves\",{\"1\":{\"96\":1}}],[\"move\",{\"0\":{\"72\":1},\"1\":{\"73\":1,\"96\":1}}],[\"moved\",{\"1\":{\"61\":1,\"85\":1}}],[\"moving\",{\"1\":{\"17\":1,\"98\":1}}],[\"more\",{\"0\":{\"18\":1},\"1\":{\"0\":2,\"12\":2,\"13\":1,\"28\":1,\"61\":1,\"69\":1,\"72\":1,\"76\":1,\"95\":1,\"96\":4,\"99\":1,\"101\":1}}],[\"mods\",{\"0\":{\"32\":1,\"33\":1},\"1\":{\"20\":3,\"28\":4,\"32\":2,\"33\":1,\"35\":1,\"64\":3}}],[\"modpack\",{\"0\":{\"35\":1},\"1\":{\"20\":5,\"28\":1,\"35\":2}}],[\"modpacks\",{\"1\":{\"20\":1,\"35\":2}}],[\"mode\",{\"1\":{\"16\":7,\"73\":1}}],[\"mod\",{\"0\":{\"28\":1},\"1\":{\"0\":2,\"20\":5,\"28\":2,\"72\":1}}],[\"oak\",{\"1\":{\"100\":2,\"101\":5,\"106\":2}}],[\"ocean\",{\"1\":{\"77\":1,\"78\":1}}],[\"october\",{\"1\":{\"74\":1}}],[\"own\",{\"0\":{\"72\":1,\"90\":1},\"1\":{\"17\":1,\"62\":1,\"68\":1,\"72\":1,\"91\":2,\"96\":5,\"97\":1,\"98\":1,\"99\":1}}],[\"otherwise\",{\"1\":{\"96\":1}}],[\"others\",{\"1\":{\"64\":1,\"65\":1,\"96\":2}}],[\"other\",{\"0\":{\"14\":1,\"16\":1},\"1\":{\"13\":2,\"20\":1,\"28\":1,\"35\":1,\"73\":1,\"95\":1,\"96\":6}}],[\"operating\",{\"1\":{\"20\":1}}],[\"opening\",{\"1\":{\"16\":1}}],[\"open\",{\"1\":{\"0\":1,\"16\":1,\"20\":1,\"32\":2}}],[\"optionally\",{\"1\":{\"63\":1}}],[\"option\",{\"1\":{\"16\":2,\"33\":1,\"35\":1,\"96\":1}}],[\"options\",{\"1\":{\"13\":1,\"35\":1,\"98\":1}}],[\"overlapping\",{\"1\":{\"96\":1}}],[\"overlay\",{\"1\":{\"96\":1}}],[\"overboard\",{\"1\":{\"96\":1}}],[\"override\",{\"0\":{\"88\":1},\"1\":{\"88\":2}}],[\"overworld\",{\"0\":{\"77\":1},\"1\":{\"78\":1}}],[\"overview\",{\"1\":{\"65\":1}}],[\"over\",{\"1\":{\"12\":1,\"20\":1,\"96\":1}}],[\"overall\",{\"0\":{\"12\":1},\"1\":{\"12\":1}}],[\"often\",{\"1\":{\"96\":1,\"105\":1}}],[\"offering\",{\"1\":{\"35\":1}}],[\"offer\",{\"1\":{\"28\":1}}],[\"officially\",{\"1\":{\"86\":1}}],[\"official\",{\"1\":{\"20\":3,\"28\":5,\"35\":1,\"65\":1,\"85\":1,\"99\":1}}],[\"off\",{\"1\":{\"14\":1,\"17\":1,\"98\":1}}],[\"of\",{\"0\":{\"12\":1,\"15\":1,\"18\":1},\"1\":{\"10\":1,\"12\":7,\"13\":3,\"14\":4,\"15\":1,\"16\":1,\"17\":1,\"18\":2,\"20\":7,\"28\":3,\"31\":1,\"34\":1,\"60\":2,\"61\":2,\"62\":2,\"64\":9,\"65\":3,\"70\":1,\"71\":1,\"72\":1,\"73\":4,\"74\":2,\"76\":5,\"79\":7,\"80\":2,\"81\":4,\"82\":2,\"83\":1,\"85\":3,\"91\":1,\"93\":2,\"95\":8,\"96\":21,\"98\":1,\"99\":5,\"101\":7,\"103\":3}}],[\"older\",{\"1\":{\"96\":1}}],[\"old\",{\"1\":{\"10\":1}}],[\"output\",{\"1\":{\"106\":1}}],[\"outline\",{\"1\":{\"61\":1}}],[\"outside\",{\"1\":{\"10\":2,\"73\":1,\"95\":1}}],[\"out\",{\"1\":{\"0\":1,\"12\":1,\"16\":1,\"20\":1,\"73\":2,\"85\":2,\"100\":1}}],[\"our\",{\"1\":{\"0\":1,\"28\":2}}],[\"ouriers\",{\"1\":{\"0\":1}}],[\"orientation\",{\"1\":{\"96\":2}}],[\"oriented\",{\"1\":{\"94\":1}}],[\"originals\",{\"1\":{\"95\":1}}],[\"original\",{\"0\":{\"28\":1},\"1\":{\"28\":1,\"36\":1,\"85\":1,\"94\":1,\"96\":1}}],[\"orders\",{\"0\":{\"17\":2},\"1\":{\"17\":4}}],[\"order\",{\"1\":{\"13\":1,\"17\":4,\"18\":1,\"63\":1,\"64\":1}}],[\"orange\",{\"1\":{\"12\":1}}],[\"or\",{\"0\":{\"96\":1},\"1\":{\"0\":2,\"10\":2,\"13\":1,\"14\":3,\"16\":5,\"17\":1,\"18\":1,\"20\":2,\"28\":1,\"30\":1,\"35\":3,\"60\":2,\"61\":2,\"63\":1,\"64\":1,\"65\":1,\"67\":1,\"72\":2,\"73\":4,\"75\":3,\"76\":2,\"80\":1,\"85\":3,\"86\":1,\"89\":1,\"95\":2,\"96\":16,\"100\":1,\"101\":2,\"104\":2,\"105\":1,\"106\":1}}],[\"onto\",{\"1\":{\"64\":1}}],[\"online\",{\"1\":{\"28\":1}}],[\"only\",{\"1\":{\"13\":1,\"14\":1,\"20\":2,\"28\":1,\"65\":1,\"68\":1,\"73\":2,\"80\":2,\"81\":2,\"85\":1,\"93\":1,\"95\":3,\"96\":5,\"98\":1,\"99\":2}}],[\"once\",{\"1\":{\"20\":6,\"33\":1,\"61\":4,\"62\":2,\"73\":2,\"89\":1,\"99\":1}}],[\"ones\",{\"1\":{\"96\":1}}],[\"one\",{\"1\":{\"10\":1,\"17\":1,\"63\":2,\"64\":1,\"65\":2,\"72\":1,\"73\":1,\"95\":4,\"96\":4,\"98\":1,\"99\":1,\"101\":2,\"106\":1}}],[\"on\",{\"0\":{\"28\":1,\"84\":1,\"90\":1,\"91\":1},\"1\":{\"0\":3,\"12\":1,\"13\":1,\"14\":3,\"15\":1,\"16\":6,\"20\":4,\"28\":2,\"30\":1,\"32\":2,\"34\":2,\"35\":2,\"61\":1,\"62\":1,\"67\":2,\"70\":1,\"71\":2,\"76\":4,\"79\":2,\"81\":1,\"82\":2,\"83\":1,\"85\":2,\"90\":1,\"95\":2,\"96\":2,\"102\":1,\"105\":1}}],[\"flexibility\",{\"1\":{\"96\":1}}],[\"fletcher5\",{\"1\":{\"74\":1}}],[\"fletcher4\",{\"1\":{\"74\":1}}],[\"fletcher3\",{\"1\":{\"74\":1}}],[\"fletcher2\",{\"1\":{\"74\":1}}],[\"fletcher1\",{\"1\":{\"74\":1}}],[\"flowershop\",{\"1\":{\"76\":1}}],[\"flowing\",{\"1\":{\"76\":1}}],[\"florist5\",{\"1\":{\"74\":1}}],[\"florist4\",{\"1\":{\"74\":1}}],[\"florist3\",{\"1\":{\"74\":1}}],[\"florist2\",{\"1\":{\"74\":1}}],[\"florist1\",{\"1\":{\"74\":1}}],[\"flag\",{\"1\":{\"16\":1}}],[\"f3a8797b1d52\",{\"0\":{\"70\":1}}],[\"fallback\",{\"1\":{\"101\":1}}],[\"facing\",{\"1\":{\"101\":1}}],[\"faq\",{\"0\":{\"66\":1},\"1\":{\"66\":1}}],[\"farmer5\",{\"1\":{\"74\":1}}],[\"farmer4\",{\"1\":{\"74\":1}}],[\"farmer3\",{\"1\":{\"74\":1}}],[\"farmer2\",{\"1\":{\"74\":1}}],[\"farmer1\",{\"1\":{\"74\":1}}],[\"farmer\",{\"1\":{\"62\":1,\"79\":2,\"96\":1,\"101\":2}}],[\"farmers\",{\"1\":{\"0\":1}}],[\"future\",{\"1\":{\"99\":1}}],[\"furnaces\",{\"1\":{\"85\":1,\"96\":1}}],[\"furnace\",{\"1\":{\"76\":6}}],[\"fundamentals\",{\"1\":{\"75\":1}}],[\"functional\",{\"1\":{\"71\":1,\"72\":1,\"96\":1}}],[\"fun\",{\"1\":{\"20\":1}}],[\"fully\",{\"1\":{\"80\":1}}],[\"full\",{\"1\":{\"12\":1,\"61\":1,\"74\":1}}],[\"fences\",{\"1\":{\"95\":1}}],[\"few\",{\"1\":{\"65\":1,\"76\":1,\"101\":1}}],[\"feature\",{\"1\":{\"16\":1,\"98\":2}}],[\"feud\",{\"1\":{\"13\":2}}],[\"feuds\",{\"1\":{\"13\":1}}],[\"fix\",{\"1\":{\"96\":1}}],[\"fit\",{\"1\":{\"96\":1}}],[\"field\",{\"1\":{\"79\":22,\"101\":3}}],[\"fields\",{\"0\":{\"79\":1,\"82\":1},\"1\":{\"79\":2,\"82\":3,\"83\":1,\"96\":1}}],[\"fishing\",{\"1\":{\"76\":1}}],[\"fisher\",{\"1\":{\"76\":1}}],[\"fisherman5\",{\"1\":{\"74\":1}}],[\"fisherman4\",{\"1\":{\"74\":1}}],[\"fisherman3\",{\"1\":{\"74\":1}}],[\"fisherman2\",{\"1\":{\"74\":1}}],[\"fisherman1\",{\"1\":{\"74\":1}}],[\"fine\",{\"1\":{\"96\":2,\"106\":1}}],[\"final\",{\"1\":{\"95\":1,\"96\":2}}],[\"finally\",{\"1\":{\"35\":1}}],[\"find\",{\"1\":{\"28\":1,\"32\":3,\"34\":1,\"65\":1,\"67\":1,\"93\":1,\"99\":2}}],[\"finish\",{\"1\":{\"20\":1}}],[\"finished\",{\"1\":{\"16\":1,\"20\":1}}],[\"first\",{\"1\":{\"16\":1,\"20\":1,\"34\":1,\"36\":1,\"79\":1,\"99\":2}}],[\"fire\",{\"1\":{\"16\":2}}],[\"fighting\",{\"1\":{\"16\":1}}],[\"fight\",{\"1\":{\"14\":1}}],[\"filenames\",{\"0\":{\"74\":1},\"1\":{\"73\":1,\"96\":1}}],[\"files\",{\"1\":{\"35\":1,\"60\":1,\"63\":2,\"65\":1,\"102\":1}}],[\"file\",{\"1\":{\"13\":1,\"20\":1,\"28\":2,\"33\":3,\"34\":1,\"61\":2,\"63\":1,\"64\":2,\"75\":2,\"88\":2,\"91\":1,\"92\":1,\"93\":2,\"99\":1,\"100\":1,\"105\":1}}],[\"freshly\",{\"1\":{\"68\":1}}],[\"free\",{\"1\":{\"0\":1,\"14\":2,\"65\":1,\"79\":1}}],[\"from\",{\"1\":{\"13\":2,\"16\":2,\"17\":1,\"18\":1,\"20\":1,\"65\":1,\"70\":1,\"79\":3,\"80\":1,\"85\":1,\"95\":2,\"96\":5,\"99\":2}}],[\"footprint\",{\"1\":{\"73\":1,\"85\":1}}],[\"folders\",{\"1\":{\"65\":4,\"67\":1,\"71\":1,\"96\":2}}],[\"folder\",{\"0\":{\"32\":1,\"65\":1,\"68\":1,\"69\":1,\"70\":1,\"71\":1},\"1\":{\"32\":6,\"33\":1,\"61\":2,\"63\":4,\"65\":3,\"67\":7,\"68\":4,\"69\":2,\"70\":1,\"71\":1,\"73\":2,\"89\":1,\"90\":1,\"93\":1,\"95\":1,\"96\":8,\"100\":1}}],[\"following\",{\"1\":{\"101\":2}}],[\"followed\",{\"1\":{\"36\":1}}],[\"follow\",{\"1\":{\"16\":1,\"34\":1,\"65\":1,\"73\":2}}],[\"four\",{\"1\":{\"16\":1}}],[\"founded\",{\"1\":{\"99\":1}}],[\"found\",{\"1\":{\"0\":1,\"62\":1,\"65\":1,\"68\":1,\"99\":1}}],[\"former\",{\"1\":{\"98\":1}}],[\"form\",{\"1\":{\"79\":1,\"103\":1}}],[\"format\",{\"1\":{\"64\":2}}],[\"forge\",{\"0\":{\"29\":1,\"30\":1},\"1\":{\"20\":2,\"28\":3,\"29\":1,\"36\":1,\"39\":1}}],[\"for\",{\"0\":{\"18\":1,\"34\":1,\"70\":1,\"71\":1,\"77\":1,\"78\":1},\"1\":{\"0\":1,\"12\":1,\"13\":1,\"14\":4,\"16\":4,\"17\":2,\"20\":7,\"28\":4,\"34\":2,\"35\":1,\"60\":1,\"61\":1,\"62\":1,\"64\":2,\"65\":4,\"69\":2,\"71\":1,\"73\":9,\"75\":9,\"76\":2,\"79\":3,\"80\":1,\"81\":2,\"85\":2,\"88\":1,\"91\":1,\"95\":3,\"96\":5,\"97\":1,\"98\":1,\"100\":1,\"101\":3,\"102\":2,\"105\":1,\"106\":2}}],[\"图书馆\",{\"1\":{\"0\":1}}],[\"市政厅方块实际上是创建殖民地的核心\",{\"1\":{\"42\":1}}],[\"市政厅方块将被放置\",{\"1\":{\"7\":1,\"56\":1}}],[\"市政厅方块不能在已经放置了通过补给营地\",{\"1\":{\"4\":1}}],[\"市政厅是殖民地的中心部分\",{\"1\":{\"4\":1}}],[\"市政厅\",{\"0\":{\"4\":1,\"42\":1,\"52\":1},\"1\":{\"0\":1,\"59\":1}}],[\"ambiguous\",{\"1\":{\"96\":1}}],[\"amount\",{\"1\":{\"76\":1,\"81\":2,\"82\":1,\"95\":1}}],[\"among\",{\"0\":{\"16\":1}}],[\"apart\",{\"1\":{\"96\":1}}],[\"applicable\",{\"1\":{\"101\":1}}],[\"apply\",{\"1\":{\"75\":1,\"96\":1}}],[\"approximately\",{\"1\":{\"95\":1}}],[\"appropriately\",{\"1\":{\"100\":1}}],[\"appropriate\",{\"1\":{\"28\":1,\"73\":1,\"99\":1}}],[\"appdata\",{\"1\":{\"32\":1}}],[\"appears\",{\"1\":{\"33\":1}}],[\"appear\",{\"1\":{\"15\":1,\"16\":1,\"65\":1}}],[\"away\",{\"1\":{\"96\":1}}],[\"aware\",{\"1\":{\"92\":1}}],[\"affects\",{\"1\":{\"95\":1}}],[\"afterward\",{\"1\":{\"96\":1}}],[\"after=true\",{\"1\":{\"61\":1,\"62\":2,\"67\":1,\"68\":1,\"69\":1,\"70\":2,\"73\":1,\"75\":1,\"78\":1,\"88\":1,\"89\":1,\"93\":1,\"94\":1,\"95\":1,\"96\":1}}],[\"after\",{\"1\":{\"61\":1,\"68\":1,\"79\":1,\"86\":1,\"93\":1,\"96\":4}}],[\"adjacent\",{\"1\":{\"79\":2,\"81\":1}}],[\"adds\",{\"1\":{\"104\":1}}],[\"addons\",{\"1\":{\"72\":1}}],[\"addition\",{\"1\":{\"105\":1}}],[\"additionally\",{\"1\":{\"99\":1}}],[\"additional\",{\"0\":{\"87\":1},\"1\":{\"28\":1,\"96\":1}}],[\"adding\",{\"0\":{\"101\":1},\"1\":{\"0\":1,\"35\":1}}],[\"add\",{\"0\":{\"35\":1},\"1\":{\"14\":1,\"20\":1,\"93\":1,\"99\":2,\"100\":1,\"103\":1}}],[\"added\",{\"1\":{\"13\":2,\"14\":2,\"99\":1,\"101\":1}}],[\"aesthetics\",{\"1\":{\"76\":1}}],[\"avoid\",{\"1\":{\"73\":1,\"95\":1}}],[\"available\",{\"1\":{\"0\":1,\"16\":1,\"98\":1}}],[\"auto\",{\"1\":{\"96\":2}}],[\"automatically\",{\"1\":{\"20\":1,\"70\":2,\"81\":1,\"93\":1}}],[\"automatic\",{\"1\":{\"16\":4}}],[\"authors\",{\"1\":{\"64\":2}}],[\"air\",{\"1\":{\"61\":2,\"76\":1,\"79\":4,\"95\":2}}],[\"accepted\",{\"1\":{\"34\":1}}],[\"accept\",{\"1\":{\"34\":1}}],[\"according\",{\"1\":{\"30\":1}}],[\"account\",{\"1\":{\"20\":4}}],[\"activating\",{\"1\":{\"73\":1}}],[\"action\",{\"1\":{\"12\":2}}],[\"actions\",{\"0\":{\"13\":1},\"1\":{\"12\":1,\"13\":2}}],[\"actually\",{\"1\":{\"81\":1,\"93\":1}}],[\"actual\",{\"1\":{\"63\":1,\"95\":2,\"96\":4}}],[\"actor\",{\"1\":{\"0\":1}}],[\"abandoned\",{\"1\":{\"98\":2,\"99\":1,\"100\":3}}],[\"absolutely\",{\"1\":{\"95\":1,\"96\":1}}],[\"able\",{\"1\":{\"16\":1,\"20\":1,\"28\":3,\"32\":1,\"35\":1,\"71\":1,\"73\":2,\"79\":1}}],[\"about\",{\"1\":{\"13\":1,\"63\":1,\"64\":1,\"69\":1,\"79\":1,\"97\":1}}],[\"above\",{\"1\":{\"12\":1,\"65\":1,\"76\":1,\"79\":4}}],[\"again\",{\"1\":{\"12\":1,\"17\":1,\"20\":1,\"61\":1,\"96\":1}}],[\"attached\",{\"1\":{\"83\":1}}],[\"attack\",{\"1\":{\"14\":1}}],[\"attempt\",{\"1\":{\"79\":3,\"82\":2,\"83\":1}}],[\"attention\",{\"0\":{\"18\":1}}],[\"at\",{\"1\":{\"12\":1,\"16\":2,\"20\":4,\"34\":1,\"64\":2,\"65\":1,\"71\":1,\"73\":2,\"76\":9,\"80\":1,\"85\":2,\"91\":2,\"92\":1,\"94\":3,\"95\":1,\"96\":4,\"99\":2,\"101\":1,\"106\":1}}],[\"answer\",{\"1\":{\"66\":1}}],[\"anchors\",{\"1\":{\"61\":1}}],[\"anchor\",{\"1\":{\"61\":2,\"94\":2,\"95\":5,\"96\":3}}],[\"another\",{\"0\":{\"97\":1},\"1\":{\"17\":1,\"96\":3,\"105\":1,\"106\":1}}],[\"anywhere\",{\"1\":{\"73\":1}}],[\"anymore\",{\"1\":{\"73\":1}}],[\"anything\",{\"1\":{\"13\":1}}],[\"any\",{\"1\":{\"0\":1,\"12\":2,\"16\":3,\"20\":1,\"60\":1,\"62\":1,\"67\":1,\"71\":1,\"73\":2,\"76\":1,\"79\":1,\"85\":1,\"91\":1,\"95\":1,\"96\":2}}],[\"an\",{\"1\":{\"0\":1,\"12\":1,\"13\":1,\"14\":1,\"20\":5,\"35\":2,\"63\":1,\"64\":1,\"65\":1,\"72\":2,\"73\":2,\"76\":1,\"79\":1,\"80\":1,\"82\":1,\"88\":1,\"94\":1,\"96\":2,\"99\":1,\"100\":1,\"101\":1}}],[\"and\",{\"0\":{\"15\":1,\"16\":1,\"36\":1,\"68\":1,\"72\":1,\"75\":1,\"80\":1,\"100\":1},\"1\":{\"0\":2,\"12\":3,\"13\":4,\"14\":2,\"15\":1,\"16\":4,\"17\":3,\"20\":7,\"28\":4,\"29\":1,\"30\":1,\"31\":1,\"32\":3,\"33\":1,\"35\":1,\"36\":2,\"60\":3,\"61\":4,\"62\":1,\"63\":2,\"65\":5,\"67\":2,\"68\":2,\"69\":1,\"70\":2,\"71\":1,\"73\":4,\"75\":5,\"76\":6,\"79\":5,\"80\":1,\"85\":4,\"90\":1,\"91\":1,\"92\":1,\"93\":2,\"94\":2,\"95\":12,\"96\":25,\"99\":8,\"100\":2,\"101\":4,\"103\":1,\"105\":1}}],[\"archery\",{\"1\":{\"76\":2}}],[\"archery5\",{\"1\":{\"74\":1}}],[\"archery4\",{\"1\":{\"74\":1}}],[\"archery3\",{\"1\":{\"74\":1}}],[\"archery2\",{\"1\":{\"74\":1}}],[\"archery1\",{\"1\":{\"74\":1}}],[\"array\",{\"1\":{\"64\":2}}],[\"arrow\",{\"1\":{\"20\":3}}],[\"around\",{\"1\":{\"16\":1,\"61\":1,\"79\":2,\"82\":1}}],[\"artist\",{\"1\":{\"0\":1}}],[\"areas\",{\"1\":{\"18\":1}}],[\"area\",{\"0\":{\"18\":1},\"1\":{\"16\":1,\"60\":1,\"61\":7,\"79\":3,\"82\":2}}],[\"aren\",{\"1\":{\"12\":1,\"68\":1,\"94\":1}}],[\"are\",{\"1\":{\"0\":2,\"12\":1,\"14\":1,\"16\":4,\"17\":1,\"18\":1,\"20\":1,\"28\":3,\"33\":1,\"35\":1,\"36\":1,\"60\":1,\"61\":6,\"63\":1,\"65\":3,\"68\":1,\"70\":2,\"73\":6,\"79\":2,\"80\":2,\"82\":9,\"83\":1,\"85\":1,\"92\":1,\"95\":3,\"96\":7,\"98\":1,\"101\":1,\"102\":2,\"103\":1,\"104\":1,\"105\":1}}],[\"align\",{\"1\":{\"95\":1}}],[\"aligned\",{\"1\":{\"95\":1}}],[\"alchemist\",{\"1\":{\"76\":1}}],[\"alchemist5\",{\"1\":{\"74\":1}}],[\"alchemist4\",{\"1\":{\"74\":1}}],[\"alchemist3\",{\"1\":{\"74\":1}}],[\"alchemist2\",{\"1\":{\"74\":1}}],[\"alchemist1\",{\"1\":{\"74\":1}}],[\"already\",{\"1\":{\"63\":1,\"65\":1,\"96\":1}}],[\"alpha\",{\"1\":{\"31\":1}}],[\"along\",{\"1\":{\"20\":1,\"94\":1,\"96\":1}}],[\"allows\",{\"1\":{\"91\":1}}],[\"allowplayerschematics\",{\"1\":{\"91\":1}}],[\"allow\",{\"0\":{\"90\":1,\"91\":1}}],[\"allowed\",{\"1\":{\"12\":1}}],[\"all\",{\"1\":{\"17\":2,\"28\":3,\"60\":1,\"67\":1,\"68\":2,\"82\":2,\"83\":1,\"85\":3,\"94\":1,\"96\":1,\"101\":2}}],[\"ally\",{\"1\":{\"13\":1}}],[\"allies\",{\"1\":{\"13\":2}}],[\"alter\",{\"1\":{\"102\":1}}],[\"alternative\",{\"1\":{\"73\":2}}],[\"alternatively\",{\"1\":{\"10\":1}}],[\"alternates\",{\"1\":{\"96\":1}}],[\"alternate\",{\"1\":{\"65\":1,\"73\":1,\"95\":1,\"96\":2}}],[\"although\",{\"1\":{\"95\":2,\"96\":1}}],[\"alt1builder1\",{\"1\":{\"73\":1}}],[\"altbuilder1\",{\"1\":{\"73\":1}}],[\"alt\",{\"1\":{\"73\":1}}],[\"alt=\",{\"1\":{\"12\":1,\"13\":1,\"14\":3,\"15\":1,\"16\":1,\"17\":1,\"18\":1}}],[\"always\",{\"1\":{\"0\":1,\"34\":1,\"75\":1,\"79\":3,\"80\":1,\"95\":1,\"96\":3,\"106\":1}}],[\"also\",{\"1\":{\"0\":1,\"12\":1,\"15\":1,\"16\":2,\"17\":1,\"18\":1,\"62\":2,\"65\":2,\"76\":1,\"91\":1,\"95\":1,\"96\":5,\"101\":1,\"103\":1,\"105\":1}}],[\"a\",{\"0\":{\"10\":1,\"61\":1,\"62\":1,\"70\":1,\"71\":1},\"1\":{\"0\":5,\"10\":2,\"12\":4,\"13\":3,\"14\":1,\"15\":3,\"16\":5,\"17\":1,\"20\":5,\"28\":2,\"30\":3,\"35\":2,\"36\":1,\"60\":2,\"61\":6,\"62\":2,\"63\":7,\"64\":3,\"65\":3,\"66\":1,\"67\":1,\"68\":2,\"69\":1,\"70\":2,\"71\":2,\"72\":1,\"73\":4,\"74\":3,\"75\":2,\"76\":9,\"79\":4,\"80\":10,\"82\":1,\"83\":1,\"85\":5,\"88\":3,\"89\":1,\"93\":1,\"94\":1,\"95\":4,\"96\":27,\"97\":1,\"98\":1,\"99\":8,\"101\":12,\"102\":1,\"105\":3,\"106\":1}}],[\"asking\",{\"1\":{\"97\":1}}],[\"asked\",{\"1\":{\"86\":1}}],[\"ask\",{\"1\":{\"20\":1}}],[\"assignment\",{\"1\":{\"16\":1}}],[\"assigned\",{\"0\":{\"16\":1},\"1\":{\"16\":1,\"17\":1}}],[\"as\",{\"1\":{\"0\":3,\"13\":8,\"14\":4,\"16\":4,\"17\":2,\"28\":3,\"35\":1,\"65\":2,\"70\":2,\"71\":1,\"72\":1,\"73\":1,\"74\":1,\"79\":2,\"82\":1,\"83\":1,\"88\":1,\"89\":1,\"94\":3,\"95\":2,\"96\":13,\"98\":2,\"99\":1,\"100\":1,\"101\":2}}],[\"biggest\",{\"1\":{\"96\":1}}],[\"big\",{\"1\":{\"82\":1}}],[\"bcae\",{\"0\":{\"70\":1}}],[\"bricks\",{\"1\":{\"104\":1}}],[\"brick\",{\"1\":{\"104\":1}}],[\"brewing\",{\"1\":{\"76\":1}}],[\"break\",{\"1\":{\"12\":1,\"80\":2,\"92\":1,\"96\":1}}],[\"broken\",{\"1\":{\"64\":1,\"80\":1}}],[\"blacksmith5\",{\"1\":{\"74\":1}}],[\"blacksmith4\",{\"1\":{\"74\":1}}],[\"blacksmith3\",{\"1\":{\"74\":1}}],[\"blacksmith2\",{\"1\":{\"74\":1}}],[\"blacksmith1\",{\"1\":{\"74\":1}}],[\"black\",{\"1\":{\"18\":1}}],[\"blank\",{\"1\":{\"17\":1,\"18\":1,\"85\":1}}],[\"blueprintmyown\",{\"1\":{\"73\":4}}],[\"blueprint\",{\"1\":{\"73\":2,\"88\":1,\"96\":3}}],[\"blueprints\",{\"0\":{\"71\":1},\"1\":{\"61\":1,\"63\":1,\"67\":2,\"68\":1,\"73\":1,\"75\":5,\"90\":1,\"94\":1,\"96\":1}}],[\"blue\",{\"1\":{\"18\":1,\"79\":1,\"82\":2}}],[\"blocksubstitution\",{\"1\":{\"105\":1}}],[\"blocksolidsubstitution\",{\"1\":{\"105\":1}}],[\"blocks\",{\"0\":{\"101\":1},\"1\":{\"61\":2,\"76\":5,\"79\":2,\"80\":1,\"82\":4,\"83\":1,\"85\":2,\"86\":2,\"94\":1,\"95\":3,\"96\":5,\"101\":1,\"102\":1,\"103\":1,\"104\":1,\"105\":5}}],[\"block\",{\"1\":{\"12\":3,\"13\":2,\"14\":8,\"15\":3,\"16\":2,\"17\":2,\"18\":2,\"60\":1,\"61\":5,\"73\":6,\"76\":4,\"79\":11,\"80\":1,\"81\":1,\"82\":3,\"85\":2,\"89\":1,\"94\":1,\"95\":1,\"96\":7,\"99\":2,\"100\":3,\"101\":7,\"105\":1,\"106\":2}}],[\"behind\",{\"1\":{\"96\":1}}],[\"behaviour\",{\"1\":{\"79\":1}}],[\"because\",{\"1\":{\"82\":1}}],[\"beans\",{\"1\":{\"81\":1}}],[\"berries\",{\"1\":{\"79\":1}}],[\"beyond\",{\"1\":{\"79\":1}}],[\"beds\",{\"1\":{\"76\":1,\"96\":1}}],[\"bed\",{\"1\":{\"76\":6}}],[\"beekeeper5\",{\"1\":{\"74\":1}}],[\"beekeeper4\",{\"1\":{\"74\":1}}],[\"beekeeper3\",{\"1\":{\"74\":1}}],[\"beekeeper2\",{\"1\":{\"74\":1}}],[\"beekeeper1\",{\"1\":{\"74\":1}}],[\"been\",{\"1\":{\"17\":1,\"68\":1,\"79\":1}}],[\"below\",{\"1\":{\"73\":1,\"76\":1,\"79\":2,\"82\":2,\"85\":1,\"95\":1,\"106\":1}}],[\"before\",{\"1\":{\"72\":1,\"96\":1}}],[\"before=true\",{\"1\":{\"61\":1,\"62\":1,\"67\":1,\"68\":1,\"69\":1,\"70\":1,\"73\":1,\"75\":1,\"88\":1,\"89\":1,\"93\":1,\"94\":1,\"95\":1,\"96\":1}}],[\"being\",{\"1\":{\"17\":1}}],[\"better\",{\"1\":{\"16\":1,\"96\":1}}],[\"between\",{\"1\":{\"16\":2,\"68\":2}}],[\"ben\",{\"1\":{\"14\":1}}],[\"be\",{\"0\":{\"16\":1},\"1\":{\"13\":1,\"16\":8,\"20\":2,\"28\":3,\"32\":1,\"34\":1,\"35\":1,\"61\":5,\"62\":1,\"63\":1,\"64\":2,\"65\":1,\"67\":1,\"68\":1,\"69\":2,\"70\":2,\"71\":4,\"72\":1,\"73\":6,\"75\":2,\"76\":1,\"79\":3,\"81\":1,\"89\":2,\"92\":1,\"94\":4,\"95\":7,\"96\":21,\"99\":3,\"100\":1,\"101\":3,\"105\":1,\"106\":2}}],[\"best\",{\"1\":{\"0\":1,\"16\":1,\"18\":1,\"95\":1}}],[\"book\",{\"1\":{\"85\":1}}],[\"books\",{\"1\":{\"85\":3}}],[\"bookshelves\",{\"1\":{\"76\":2}}],[\"bonemealing\",{\"1\":{\"82\":1}}],[\"bonemeal\",{\"1\":{\"82\":4}}],[\"bonemealed\",{\"0\":{\"82\":1},\"1\":{\"82\":2}}],[\"bounds\",{\"1\":{\"80\":1}}],[\"body\",{\"1\":{\"76\":1}}],[\"both\",{\"1\":{\"35\":1,\"65\":1,\"69\":1,\"95\":1,\"96\":2}}],[\"bottom\",{\"1\":{\"12\":1,\"17\":1,\"20\":4,\"94\":1,\"95\":8}}],[\"box\",{\"1\":{\"32\":1}}],[\"born\",{\"1\":{\"16\":2}}],[\"borders\",{\"1\":{\"10\":1,\"73\":1}}],[\"border\",{\"1\":{\"10\":1}}],[\"but\",{\"1\":{\"65\":4,\"73\":1,\"79\":1,\"93\":1,\"95\":2,\"96\":6,\"99\":1,\"106\":1}}],[\"buttons\",{\"1\":{\"13\":1,\"16\":2}}],[\"button\",{\"1\":{\"12\":1,\"16\":5,\"20\":4,\"32\":1,\"62\":1,\"65\":1,\"73\":1,\"76\":1}}],[\"built\",{\"0\":{\"88\":1,\"92\":1},\"1\":{\"17\":1,\"95\":1,\"96\":3,\"99\":1}}],[\"builds\",{\"1\":{\"17\":2,\"86\":1}}],[\"build\",{\"0\":{\"72\":1},\"1\":{\"13\":3,\"16\":1,\"17\":1,\"60\":1,\"61\":1,\"62\":4,\"64\":2,\"65\":1,\"70\":1,\"73\":4,\"75\":1,\"89\":1,\"96\":6,\"99\":2}}],[\"building\",{\"0\":{\"11\":1,\"84\":1},\"1\":{\"12\":2,\"13\":6,\"14\":3,\"15\":1,\"16\":3,\"17\":2,\"18\":1,\"48\":2,\"59\":1,\"60\":1,\"72\":1,\"73\":2,\"74\":1,\"76\":29,\"88\":1,\"95\":1,\"96\":8,\"99\":4,\"100\":2,\"101\":6,\"105\":3}}],[\"buildings\",{\"0\":{\"72\":1,\"96\":1},\"1\":{\"0\":1,\"65\":4,\"71\":1,\"72\":1,\"73\":1,\"76\":1,\"96\":9,\"99\":2,\"101\":6}}],[\"builderalt1\",{\"1\":{\"73\":1}}],[\"builder5\",{\"1\":{\"73\":1,\"74\":1}}],[\"builder4\",{\"1\":{\"73\":1,\"74\":1}}],[\"builder3\",{\"1\":{\"73\":1,\"74\":1}}],[\"builder2\",{\"1\":{\"73\":1,\"74\":1}}],[\"builder1\",{\"1\":{\"73\":2,\"74\":1,\"75\":2,\"88\":1}}],[\"builder\",{\"1\":{\"0\":1,\"13\":1,\"17\":3,\"60\":1,\"61\":1,\"72\":2,\"73\":4,\"75\":2,\"76\":1,\"88\":1,\"95\":1,\"96\":1,\"105\":1}}],[\"bug\",{\"1\":{\"0\":1}}],[\"by\",{\"1\":{\"0\":1,\"10\":2,\"17\":1,\"70\":1,\"71\":1,\"72\":2,\"75\":1,\"79\":1,\"81\":1,\"91\":1,\"95\":2,\"96\":4,\"98\":1,\"104\":1,\"105\":1}}],[\"based\",{\"0\":{\"83\":1},\"1\":{\"79\":1,\"83\":1}}],[\"bamboo\",{\"1\":{\"76\":1,\"79\":3,\"80\":1}}],[\"bale\",{\"1\":{\"76\":2}}],[\"balance\",{\"1\":{\"71\":1,\"95\":1,\"96\":1}}],[\"balanced\",{\"1\":{\"28\":1}}],[\"bakery\",{\"1\":{\"76\":1}}],[\"baker5\",{\"1\":{\"74\":1}}],[\"baker4\",{\"1\":{\"74\":1}}],[\"baker3\",{\"1\":{\"74\":1}}],[\"baker2\",{\"1\":{\"74\":1}}],[\"baker1\",{\"1\":{\"74\":1}}],[\"bakers\",{\"1\":{\"0\":1}}],[\"barrels\",{\"1\":{\"76\":2}}],[\"barrel\",{\"1\":{\"76\":1}}],[\"barracks5\",{\"1\":{\"74\":1}}],[\"barracks4\",{\"1\":{\"74\":1}}],[\"barracks3\",{\"1\":{\"74\":1}}],[\"barracks2\",{\"1\":{\"74\":1}}],[\"barracks1\",{\"1\":{\"74\":1}}],[\"barrackstower5\",{\"1\":{\"74\":1}}],[\"barrackstower4\",{\"1\":{\"74\":1}}],[\"barrackstower3\",{\"1\":{\"74\":1}}],[\"barrackstower2\",{\"1\":{\"74\":1}}],[\"barrackstower1\",{\"1\":{\"74\":1}}],[\"barrackstower\",{\"1\":{\"16\":1,\"76\":1}}],[\"barracks\",{\"1\":{\"0\":1,\"61\":2,\"76\":2,\"85\":2,\"96\":3}}],[\"bar\",{\"1\":{\"65\":2}}],[\"banner\",{\"1\":{\"16\":2}}],[\"skips\",{\"1\":{\"96\":1}}],[\"skills\",{\"1\":{\"15\":1}}],[\"skill\",{\"0\":{\"15\":1}}],[\"swineherder5\",{\"1\":{\"74\":1}}],[\"swineherder4\",{\"1\":{\"74\":1}}],[\"swineherder3\",{\"1\":{\"74\":1}}],[\"swineherder2\",{\"1\":{\"74\":1}}],[\"swineherder1\",{\"1\":{\"74\":1}}],[\"switch\",{\"1\":{\"12\":1,\"16\":3,\"62\":1}}],[\"smeltery\",{\"1\":{\"76\":1}}],[\"smeltery5\",{\"1\":{\"74\":1}}],[\"smeltery4\",{\"1\":{\"74\":1}}],[\"smeltery3\",{\"1\":{\"74\":1}}],[\"smeltery2\",{\"1\":{\"74\":1}}],[\"smeltery1\",{\"1\":{\"74\":1}}],[\"smelters\",{\"1\":{\"0\":1}}],[\"small\",{\"1\":{\"35\":1}}],[\"sand\",{\"1\":{\"76\":2}}],[\"sawmill5\",{\"1\":{\"74\":1}}],[\"sawmill4\",{\"1\":{\"74\":1}}],[\"sawmill3\",{\"1\":{\"74\":1}}],[\"sawmill2\",{\"1\":{\"74\":1}}],[\"sawmill1\",{\"1\":{\"74\":1}}],[\"safely\",{\"1\":{\"70\":2}}],[\"saved\",{\"1\":{\"61\":4,\"62\":1,\"68\":1,\"70\":1}}],[\"save\",{\"1\":{\"61\":1,\"70\":1,\"73\":1}}],[\"say\",{\"1\":{\"34\":1,\"100\":1}}],[\"same\",{\"0\":{\"34\":1},\"1\":{\"73\":3,\"79\":1,\"85\":4,\"88\":2,\"93\":1,\"94\":2,\"95\":2,\"96\":10,\"99\":1,\"105\":1}}],[\"screen\",{\"1\":{\"64\":1}}],[\"scripts\",{\"1\":{\"28\":2}}],[\"scans\",{\"0\":{\"68\":1},\"1\":{\"61\":5,\"62\":3,\"68\":5,\"73\":3,\"96\":3}}],[\"scanning\",{\"0\":{\"61\":1},\"1\":{\"61\":1,\"86\":1,\"93\":2,\"96\":2}}],[\"scanned\",{\"0\":{\"91\":1},\"1\":{\"60\":1,\"61\":2,\"62\":2,\"63\":1,\"68\":1}}],[\"scan\",{\"1\":{\"60\":3,\"61\":7,\"62\":2,\"68\":2,\"73\":1,\"93\":1,\"94\":1,\"96\":2}}],[\"schematic\",{\"0\":{\"62\":1,\"69\":1},\"1\":{\"61\":1,\"63\":1,\"69\":1,\"73\":1,\"76\":1,\"80\":1,\"85\":1,\"88\":2,\"93\":4,\"96\":5,\"99\":1}}],[\"schematics\",{\"0\":{\"67\":1,\"88\":1,\"90\":1,\"91\":1,\"92\":1,\"93\":1},\"1\":{\"16\":1,\"17\":1,\"60\":1,\"61\":1,\"62\":1,\"63\":1,\"64\":1,\"66\":1,\"67\":3,\"68\":2,\"69\":3,\"70\":3,\"73\":3,\"75\":4,\"86\":1,\"89\":1,\"91\":3,\"92\":1,\"94\":1,\"95\":1,\"96\":1,\"97\":1}}],[\"school5\",{\"1\":{\"74\":1}}],[\"school4\",{\"1\":{\"74\":1}}],[\"school3\",{\"1\":{\"74\":1}}],[\"school2\",{\"1\":{\"74\":1}}],[\"school1\",{\"1\":{\"74\":1}}],[\"school\",{\"1\":{\"0\":1,\"76\":1}}],[\"since\",{\"1\":{\"95\":1,\"96\":5}}],[\"singleylayer\",{\"1\":{\"68\":1}}],[\"single\",{\"1\":{\"64\":1,\"80\":1}}],[\"singleplayer\",{\"1\":{\"60\":1,\"68\":1,\"69\":1,\"89\":1}}],[\"size\",{\"1\":{\"94\":1,\"95\":2,\"96\":1}}],[\"sitting\",{\"1\":{\"85\":1}}],[\"site\",{\"1\":{\"28\":1,\"31\":1}}],[\"sifter5\",{\"1\":{\"74\":1}}],[\"sifter4\",{\"1\":{\"74\":1}}],[\"sifter3\",{\"1\":{\"74\":1}}],[\"sifter2\",{\"1\":{\"74\":1}}],[\"sifter1\",{\"1\":{\"74\":1}}],[\"sides\",{\"1\":{\"81\":1}}],[\"side\",{\"1\":{\"68\":1}}],[\"similarly\",{\"1\":{\"96\":1}}],[\"similar\",{\"1\":{\"63\":1,\"96\":1,\"105\":2}}],[\"simpler\",{\"1\":{\"96\":2}}],[\"simplequarryshaft1\",{\"1\":{\"95\":2}}],[\"simplequarry1\",{\"1\":{\"95\":2}}],[\"simple\",{\"1\":{\"20\":1,\"28\":1,\"65\":1}}],[\"simply\",{\"1\":{\"0\":1,\"20\":1,\"88\":1,\"96\":2}}],[\"sign\",{\"1\":{\"20\":1}}],[\"slightly\",{\"1\":{\"18\":1,\"75\":1,\"82\":1,\"95\":1}}],[\"shepherd5\",{\"1\":{\"74\":1}}],[\"shepherd4\",{\"1\":{\"74\":1}}],[\"shepherd3\",{\"1\":{\"74\":1}}],[\"shepherd2\",{\"1\":{\"74\":1}}],[\"shepherd1\",{\"1\":{\"74\":1}}],[\"shaft\",{\"1\":{\"76\":1}}],[\"shapes\",{\"1\":{\"71\":1}}],[\"shared\",{\"1\":{\"68\":2}}],[\"shift\",{\"1\":{\"96\":2}}],[\"shift+right\",{\"1\":{\"73\":1}}],[\"shift+left\",{\"1\":{\"61\":1}}],[\"ship\",{\"1\":{\"75\":6}}],[\"ships\",{\"0\":{\"75\":1},\"1\":{\"75\":1}}],[\"shields\",{\"1\":{\"16\":1}}],[\"should\",{\"1\":{\"20\":1,\"34\":1,\"67\":1,\"73\":1,\"75\":1,\"82\":2,\"83\":1,\"89\":1,\"95\":3,\"96\":5,\"100\":1}}],[\"shown\",{\"1\":{\"65\":1}}],[\"showed\",{\"1\":{\"64\":1}}],[\"shows\",{\"1\":{\"12\":1,\"14\":1}}],[\"show\",{\"1\":{\"12\":2,\"18\":1,\"96\":1}}],[\"speaking\",{\"1\":{\"96\":1}}],[\"specify\",{\"1\":{\"96\":1}}],[\"specifically\",{\"1\":{\"86\":1,\"97\":1,\"102\":1}}],[\"specific\",{\"1\":{\"65\":2}}],[\"special\",{\"1\":{\"61\":1,\"72\":1}}],[\"specialized\",{\"1\":{\"0\":1}}],[\"split\",{\"1\":{\"95\":1,\"96\":1}}],[\"spilling\",{\"1\":{\"85\":1}}],[\"spots\",{\"1\":{\"83\":1}}],[\"sparingly\",{\"1\":{\"96\":1}}],[\"spaces\",{\"1\":{\"73\":1}}],[\"spawn\",{\"1\":{\"16\":1,\"98\":1,\"99\":3}}],[\"spread\",{\"1\":{\"16\":1,\"83\":2}}],[\"still\",{\"1\":{\"96\":4,\"98\":1}}],[\"stick\",{\"1\":{\"65\":1}}],[\"storage\",{\"1\":{\"96\":1}}],[\"stone\",{\"1\":{\"95\":1,\"104\":2}}],[\"stonesmeltery\",{\"1\":{\"76\":1}}],[\"stonesmeltery5\",{\"1\":{\"74\":1}}],[\"stonesmeltery4\",{\"1\":{\"74\":1}}],[\"stonesmeltery3\",{\"1\":{\"74\":1}}],[\"stonesmeltery2\",{\"1\":{\"74\":1}}],[\"stonesmeltery1\",{\"1\":{\"74\":1}}],[\"stonemason5\",{\"1\":{\"74\":1}}],[\"stonemason4\",{\"1\":{\"74\":1}}],[\"stonemason3\",{\"1\":{\"74\":1}}],[\"stonemason2\",{\"1\":{\"74\":1}}],[\"stonemason1\",{\"1\":{\"74\":1}}],[\"stop\",{\"1\":{\"17\":1}}],[\"street\",{\"0\":{\"103\":1},\"1\":{\"101\":5,\"103\":1}}],[\"strongly\",{\"1\":{\"65\":1,\"95\":1,\"96\":2}}],[\"strict\",{\"1\":{\"73\":1}}],[\"strictly\",{\"1\":{\"65\":1,\"96\":1}}],[\"strings\",{\"1\":{\"64\":2}}],[\"string\",{\"1\":{\"64\":3}}],[\"structures\",{\"1\":{\"101\":2}}],[\"structured\",{\"1\":{\"63\":1,\"65\":1}}],[\"structure\",{\"0\":{\"61\":1,\"65\":1},\"1\":{\"60\":1,\"61\":2,\"62\":2,\"63\":1,\"65\":2,\"99\":1,\"101\":10,\"102\":2,\"105\":1}}],[\"structurize\",{\"0\":{\"34\":1},\"1\":{\"20\":1,\"34\":4,\"61\":1,\"67\":1,\"68\":2,\"69\":1,\"70\":1,\"75\":4,\"85\":1,\"91\":2,\"92\":2,\"105\":3}}],[\"stem\",{\"1\":{\"79\":1,\"81\":2}}],[\"step\",{\"1\":{\"33\":1,\"72\":1}}],[\"steps\",{\"1\":{\"20\":1,\"34\":1,\"36\":1}}],[\"steal\",{\"1\":{\"13\":1}}],[\"standalone\",{\"1\":{\"96\":3}}],[\"standard\",{\"1\":{\"30\":1,\"65\":1}}],[\"stand\",{\"1\":{\"76\":1,\"79\":1}}],[\"standing\",{\"1\":{\"76\":1,\"79\":2}}],[\"stay\",{\"1\":{\"61\":1}}],[\"started\",{\"0\":{\"99\":1}}],[\"starting\",{\"1\":{\"76\":2}}],[\"start\",{\"1\":{\"17\":1,\"20\":1,\"32\":1,\"64\":1,\"73\":1,\"89\":1,\"91\":1,\"99\":2}}],[\"state\",{\"1\":{\"106\":1}}],[\"stats\",{\"1\":{\"15\":1}}],[\"statistics\",{\"0\":{\"18\":1},\"1\":{\"12\":1,\"18\":1}}],[\"stylename\",{\"1\":{\"73\":1}}],[\"stylepacks\",{\"1\":{\"63\":1}}],[\"styles\",{\"0\":{\"77\":1,\"78\":1},\"1\":{\"63\":1,\"65\":3,\"85\":1,\"99\":1,\"101\":2}}],[\"style\",{\"0\":{\"63\":1,\"94\":1,\"95\":1},\"1\":{\"16\":2,\"61\":2,\"62\":1,\"63\":5,\"64\":6,\"67\":2,\"68\":1,\"69\":1,\"71\":1,\"72\":1,\"73\":3,\"79\":1,\"86\":1,\"88\":4,\"89\":1,\"94\":2,\"95\":1,\"96\":5,\"99\":3,\"100\":3,\"101\":3,\"102\":1,\"105\":1,\"106\":2}}],[\"system\",{\"1\":{\"12\":1,\"13\":1,\"16\":1,\"20\":1}}],[\"solid\",{\"1\":{\"76\":1,\"85\":1}}],[\"sound\",{\"1\":{\"96\":1}}],[\"soul\",{\"1\":{\"76\":2}}],[\"source\",{\"1\":{\"0\":2}}],[\"so\",{\"0\":{\"18\":1},\"1\":{\"16\":2,\"63\":1,\"70\":2,\"75\":2,\"79\":1,\"86\":1,\"94\":1,\"96\":2,\"98\":1}}],[\"soon\",{\"1\":{\"16\":1}}],[\"someone\",{\"1\":{\"86\":1,\"96\":1}}],[\"somewhere\",{\"1\":{\"82\":1,\"85\":1,\"93\":2}}],[\"sometimes\",{\"1\":{\"80\":1,\"99\":1}}],[\"something\",{\"1\":{\"18\":1,\"73\":1}}],[\"some\",{\"0\":{\"88\":1},\"1\":{\"12\":1,\"16\":1,\"28\":1,\"63\":1,\"73\":1,\"76\":1,\"92\":1,\"95\":2,\"96\":4,\"98\":1,\"99\":1,\"101\":1,\"104\":2}}],[\"second\",{\"1\":{\"80\":1,\"95\":1}}],[\"section\",{\"0\":{\"12\":1,\"13\":1,\"15\":1,\"16\":1,\"18\":1},\"1\":{\"66\":1}}],[\"seapickle\",{\"1\":{\"79\":2}}],[\"sea\",{\"1\":{\"79\":1,\"82\":1}}],[\"seagrass\",{\"1\":{\"79\":3,\"82\":1}}],[\"searching\",{\"1\":{\"20\":1}}],[\"search\",{\"1\":{\"20\":3,\"32\":2}}],[\"send\",{\"1\":{\"70\":1}}],[\"separately\",{\"1\":{\"72\":1,\"96\":1}}],[\"separate\",{\"1\":{\"65\":1,\"72\":1,\"79\":1,\"96\":1}}],[\"separating\",{\"1\":{\"20\":1,\"65\":1}}],[\"several\",{\"1\":{\"65\":1,\"99\":1}}],[\"serveruuid\",{\"1\":{\"70\":2}}],[\"server\",{\"0\":{\"90\":1,\"91\":1},\"1\":{\"28\":6,\"30\":2,\"35\":1,\"64\":1,\"70\":5,\"71\":2,\"90\":1,\"91\":1,\"97\":1}}],[\"servers\",{\"1\":{\"28\":2}}],[\"sets\",{\"1\":{\"65\":1}}],[\"set\",{\"1\":{\"20\":1,\"61\":1,\"76\":1,\"81\":1,\"82\":1,\"91\":1,\"92\":1,\"95\":1,\"101\":2}}],[\"setting\",{\"1\":{\"20\":3}}],[\"settings\",{\"0\":{\"16\":1},\"1\":{\"16\":2}}],[\"selection\",{\"1\":{\"64\":1}}],[\"selected\",{\"1\":{\"14\":1,\"16\":1}}],[\"select\",{\"0\":{\"36\":1},\"1\":{\"14\":1,\"15\":2,\"16\":1,\"20\":1,\"62\":1}}],[\"seek\",{\"1\":{\"100\":1}}],[\"see\",{\"0\":{\"17\":1,\"18\":1},\"1\":{\"12\":3,\"13\":1,\"14\":1,\"15\":2,\"20\":1,\"30\":1,\"61\":2,\"62\":1,\"73\":2,\"89\":1}}],[\"suitable\",{\"1\":{\"105\":1}}],[\"subset\",{\"1\":{\"99\":2}}],[\"subfolder\",{\"1\":{\"67\":1,\"73\":1}}],[\"subfolders\",{\"1\":{\"65\":1,\"67\":1}}],[\"sugar\",{\"1\":{\"76\":1,\"79\":3,\"80\":2}}],[\"suggested\",{\"1\":{\"76\":1,\"82\":2}}],[\"surrounded\",{\"1\":{\"96\":1}}],[\"surroundings\",{\"1\":{\"83\":1}}],[\"survival\",{\"1\":{\"73\":1}}],[\"sure\",{\"1\":{\"30\":1,\"36\":1,\"79\":2,\"85\":1,\"93\":2,\"96\":2,\"101\":1}}],[\"supposed\",{\"1\":{\"82\":2}}],[\"supported\",{\"1\":{\"96\":1}}],[\"support\",{\"1\":{\"28\":1,\"35\":1}}],[\"supporting\",{\"1\":{\"0\":1}}],[\"supplies\",{\"1\":{\"75\":4}}],[\"supplyship\",{\"1\":{\"75\":2}}],[\"supplycamp\",{\"1\":{\"75\":4}}],[\"supplycamps\",{\"1\":{\"67\":1}}],[\"supply\",{\"0\":{\"75\":1},\"1\":{\"75\":5,\"99\":1}}],[\"successfully\",{\"1\":{\"17\":1,\"79\":1}}],[\"such\",{\"1\":{\"0\":1,\"83\":1,\"95\":2,\"96\":1}}],[\"s\",{\"1\":{\"0\":1,\"12\":2,\"13\":1,\"16\":2,\"18\":1,\"20\":3,\"29\":1,\"30\":3,\"36\":1,\"63\":1,\"65\":2,\"68\":2,\"70\":2,\"73\":4,\"75\":2,\"76\":1,\"81\":1,\"83\":1,\"86\":1,\"94\":1,\"95\":3,\"96\":15,\"97\":1,\"99\":1,\"100\":1,\"101\":1,\"102\":1}}],[\"ignored\",{\"1\":{\"105\":1}}],[\"ignoreschematicsfromjar\",{\"1\":{\"92\":1}}],[\"iron\",{\"1\":{\"77\":1}}],[\"identifier\",{\"1\":{\"70\":1}}],[\"ids\",{\"1\":{\"64\":1}}],[\"i\",{\"0\":{\"67\":2,\"70\":1,\"71\":1,\"72\":1,\"97\":1},\"1\":{\"76\":1,\"94\":1,\"95\":1,\"96\":2}}],[\"icons\",{\"1\":{\"65\":2}}],[\"icon\",{\"1\":{\"20\":3,\"62\":1,\"64\":2,\"65\":2}}],[\"implementation\",{\"1\":{\"79\":1}}],[\"importantly\",{\"1\":{\"95\":1}}],[\"important\",{\"0\":{\"13\":1},\"1\":{\"73\":1,\"100\":1}}],[\"image\",{\"1\":{\"12\":2,\"13\":2,\"14\":6,\"15\":2,\"16\":2,\"17\":2,\"18\":2,\"63\":1,\"79\":1}}],[\"illegal\",{\"1\":{\"12\":2}}],[\"if\",{\"0\":{\"97\":1},\"1\":{\"0\":1,\"10\":1,\"12\":3,\"13\":1,\"16\":4,\"17\":1,\"18\":1,\"28\":1,\"30\":2,\"33\":1,\"35\":2,\"36\":1,\"61\":2,\"64\":1,\"65\":2,\"68\":1,\"73\":1,\"76\":1,\"79\":3,\"80\":1,\"82\":1,\"85\":2,\"89\":1,\"92\":1,\"96\":8,\"98\":1,\"100\":1,\"101\":1}}],[\"input\",{\"1\":{\"106\":1}}],[\"initially\",{\"1\":{\"82\":1}}],[\"invisible\",{\"1\":{\"94\":1,\"96\":1}}],[\"invite\",{\"0\":{\"14\":1}}],[\"involvement\",{\"1\":{\"83\":1}}],[\"inventory\",{\"1\":{\"73\":1,\"89\":1}}],[\"infested\",{\"1\":{\"86\":1}}],[\"infrastructure\",{\"1\":{\"65\":2,\"94\":1,\"95\":4}}],[\"information\",{\"0\":{\"12\":2,\"87\":1},\"1\":{\"12\":3,\"20\":1,\"60\":1,\"69\":1}}],[\"increasingly\",{\"1\":{\"80\":1}}],[\"increasing\",{\"1\":{\"76\":1}}],[\"increase\",{\"1\":{\"64\":3}}],[\"included\",{\"1\":{\"72\":1,\"96\":1}}],[\"include\",{\"1\":{\"35\":1,\"79\":1,\"93\":1,\"96\":3}}],[\"includes\",{\"1\":{\"0\":1}}],[\"including\",{\"1\":{\"17\":1,\"71\":1,\"85\":1,\"86\":1}}],[\"instead\",{\"1\":{\"85\":1,\"96\":3,\"103\":1}}],[\"instances\",{\"1\":{\"20\":2}}],[\"instance\",{\"1\":{\"20\":15,\"88\":1}}],[\"installer\",{\"0\":{\"30\":1,\"35\":1},\"1\":{\"29\":1}}],[\"installed\",{\"1\":{\"20\":1,\"28\":1,\"30\":1,\"64\":1,\"67\":1,\"71\":2,\"72\":1}}],[\"install\",{\"0\":{\"67\":1},\"1\":{\"20\":3,\"28\":2,\"30\":1,\"35\":1,\"64\":1}}],[\"installations\",{\"1\":{\"36\":1}}],[\"installation\",{\"1\":{\"20\":1,\"28\":2,\"30\":3,\"36\":1}}],[\"installing\",{\"0\":{\"28\":1},\"1\":{\"20\":9,\"28\":1,\"30\":1,\"35\":1}}],[\"inside\",{\"1\":{\"32\":1,\"69\":1,\"73\":1,\"79\":1}}],[\"introduced\",{\"1\":{\"96\":1}}],[\"into\",{\"1\":{\"28\":1,\"65\":1,\"73\":1,\"79\":1,\"89\":1,\"95\":1,\"96\":6,\"98\":1,\"101\":4,\"104\":1,\"105\":2}}],[\"intended\",{\"1\":{\"96\":3}}],[\"integrating\",{\"1\":{\"76\":1}}],[\"integrate\",{\"1\":{\"28\":1}}],[\"integrated\",{\"1\":{\"0\":1}}],[\"interaction\",{\"1\":{\"14\":2}}],[\"interacting\",{\"1\":{\"10\":1}}],[\"indices\",{\"1\":{\"18\":1}}],[\"individual\",{\"1\":{\"14\":1}}],[\"in\",{\"0\":{\"15\":1,\"16\":1,\"72\":1,\"88\":1,\"92\":1,\"94\":1,\"95\":1},\"1\":{\"12\":1,\"13\":1,\"15\":1,\"16\":11,\"17\":2,\"18\":1,\"20\":11,\"28\":2,\"30\":1,\"32\":1,\"33\":3,\"35\":1,\"60\":2,\"61\":10,\"62\":2,\"63\":4,\"64\":5,\"65\":3,\"66\":1,\"67\":5,\"68\":7,\"69\":1,\"70\":2,\"71\":1,\"72\":3,\"73\":7,\"74\":1,\"76\":1,\"79\":2,\"80\":1,\"83\":1,\"85\":3,\"86\":1,\"88\":1,\"89\":3,\"90\":1,\"93\":6,\"94\":3,\"95\":3,\"96\":18,\"97\":1,\"98\":2,\"99\":8,\"100\":1,\"101\":1,\"103\":3,\"104\":1,\"105\":6}}],[\"isn\",{\"1\":{\"85\":1}}],[\"issues\",{\"1\":{\"35\":1,\"96\":1}}],[\"issue\",{\"1\":{\"0\":1}}],[\"is\",{\"0\":{\"12\":1,\"13\":1,\"16\":1,\"18\":1,\"68\":1,\"69\":1,\"70\":1,\"71\":1},\"1\":{\"0\":2,\"12\":3,\"13\":3,\"14\":1,\"16\":6,\"17\":1,\"20\":4,\"28\":2,\"30\":1,\"35\":1,\"61\":1,\"62\":1,\"63\":1,\"64\":5,\"65\":1,\"66\":1,\"68\":6,\"69\":1,\"70\":2,\"71\":1,\"72\":2,\"73\":5,\"74\":1,\"75\":2,\"79\":7,\"80\":2,\"81\":2,\"82\":2,\"88\":1,\"91\":3,\"94\":2,\"95\":10,\"96\":10,\"98\":2,\"99\":1,\"100\":2,\"101\":5,\"102\":1,\"103\":2,\"105\":2}}],[\"items\",{\"1\":{\"86\":1}}],[\"item\",{\"1\":{\"75\":1}}],[\"itself\",{\"1\":{\"79\":2,\"82\":1,\"95\":2,\"96\":3}}],[\"its\",{\"1\":{\"33\":1,\"73\":1,\"93\":1,\"96\":4,\"100\":1,\"101\":1}}],[\"it\",{\"1\":{\"0\":2,\"12\":3,\"14\":1,\"16\":4,\"20\":6,\"28\":1,\"30\":3,\"32\":1,\"33\":1,\"34\":1,\"36\":1,\"60\":1,\"61\":4,\"62\":1,\"63\":1,\"64\":2,\"65\":6,\"67\":1,\"72\":1,\"73\":3,\"76\":1,\"80\":1,\"82\":1,\"85\":1,\"90\":1,\"91\":1,\"93\":1,\"94\":1,\"95\":5,\"96\":29,\"99\":2,\"100\":1,\"101\":1}}],[\"随着模组的发展\",{\"1\":{\"0\":1}}],[\"等等\",{\"1\":{\"0\":1}}],[\"五种牧民\",{\"1\":{\"0\":1}}],[\"center\",{\"1\":{\"94\":1}}],[\"certain\",{\"1\":{\"60\":1,\"76\":1,\"79\":1,\"96\":1}}],[\"cmpdl\",{\"1\":{\"35\":1}}],[\"claimed\",{\"1\":{\"99\":1}}],[\"classic\",{\"1\":{\"72\":1}}],[\"clients\",{\"0\":{\"71\":1}}],[\"client\",{\"1\":{\"30\":1,\"68\":1}}],[\"clicking\",{\"1\":{\"12\":1,\"16\":5}}],[\"click\",{\"1\":{\"12\":1,\"14\":1,\"20\":13,\"32\":1,\"34\":1,\"61\":5,\"62\":2,\"73\":1,\"96\":2,\"99\":2,\"100\":1}}],[\"close\",{\"1\":{\"16\":1,\"20\":1}}],[\"citizen5\",{\"1\":{\"74\":1}}],[\"citizen4\",{\"1\":{\"74\":1}}],[\"citizen3\",{\"1\":{\"74\":1}}],[\"citizen2\",{\"1\":{\"74\":1}}],[\"citizen1\",{\"1\":{\"74\":1}}],[\"citizen\",{\"1\":{\"15\":2,\"16\":4}}],[\"citizens\",{\"0\":{\"15\":2,\"16\":1},\"1\":{\"12\":4,\"13\":1,\"15\":3,\"16\":5,\"18\":1}}],[\"caveats\",{\"1\":{\"95\":2}}],[\"care\",{\"1\":{\"94\":1,\"96\":1}}],[\"carefully\",{\"1\":{\"95\":1}}],[\"careful\",{\"1\":{\"94\":2,\"96\":2}}],[\"carpets\",{\"1\":{\"76\":2}}],[\"case\",{\"1\":{\"88\":1}}],[\"cactus\",{\"1\":{\"76\":1,\"79\":4,\"80\":1}}],[\"cached\",{\"1\":{\"71\":1}}],[\"cache\",{\"0\":{\"70\":1},\"1\":{\"70\":1}}],[\"camp\",{\"1\":{\"75\":7,\"99\":1}}],[\"camps\",{\"0\":{\"75\":1},\"1\":{\"75\":1}}],[\"capital\",{\"1\":{\"74\":1}}],[\"capitals\",{\"1\":{\"73\":1}}],[\"categories\",{\"1\":{\"65\":1}}],[\"called\",{\"1\":{\"63\":1,\"73\":1,\"88\":1,\"96\":1}}],[\"causes\",{\"1\":{\"14\":1}}],[\"canonical\",{\"1\":{\"95\":1}}],[\"cane\",{\"1\":{\"76\":1,\"79\":1,\"80\":2}}],[\"cannot\",{\"0\":{\"35\":1},\"1\":{\"28\":1}}],[\"can\",{\"0\":{\"14\":1,\"16\":1,\"18\":1,\"72\":1},\"1\":{\"10\":1,\"12\":1,\"13\":1,\"14\":4,\"15\":1,\"16\":4,\"17\":2,\"18\":1,\"20\":2,\"28\":1,\"32\":1,\"35\":2,\"60\":1,\"61\":4,\"62\":4,\"63\":1,\"65\":3,\"68\":1,\"70\":2,\"71\":1,\"73\":5,\"79\":4,\"80\":1,\"81\":1,\"83\":1,\"89\":1,\"91\":1,\"95\":6,\"96\":14,\"98\":1,\"99\":6,\"100\":1,\"101\":2}}],[\"cracked\",{\"1\":{\"104\":1}}],[\"craftsmanship\",{\"1\":{\"96\":1}}],[\"crafting\",{\"1\":{\"10\":1}}],[\"cranes\",{\"1\":{\"95\":1}}],[\"crimsonp\",{\"1\":{\"79\":2}}],[\"crimson\",{\"1\":{\"79\":1,\"82\":1}}],[\"crusher5\",{\"1\":{\"74\":1}}],[\"crusher4\",{\"1\":{\"74\":1}}],[\"crusher3\",{\"1\":{\"74\":1}}],[\"crusher2\",{\"1\":{\"74\":1}}],[\"crusher1\",{\"1\":{\"74\":1}}],[\"credit\",{\"1\":{\"64\":1}}],[\"creativity\",{\"1\":{\"96\":1}}],[\"creative\",{\"1\":{\"72\":1}}],[\"creating\",{\"1\":{\"20\":1,\"101\":1}}],[\"created\",{\"1\":{\"70\":2,\"71\":1,\"79\":1}}],[\"create\",{\"0\":{\"73\":1,\"93\":1,\"96\":1},\"1\":{\"13\":1,\"17\":1,\"20\":4,\"36\":1,\"73\":1,\"88\":2,\"94\":1,\"99\":1}}],[\"cheaper\",{\"1\":{\"96\":1}}],[\"checking\",{\"1\":{\"96\":1}}],[\"checkmark\",{\"1\":{\"61\":1}}],[\"check\",{\"1\":{\"0\":1,\"61\":1}}],[\"children\",{\"1\":{\"96\":2}}],[\"child\",{\"0\":{\"96\":1},\"1\":{\"96\":39}}],[\"chickenherder5\",{\"1\":{\"74\":1}}],[\"chickenherder4\",{\"1\":{\"74\":1}}],[\"chickenherder3\",{\"1\":{\"74\":1}}],[\"chickenherder2\",{\"1\":{\"74\":1}}],[\"chickenherder1\",{\"1\":{\"74\":1}}],[\"choosing\",{\"1\":{\"20\":1}}],[\"choose\",{\"1\":{\"16\":2,\"20\":2}}],[\"channel\",{\"1\":{\"97\":1}}],[\"chance\",{\"1\":{\"80\":1,\"99\":1}}],[\"changing\",{\"1\":{\"20\":1}}],[\"changed\",{\"1\":{\"79\":1}}],[\"changes\",{\"1\":{\"64\":1}}],[\"changelog\",{\"1\":{\"34\":1}}],[\"change\",{\"1\":{\"12\":1,\"13\":1,\"17\":1,\"20\":2,\"30\":1,\"62\":1,\"75\":1,\"86\":1}}],[\"chapter\",{\"1\":{\"61\":1}}],[\"chat\",{\"1\":{\"16\":1}}],[\"curseforge\",{\"1\":{\"28\":2,\"31\":1,\"34\":1,\"35\":2}}],[\"currently\",{\"1\":{\"17\":1,\"28\":1,\"81\":1,\"95\":1,\"99\":1}}],[\"current\",{\"1\":{\"10\":2,\"14\":1}}],[\"custom\",{\"0\":{\"67\":1,\"73\":1,\"74\":1,\"75\":1,\"89\":1,\"94\":1,\"95\":1},\"1\":{\"12\":2,\"13\":2,\"14\":6,\"15\":2,\"16\":2,\"17\":2,\"18\":2,\"20\":1,\"61\":1,\"67\":1,\"69\":3,\"72\":1,\"73\":2,\"75\":1,\"89\":2,\"94\":2}}],[\"cobwebs\",{\"1\":{\"106\":1}}],[\"cobweb\",{\"1\":{\"105\":1,\"106\":1}}],[\"cobble\",{\"1\":{\"76\":1,\"95\":1}}],[\"coarse\",{\"1\":{\"104\":1}}],[\"cocoa\",{\"1\":{\"79\":3,\"81\":1}}],[\"cowboy5\",{\"1\":{\"74\":1}}],[\"cowboy4\",{\"1\":{\"74\":1}}],[\"cowboy3\",{\"1\":{\"74\":1}}],[\"cowboy2\",{\"1\":{\"74\":1}}],[\"cowboy1\",{\"1\":{\"74\":1}}],[\"cook5\",{\"1\":{\"74\":1}}],[\"cook4\",{\"1\":{\"74\":1}}],[\"cook3\",{\"1\":{\"74\":1}}],[\"cook2\",{\"1\":{\"74\":1}}],[\"cook1\",{\"1\":{\"74\":1}}],[\"cooks\",{\"1\":{\"0\":1}}],[\"copied\",{\"1\":{\"69\":1,\"89\":3}}],[\"copy\",{\"0\":{\"33\":1},\"1\":{\"33\":1,\"71\":1,\"85\":1,\"90\":1}}],[\"could\",{\"1\":{\"65\":1,\"73\":1,\"96\":1}}],[\"couple\",{\"1\":{\"65\":1}}],[\"course\",{\"1\":{\"60\":1}}],[\"couriers\",{\"1\":{\"96\":1}}],[\"courier\",{\"1\":{\"48\":2,\"59\":1}}],[\"corresponding\",{\"1\":{\"95\":1}}],[\"correctly\",{\"1\":{\"96\":1}}],[\"correct\",{\"1\":{\"28\":1,\"61\":3,\"96\":3}}],[\"corner\",{\"1\":{\"61\":1}}],[\"colors\",{\"1\":{\"18\":1}}],[\"color\",{\"1\":{\"16\":4}}],[\"colonists\",{\"0\":{\"72\":1}}],[\"colonies\",{\"1\":{\"13\":2,\"98\":2,\"99\":1,\"100\":1}}],[\"colony\",{\"0\":{\"10\":1,\"14\":1,\"15\":1,\"16\":1,\"18\":1},\"1\":{\"10\":3,\"12\":3,\"13\":7,\"15\":1,\"16\":5,\"17\":1,\"72\":1,\"73\":1,\"96\":1,\"98\":1,\"99\":8,\"101\":1}}],[\"collaborate\",{\"0\":{\"14\":1}}],[\"cols=6\",{\"1\":{\"12\":1,\"13\":1,\"14\":3,\"15\":1,\"16\":1,\"17\":1,\"18\":1}}],[\"concretemixer\",{\"1\":{\"76\":1}}],[\"concretemixer5\",{\"1\":{\"74\":1}}],[\"concretemixer4\",{\"1\":{\"74\":1}}],[\"concretemixer3\",{\"1\":{\"74\":1}}],[\"concretemixer2\",{\"1\":{\"74\":1}}],[\"concretemixer1\",{\"1\":{\"74\":1}}],[\"consisting\",{\"1\":{\"95\":1}}],[\"consistent\",{\"1\":{\"94\":1}}],[\"consistently\",{\"1\":{\"73\":1}}],[\"constructing\",{\"1\":{\"105\":1}}],[\"constructionworker1\",{\"1\":{\"73\":1}}],[\"constructed\",{\"1\":{\"72\":1,\"95\":2,\"96\":2}}],[\"converted\",{\"1\":{\"105\":1}}],[\"converting\",{\"1\":{\"105\":1}}],[\"conversation\",{\"1\":{\"0\":1}}],[\"convention\",{\"1\":{\"73\":1}}],[\"connectors\",{\"1\":{\"99\":1}}],[\"connecting\",{\"1\":{\"28\":1,\"101\":3}}],[\"connect\",{\"1\":{\"28\":2,\"101\":3}}],[\"confirm\",{\"1\":{\"96\":1}}],[\"confirmed\",{\"1\":{\"13\":2}}],[\"configuration\",{\"1\":{\"91\":1,\"92\":1,\"98\":1}}],[\"configs\",{\"1\":{\"28\":2}}],[\"config\",{\"1\":{\"13\":1,\"91\":1,\"92\":1}}],[\"contain\",{\"1\":{\"63\":1,\"65\":1,\"67\":1,\"73\":1,\"96\":4}}],[\"contains\",{\"1\":{\"61\":1,\"63\":1,\"64\":1,\"65\":2,\"95\":1}}],[\"containing\",{\"1\":{\"28\":1,\"60\":1,\"67\":1,\"96\":2}}],[\"continue\",{\"1\":{\"17\":1}}],[\"continuously\",{\"1\":{\"0\":1}}],[\"controller\",{\"1\":{\"93\":3,\"96\":1}}],[\"controllers\",{\"1\":{\"61\":1}}],[\"controls\",{\"1\":{\"16\":2}}],[\"control\",{\"0\":{\"16\":1}}],[\"contribute\",{\"1\":{\"0\":1}}],[\"contents\",{\"1\":{\"33\":1,\"85\":1}}],[\"content\",{\"1\":{\"0\":1,\"12\":2,\"13\":2,\"14\":6,\"15\":2,\"16\":2,\"17\":2,\"18\":2}}],[\"coding\",{\"1\":{\"0\":1}}],[\"coder\",{\"1\":{\"0\":1}}],[\"code\",{\"1\":{\"0\":1}}],[\"combine\",{\"1\":{\"96\":1}}],[\"combination\",{\"1\":{\"96\":1}}],[\"combinations\",{\"1\":{\"96\":3}}],[\"combat\",{\"1\":{\"76\":1}}],[\"combatacademy\",{\"1\":{\"76\":1}}],[\"combatacademy5\",{\"1\":{\"74\":1}}],[\"combatacademy4\",{\"1\":{\"74\":1}}],[\"combatacademy3\",{\"1\":{\"74\":1}}],[\"combatacademy2\",{\"1\":{\"74\":1}}],[\"combatacademy1\",{\"1\":{\"74\":1}}],[\"compost\",{\"1\":{\"76\":2}}],[\"composter\",{\"1\":{\"76\":1}}],[\"composter5\",{\"1\":{\"74\":1}}],[\"composter4\",{\"1\":{\"74\":1}}],[\"composter3\",{\"1\":{\"74\":1}}],[\"composter2\",{\"1\":{\"74\":1}}],[\"composter1\",{\"1\":{\"74\":1}}],[\"composters\",{\"1\":{\"0\":1}}],[\"computer\",{\"1\":{\"32\":1}}],[\"completely\",{\"0\":{\"92\":1},\"1\":{\"73\":1,\"79\":1}}],[\"complete\",{\"1\":{\"17\":1,\"30\":1}}],[\"completed\",{\"1\":{\"17\":1}}],[\"command\",{\"1\":{\"86\":1}}],[\"commands\",{\"1\":{\"10\":1}}],[\"common\",{\"1\":{\"66\":1,\"91\":1,\"92\":1}}],[\"community\",{\"1\":{\"0\":1}}],[\"c\",{\"1\":{\"0\":1}}],[\"护林员\",{\"0\":{\"46\":1},\"1\":{\"0\":1}}],[\"渔夫等\",{\"1\":{\"59\":1}}],[\"渔夫\",{\"1\":{\"0\":1,\"59\":1}}],[\"建造建筑\",{\"1\":{\"57\":1,\"58\":1}}],[\"建造选项\",{\"1\":{\"57\":1,\"58\":1}}],[\"建造一个餐厅也是明智的选择\",{\"1\":{\"45\":1}}],[\"建议接下来建造一个护林员小屋\",{\"1\":{\"46\":1}}],[\"建筑师\",{\"1\":{\"59\":1}}],[\"建筑的gui将显示\",{\"1\":{\"7\":1}}],[\"建筑\",{\"0\":{\"3\":1}}],[\"建筑工将询问他们需要的材料\",{\"1\":{\"57\":1}}],[\"建筑工将无法建造任何其他建筑\",{\"1\":{\"57\":1}}],[\"建筑工小屋\",{\"1\":{\"57\":5}}],[\"建筑工具的教学视频\",{\"0\":{\"53\":1}}],[\"建筑工必须先建造他们自己的建筑工小屋\",{\"1\":{\"43\":1}}],[\"建筑工\",{\"0\":{\"43\":1},\"1\":{\"0\":1}}],[\"建在山内\",{\"1\":{\"0\":1}}],[\"例如模拟殖民地\",{\"1\":{\"23\":1}}],[\"例如\",{\"1\":{\"0\":1,\"53\":1}}],[\"山顶\",{\"1\":{\"0\":1}}],[\"适应任何生态区域\",{\"1\":{\"0\":1}}],[\"有了如此多的选择\",{\"1\":{\"0\":1}}],[\"可让你在minecraft中创建自己的繁荣城镇\",{\"1\":{\"0\":1}}],[\"开始\",{\"0\":{\"0\":1},\"1\":{\"6\":1}}]],\"serializationVersion\":2}}")).map(([e,t])=>[e,zt(t,{fields:["h","t","c"],storeFields:["h","t","c"]})]));self.onmessage=({data:{type:e="all",query:t,locale:s,options:n}})=>{e==="suggest"?self.postMessage(st(t,v[s],n)):e==="search"?self.postMessage(et(t,v[s],n)):self.postMessage({suggestions:st(t,v[s],n),results:et(t,v[s],n)})}; //# sourceMappingURL=index.js.map diff --git a/service-worker.js b/service-worker.js new file mode 100644 index 0000000..ee1ca98 --- /dev/null +++ b/service-worker.js @@ -0,0 +1,2 @@ +if(!self.define){let e,s={};const a=(a,i)=>(a=new URL(a+".js",i).href,s[a]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=a,e.onload=s,document.head.appendChild(e)}else e=a,importScripts(a),s()})).then((()=>{let e=s[a];if(!e)throw new Error(`Module ${a} didn’t register its module`);return e})));self.define=(i,d)=>{const r=e||("document"in self?document.currentScript.src:"")||location.href;if(s[r])return;let t={};const l=e=>a(e,r),c={module:{uri:r},exports:t,require:l};s[r]=Promise.all(i.map((e=>c[e]||l(e)))).then((e=>(d(...e),t)))}}define(["./workbox-dbb64b4e"],(function(e){"use strict";self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()})),e.clientsClaim(),e.precacheAndRoute([{url:"assets/404.html-FzwsIe5I.js",revision:"5c55e9a42f0fec55873e49d006eb89e9"},{url:"assets/404.html-YbRkGhD2.js",revision:"4ae042fd346da9c1b3a8161eb881505e"},{url:"assets/app-rX80dX-Q.js",revision:"e2ab66c7da7d00868155af52c56e1a08"},{url:"assets/datapacks.html-XoM--KFN.js",revision:"bb82ba7f243b0340eec0071bcbf4b783"},{url:"assets/datapacks.html-XY14g8Fx.js",revision:"e44c0e37221ea77f149ef3fee9795c83"},{url:"assets/gdlauncher.html-gLJsbJFe.js",revision:"987992e42ae67e073608c5b946feec97"},{url:"assets/gdlauncher.html-LPHvh2kO.js",revision:"48c5362af53afda1a225506a75d1015c"},{url:"assets/getting-started.html-cmKU-xSg.js",revision:"f20038fef7dd4198055d5ea85ec4447e"},{url:"assets/getting-started.html-K6-kH37m.js",revision:"2d5e37a676abc529edb01cad3d0e0c2f"},{url:"assets/hmcl.html-nuGELm3C.js",revision:"2acd7bb8ca15e26fde9a31c0edc9f71f"},{url:"assets/hmcl.html-XybsHrXO.js",revision:"e0a835734858eedc4a74af8f5b26288b"},{url:"assets/image/advanced.svg",revision:"d41d8cd98f00b204e9800998ecf8427e"},{url:"assets/image/blog.svg",revision:"d41d8cd98f00b204e9800998ecf8427e"},{url:"assets/image/box.svg",revision:"d41d8cd98f00b204e9800998ecf8427e"},{url:"assets/image/features.svg",revision:"d41d8cd98f00b204e9800998ecf8427e"},{url:"assets/image/github-dark.svg",revision:"d41d8cd98f00b204e9800998ecf8427e"},{url:"assets/image/github-light.svg",revision:"d41d8cd98f00b204e9800998ecf8427e"},{url:"assets/image/layout.svg",revision:"d41d8cd98f00b204e9800998ecf8427e"},{url:"assets/image/markdown.svg",revision:"d41d8cd98f00b204e9800998ecf8427e"},{url:"assets/index-7SG8bi1h.js",revision:"46a193641571106d3b7b43f9bc2a2735"},{url:"assets/index.html-26zp0mBY.js",revision:"e4ef0ef48aaa171fb9b958a748ad31b4"},{url:"assets/index.html-5FyXhD0v.js",revision:"013305c6eb9b774a4feee157fba22fd0"},{url:"assets/index.html-Gvxye8Fe.js",revision:"d59ce7ed4c1e27d0aada314978d8a766"},{url:"assets/index.html-iGaRDsYP.js",revision:"82c92ae2d652ddfb5f63dd29d8094931"},{url:"assets/index.html-pFrUCak5.js",revision:"29345e45c0eb87306e5b45a3e2f69eb2"},{url:"assets/index.html-QIJUgJxO.js",revision:"dcfdc2cd2b37d31532128b96d8978be9"},{url:"assets/index.html-qMHFXmIa.js",revision:"0b08acd2689fa5b174704aae49550276"},{url:"assets/index.html-SgfpfqAF.js",revision:"41a1ef0d1765581c4d8ddfedac7ee17f"},{url:"assets/java.html-b4gnrsFa.js",revision:"980c054a42445e82b95b8977a5287b7e"},{url:"assets/java.html-cvzZEkzf.js",revision:"c302245a673efa211fddadd036193b93"},{url:"assets/photoswipe.esm-08_zHRDQ.js",revision:"481d5342d9bb799640b63b15b698dcd4"},{url:"assets/plugin-vue_export-helper-x3n3nnut.js",revision:"25e3a5dcaf00fb2b1ba0c8ecea6d2560"},{url:"assets/schematics.html-xW3zIrup.js",revision:"22c7a1775c689ccaaf1375b5e89a41e1"},{url:"assets/schematics.html-ZIiwWZQs.js",revision:"f09cadeccc729f32436960a23181593d"},{url:"assets/SearchResult-IzeXNURa.js",revision:"8656b585b24d1777eb15a263fba15a40"},{url:"assets/style-vzLtS47N.css",revision:"d63456a53102f8acbc744e03231fd8e2"},{url:"assets/temp.html-KkJJgK1Y.js",revision:"beae9ad14ae9ded48367846ba21e270e"},{url:"assets/temp.html-mJuis2h8.js",revision:"4bc82667d763bdec584b8e8026e9855b"},{url:"assets/townhall.html-f05QP5j6.js",revision:"992c11f3105ae0789d03e3f78fa379bd"},{url:"assets/townhall.html-hfvW79OU.js",revision:"e9b32cf4c0faea99720d503511e96615"},{url:"assets/worldgencolonies.html-hBZXKTdx.js",revision:"2c4ede12ca2f319842fcb524bd012212"},{url:"assets/worldgencolonies.html-lvv6_fgg.js",revision:"820721db80dcbcfef5689dfde578a0d0"},{url:"logo.svg",revision:"d41d8cd98f00b204e9800998ecf8427e"},{url:"index.html",revision:"68e46a2896fe73591b163e7eb58d1464"},{url:"404.html",revision:"4925ff3b0b48d1152e44567381624191"}],{}),e.cleanupOutdatedCaches()})); +//# sourceMappingURL=service-worker.js.map diff --git a/service-worker.js.map b/service-worker.js.map new file mode 100644 index 0000000..13ad6ac --- /dev/null +++ b/service-worker.js.map @@ -0,0 +1 @@ +{"version":3,"file":"service-worker.js","sources":["../../../../../tmp/f89ec43275485a71bd05264a6412c303/service-worker.js"],"sourcesContent":["import {clientsClaim as workbox_core_clientsClaim} from '/home/runner/work/Minecolonies-Chinese-Wiki/Minecolonies-Chinese-Wiki/node_modules/.pnpm/workbox-core@7.0.0/node_modules/workbox-core/clientsClaim.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/home/runner/work/Minecolonies-Chinese-Wiki/Minecolonies-Chinese-Wiki/node_modules/.pnpm/workbox-precaching@7.0.0/node_modules/workbox-precaching/precacheAndRoute.mjs';\nimport {cleanupOutdatedCaches as workbox_precaching_cleanupOutdatedCaches} from '/home/runner/work/Minecolonies-Chinese-Wiki/Minecolonies-Chinese-Wiki/node_modules/.pnpm/workbox-precaching@7.0.0/node_modules/workbox-precaching/cleanupOutdatedCaches.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\nworkbox_core_clientsClaim();\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"assets/404.html-FzwsIe5I.js\",\n \"revision\": \"5c55e9a42f0fec55873e49d006eb89e9\"\n },\n {\n \"url\": \"assets/404.html-YbRkGhD2.js\",\n \"revision\": \"4ae042fd346da9c1b3a8161eb881505e\"\n },\n {\n \"url\": \"assets/app-rX80dX-Q.js\",\n \"revision\": \"e2ab66c7da7d00868155af52c56e1a08\"\n },\n {\n \"url\": \"assets/datapacks.html-XoM--KFN.js\",\n \"revision\": \"bb82ba7f243b0340eec0071bcbf4b783\"\n },\n {\n \"url\": \"assets/datapacks.html-XY14g8Fx.js\",\n \"revision\": \"e44c0e37221ea77f149ef3fee9795c83\"\n },\n {\n \"url\": \"assets/gdlauncher.html-gLJsbJFe.js\",\n \"revision\": \"987992e42ae67e073608c5b946feec97\"\n },\n {\n \"url\": \"assets/gdlauncher.html-LPHvh2kO.js\",\n \"revision\": \"48c5362af53afda1a225506a75d1015c\"\n },\n {\n \"url\": \"assets/getting-started.html-cmKU-xSg.js\",\n \"revision\": \"f20038fef7dd4198055d5ea85ec4447e\"\n },\n {\n \"url\": \"assets/getting-started.html-K6-kH37m.js\",\n \"revision\": \"2d5e37a676abc529edb01cad3d0e0c2f\"\n },\n {\n \"url\": \"assets/hmcl.html-nuGELm3C.js\",\n \"revision\": \"2acd7bb8ca15e26fde9a31c0edc9f71f\"\n },\n {\n \"url\": \"assets/hmcl.html-XybsHrXO.js\",\n \"revision\": \"e0a835734858eedc4a74af8f5b26288b\"\n },\n {\n \"url\": \"assets/image/advanced.svg\",\n \"revision\": \"d41d8cd98f00b204e9800998ecf8427e\"\n },\n {\n \"url\": \"assets/image/blog.svg\",\n \"revision\": \"d41d8cd98f00b204e9800998ecf8427e\"\n },\n {\n \"url\": \"assets/image/box.svg\",\n \"revision\": \"d41d8cd98f00b204e9800998ecf8427e\"\n },\n {\n \"url\": \"assets/image/features.svg\",\n \"revision\": \"d41d8cd98f00b204e9800998ecf8427e\"\n },\n {\n \"url\": \"assets/image/github-dark.svg\",\n \"revision\": \"d41d8cd98f00b204e9800998ecf8427e\"\n },\n {\n \"url\": \"assets/image/github-light.svg\",\n \"revision\": \"d41d8cd98f00b204e9800998ecf8427e\"\n },\n {\n \"url\": \"assets/image/layout.svg\",\n \"revision\": \"d41d8cd98f00b204e9800998ecf8427e\"\n },\n {\n \"url\": \"assets/image/markdown.svg\",\n \"revision\": \"d41d8cd98f00b204e9800998ecf8427e\"\n },\n {\n \"url\": \"assets/index-7SG8bi1h.js\",\n \"revision\": \"46a193641571106d3b7b43f9bc2a2735\"\n },\n {\n \"url\": \"assets/index.html-26zp0mBY.js\",\n \"revision\": \"e4ef0ef48aaa171fb9b958a748ad31b4\"\n },\n {\n \"url\": \"assets/index.html-5FyXhD0v.js\",\n \"revision\": \"013305c6eb9b774a4feee157fba22fd0\"\n },\n {\n \"url\": \"assets/index.html-Gvxye8Fe.js\",\n \"revision\": \"d59ce7ed4c1e27d0aada314978d8a766\"\n },\n {\n \"url\": \"assets/index.html-iGaRDsYP.js\",\n \"revision\": \"82c92ae2d652ddfb5f63dd29d8094931\"\n },\n {\n \"url\": \"assets/index.html-pFrUCak5.js\",\n \"revision\": \"29345e45c0eb87306e5b45a3e2f69eb2\"\n },\n {\n \"url\": \"assets/index.html-QIJUgJxO.js\",\n \"revision\": \"dcfdc2cd2b37d31532128b96d8978be9\"\n },\n {\n \"url\": \"assets/index.html-qMHFXmIa.js\",\n \"revision\": \"0b08acd2689fa5b174704aae49550276\"\n },\n {\n \"url\": \"assets/index.html-SgfpfqAF.js\",\n \"revision\": \"41a1ef0d1765581c4d8ddfedac7ee17f\"\n },\n {\n \"url\": \"assets/java.html-b4gnrsFa.js\",\n \"revision\": \"980c054a42445e82b95b8977a5287b7e\"\n },\n {\n \"url\": \"assets/java.html-cvzZEkzf.js\",\n \"revision\": \"c302245a673efa211fddadd036193b93\"\n },\n {\n \"url\": \"assets/photoswipe.esm-08_zHRDQ.js\",\n \"revision\": \"481d5342d9bb799640b63b15b698dcd4\"\n },\n {\n \"url\": \"assets/plugin-vue_export-helper-x3n3nnut.js\",\n \"revision\": \"25e3a5dcaf00fb2b1ba0c8ecea6d2560\"\n },\n {\n \"url\": \"assets/schematics.html-xW3zIrup.js\",\n \"revision\": \"22c7a1775c689ccaaf1375b5e89a41e1\"\n },\n {\n \"url\": \"assets/schematics.html-ZIiwWZQs.js\",\n \"revision\": \"f09cadeccc729f32436960a23181593d\"\n },\n {\n \"url\": \"assets/SearchResult-IzeXNURa.js\",\n \"revision\": \"8656b585b24d1777eb15a263fba15a40\"\n },\n {\n \"url\": \"assets/style-vzLtS47N.css\",\n \"revision\": \"d63456a53102f8acbc744e03231fd8e2\"\n },\n {\n \"url\": \"assets/temp.html-KkJJgK1Y.js\",\n \"revision\": \"beae9ad14ae9ded48367846ba21e270e\"\n },\n {\n \"url\": \"assets/temp.html-mJuis2h8.js\",\n \"revision\": \"4bc82667d763bdec584b8e8026e9855b\"\n },\n {\n \"url\": \"assets/townhall.html-f05QP5j6.js\",\n \"revision\": \"992c11f3105ae0789d03e3f78fa379bd\"\n },\n {\n \"url\": \"assets/townhall.html-hfvW79OU.js\",\n \"revision\": \"e9b32cf4c0faea99720d503511e96615\"\n },\n {\n \"url\": \"assets/worldgencolonies.html-hBZXKTdx.js\",\n \"revision\": \"2c4ede12ca2f319842fcb524bd012212\"\n },\n {\n \"url\": \"assets/worldgencolonies.html-lvv6_fgg.js\",\n \"revision\": \"820721db80dcbcfef5689dfde578a0d0\"\n },\n {\n \"url\": \"logo.svg\",\n \"revision\": \"d41d8cd98f00b204e9800998ecf8427e\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"68e46a2896fe73591b163e7eb58d1464\"\n },\n {\n \"url\": \"404.html\",\n \"revision\": \"4925ff3b0b48d1152e44567381624191\"\n }\n], {});\nworkbox_precaching_cleanupOutdatedCaches();\n\n\n\n\n\n\n\n"],"names":["self","addEventListener","event","data","type","skipWaiting","workbox_core_clientsClaim","workbox_precaching_precacheAndRoute","url","revision","workbox_precaching_cleanupOutdatedCaches"],"mappings":"0nBAqBAA,KAAKC,iBAAiB,WAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,aACP,IAGFC,EAAAA,eAQAC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,WACPC,SAAY,oCAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,WACPC,SAAY,qCAEb,CAAE,GACLC,EAAAA"} \ No newline at end of file diff --git a/temp.html b/temp.html index dd10c54..506bfe6 100644 --- a/temp.html +++ b/temp.html @@ -28,13 +28,13 @@ document.documentElement.setAttribute("data-theme", "dark"); } - 模拟殖民地 中文Wiki - - - + 模拟殖民地 中文Wiki + + + - - +
跳至主要內容

约 69 字小于 1 分钟

上次编辑于:
贡献者: ddaodan
+ diff --git a/workbox-dbb64b4e.js b/workbox-dbb64b4e.js new file mode 100644 index 0000000..73319b6 --- /dev/null +++ b/workbox-dbb64b4e.js @@ -0,0 +1,2 @@ +define(["exports"],(function(t){"use strict";try{self["workbox:core:7.0.0"]&&_()}catch(t){}const e=(t,...e)=>{let s=t;return e.length>0&&(s+=` :: ${JSON.stringify(e)}`),s};class s extends Error{constructor(t,s){super(e(t,s)),this.name=t,this.details=s}}try{self["workbox:routing:7.0.0"]&&_()}catch(t){}const n=t=>t&&"object"==typeof t?t:{handle:t};class i{constructor(t,e,s="GET"){this.handler=n(e),this.match=t,this.method=s}setCatchHandler(t){this.catchHandler=n(t)}}class r extends i{constructor(t,e,s){super((({url:e})=>{const s=t.exec(e.href);if(s&&(e.origin===location.origin||0===s.index))return s.slice(1)}),e,s)}}class o{constructor(){this.t=new Map,this.i=new Map}get routes(){return this.t}addFetchListener(){self.addEventListener("fetch",(t=>{const{request:e}=t,s=this.handleRequest({request:e,event:t});s&&t.respondWith(s)}))}addCacheListener(){self.addEventListener("message",(t=>{if(t.data&&"CACHE_URLS"===t.data.type){const{payload:e}=t.data,s=Promise.all(e.urlsToCache.map((e=>{"string"==typeof e&&(e=[e]);const s=new Request(...e);return this.handleRequest({request:s,event:t})})));t.waitUntil(s),t.ports&&t.ports[0]&&s.then((()=>t.ports[0].postMessage(!0)))}}))}handleRequest({request:t,event:e}){const s=new URL(t.url,location.href);if(!s.protocol.startsWith("http"))return;const n=s.origin===location.origin,{params:i,route:r}=this.findMatchingRoute({event:e,request:t,sameOrigin:n,url:s});let o=r&&r.handler;const c=t.method;if(!o&&this.i.has(c)&&(o=this.i.get(c)),!o)return;let a;try{a=o.handle({url:s,request:t,event:e,params:i})}catch(t){a=Promise.reject(t)}const h=r&&r.catchHandler;return a instanceof Promise&&(this.o||h)&&(a=a.catch((async n=>{if(h)try{return await h.handle({url:s,request:t,event:e,params:i})}catch(t){t instanceof Error&&(n=t)}if(this.o)return this.o.handle({url:s,request:t,event:e});throw n}))),a}findMatchingRoute({url:t,sameOrigin:e,request:s,event:n}){const i=this.t.get(s.method)||[];for(const r of i){let i;const o=r.match({url:t,sameOrigin:e,request:s,event:n});if(o)return i=o,(Array.isArray(i)&&0===i.length||o.constructor===Object&&0===Object.keys(o).length||"boolean"==typeof o)&&(i=void 0),{route:r,params:i}}return{}}setDefaultHandler(t,e="GET"){this.i.set(e,n(t))}setCatchHandler(t){this.o=n(t)}registerRoute(t){this.t.has(t.method)||this.t.set(t.method,[]),this.t.get(t.method).push(t)}unregisterRoute(t){if(!this.t.has(t.method))throw new s("unregister-route-but-not-found-with-method",{method:t.method});const e=this.t.get(t.method).indexOf(t);if(!(e>-1))throw new s("unregister-route-route-not-registered");this.t.get(t.method).splice(e,1)}}let c;const a=()=>(c||(c=new o,c.addFetchListener(),c.addCacheListener()),c);const h={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!=typeof registration?registration.scope:""},u=t=>[h.prefix,t,h.suffix].filter((t=>t&&t.length>0)).join("-"),l=t=>t||u(h.precache),f=t=>t||u(h.runtime);function w(t,e){const s=e();return t.waitUntil(s),s}try{self["workbox:precaching:7.0.0"]&&_()}catch(t){}function d(t){if(!t)throw new s("add-to-cache-list-unexpected-type",{entry:t});if("string"==typeof t){const e=new URL(t,location.href);return{cacheKey:e.href,url:e.href}}const{revision:e,url:n}=t;if(!n)throw new s("add-to-cache-list-unexpected-type",{entry:t});if(!e){const t=new URL(n,location.href);return{cacheKey:t.href,url:t.href}}const i=new URL(n,location.href),r=new URL(n,location.href);return i.searchParams.set("__WB_REVISION__",e),{cacheKey:i.href,url:r.href}}class p{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:t,state:e})=>{e&&(e.originalRequest=t)},this.cachedResponseWillBeUsed=async({event:t,state:e,cachedResponse:s})=>{if("install"===t.type&&e&&e.originalRequest&&e.originalRequest instanceof Request){const t=e.originalRequest.url;s?this.notUpdatedURLs.push(t):this.updatedURLs.push(t)}return s}}}class y{constructor({precacheController:t}){this.cacheKeyWillBeUsed=async({request:t,params:e})=>{const s=(null==e?void 0:e.cacheKey)||this.h.getCacheKeyForURL(t.url);return s?new Request(s,{headers:t.headers}):t},this.h=t}}let g;async function R(t,e){let n=null;if(t.url){n=new URL(t.url).origin}if(n!==self.location.origin)throw new s("cross-origin-copy-response",{origin:n});const i=t.clone(),r={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},o=e?e(r):r,c=function(){if(void 0===g){const t=new Response("");if("body"in t)try{new Response(t.body),g=!0}catch(t){g=!1}g=!1}return g}()?i.body:await i.blob();return new Response(c,o)}function m(t,e){const s=new URL(t);for(const t of e)s.searchParams.delete(t);return s.href}class v{constructor(){this.promise=new Promise(((t,e)=>{this.resolve=t,this.reject=e}))}}const q=new Set;try{self["workbox:strategies:7.0.0"]&&_()}catch(t){}function U(t){return"string"==typeof t?new Request(t):t}class L{constructor(t,e){this.u={},Object.assign(this,e),this.event=e.event,this.l=t,this.p=new v,this.R=[],this.m=[...t.plugins],this.v=new Map;for(const t of this.m)this.v.set(t,{});this.event.waitUntil(this.p.promise)}async fetch(t){const{event:e}=this;let n=U(t);if("navigate"===n.mode&&e instanceof FetchEvent&&e.preloadResponse){const t=await e.preloadResponse;if(t)return t}const i=this.hasCallback("fetchDidFail")?n.clone():null;try{for(const t of this.iterateCallbacks("requestWillFetch"))n=await t({request:n.clone(),event:e})}catch(t){if(t instanceof Error)throw new s("plugin-error-request-will-fetch",{thrownErrorMessage:t.message})}const r=n.clone();try{let t;t=await fetch(n,"navigate"===n.mode?void 0:this.l.fetchOptions);for(const s of this.iterateCallbacks("fetchDidSucceed"))t=await s({event:e,request:r,response:t});return t}catch(t){throw i&&await this.runCallbacks("fetchDidFail",{error:t,event:e,originalRequest:i.clone(),request:r.clone()}),t}}async fetchAndCachePut(t){const e=await this.fetch(t),s=e.clone();return this.waitUntil(this.cachePut(t,s)),e}async cacheMatch(t){const e=U(t);let s;const{cacheName:n,matchOptions:i}=this.l,r=await this.getCacheKey(e,"read"),o=Object.assign(Object.assign({},i),{cacheName:n});s=await caches.match(r,o);for(const t of this.iterateCallbacks("cachedResponseWillBeUsed"))s=await t({cacheName:n,matchOptions:i,cachedResponse:s,request:r,event:this.event})||void 0;return s}async cachePut(t,e){const n=U(t);var i;await(i=0,new Promise((t=>setTimeout(t,i))));const r=await this.getCacheKey(n,"write");if(!e)throw new s("cache-put-with-no-response",{url:(o=r.url,new URL(String(o),location.href).href.replace(new RegExp(`^${location.origin}`),""))});var o;const c=await this.q(e);if(!c)return!1;const{cacheName:a,matchOptions:h}=this.l,u=await self.caches.open(a),l=this.hasCallback("cacheDidUpdate"),f=l?await async function(t,e,s,n){const i=m(e.url,s);if(e.url===i)return t.match(e,n);const r=Object.assign(Object.assign({},n),{ignoreSearch:!0}),o=await t.keys(e,r);for(const e of o)if(i===m(e.url,s))return t.match(e,n)}(u,r.clone(),["__WB_REVISION__"],h):null;try{await u.put(r,l?c.clone():c)}catch(t){if(t instanceof Error)throw"QuotaExceededError"===t.name&&await async function(){for(const t of q)await t()}(),t}for(const t of this.iterateCallbacks("cacheDidUpdate"))await t({cacheName:a,oldResponse:f,newResponse:c.clone(),request:r,event:this.event});return!0}async getCacheKey(t,e){const s=`${t.url} | ${e}`;if(!this.u[s]){let n=t;for(const t of this.iterateCallbacks("cacheKeyWillBeUsed"))n=U(await t({mode:e,request:n,event:this.event,params:this.params}));this.u[s]=n}return this.u[s]}hasCallback(t){for(const e of this.l.plugins)if(t in e)return!0;return!1}async runCallbacks(t,e){for(const s of this.iterateCallbacks(t))await s(e)}*iterateCallbacks(t){for(const e of this.l.plugins)if("function"==typeof e[t]){const s=this.v.get(e),n=n=>{const i=Object.assign(Object.assign({},n),{state:s});return e[t](i)};yield n}}waitUntil(t){return this.R.push(t),t}async doneWaiting(){let t;for(;t=this.R.shift();)await t}destroy(){this.p.resolve(null)}async q(t){let e=t,s=!1;for(const t of this.iterateCallbacks("cacheWillUpdate"))if(e=await t({request:this.request,response:e,event:this.event})||void 0,s=!0,!e)break;return s||e&&200!==e.status&&(e=void 0),e}}class b{constructor(t={}){this.cacheName=f(t.cacheName),this.plugins=t.plugins||[],this.fetchOptions=t.fetchOptions,this.matchOptions=t.matchOptions}handle(t){const[e]=this.handleAll(t);return e}handleAll(t){t instanceof FetchEvent&&(t={event:t,request:t.request});const e=t.event,s="string"==typeof t.request?new Request(t.request):t.request,n="params"in t?t.params:void 0,i=new L(this,{event:e,request:s,params:n}),r=this.U(i,s,e);return[r,this.L(r,i,s,e)]}async U(t,e,n){let i;await t.runCallbacks("handlerWillStart",{event:n,request:e});try{if(i=await this._(e,t),!i||"error"===i.type)throw new s("no-response",{url:e.url})}catch(s){if(s instanceof Error)for(const r of t.iterateCallbacks("handlerDidError"))if(i=await r({error:s,event:n,request:e}),i)break;if(!i)throw s}for(const s of t.iterateCallbacks("handlerWillRespond"))i=await s({event:n,request:e,response:i});return i}async L(t,e,s,n){let i,r;try{i=await t}catch(r){}try{await e.runCallbacks("handlerDidRespond",{event:n,request:s,response:i}),await e.doneWaiting()}catch(t){t instanceof Error&&(r=t)}if(await e.runCallbacks("handlerDidComplete",{event:n,request:s,response:i,error:r}),e.destroy(),r)throw r}}class C extends b{constructor(t={}){t.cacheName=l(t.cacheName),super(t),this.C=!1!==t.fallbackToNetwork,this.plugins.push(C.copyRedirectedCacheableResponsesPlugin)}async _(t,e){const s=await e.cacheMatch(t);return s||(e.event&&"install"===e.event.type?await this.O(t,e):await this.N(t,e))}async N(t,e){let n;const i=e.params||{};if(!this.C)throw new s("missing-precache-entry",{cacheName:this.cacheName,url:t.url});{const s=i.integrity,r=t.integrity,o=!r||r===s;n=await e.fetch(new Request(t,{integrity:"no-cors"!==t.mode?r||s:void 0})),s&&o&&"no-cors"!==t.mode&&(this.k(),await e.cachePut(t,n.clone()))}return n}async O(t,e){this.k();const n=await e.fetch(t);if(!await e.cachePut(t,n.clone()))throw new s("bad-precaching-response",{url:t.url,status:n.status});return n}k(){let t=null,e=0;for(const[s,n]of this.plugins.entries())n!==C.copyRedirectedCacheableResponsesPlugin&&(n===C.defaultPrecacheCacheabilityPlugin&&(t=s),n.cacheWillUpdate&&e++);0===e?this.plugins.push(C.defaultPrecacheCacheabilityPlugin):e>1&&null!==t&&this.plugins.splice(t,1)}}C.defaultPrecacheCacheabilityPlugin={cacheWillUpdate:async({response:t})=>!t||t.status>=400?null:t},C.copyRedirectedCacheableResponsesPlugin={cacheWillUpdate:async({response:t})=>t.redirected?await R(t):t};class E{constructor({cacheName:t,plugins:e=[],fallbackToNetwork:s=!0}={}){this.K=new Map,this.P=new Map,this.T=new Map,this.l=new C({cacheName:l(t),plugins:[...e,new y({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this.l}precache(t){this.addToCacheList(t),this.W||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this.W=!0)}addToCacheList(t){const e=[];for(const n of t){"string"==typeof n?e.push(n):n&&void 0===n.revision&&e.push(n.url);const{cacheKey:t,url:i}=d(n),r="string"!=typeof n&&n.revision?"reload":"default";if(this.K.has(i)&&this.K.get(i)!==t)throw new s("add-to-cache-list-conflicting-entries",{firstEntry:this.K.get(i),secondEntry:t});if("string"!=typeof n&&n.integrity){if(this.T.has(t)&&this.T.get(t)!==n.integrity)throw new s("add-to-cache-list-conflicting-integrities",{url:i});this.T.set(t,n.integrity)}if(this.K.set(i,t),this.P.set(i,r),e.length>0){const t=`Workbox is precaching URLs without revision info: ${e.join(", ")}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(t)}}}install(t){return w(t,(async()=>{const e=new p;this.strategy.plugins.push(e);for(const[e,s]of this.K){const n=this.T.get(s),i=this.P.get(e),r=new Request(e,{integrity:n,cache:i,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:s},request:r,event:t}))}const{updatedURLs:s,notUpdatedURLs:n}=e;return{updatedURLs:s,notUpdatedURLs:n}}))}activate(t){return w(t,(async()=>{const t=await self.caches.open(this.strategy.cacheName),e=await t.keys(),s=new Set(this.K.values()),n=[];for(const i of e)s.has(i.url)||(await t.delete(i),n.push(i.url));return{deletedURLs:n}}))}getURLsToCacheKeys(){return this.K}getCachedURLs(){return[...this.K.keys()]}getCacheKeyForURL(t){const e=new URL(t,location.href);return this.K.get(e.href)}getIntegrityForCacheKey(t){return this.T.get(t)}async matchPrecache(t){const e=t instanceof Request?t.url:t,s=this.getCacheKeyForURL(e);if(s){return(await self.caches.open(this.strategy.cacheName)).match(s)}}createHandlerBoundToURL(t){const e=this.getCacheKeyForURL(t);if(!e)throw new s("non-precached-url",{url:t});return s=>(s.request=new Request(t),s.params=Object.assign({cacheKey:e},s.params),this.strategy.handle(s))}}let O;const x=()=>(O||(O=new E),O);class N extends i{constructor(t,e){super((({request:s})=>{const n=t.getURLsToCacheKeys();for(const i of function*(t,{ignoreURLParametersMatching:e=[/^utm_/,/^fbclid$/],directoryIndex:s="index.html",cleanURLs:n=!0,urlManipulation:i}={}){const r=new URL(t,location.href);r.hash="",yield r.href;const o=function(t,e=[]){for(const s of[...t.searchParams.keys()])e.some((t=>t.test(s)))&&t.searchParams.delete(s);return t}(r,e);if(yield o.href,s&&o.pathname.endsWith("/")){const t=new URL(o.href);t.pathname+=s,yield t.href}if(n){const t=new URL(o.href);t.pathname+=".html",yield t.href}if(i){const t=i({url:r});for(const e of t)yield e.href}}(s.url,e)){const e=n.get(i);if(e){return{cacheKey:e,integrity:t.getIntegrityForCacheKey(e)}}}}),t.strategy)}}function k(t){const e=x();!function(t,e,n){let o;if("string"==typeof t){const s=new URL(t,location.href);o=new i((({url:t})=>t.href===s.href),e,n)}else if(t instanceof RegExp)o=new r(t,e,n);else if("function"==typeof t)o=new i(t,e,n);else{if(!(t instanceof i))throw new s("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});o=t}a().registerRoute(o)}(new N(e,t))}t.cleanupOutdatedCaches=function(){self.addEventListener("activate",(t=>{const e=l();t.waitUntil((async(t,e="-precache-")=>{const s=(await self.caches.keys()).filter((s=>s.includes(e)&&s.includes(self.registration.scope)&&s!==t));return await Promise.all(s.map((t=>self.caches.delete(t)))),s})(e).then((t=>{})))}))},t.clientsClaim=function(){self.addEventListener("activate",(()=>self.clients.claim()))},t.precacheAndRoute=function(t,e){!function(t){x().precache(t)}(t),k(e)}})); +//# sourceMappingURL=workbox-dbb64b4e.js.map diff --git a/workbox-dbb64b4e.js.map b/workbox-dbb64b4e.js.map new file mode 100644 index 0000000..c37ccd7 --- /dev/null +++ b/workbox-dbb64b4e.js.map @@ -0,0 +1 @@ +{"version":3,"file":"workbox-dbb64b4e.js","sources":["node_modules/.pnpm/workbox-core@7.0.0/node_modules/workbox-core/_version.js","node_modules/.pnpm/workbox-core@7.0.0/node_modules/workbox-core/_private/logger.js","node_modules/.pnpm/workbox-core@7.0.0/node_modules/workbox-core/models/messages/messageGenerator.js","node_modules/.pnpm/workbox-core@7.0.0/node_modules/workbox-core/_private/WorkboxError.js","node_modules/.pnpm/workbox-routing@7.0.0/node_modules/workbox-routing/_version.js","node_modules/.pnpm/workbox-routing@7.0.0/node_modules/workbox-routing/utils/constants.js","node_modules/.pnpm/workbox-routing@7.0.0/node_modules/workbox-routing/utils/normalizeHandler.js","node_modules/.pnpm/workbox-routing@7.0.0/node_modules/workbox-routing/Route.js","node_modules/.pnpm/workbox-routing@7.0.0/node_modules/workbox-routing/RegExpRoute.js","node_modules/.pnpm/workbox-routing@7.0.0/node_modules/workbox-routing/Router.js","node_modules/.pnpm/workbox-routing@7.0.0/node_modules/workbox-routing/utils/getOrCreateDefaultRouter.js","node_modules/.pnpm/workbox-core@7.0.0/node_modules/workbox-core/_private/cacheNames.js","node_modules/.pnpm/workbox-core@7.0.0/node_modules/workbox-core/_private/waitUntil.js","node_modules/.pnpm/workbox-precaching@7.0.0/node_modules/workbox-precaching/_version.js","node_modules/.pnpm/workbox-precaching@7.0.0/node_modules/workbox-precaching/utils/createCacheKey.js","node_modules/.pnpm/workbox-precaching@7.0.0/node_modules/workbox-precaching/utils/PrecacheInstallReportPlugin.js","node_modules/.pnpm/workbox-precaching@7.0.0/node_modules/workbox-precaching/utils/PrecacheCacheKeyPlugin.js","node_modules/.pnpm/workbox-core@7.0.0/node_modules/workbox-core/_private/canConstructResponseFromBodyStream.js","node_modules/.pnpm/workbox-core@7.0.0/node_modules/workbox-core/copyResponse.js","node_modules/.pnpm/workbox-core@7.0.0/node_modules/workbox-core/_private/cacheMatchIgnoreParams.js","node_modules/.pnpm/workbox-core@7.0.0/node_modules/workbox-core/_private/Deferred.js","node_modules/.pnpm/workbox-core@7.0.0/node_modules/workbox-core/models/quotaErrorCallbacks.js","node_modules/.pnpm/workbox-strategies@7.0.0/node_modules/workbox-strategies/_version.js","node_modules/.pnpm/workbox-strategies@7.0.0/node_modules/workbox-strategies/StrategyHandler.js","node_modules/.pnpm/workbox-core@7.0.0/node_modules/workbox-core/_private/timeout.js","node_modules/.pnpm/workbox-core@7.0.0/node_modules/workbox-core/_private/getFriendlyURL.js","node_modules/.pnpm/workbox-core@7.0.0/node_modules/workbox-core/_private/executeQuotaErrorCallbacks.js","node_modules/.pnpm/workbox-strategies@7.0.0/node_modules/workbox-strategies/Strategy.js","node_modules/.pnpm/workbox-precaching@7.0.0/node_modules/workbox-precaching/PrecacheStrategy.js","node_modules/.pnpm/workbox-precaching@7.0.0/node_modules/workbox-precaching/PrecacheController.js","node_modules/.pnpm/workbox-precaching@7.0.0/node_modules/workbox-precaching/utils/getOrCreatePrecacheController.js","node_modules/.pnpm/workbox-precaching@7.0.0/node_modules/workbox-precaching/PrecacheRoute.js","node_modules/.pnpm/workbox-precaching@7.0.0/node_modules/workbox-precaching/utils/generateURLVariations.js","node_modules/.pnpm/workbox-precaching@7.0.0/node_modules/workbox-precaching/utils/removeIgnoredSearchParams.js","node_modules/.pnpm/workbox-precaching@7.0.0/node_modules/workbox-precaching/addRoute.js","node_modules/.pnpm/workbox-routing@7.0.0/node_modules/workbox-routing/registerRoute.js","node_modules/.pnpm/workbox-precaching@7.0.0/node_modules/workbox-precaching/cleanupOutdatedCaches.js","node_modules/.pnpm/workbox-precaching@7.0.0/node_modules/workbox-precaching/utils/deleteOutdatedCaches.js","node_modules/.pnpm/workbox-core@7.0.0/node_modules/workbox-core/clientsClaim.js","node_modules/.pnpm/workbox-precaching@7.0.0/node_modules/workbox-precaching/precacheAndRoute.js","node_modules/.pnpm/workbox-precaching@7.0.0/node_modules/workbox-precaching/precache.js"],"sourcesContent":["\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:core:7.0.0'] && _();\n}\ncatch (e) { }\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst logger = (process.env.NODE_ENV === 'production'\n ? null\n : (() => {\n // Don't overwrite this value if it's already set.\n // See https://github.com/GoogleChrome/workbox/pull/2284#issuecomment-560470923\n if (!('__WB_DISABLE_DEV_LOGS' in globalThis)) {\n self.__WB_DISABLE_DEV_LOGS = false;\n }\n let inGroup = false;\n const methodToColorMap = {\n debug: `#7f8c8d`,\n log: `#2ecc71`,\n warn: `#f39c12`,\n error: `#c0392b`,\n groupCollapsed: `#3498db`,\n groupEnd: null, // No colored prefix on groupEnd\n };\n const print = function (method, args) {\n if (self.__WB_DISABLE_DEV_LOGS) {\n return;\n }\n if (method === 'groupCollapsed') {\n // Safari doesn't print all console.groupCollapsed() arguments:\n // https://bugs.webkit.org/show_bug.cgi?id=182754\n if (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n console[method](...args);\n return;\n }\n }\n const styles = [\n `background: ${methodToColorMap[method]}`,\n `border-radius: 0.5em`,\n `color: white`,\n `font-weight: bold`,\n `padding: 2px 0.5em`,\n ];\n // When in a group, the workbox prefix is not displayed.\n const logPrefix = inGroup ? [] : ['%cworkbox', styles.join(';')];\n console[method](...logPrefix, ...args);\n if (method === 'groupCollapsed') {\n inGroup = true;\n }\n if (method === 'groupEnd') {\n inGroup = false;\n }\n };\n // eslint-disable-next-line @typescript-eslint/ban-types\n const api = {};\n const loggerMethods = Object.keys(methodToColorMap);\n for (const key of loggerMethods) {\n const method = key;\n api[method] = (...args) => {\n print(method, args);\n };\n }\n return api;\n })());\nexport { logger };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { messages } from './messages.js';\nimport '../../_version.js';\nconst fallback = (code, ...args) => {\n let msg = code;\n if (args.length > 0) {\n msg += ` :: ${JSON.stringify(args)}`;\n }\n return msg;\n};\nconst generatorFunction = (code, details = {}) => {\n const message = messages[code];\n if (!message) {\n throw new Error(`Unable to find message for code '${code}'.`);\n }\n return message(details);\n};\nexport const messageGenerator = process.env.NODE_ENV === 'production' ? fallback : generatorFunction;\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { messageGenerator } from '../models/messages/messageGenerator.js';\nimport '../_version.js';\n/**\n * Workbox errors should be thrown with this class.\n * This allows use to ensure the type easily in tests,\n * helps developers identify errors from workbox\n * easily and allows use to optimise error\n * messages correctly.\n *\n * @private\n */\nclass WorkboxError extends Error {\n /**\n *\n * @param {string} errorCode The error code that\n * identifies this particular error.\n * @param {Object=} details Any relevant arguments\n * that will help developers identify issues should\n * be added as a key on the context object.\n */\n constructor(errorCode, details) {\n const message = messageGenerator(errorCode, details);\n super(message);\n this.name = errorCode;\n this.details = details;\n }\n}\nexport { WorkboxError };\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:routing:7.0.0'] && _();\n}\ncatch (e) { }\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * The default HTTP method, 'GET', used when there's no specific method\n * configured for a route.\n *\n * @type {string}\n *\n * @private\n */\nexport const defaultMethod = 'GET';\n/**\n * The list of valid HTTP methods associated with requests that could be routed.\n *\n * @type {Array}\n *\n * @private\n */\nexport const validMethods = [\n 'DELETE',\n 'GET',\n 'HEAD',\n 'PATCH',\n 'POST',\n 'PUT',\n];\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport '../_version.js';\n/**\n * @param {function()|Object} handler Either a function, or an object with a\n * 'handle' method.\n * @return {Object} An object with a handle method.\n *\n * @private\n */\nexport const normalizeHandler = (handler) => {\n if (handler && typeof handler === 'object') {\n if (process.env.NODE_ENV !== 'production') {\n assert.hasMethod(handler, 'handle', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'handler',\n });\n }\n return handler;\n }\n else {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(handler, 'function', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'handler',\n });\n }\n return { handle: handler };\n }\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { defaultMethod, validMethods } from './utils/constants.js';\nimport { normalizeHandler } from './utils/normalizeHandler.js';\nimport './_version.js';\n/**\n * A `Route` consists of a pair of callback functions, \"match\" and \"handler\".\n * The \"match\" callback determine if a route should be used to \"handle\" a\n * request by returning a non-falsy value if it can. The \"handler\" callback\n * is called when there is a match and should return a Promise that resolves\n * to a `Response`.\n *\n * @memberof workbox-routing\n */\nclass Route {\n /**\n * Constructor for Route class.\n *\n * @param {workbox-routing~matchCallback} match\n * A callback function that determines whether the route matches a given\n * `fetch` event by returning a non-falsy value.\n * @param {workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resolving to a Response.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n */\n constructor(match, handler, method = defaultMethod) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(match, 'function', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'match',\n });\n if (method) {\n assert.isOneOf(method, validMethods, { paramName: 'method' });\n }\n }\n // These values are referenced directly by Router so cannot be\n // altered by minificaton.\n this.handler = normalizeHandler(handler);\n this.match = match;\n this.method = method;\n }\n /**\n *\n * @param {workbox-routing-handlerCallback} handler A callback\n * function that returns a Promise resolving to a Response\n */\n setCatchHandler(handler) {\n this.catchHandler = normalizeHandler(handler);\n }\n}\nexport { Route };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { Route } from './Route.js';\nimport './_version.js';\n/**\n * RegExpRoute makes it easy to create a regular expression based\n * {@link workbox-routing.Route}.\n *\n * For same-origin requests the RegExp only needs to match part of the URL. For\n * requests against third-party servers, you must define a RegExp that matches\n * the start of the URL.\n *\n * @memberof workbox-routing\n * @extends workbox-routing.Route\n */\nclass RegExpRoute extends Route {\n /**\n * If the regular expression contains\n * [capture groups]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#grouping-back-references},\n * the captured values will be passed to the\n * {@link workbox-routing~handlerCallback} `params`\n * argument.\n *\n * @param {RegExp} regExp The regular expression to match against URLs.\n * @param {workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n */\n constructor(regExp, handler, method) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(regExp, RegExp, {\n moduleName: 'workbox-routing',\n className: 'RegExpRoute',\n funcName: 'constructor',\n paramName: 'pattern',\n });\n }\n const match = ({ url }) => {\n const result = regExp.exec(url.href);\n // Return immediately if there's no match.\n if (!result) {\n return;\n }\n // Require that the match start at the first character in the URL string\n // if it's a cross-origin request.\n // See https://github.com/GoogleChrome/workbox/issues/281 for the context\n // behind this behavior.\n if (url.origin !== location.origin && result.index !== 0) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`The regular expression '${regExp.toString()}' only partially matched ` +\n `against the cross-origin URL '${url.toString()}'. RegExpRoute's will only ` +\n `handle cross-origin requests if they match the entire URL.`);\n }\n return;\n }\n // If the route matches, but there aren't any capture groups defined, then\n // this will return [], which is truthy and therefore sufficient to\n // indicate a match.\n // If there are capture groups, then it will return their values.\n return result.slice(1);\n };\n super(match, handler, method);\n }\n}\nexport { RegExpRoute };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { defaultMethod } from './utils/constants.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { normalizeHandler } from './utils/normalizeHandler.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport './_version.js';\n/**\n * The Router can be used to process a `FetchEvent` using one or more\n * {@link workbox-routing.Route}, responding with a `Response` if\n * a matching route exists.\n *\n * If no route matches a given a request, the Router will use a \"default\"\n * handler if one is defined.\n *\n * Should the matching Route throw an error, the Router will use a \"catch\"\n * handler if one is defined to gracefully deal with issues and respond with a\n * Request.\n *\n * If a request matches multiple routes, the **earliest** registered route will\n * be used to respond to the request.\n *\n * @memberof workbox-routing\n */\nclass Router {\n /**\n * Initializes a new Router.\n */\n constructor() {\n this._routes = new Map();\n this._defaultHandlerMap = new Map();\n }\n /**\n * @return {Map>} routes A `Map` of HTTP\n * method name ('GET', etc.) to an array of all the corresponding `Route`\n * instances that are registered.\n */\n get routes() {\n return this._routes;\n }\n /**\n * Adds a fetch event listener to respond to events when a route matches\n * the event's request.\n */\n addFetchListener() {\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('fetch', ((event) => {\n const { request } = event;\n const responsePromise = this.handleRequest({ request, event });\n if (responsePromise) {\n event.respondWith(responsePromise);\n }\n }));\n }\n /**\n * Adds a message event listener for URLs to cache from the window.\n * This is useful to cache resources loaded on the page prior to when the\n * service worker started controlling it.\n *\n * The format of the message data sent from the window should be as follows.\n * Where the `urlsToCache` array may consist of URL strings or an array of\n * URL string + `requestInit` object (the same as you'd pass to `fetch()`).\n *\n * ```\n * {\n * type: 'CACHE_URLS',\n * payload: {\n * urlsToCache: [\n * './script1.js',\n * './script2.js',\n * ['./script3.js', {mode: 'no-cors'}],\n * ],\n * },\n * }\n * ```\n */\n addCacheListener() {\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('message', ((event) => {\n // event.data is type 'any'\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (event.data && event.data.type === 'CACHE_URLS') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { payload } = event.data;\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Caching URLs from the window`, payload.urlsToCache);\n }\n const requestPromises = Promise.all(payload.urlsToCache.map((entry) => {\n if (typeof entry === 'string') {\n entry = [entry];\n }\n const request = new Request(...entry);\n return this.handleRequest({ request, event });\n // TODO(philipwalton): TypeScript errors without this typecast for\n // some reason (probably a bug). The real type here should work but\n // doesn't: `Array | undefined>`.\n })); // TypeScript\n event.waitUntil(requestPromises);\n // If a MessageChannel was used, reply to the message on success.\n if (event.ports && event.ports[0]) {\n void requestPromises.then(() => event.ports[0].postMessage(true));\n }\n }\n }));\n }\n /**\n * Apply the routing rules to a FetchEvent object to get a Response from an\n * appropriate Route's handler.\n *\n * @param {Object} options\n * @param {Request} options.request The request to handle.\n * @param {ExtendableEvent} options.event The event that triggered the\n * request.\n * @return {Promise|undefined} A promise is returned if a\n * registered route can handle the request. If there is no matching\n * route and there's no `defaultHandler`, `undefined` is returned.\n */\n handleRequest({ request, event, }) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'handleRequest',\n paramName: 'options.request',\n });\n }\n const url = new URL(request.url, location.href);\n if (!url.protocol.startsWith('http')) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Workbox Router only supports URLs that start with 'http'.`);\n }\n return;\n }\n const sameOrigin = url.origin === location.origin;\n const { params, route } = this.findMatchingRoute({\n event,\n request,\n sameOrigin,\n url,\n });\n let handler = route && route.handler;\n const debugMessages = [];\n if (process.env.NODE_ENV !== 'production') {\n if (handler) {\n debugMessages.push([`Found a route to handle this request:`, route]);\n if (params) {\n debugMessages.push([\n `Passing the following params to the route's handler:`,\n params,\n ]);\n }\n }\n }\n // If we don't have a handler because there was no matching route, then\n // fall back to defaultHandler if that's defined.\n const method = request.method;\n if (!handler && this._defaultHandlerMap.has(method)) {\n if (process.env.NODE_ENV !== 'production') {\n debugMessages.push(`Failed to find a matching route. Falling ` +\n `back to the default handler for ${method}.`);\n }\n handler = this._defaultHandlerMap.get(method);\n }\n if (!handler) {\n if (process.env.NODE_ENV !== 'production') {\n // No handler so Workbox will do nothing. If logs is set of debug\n // i.e. verbose, we should print out this information.\n logger.debug(`No route found for: ${getFriendlyURL(url)}`);\n }\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // We have a handler, meaning Workbox is going to handle the route.\n // print the routing details to the console.\n logger.groupCollapsed(`Router is responding to: ${getFriendlyURL(url)}`);\n debugMessages.forEach((msg) => {\n if (Array.isArray(msg)) {\n logger.log(...msg);\n }\n else {\n logger.log(msg);\n }\n });\n logger.groupEnd();\n }\n // Wrap in try and catch in case the handle method throws a synchronous\n // error. It should still callback to the catch handler.\n let responsePromise;\n try {\n responsePromise = handler.handle({ url, request, event, params });\n }\n catch (err) {\n responsePromise = Promise.reject(err);\n }\n // Get route's catch handler, if it exists\n const catchHandler = route && route.catchHandler;\n if (responsePromise instanceof Promise &&\n (this._catchHandler || catchHandler)) {\n responsePromise = responsePromise.catch(async (err) => {\n // If there's a route catch handler, process that first\n if (catchHandler) {\n if (process.env.NODE_ENV !== 'production') {\n // Still include URL here as it will be async from the console group\n // and may not make sense without the URL\n logger.groupCollapsed(`Error thrown when responding to: ` +\n ` ${getFriendlyURL(url)}. Falling back to route's Catch Handler.`);\n logger.error(`Error thrown by:`, route);\n logger.error(err);\n logger.groupEnd();\n }\n try {\n return await catchHandler.handle({ url, request, event, params });\n }\n catch (catchErr) {\n if (catchErr instanceof Error) {\n err = catchErr;\n }\n }\n }\n if (this._catchHandler) {\n if (process.env.NODE_ENV !== 'production') {\n // Still include URL here as it will be async from the console group\n // and may not make sense without the URL\n logger.groupCollapsed(`Error thrown when responding to: ` +\n ` ${getFriendlyURL(url)}. Falling back to global Catch Handler.`);\n logger.error(`Error thrown by:`, route);\n logger.error(err);\n logger.groupEnd();\n }\n return this._catchHandler.handle({ url, request, event });\n }\n throw err;\n });\n }\n return responsePromise;\n }\n /**\n * Checks a request and URL (and optionally an event) against the list of\n * registered routes, and if there's a match, returns the corresponding\n * route along with any params generated by the match.\n *\n * @param {Object} options\n * @param {URL} options.url\n * @param {boolean} options.sameOrigin The result of comparing `url.origin`\n * against the current origin.\n * @param {Request} options.request The request to match.\n * @param {Event} options.event The corresponding event.\n * @return {Object} An object with `route` and `params` properties.\n * They are populated if a matching route was found or `undefined`\n * otherwise.\n */\n findMatchingRoute({ url, sameOrigin, request, event, }) {\n const routes = this._routes.get(request.method) || [];\n for (const route of routes) {\n let params;\n // route.match returns type any, not possible to change right now.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const matchResult = route.match({ url, sameOrigin, request, event });\n if (matchResult) {\n if (process.env.NODE_ENV !== 'production') {\n // Warn developers that using an async matchCallback is almost always\n // not the right thing to do.\n if (matchResult instanceof Promise) {\n logger.warn(`While routing ${getFriendlyURL(url)}, an async ` +\n `matchCallback function was used. Please convert the ` +\n `following route to use a synchronous matchCallback function:`, route);\n }\n }\n // See https://github.com/GoogleChrome/workbox/issues/2079\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n params = matchResult;\n if (Array.isArray(params) && params.length === 0) {\n // Instead of passing an empty array in as params, use undefined.\n params = undefined;\n }\n else if (matchResult.constructor === Object && // eslint-disable-line\n Object.keys(matchResult).length === 0) {\n // Instead of passing an empty object in as params, use undefined.\n params = undefined;\n }\n else if (typeof matchResult === 'boolean') {\n // For the boolean value true (rather than just something truth-y),\n // don't set params.\n // See https://github.com/GoogleChrome/workbox/pull/2134#issuecomment-513924353\n params = undefined;\n }\n // Return early if have a match.\n return { route, params };\n }\n }\n // If no match was found above, return and empty object.\n return {};\n }\n /**\n * Define a default `handler` that's called when no routes explicitly\n * match the incoming request.\n *\n * Each HTTP method ('GET', 'POST', etc.) gets its own default handler.\n *\n * Without a default handler, unmatched requests will go against the\n * network as if there were no service worker present.\n *\n * @param {workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n * @param {string} [method='GET'] The HTTP method to associate with this\n * default handler. Each method has its own default.\n */\n setDefaultHandler(handler, method = defaultMethod) {\n this._defaultHandlerMap.set(method, normalizeHandler(handler));\n }\n /**\n * If a Route throws an error while handling a request, this `handler`\n * will be called and given a chance to provide a response.\n *\n * @param {workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n */\n setCatchHandler(handler) {\n this._catchHandler = normalizeHandler(handler);\n }\n /**\n * Registers a route with the router.\n *\n * @param {workbox-routing.Route} route The route to register.\n */\n registerRoute(route) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(route, 'object', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.hasMethod(route, 'match', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.isType(route.handler, 'object', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.hasMethod(route.handler, 'handle', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route.handler',\n });\n assert.isType(route.method, 'string', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route.method',\n });\n }\n if (!this._routes.has(route.method)) {\n this._routes.set(route.method, []);\n }\n // Give precedence to all of the earlier routes by adding this additional\n // route to the end of the array.\n this._routes.get(route.method).push(route);\n }\n /**\n * Unregisters a route with the router.\n *\n * @param {workbox-routing.Route} route The route to unregister.\n */\n unregisterRoute(route) {\n if (!this._routes.has(route.method)) {\n throw new WorkboxError('unregister-route-but-not-found-with-method', {\n method: route.method,\n });\n }\n const routeIndex = this._routes.get(route.method).indexOf(route);\n if (routeIndex > -1) {\n this._routes.get(route.method).splice(routeIndex, 1);\n }\n else {\n throw new WorkboxError('unregister-route-route-not-registered');\n }\n }\n}\nexport { Router };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { Router } from '../Router.js';\nimport '../_version.js';\nlet defaultRouter;\n/**\n * Creates a new, singleton Router instance if one does not exist. If one\n * does already exist, that instance is returned.\n *\n * @private\n * @return {Router}\n */\nexport const getOrCreateDefaultRouter = () => {\n if (!defaultRouter) {\n defaultRouter = new Router();\n // The helpers that use the default Router assume these listeners exist.\n defaultRouter.addFetchListener();\n defaultRouter.addCacheListener();\n }\n return defaultRouter;\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst _cacheNameDetails = {\n googleAnalytics: 'googleAnalytics',\n precache: 'precache-v2',\n prefix: 'workbox',\n runtime: 'runtime',\n suffix: typeof registration !== 'undefined' ? registration.scope : '',\n};\nconst _createCacheName = (cacheName) => {\n return [_cacheNameDetails.prefix, cacheName, _cacheNameDetails.suffix]\n .filter((value) => value && value.length > 0)\n .join('-');\n};\nconst eachCacheNameDetail = (fn) => {\n for (const key of Object.keys(_cacheNameDetails)) {\n fn(key);\n }\n};\nexport const cacheNames = {\n updateDetails: (details) => {\n eachCacheNameDetail((key) => {\n if (typeof details[key] === 'string') {\n _cacheNameDetails[key] = details[key];\n }\n });\n },\n getGoogleAnalyticsName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.googleAnalytics);\n },\n getPrecacheName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.precache);\n },\n getPrefix: () => {\n return _cacheNameDetails.prefix;\n },\n getRuntimeName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.runtime);\n },\n getSuffix: () => {\n return _cacheNameDetails.suffix;\n },\n};\n","/*\n Copyright 2020 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A utility method that makes it easier to use `event.waitUntil` with\n * async functions and return the result.\n *\n * @param {ExtendableEvent} event\n * @param {Function} asyncFn\n * @return {Function}\n * @private\n */\nfunction waitUntil(event, asyncFn) {\n const returnPromise = asyncFn();\n event.waitUntil(returnPromise);\n return returnPromise;\n}\nexport { waitUntil };\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:precaching:7.0.0'] && _();\n}\ncatch (e) { }\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport '../_version.js';\n// Name of the search parameter used to store revision info.\nconst REVISION_SEARCH_PARAM = '__WB_REVISION__';\n/**\n * Converts a manifest entry into a versioned URL suitable for precaching.\n *\n * @param {Object|string} entry\n * @return {string} A URL with versioning info.\n *\n * @private\n * @memberof workbox-precaching\n */\nexport function createCacheKey(entry) {\n if (!entry) {\n throw new WorkboxError('add-to-cache-list-unexpected-type', { entry });\n }\n // If a precache manifest entry is a string, it's assumed to be a versioned\n // URL, like '/app.abcd1234.js'. Return as-is.\n if (typeof entry === 'string') {\n const urlObject = new URL(entry, location.href);\n return {\n cacheKey: urlObject.href,\n url: urlObject.href,\n };\n }\n const { revision, url } = entry;\n if (!url) {\n throw new WorkboxError('add-to-cache-list-unexpected-type', { entry });\n }\n // If there's just a URL and no revision, then it's also assumed to be a\n // versioned URL.\n if (!revision) {\n const urlObject = new URL(url, location.href);\n return {\n cacheKey: urlObject.href,\n url: urlObject.href,\n };\n }\n // Otherwise, construct a properly versioned URL using the custom Workbox\n // search parameter along with the revision info.\n const cacheKeyURL = new URL(url, location.href);\n const originalURL = new URL(url, location.href);\n cacheKeyURL.searchParams.set(REVISION_SEARCH_PARAM, revision);\n return {\n cacheKey: cacheKeyURL.href,\n url: originalURL.href,\n };\n}\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A plugin, designed to be used with PrecacheController, to determine the\n * of assets that were updated (or not updated) during the install event.\n *\n * @private\n */\nclass PrecacheInstallReportPlugin {\n constructor() {\n this.updatedURLs = [];\n this.notUpdatedURLs = [];\n this.handlerWillStart = async ({ request, state, }) => {\n // TODO: `state` should never be undefined...\n if (state) {\n state.originalRequest = request;\n }\n };\n this.cachedResponseWillBeUsed = async ({ event, state, cachedResponse, }) => {\n if (event.type === 'install') {\n if (state &&\n state.originalRequest &&\n state.originalRequest instanceof Request) {\n // TODO: `state` should never be undefined...\n const url = state.originalRequest.url;\n if (cachedResponse) {\n this.notUpdatedURLs.push(url);\n }\n else {\n this.updatedURLs.push(url);\n }\n }\n }\n return cachedResponse;\n };\n }\n}\nexport { PrecacheInstallReportPlugin };\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A plugin, designed to be used with PrecacheController, to translate URLs into\n * the corresponding cache key, based on the current revision info.\n *\n * @private\n */\nclass PrecacheCacheKeyPlugin {\n constructor({ precacheController }) {\n this.cacheKeyWillBeUsed = async ({ request, params, }) => {\n // Params is type any, can't change right now.\n /* eslint-disable */\n const cacheKey = (params === null || params === void 0 ? void 0 : params.cacheKey) ||\n this._precacheController.getCacheKeyForURL(request.url);\n /* eslint-enable */\n return cacheKey\n ? new Request(cacheKey, { headers: request.headers })\n : request;\n };\n this._precacheController = precacheController;\n }\n}\nexport { PrecacheCacheKeyPlugin };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nlet supportStatus;\n/**\n * A utility function that determines whether the current browser supports\n * constructing a new `Response` from a `response.body` stream.\n *\n * @return {boolean} `true`, if the current browser can successfully\n * construct a `Response` from a `response.body` stream, `false` otherwise.\n *\n * @private\n */\nfunction canConstructResponseFromBodyStream() {\n if (supportStatus === undefined) {\n const testResponse = new Response('');\n if ('body' in testResponse) {\n try {\n new Response(testResponse.body);\n supportStatus = true;\n }\n catch (error) {\n supportStatus = false;\n }\n }\n supportStatus = false;\n }\n return supportStatus;\n}\nexport { canConstructResponseFromBodyStream };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { canConstructResponseFromBodyStream } from './_private/canConstructResponseFromBodyStream.js';\nimport { WorkboxError } from './_private/WorkboxError.js';\nimport './_version.js';\n/**\n * Allows developers to copy a response and modify its `headers`, `status`,\n * or `statusText` values (the values settable via a\n * [`ResponseInit`]{@link https://developer.mozilla.org/en-US/docs/Web/API/Response/Response#Syntax}\n * object in the constructor).\n * To modify these values, pass a function as the second argument. That\n * function will be invoked with a single object with the response properties\n * `{headers, status, statusText}`. The return value of this function will\n * be used as the `ResponseInit` for the new `Response`. To change the values\n * either modify the passed parameter(s) and return it, or return a totally\n * new object.\n *\n * This method is intentionally limited to same-origin responses, regardless of\n * whether CORS was used or not.\n *\n * @param {Response} response\n * @param {Function} modifier\n * @memberof workbox-core\n */\nasync function copyResponse(response, modifier) {\n let origin = null;\n // If response.url isn't set, assume it's cross-origin and keep origin null.\n if (response.url) {\n const responseURL = new URL(response.url);\n origin = responseURL.origin;\n }\n if (origin !== self.location.origin) {\n throw new WorkboxError('cross-origin-copy-response', { origin });\n }\n const clonedResponse = response.clone();\n // Create a fresh `ResponseInit` object by cloning the headers.\n const responseInit = {\n headers: new Headers(clonedResponse.headers),\n status: clonedResponse.status,\n statusText: clonedResponse.statusText,\n };\n // Apply any user modifications.\n const modifiedResponseInit = modifier ? modifier(responseInit) : responseInit;\n // Create the new response from the body stream and `ResponseInit`\n // modifications. Note: not all browsers support the Response.body stream,\n // so fall back to reading the entire body into memory as a blob.\n const body = canConstructResponseFromBodyStream()\n ? clonedResponse.body\n : await clonedResponse.blob();\n return new Response(body, modifiedResponseInit);\n}\nexport { copyResponse };\n","/*\n Copyright 2020 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nfunction stripParams(fullURL, ignoreParams) {\n const strippedURL = new URL(fullURL);\n for (const param of ignoreParams) {\n strippedURL.searchParams.delete(param);\n }\n return strippedURL.href;\n}\n/**\n * Matches an item in the cache, ignoring specific URL params. This is similar\n * to the `ignoreSearch` option, but it allows you to ignore just specific\n * params (while continuing to match on the others).\n *\n * @private\n * @param {Cache} cache\n * @param {Request} request\n * @param {Object} matchOptions\n * @param {Array} ignoreParams\n * @return {Promise}\n */\nasync function cacheMatchIgnoreParams(cache, request, ignoreParams, matchOptions) {\n const strippedRequestURL = stripParams(request.url, ignoreParams);\n // If the request doesn't include any ignored params, match as normal.\n if (request.url === strippedRequestURL) {\n return cache.match(request, matchOptions);\n }\n // Otherwise, match by comparing keys\n const keysOptions = Object.assign(Object.assign({}, matchOptions), { ignoreSearch: true });\n const cacheKeys = await cache.keys(request, keysOptions);\n for (const cacheKey of cacheKeys) {\n const strippedCacheKeyURL = stripParams(cacheKey.url, ignoreParams);\n if (strippedRequestURL === strippedCacheKeyURL) {\n return cache.match(cacheKey, matchOptions);\n }\n }\n return;\n}\nexport { cacheMatchIgnoreParams };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * The Deferred class composes Promises in a way that allows for them to be\n * resolved or rejected from outside the constructor. In most cases promises\n * should be used directly, but Deferreds can be necessary when the logic to\n * resolve a promise must be separate.\n *\n * @private\n */\nclass Deferred {\n /**\n * Creates a promise and exposes its resolve and reject functions as methods.\n */\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\nexport { Deferred };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n// Callbacks to be executed whenever there's a quota error.\n// Can't change Function type right now.\n// eslint-disable-next-line @typescript-eslint/ban-types\nconst quotaErrorCallbacks = new Set();\nexport { quotaErrorCallbacks };\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:strategies:7.0.0'] && _();\n}\ncatch (e) { }\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { cacheMatchIgnoreParams } from 'workbox-core/_private/cacheMatchIgnoreParams.js';\nimport { Deferred } from 'workbox-core/_private/Deferred.js';\nimport { executeQuotaErrorCallbacks } from 'workbox-core/_private/executeQuotaErrorCallbacks.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { timeout } from 'workbox-core/_private/timeout.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport './_version.js';\nfunction toRequest(input) {\n return typeof input === 'string' ? new Request(input) : input;\n}\n/**\n * A class created every time a Strategy instance instance calls\n * {@link workbox-strategies.Strategy~handle} or\n * {@link workbox-strategies.Strategy~handleAll} that wraps all fetch and\n * cache actions around plugin callbacks and keeps track of when the strategy\n * is \"done\" (i.e. all added `event.waitUntil()` promises have resolved).\n *\n * @memberof workbox-strategies\n */\nclass StrategyHandler {\n /**\n * Creates a new instance associated with the passed strategy and event\n * that's handling the request.\n *\n * The constructor also initializes the state that will be passed to each of\n * the plugins handling this request.\n *\n * @param {workbox-strategies.Strategy} strategy\n * @param {Object} options\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {ExtendableEvent} options.event The event associated with the\n * request.\n * @param {URL} [options.url]\n * @param {*} [options.params] The return value from the\n * {@link workbox-routing~matchCallback} (if applicable).\n */\n constructor(strategy, options) {\n this._cacheKeys = {};\n /**\n * The request the strategy is performing (passed to the strategy's\n * `handle()` or `handleAll()` method).\n * @name request\n * @instance\n * @type {Request}\n * @memberof workbox-strategies.StrategyHandler\n */\n /**\n * The event associated with this request.\n * @name event\n * @instance\n * @type {ExtendableEvent}\n * @memberof workbox-strategies.StrategyHandler\n */\n /**\n * A `URL` instance of `request.url` (if passed to the strategy's\n * `handle()` or `handleAll()` method).\n * Note: the `url` param will be present if the strategy was invoked\n * from a workbox `Route` object.\n * @name url\n * @instance\n * @type {URL|undefined}\n * @memberof workbox-strategies.StrategyHandler\n */\n /**\n * A `param` value (if passed to the strategy's\n * `handle()` or `handleAll()` method).\n * Note: the `param` param will be present if the strategy was invoked\n * from a workbox `Route` object and the\n * {@link workbox-routing~matchCallback} returned\n * a truthy value (it will be that value).\n * @name params\n * @instance\n * @type {*|undefined}\n * @memberof workbox-strategies.StrategyHandler\n */\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(options.event, ExtendableEvent, {\n moduleName: 'workbox-strategies',\n className: 'StrategyHandler',\n funcName: 'constructor',\n paramName: 'options.event',\n });\n }\n Object.assign(this, options);\n this.event = options.event;\n this._strategy = strategy;\n this._handlerDeferred = new Deferred();\n this._extendLifetimePromises = [];\n // Copy the plugins list (since it's mutable on the strategy),\n // so any mutations don't affect this handler instance.\n this._plugins = [...strategy.plugins];\n this._pluginStateMap = new Map();\n for (const plugin of this._plugins) {\n this._pluginStateMap.set(plugin, {});\n }\n this.event.waitUntil(this._handlerDeferred.promise);\n }\n /**\n * Fetches a given request (and invokes any applicable plugin callback\n * methods) using the `fetchOptions` (for non-navigation requests) and\n * `plugins` defined on the `Strategy` object.\n *\n * The following plugin lifecycle methods are invoked when using this method:\n * - `requestWillFetch()`\n * - `fetchDidSucceed()`\n * - `fetchDidFail()`\n *\n * @param {Request|string} input The URL or request to fetch.\n * @return {Promise}\n */\n async fetch(input) {\n const { event } = this;\n let request = toRequest(input);\n if (request.mode === 'navigate' &&\n event instanceof FetchEvent &&\n event.preloadResponse) {\n const possiblePreloadResponse = (await event.preloadResponse);\n if (possiblePreloadResponse) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Using a preloaded navigation response for ` +\n `'${getFriendlyURL(request.url)}'`);\n }\n return possiblePreloadResponse;\n }\n }\n // If there is a fetchDidFail plugin, we need to save a clone of the\n // original request before it's either modified by a requestWillFetch\n // plugin or before the original request's body is consumed via fetch().\n const originalRequest = this.hasCallback('fetchDidFail')\n ? request.clone()\n : null;\n try {\n for (const cb of this.iterateCallbacks('requestWillFetch')) {\n request = await cb({ request: request.clone(), event });\n }\n }\n catch (err) {\n if (err instanceof Error) {\n throw new WorkboxError('plugin-error-request-will-fetch', {\n thrownErrorMessage: err.message,\n });\n }\n }\n // The request can be altered by plugins with `requestWillFetch` making\n // the original request (most likely from a `fetch` event) different\n // from the Request we make. Pass both to `fetchDidFail` to aid debugging.\n const pluginFilteredRequest = request.clone();\n try {\n let fetchResponse;\n // See https://github.com/GoogleChrome/workbox/issues/1796\n fetchResponse = await fetch(request, request.mode === 'navigate' ? undefined : this._strategy.fetchOptions);\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Network request for ` +\n `'${getFriendlyURL(request.url)}' returned a response with ` +\n `status '${fetchResponse.status}'.`);\n }\n for (const callback of this.iterateCallbacks('fetchDidSucceed')) {\n fetchResponse = await callback({\n event,\n request: pluginFilteredRequest,\n response: fetchResponse,\n });\n }\n return fetchResponse;\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Network request for ` +\n `'${getFriendlyURL(request.url)}' threw an error.`, error);\n }\n // `originalRequest` will only exist if a `fetchDidFail` callback\n // is being used (see above).\n if (originalRequest) {\n await this.runCallbacks('fetchDidFail', {\n error: error,\n event,\n originalRequest: originalRequest.clone(),\n request: pluginFilteredRequest.clone(),\n });\n }\n throw error;\n }\n }\n /**\n * Calls `this.fetch()` and (in the background) runs `this.cachePut()` on\n * the response generated by `this.fetch()`.\n *\n * The call to `this.cachePut()` automatically invokes `this.waitUntil()`,\n * so you do not have to manually call `waitUntil()` on the event.\n *\n * @param {Request|string} input The request or URL to fetch and cache.\n * @return {Promise}\n */\n async fetchAndCachePut(input) {\n const response = await this.fetch(input);\n const responseClone = response.clone();\n void this.waitUntil(this.cachePut(input, responseClone));\n return response;\n }\n /**\n * Matches a request from the cache (and invokes any applicable plugin\n * callback methods) using the `cacheName`, `matchOptions`, and `plugins`\n * defined on the strategy object.\n *\n * The following plugin lifecycle methods are invoked when using this method:\n * - cacheKeyWillByUsed()\n * - cachedResponseWillByUsed()\n *\n * @param {Request|string} key The Request or URL to use as the cache key.\n * @return {Promise} A matching response, if found.\n */\n async cacheMatch(key) {\n const request = toRequest(key);\n let cachedResponse;\n const { cacheName, matchOptions } = this._strategy;\n const effectiveRequest = await this.getCacheKey(request, 'read');\n const multiMatchOptions = Object.assign(Object.assign({}, matchOptions), { cacheName });\n cachedResponse = await caches.match(effectiveRequest, multiMatchOptions);\n if (process.env.NODE_ENV !== 'production') {\n if (cachedResponse) {\n logger.debug(`Found a cached response in '${cacheName}'.`);\n }\n else {\n logger.debug(`No cached response found in '${cacheName}'.`);\n }\n }\n for (const callback of this.iterateCallbacks('cachedResponseWillBeUsed')) {\n cachedResponse =\n (await callback({\n cacheName,\n matchOptions,\n cachedResponse,\n request: effectiveRequest,\n event: this.event,\n })) || undefined;\n }\n return cachedResponse;\n }\n /**\n * Puts a request/response pair in the cache (and invokes any applicable\n * plugin callback methods) using the `cacheName` and `plugins` defined on\n * the strategy object.\n *\n * The following plugin lifecycle methods are invoked when using this method:\n * - cacheKeyWillByUsed()\n * - cacheWillUpdate()\n * - cacheDidUpdate()\n *\n * @param {Request|string} key The request or URL to use as the cache key.\n * @param {Response} response The response to cache.\n * @return {Promise} `false` if a cacheWillUpdate caused the response\n * not be cached, and `true` otherwise.\n */\n async cachePut(key, response) {\n const request = toRequest(key);\n // Run in the next task to avoid blocking other cache reads.\n // https://github.com/w3c/ServiceWorker/issues/1397\n await timeout(0);\n const effectiveRequest = await this.getCacheKey(request, 'write');\n if (process.env.NODE_ENV !== 'production') {\n if (effectiveRequest.method && effectiveRequest.method !== 'GET') {\n throw new WorkboxError('attempt-to-cache-non-get-request', {\n url: getFriendlyURL(effectiveRequest.url),\n method: effectiveRequest.method,\n });\n }\n // See https://github.com/GoogleChrome/workbox/issues/2818\n const vary = response.headers.get('Vary');\n if (vary) {\n logger.debug(`The response for ${getFriendlyURL(effectiveRequest.url)} ` +\n `has a 'Vary: ${vary}' header. ` +\n `Consider setting the {ignoreVary: true} option on your strategy ` +\n `to ensure cache matching and deletion works as expected.`);\n }\n }\n if (!response) {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(`Cannot cache non-existent response for ` +\n `'${getFriendlyURL(effectiveRequest.url)}'.`);\n }\n throw new WorkboxError('cache-put-with-no-response', {\n url: getFriendlyURL(effectiveRequest.url),\n });\n }\n const responseToCache = await this._ensureResponseSafeToCache(response);\n if (!responseToCache) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Response '${getFriendlyURL(effectiveRequest.url)}' ` +\n `will not be cached.`, responseToCache);\n }\n return false;\n }\n const { cacheName, matchOptions } = this._strategy;\n const cache = await self.caches.open(cacheName);\n const hasCacheUpdateCallback = this.hasCallback('cacheDidUpdate');\n const oldResponse = hasCacheUpdateCallback\n ? await cacheMatchIgnoreParams(\n // TODO(philipwalton): the `__WB_REVISION__` param is a precaching\n // feature. Consider into ways to only add this behavior if using\n // precaching.\n cache, effectiveRequest.clone(), ['__WB_REVISION__'], matchOptions)\n : null;\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Updating the '${cacheName}' cache with a new Response ` +\n `for ${getFriendlyURL(effectiveRequest.url)}.`);\n }\n try {\n await cache.put(effectiveRequest, hasCacheUpdateCallback ? responseToCache.clone() : responseToCache);\n }\n catch (error) {\n if (error instanceof Error) {\n // See https://developer.mozilla.org/en-US/docs/Web/API/DOMException#exception-QuotaExceededError\n if (error.name === 'QuotaExceededError') {\n await executeQuotaErrorCallbacks();\n }\n throw error;\n }\n }\n for (const callback of this.iterateCallbacks('cacheDidUpdate')) {\n await callback({\n cacheName,\n oldResponse,\n newResponse: responseToCache.clone(),\n request: effectiveRequest,\n event: this.event,\n });\n }\n return true;\n }\n /**\n * Checks the list of plugins for the `cacheKeyWillBeUsed` callback, and\n * executes any of those callbacks found in sequence. The final `Request`\n * object returned by the last plugin is treated as the cache key for cache\n * reads and/or writes. If no `cacheKeyWillBeUsed` plugin callbacks have\n * been registered, the passed request is returned unmodified\n *\n * @param {Request} request\n * @param {string} mode\n * @return {Promise}\n */\n async getCacheKey(request, mode) {\n const key = `${request.url} | ${mode}`;\n if (!this._cacheKeys[key]) {\n let effectiveRequest = request;\n for (const callback of this.iterateCallbacks('cacheKeyWillBeUsed')) {\n effectiveRequest = toRequest(await callback({\n mode,\n request: effectiveRequest,\n event: this.event,\n // params has a type any can't change right now.\n params: this.params, // eslint-disable-line\n }));\n }\n this._cacheKeys[key] = effectiveRequest;\n }\n return this._cacheKeys[key];\n }\n /**\n * Returns true if the strategy has at least one plugin with the given\n * callback.\n *\n * @param {string} name The name of the callback to check for.\n * @return {boolean}\n */\n hasCallback(name) {\n for (const plugin of this._strategy.plugins) {\n if (name in plugin) {\n return true;\n }\n }\n return false;\n }\n /**\n * Runs all plugin callbacks matching the given name, in order, passing the\n * given param object (merged ith the current plugin state) as the only\n * argument.\n *\n * Note: since this method runs all plugins, it's not suitable for cases\n * where the return value of a callback needs to be applied prior to calling\n * the next callback. See\n * {@link workbox-strategies.StrategyHandler#iterateCallbacks}\n * below for how to handle that case.\n *\n * @param {string} name The name of the callback to run within each plugin.\n * @param {Object} param The object to pass as the first (and only) param\n * when executing each callback. This object will be merged with the\n * current plugin state prior to callback execution.\n */\n async runCallbacks(name, param) {\n for (const callback of this.iterateCallbacks(name)) {\n // TODO(philipwalton): not sure why `any` is needed. It seems like\n // this should work with `as WorkboxPluginCallbackParam[C]`.\n await callback(param);\n }\n }\n /**\n * Accepts a callback and returns an iterable of matching plugin callbacks,\n * where each callback is wrapped with the current handler state (i.e. when\n * you call each callback, whatever object parameter you pass it will\n * be merged with the plugin's current state).\n *\n * @param {string} name The name fo the callback to run\n * @return {Array}\n */\n *iterateCallbacks(name) {\n for (const plugin of this._strategy.plugins) {\n if (typeof plugin[name] === 'function') {\n const state = this._pluginStateMap.get(plugin);\n const statefulCallback = (param) => {\n const statefulParam = Object.assign(Object.assign({}, param), { state });\n // TODO(philipwalton): not sure why `any` is needed. It seems like\n // this should work with `as WorkboxPluginCallbackParam[C]`.\n return plugin[name](statefulParam);\n };\n yield statefulCallback;\n }\n }\n }\n /**\n * Adds a promise to the\n * [extend lifetime promises]{@link https://w3c.github.io/ServiceWorker/#extendableevent-extend-lifetime-promises}\n * of the event event associated with the request being handled (usually a\n * `FetchEvent`).\n *\n * Note: you can await\n * {@link workbox-strategies.StrategyHandler~doneWaiting}\n * to know when all added promises have settled.\n *\n * @param {Promise} promise A promise to add to the extend lifetime promises\n * of the event that triggered the request.\n */\n waitUntil(promise) {\n this._extendLifetimePromises.push(promise);\n return promise;\n }\n /**\n * Returns a promise that resolves once all promises passed to\n * {@link workbox-strategies.StrategyHandler~waitUntil}\n * have settled.\n *\n * Note: any work done after `doneWaiting()` settles should be manually\n * passed to an event's `waitUntil()` method (not this handler's\n * `waitUntil()` method), otherwise the service worker thread my be killed\n * prior to your work completing.\n */\n async doneWaiting() {\n let promise;\n while ((promise = this._extendLifetimePromises.shift())) {\n await promise;\n }\n }\n /**\n * Stops running the strategy and immediately resolves any pending\n * `waitUntil()` promises.\n */\n destroy() {\n this._handlerDeferred.resolve(null);\n }\n /**\n * This method will call cacheWillUpdate on the available plugins (or use\n * status === 200) to determine if the Response is safe and valid to cache.\n *\n * @param {Request} options.request\n * @param {Response} options.response\n * @return {Promise}\n *\n * @private\n */\n async _ensureResponseSafeToCache(response) {\n let responseToCache = response;\n let pluginsUsed = false;\n for (const callback of this.iterateCallbacks('cacheWillUpdate')) {\n responseToCache =\n (await callback({\n request: this.request,\n response: responseToCache,\n event: this.event,\n })) || undefined;\n pluginsUsed = true;\n if (!responseToCache) {\n break;\n }\n }\n if (!pluginsUsed) {\n if (responseToCache && responseToCache.status !== 200) {\n responseToCache = undefined;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (responseToCache) {\n if (responseToCache.status !== 200) {\n if (responseToCache.status === 0) {\n logger.warn(`The response for '${this.request.url}' ` +\n `is an opaque response. The caching strategy that you're ` +\n `using will not cache opaque responses by default.`);\n }\n else {\n logger.debug(`The response for '${this.request.url}' ` +\n `returned a status code of '${response.status}' and won't ` +\n `be cached as a result.`);\n }\n }\n }\n }\n }\n return responseToCache;\n }\n}\nexport { StrategyHandler };\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * Returns a promise that resolves and the passed number of milliseconds.\n * This utility is an async/await-friendly version of `setTimeout`.\n *\n * @param {number} ms\n * @return {Promise}\n * @private\n */\nexport function timeout(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst getFriendlyURL = (url) => {\n const urlObj = new URL(String(url), location.href);\n // See https://github.com/GoogleChrome/workbox/issues/2323\n // We want to include everything, except for the origin if it's same-origin.\n return urlObj.href.replace(new RegExp(`^${location.origin}`), '');\n};\nexport { getFriendlyURL };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from '../_private/logger.js';\nimport { quotaErrorCallbacks } from '../models/quotaErrorCallbacks.js';\nimport '../_version.js';\n/**\n * Runs all of the callback functions, one at a time sequentially, in the order\n * in which they were registered.\n *\n * @memberof workbox-core\n * @private\n */\nasync function executeQuotaErrorCallbacks() {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`About to run ${quotaErrorCallbacks.size} ` +\n `callbacks to clean up caches.`);\n }\n for (const callback of quotaErrorCallbacks) {\n await callback();\n if (process.env.NODE_ENV !== 'production') {\n logger.log(callback, 'is complete.');\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Finished running callbacks.');\n }\n}\nexport { executeQuotaErrorCallbacks };\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { StrategyHandler } from './StrategyHandler.js';\nimport './_version.js';\n/**\n * An abstract base class that all other strategy classes must extend from:\n *\n * @memberof workbox-strategies\n */\nclass Strategy {\n /**\n * Creates a new instance of the strategy and sets all documented option\n * properties as public instance properties.\n *\n * Note: if a custom strategy class extends the base Strategy class and does\n * not need more than these properties, it does not need to define its own\n * constructor.\n *\n * @param {Object} [options]\n * @param {string} [options.cacheName] Cache name to store and retrieve\n * requests. Defaults to the cache names provided by\n * {@link workbox-core.cacheNames}.\n * @param {Array} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} [options.fetchOptions] Values passed along to the\n * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)\n * of [non-navigation](https://github.com/GoogleChrome/workbox/issues/1796)\n * `fetch()` requests made by this strategy.\n * @param {Object} [options.matchOptions] The\n * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions}\n * for any `cache.match()` or `cache.put()` calls made by this strategy.\n */\n constructor(options = {}) {\n /**\n * Cache name to store and retrieve\n * requests. Defaults to the cache names provided by\n * {@link workbox-core.cacheNames}.\n *\n * @type {string}\n */\n this.cacheName = cacheNames.getRuntimeName(options.cacheName);\n /**\n * The list\n * [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * used by this strategy.\n *\n * @type {Array}\n */\n this.plugins = options.plugins || [];\n /**\n * Values passed along to the\n * [`init`]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters}\n * of all fetch() requests made by this strategy.\n *\n * @type {Object}\n */\n this.fetchOptions = options.fetchOptions;\n /**\n * The\n * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions}\n * for any `cache.match()` or `cache.put()` calls made by this strategy.\n *\n * @type {Object}\n */\n this.matchOptions = options.matchOptions;\n }\n /**\n * Perform a request strategy and returns a `Promise` that will resolve with\n * a `Response`, invoking all relevant plugin callbacks.\n *\n * When a strategy instance is registered with a Workbox\n * {@link workbox-routing.Route}, this method is automatically\n * called when the route matches.\n *\n * Alternatively, this method can be used in a standalone `FetchEvent`\n * listener by passing it to `event.respondWith()`.\n *\n * @param {FetchEvent|Object} options A `FetchEvent` or an object with the\n * properties listed below.\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {ExtendableEvent} options.event The event associated with the\n * request.\n * @param {URL} [options.url]\n * @param {*} [options.params]\n */\n handle(options) {\n const [responseDone] = this.handleAll(options);\n return responseDone;\n }\n /**\n * Similar to {@link workbox-strategies.Strategy~handle}, but\n * instead of just returning a `Promise` that resolves to a `Response` it\n * it will return an tuple of `[response, done]` promises, where the former\n * (`response`) is equivalent to what `handle()` returns, and the latter is a\n * Promise that will resolve once any promises that were added to\n * `event.waitUntil()` as part of performing the strategy have completed.\n *\n * You can await the `done` promise to ensure any extra work performed by\n * the strategy (usually caching responses) completes successfully.\n *\n * @param {FetchEvent|Object} options A `FetchEvent` or an object with the\n * properties listed below.\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {ExtendableEvent} options.event The event associated with the\n * request.\n * @param {URL} [options.url]\n * @param {*} [options.params]\n * @return {Array} A tuple of [response, done]\n * promises that can be used to determine when the response resolves as\n * well as when the handler has completed all its work.\n */\n handleAll(options) {\n // Allow for flexible options to be passed.\n if (options instanceof FetchEvent) {\n options = {\n event: options,\n request: options.request,\n };\n }\n const event = options.event;\n const request = typeof options.request === 'string'\n ? new Request(options.request)\n : options.request;\n const params = 'params' in options ? options.params : undefined;\n const handler = new StrategyHandler(this, { event, request, params });\n const responseDone = this._getResponse(handler, request, event);\n const handlerDone = this._awaitComplete(responseDone, handler, request, event);\n // Return an array of promises, suitable for use with Promise.all().\n return [responseDone, handlerDone];\n }\n async _getResponse(handler, request, event) {\n await handler.runCallbacks('handlerWillStart', { event, request });\n let response = undefined;\n try {\n response = await this._handle(request, handler);\n // The \"official\" Strategy subclasses all throw this error automatically,\n // but in case a third-party Strategy doesn't, ensure that we have a\n // consistent failure when there's no response or an error response.\n if (!response || response.type === 'error') {\n throw new WorkboxError('no-response', { url: request.url });\n }\n }\n catch (error) {\n if (error instanceof Error) {\n for (const callback of handler.iterateCallbacks('handlerDidError')) {\n response = await callback({ error, event, request });\n if (response) {\n break;\n }\n }\n }\n if (!response) {\n throw error;\n }\n else if (process.env.NODE_ENV !== 'production') {\n logger.log(`While responding to '${getFriendlyURL(request.url)}', ` +\n `an ${error instanceof Error ? error.toString() : ''} error occurred. Using a fallback response provided by ` +\n `a handlerDidError plugin.`);\n }\n }\n for (const callback of handler.iterateCallbacks('handlerWillRespond')) {\n response = await callback({ event, request, response });\n }\n return response;\n }\n async _awaitComplete(responseDone, handler, request, event) {\n let response;\n let error;\n try {\n response = await responseDone;\n }\n catch (error) {\n // Ignore errors, as response errors should be caught via the `response`\n // promise above. The `done` promise will only throw for errors in\n // promises passed to `handler.waitUntil()`.\n }\n try {\n await handler.runCallbacks('handlerDidRespond', {\n event,\n request,\n response,\n });\n await handler.doneWaiting();\n }\n catch (waitUntilError) {\n if (waitUntilError instanceof Error) {\n error = waitUntilError;\n }\n }\n await handler.runCallbacks('handlerDidComplete', {\n event,\n request,\n response,\n error: error,\n });\n handler.destroy();\n if (error) {\n throw error;\n }\n }\n}\nexport { Strategy };\n/**\n * Classes extending the `Strategy` based class should implement this method,\n * and leverage the {@link workbox-strategies.StrategyHandler}\n * arg to perform all fetching and cache logic, which will ensure all relevant\n * cache, cache options, fetch options and plugins are used (per the current\n * strategy instance).\n *\n * @name _handle\n * @instance\n * @abstract\n * @function\n * @param {Request} request\n * @param {workbox-strategies.StrategyHandler} handler\n * @return {Promise}\n *\n * @memberof workbox-strategies.Strategy\n */\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { copyResponse } from 'workbox-core/copyResponse.js';\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { Strategy } from 'workbox-strategies/Strategy.js';\nimport './_version.js';\n/**\n * A {@link workbox-strategies.Strategy} implementation\n * specifically designed to work with\n * {@link workbox-precaching.PrecacheController}\n * to both cache and fetch precached assets.\n *\n * Note: an instance of this class is created automatically when creating a\n * `PrecacheController`; it's generally not necessary to create this yourself.\n *\n * @extends workbox-strategies.Strategy\n * @memberof workbox-precaching\n */\nclass PrecacheStrategy extends Strategy {\n /**\n *\n * @param {Object} [options]\n * @param {string} [options.cacheName] Cache name to store and retrieve\n * requests. Defaults to the cache names provided by\n * {@link workbox-core.cacheNames}.\n * @param {Array} [options.plugins] {@link https://developers.google.com/web/tools/workbox/guides/using-plugins|Plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} [options.fetchOptions] Values passed along to the\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters|init}\n * of all fetch() requests made by this strategy.\n * @param {Object} [options.matchOptions] The\n * {@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions|CacheQueryOptions}\n * for any `cache.match()` or `cache.put()` calls made by this strategy.\n * @param {boolean} [options.fallbackToNetwork=true] Whether to attempt to\n * get the response from the network if there's a precache miss.\n */\n constructor(options = {}) {\n options.cacheName = cacheNames.getPrecacheName(options.cacheName);\n super(options);\n this._fallbackToNetwork =\n options.fallbackToNetwork === false ? false : true;\n // Redirected responses cannot be used to satisfy a navigation request, so\n // any redirected response must be \"copied\" rather than cloned, so the new\n // response doesn't contain the `redirected` flag. See:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=669363&desc=2#c1\n this.plugins.push(PrecacheStrategy.copyRedirectedCacheableResponsesPlugin);\n }\n /**\n * @private\n * @param {Request|string} request A request to run this strategy for.\n * @param {workbox-strategies.StrategyHandler} handler The event that\n * triggered the request.\n * @return {Promise}\n */\n async _handle(request, handler) {\n const response = await handler.cacheMatch(request);\n if (response) {\n return response;\n }\n // If this is an `install` event for an entry that isn't already cached,\n // then populate the cache.\n if (handler.event && handler.event.type === 'install') {\n return await this._handleInstall(request, handler);\n }\n // Getting here means something went wrong. An entry that should have been\n // precached wasn't found in the cache.\n return await this._handleFetch(request, handler);\n }\n async _handleFetch(request, handler) {\n let response;\n const params = (handler.params || {});\n // Fall back to the network if we're configured to do so.\n if (this._fallbackToNetwork) {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`The precached response for ` +\n `${getFriendlyURL(request.url)} in ${this.cacheName} was not ` +\n `found. Falling back to the network.`);\n }\n const integrityInManifest = params.integrity;\n const integrityInRequest = request.integrity;\n const noIntegrityConflict = !integrityInRequest || integrityInRequest === integrityInManifest;\n // Do not add integrity if the original request is no-cors\n // See https://github.com/GoogleChrome/workbox/issues/3096\n response = await handler.fetch(new Request(request, {\n integrity: request.mode !== 'no-cors'\n ? integrityInRequest || integrityInManifest\n : undefined,\n }));\n // It's only \"safe\" to repair the cache if we're using SRI to guarantee\n // that the response matches the precache manifest's expectations,\n // and there's either a) no integrity property in the incoming request\n // or b) there is an integrity, and it matches the precache manifest.\n // See https://github.com/GoogleChrome/workbox/issues/2858\n // Also if the original request users no-cors we don't use integrity.\n // See https://github.com/GoogleChrome/workbox/issues/3096\n if (integrityInManifest &&\n noIntegrityConflict &&\n request.mode !== 'no-cors') {\n this._useDefaultCacheabilityPluginIfNeeded();\n const wasCached = await handler.cachePut(request, response.clone());\n if (process.env.NODE_ENV !== 'production') {\n if (wasCached) {\n logger.log(`A response for ${getFriendlyURL(request.url)} ` +\n `was used to \"repair\" the precache.`);\n }\n }\n }\n }\n else {\n // This shouldn't normally happen, but there are edge cases:\n // https://github.com/GoogleChrome/workbox/issues/1441\n throw new WorkboxError('missing-precache-entry', {\n cacheName: this.cacheName,\n url: request.url,\n });\n }\n if (process.env.NODE_ENV !== 'production') {\n const cacheKey = params.cacheKey || (await handler.getCacheKey(request, 'read'));\n // Workbox is going to handle the route.\n // print the routing details to the console.\n logger.groupCollapsed(`Precaching is responding to: ` + getFriendlyURL(request.url));\n logger.log(`Serving the precached url: ${getFriendlyURL(cacheKey instanceof Request ? cacheKey.url : cacheKey)}`);\n logger.groupCollapsed(`View request details here.`);\n logger.log(request);\n logger.groupEnd();\n logger.groupCollapsed(`View response details here.`);\n logger.log(response);\n logger.groupEnd();\n logger.groupEnd();\n }\n return response;\n }\n async _handleInstall(request, handler) {\n this._useDefaultCacheabilityPluginIfNeeded();\n const response = await handler.fetch(request);\n // Make sure we defer cachePut() until after we know the response\n // should be cached; see https://github.com/GoogleChrome/workbox/issues/2737\n const wasCached = await handler.cachePut(request, response.clone());\n if (!wasCached) {\n // Throwing here will lead to the `install` handler failing, which\n // we want to do if *any* of the responses aren't safe to cache.\n throw new WorkboxError('bad-precaching-response', {\n url: request.url,\n status: response.status,\n });\n }\n return response;\n }\n /**\n * This method is complex, as there a number of things to account for:\n *\n * The `plugins` array can be set at construction, and/or it might be added to\n * to at any time before the strategy is used.\n *\n * At the time the strategy is used (i.e. during an `install` event), there\n * needs to be at least one plugin that implements `cacheWillUpdate` in the\n * array, other than `copyRedirectedCacheableResponsesPlugin`.\n *\n * - If this method is called and there are no suitable `cacheWillUpdate`\n * plugins, we need to add `defaultPrecacheCacheabilityPlugin`.\n *\n * - If this method is called and there is exactly one `cacheWillUpdate`, then\n * we don't have to do anything (this might be a previously added\n * `defaultPrecacheCacheabilityPlugin`, or it might be a custom plugin).\n *\n * - If this method is called and there is more than one `cacheWillUpdate`,\n * then we need to check if one is `defaultPrecacheCacheabilityPlugin`. If so,\n * we need to remove it. (This situation is unlikely, but it could happen if\n * the strategy is used multiple times, the first without a `cacheWillUpdate`,\n * and then later on after manually adding a custom `cacheWillUpdate`.)\n *\n * See https://github.com/GoogleChrome/workbox/issues/2737 for more context.\n *\n * @private\n */\n _useDefaultCacheabilityPluginIfNeeded() {\n let defaultPluginIndex = null;\n let cacheWillUpdatePluginCount = 0;\n for (const [index, plugin] of this.plugins.entries()) {\n // Ignore the copy redirected plugin when determining what to do.\n if (plugin === PrecacheStrategy.copyRedirectedCacheableResponsesPlugin) {\n continue;\n }\n // Save the default plugin's index, in case it needs to be removed.\n if (plugin === PrecacheStrategy.defaultPrecacheCacheabilityPlugin) {\n defaultPluginIndex = index;\n }\n if (plugin.cacheWillUpdate) {\n cacheWillUpdatePluginCount++;\n }\n }\n if (cacheWillUpdatePluginCount === 0) {\n this.plugins.push(PrecacheStrategy.defaultPrecacheCacheabilityPlugin);\n }\n else if (cacheWillUpdatePluginCount > 1 && defaultPluginIndex !== null) {\n // Only remove the default plugin; multiple custom plugins are allowed.\n this.plugins.splice(defaultPluginIndex, 1);\n }\n // Nothing needs to be done if cacheWillUpdatePluginCount is 1\n }\n}\nPrecacheStrategy.defaultPrecacheCacheabilityPlugin = {\n async cacheWillUpdate({ response }) {\n if (!response || response.status >= 400) {\n return null;\n }\n return response;\n },\n};\nPrecacheStrategy.copyRedirectedCacheableResponsesPlugin = {\n async cacheWillUpdate({ response }) {\n return response.redirected ? await copyResponse(response) : response;\n },\n};\nexport { PrecacheStrategy };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { waitUntil } from 'workbox-core/_private/waitUntil.js';\nimport { createCacheKey } from './utils/createCacheKey.js';\nimport { PrecacheInstallReportPlugin } from './utils/PrecacheInstallReportPlugin.js';\nimport { PrecacheCacheKeyPlugin } from './utils/PrecacheCacheKeyPlugin.js';\nimport { printCleanupDetails } from './utils/printCleanupDetails.js';\nimport { printInstallDetails } from './utils/printInstallDetails.js';\nimport { PrecacheStrategy } from './PrecacheStrategy.js';\nimport './_version.js';\n/**\n * Performs efficient precaching of assets.\n *\n * @memberof workbox-precaching\n */\nclass PrecacheController {\n /**\n * Create a new PrecacheController.\n *\n * @param {Object} [options]\n * @param {string} [options.cacheName] The cache to use for precaching.\n * @param {string} [options.plugins] Plugins to use when precaching as well\n * as responding to fetch events for precached assets.\n * @param {boolean} [options.fallbackToNetwork=true] Whether to attempt to\n * get the response from the network if there's a precache miss.\n */\n constructor({ cacheName, plugins = [], fallbackToNetwork = true, } = {}) {\n this._urlsToCacheKeys = new Map();\n this._urlsToCacheModes = new Map();\n this._cacheKeysToIntegrities = new Map();\n this._strategy = new PrecacheStrategy({\n cacheName: cacheNames.getPrecacheName(cacheName),\n plugins: [\n ...plugins,\n new PrecacheCacheKeyPlugin({ precacheController: this }),\n ],\n fallbackToNetwork,\n });\n // Bind the install and activate methods to the instance.\n this.install = this.install.bind(this);\n this.activate = this.activate.bind(this);\n }\n /**\n * @type {workbox-precaching.PrecacheStrategy} The strategy created by this controller and\n * used to cache assets and respond to fetch events.\n */\n get strategy() {\n return this._strategy;\n }\n /**\n * Adds items to the precache list, removing any duplicates and\n * stores the files in the\n * {@link workbox-core.cacheNames|\"precache cache\"} when the service\n * worker installs.\n *\n * This method can be called multiple times.\n *\n * @param {Array} [entries=[]] Array of entries to precache.\n */\n precache(entries) {\n this.addToCacheList(entries);\n if (!this._installAndActiveListenersAdded) {\n self.addEventListener('install', this.install);\n self.addEventListener('activate', this.activate);\n this._installAndActiveListenersAdded = true;\n }\n }\n /**\n * This method will add items to the precache list, removing duplicates\n * and ensuring the information is valid.\n *\n * @param {Array} entries\n * Array of entries to precache.\n */\n addToCacheList(entries) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isArray(entries, {\n moduleName: 'workbox-precaching',\n className: 'PrecacheController',\n funcName: 'addToCacheList',\n paramName: 'entries',\n });\n }\n const urlsToWarnAbout = [];\n for (const entry of entries) {\n // See https://github.com/GoogleChrome/workbox/issues/2259\n if (typeof entry === 'string') {\n urlsToWarnAbout.push(entry);\n }\n else if (entry && entry.revision === undefined) {\n urlsToWarnAbout.push(entry.url);\n }\n const { cacheKey, url } = createCacheKey(entry);\n const cacheMode = typeof entry !== 'string' && entry.revision ? 'reload' : 'default';\n if (this._urlsToCacheKeys.has(url) &&\n this._urlsToCacheKeys.get(url) !== cacheKey) {\n throw new WorkboxError('add-to-cache-list-conflicting-entries', {\n firstEntry: this._urlsToCacheKeys.get(url),\n secondEntry: cacheKey,\n });\n }\n if (typeof entry !== 'string' && entry.integrity) {\n if (this._cacheKeysToIntegrities.has(cacheKey) &&\n this._cacheKeysToIntegrities.get(cacheKey) !== entry.integrity) {\n throw new WorkboxError('add-to-cache-list-conflicting-integrities', {\n url,\n });\n }\n this._cacheKeysToIntegrities.set(cacheKey, entry.integrity);\n }\n this._urlsToCacheKeys.set(url, cacheKey);\n this._urlsToCacheModes.set(url, cacheMode);\n if (urlsToWarnAbout.length > 0) {\n const warningMessage = `Workbox is precaching URLs without revision ` +\n `info: ${urlsToWarnAbout.join(', ')}\\nThis is generally NOT safe. ` +\n `Learn more at https://bit.ly/wb-precache`;\n if (process.env.NODE_ENV === 'production') {\n // Use console directly to display this warning without bloating\n // bundle sizes by pulling in all of the logger codebase in prod.\n console.warn(warningMessage);\n }\n else {\n logger.warn(warningMessage);\n }\n }\n }\n }\n /**\n * Precaches new and updated assets. Call this method from the service worker\n * install event.\n *\n * Note: this method calls `event.waitUntil()` for you, so you do not need\n * to call it yourself in your event handlers.\n *\n * @param {ExtendableEvent} event\n * @return {Promise}\n */\n install(event) {\n // waitUntil returns Promise\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return waitUntil(event, async () => {\n const installReportPlugin = new PrecacheInstallReportPlugin();\n this.strategy.plugins.push(installReportPlugin);\n // Cache entries one at a time.\n // See https://github.com/GoogleChrome/workbox/issues/2528\n for (const [url, cacheKey] of this._urlsToCacheKeys) {\n const integrity = this._cacheKeysToIntegrities.get(cacheKey);\n const cacheMode = this._urlsToCacheModes.get(url);\n const request = new Request(url, {\n integrity,\n cache: cacheMode,\n credentials: 'same-origin',\n });\n await Promise.all(this.strategy.handleAll({\n params: { cacheKey },\n request,\n event,\n }));\n }\n const { updatedURLs, notUpdatedURLs } = installReportPlugin;\n if (process.env.NODE_ENV !== 'production') {\n printInstallDetails(updatedURLs, notUpdatedURLs);\n }\n return { updatedURLs, notUpdatedURLs };\n });\n }\n /**\n * Deletes assets that are no longer present in the current precache manifest.\n * Call this method from the service worker activate event.\n *\n * Note: this method calls `event.waitUntil()` for you, so you do not need\n * to call it yourself in your event handlers.\n *\n * @param {ExtendableEvent} event\n * @return {Promise}\n */\n activate(event) {\n // waitUntil returns Promise\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return waitUntil(event, async () => {\n const cache = await self.caches.open(this.strategy.cacheName);\n const currentlyCachedRequests = await cache.keys();\n const expectedCacheKeys = new Set(this._urlsToCacheKeys.values());\n const deletedURLs = [];\n for (const request of currentlyCachedRequests) {\n if (!expectedCacheKeys.has(request.url)) {\n await cache.delete(request);\n deletedURLs.push(request.url);\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n printCleanupDetails(deletedURLs);\n }\n return { deletedURLs };\n });\n }\n /**\n * Returns a mapping of a precached URL to the corresponding cache key, taking\n * into account the revision information for the URL.\n *\n * @return {Map} A URL to cache key mapping.\n */\n getURLsToCacheKeys() {\n return this._urlsToCacheKeys;\n }\n /**\n * Returns a list of all the URLs that have been precached by the current\n * service worker.\n *\n * @return {Array} The precached URLs.\n */\n getCachedURLs() {\n return [...this._urlsToCacheKeys.keys()];\n }\n /**\n * Returns the cache key used for storing a given URL. If that URL is\n * unversioned, like `/index.html', then the cache key will be the original\n * URL with a search parameter appended to it.\n *\n * @param {string} url A URL whose cache key you want to look up.\n * @return {string} The versioned URL that corresponds to a cache key\n * for the original URL, or undefined if that URL isn't precached.\n */\n getCacheKeyForURL(url) {\n const urlObject = new URL(url, location.href);\n return this._urlsToCacheKeys.get(urlObject.href);\n }\n /**\n * @param {string} url A cache key whose SRI you want to look up.\n * @return {string} The subresource integrity associated with the cache key,\n * or undefined if it's not set.\n */\n getIntegrityForCacheKey(cacheKey) {\n return this._cacheKeysToIntegrities.get(cacheKey);\n }\n /**\n * This acts as a drop-in replacement for\n * [`cache.match()`](https://developer.mozilla.org/en-US/docs/Web/API/Cache/match)\n * with the following differences:\n *\n * - It knows what the name of the precache is, and only checks in that cache.\n * - It allows you to pass in an \"original\" URL without versioning parameters,\n * and it will automatically look up the correct cache key for the currently\n * active revision of that URL.\n *\n * E.g., `matchPrecache('index.html')` will find the correct precached\n * response for the currently active service worker, even if the actual cache\n * key is `'/index.html?__WB_REVISION__=1234abcd'`.\n *\n * @param {string|Request} request The key (without revisioning parameters)\n * to look up in the precache.\n * @return {Promise}\n */\n async matchPrecache(request) {\n const url = request instanceof Request ? request.url : request;\n const cacheKey = this.getCacheKeyForURL(url);\n if (cacheKey) {\n const cache = await self.caches.open(this.strategy.cacheName);\n return cache.match(cacheKey);\n }\n return undefined;\n }\n /**\n * Returns a function that looks up `url` in the precache (taking into\n * account revision information), and returns the corresponding `Response`.\n *\n * @param {string} url The precached URL which will be used to lookup the\n * `Response`.\n * @return {workbox-routing~handlerCallback}\n */\n createHandlerBoundToURL(url) {\n const cacheKey = this.getCacheKeyForURL(url);\n if (!cacheKey) {\n throw new WorkboxError('non-precached-url', { url });\n }\n return (options) => {\n options.request = new Request(url);\n options.params = Object.assign({ cacheKey }, options.params);\n return this.strategy.handle(options);\n };\n }\n}\nexport { PrecacheController };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { PrecacheController } from '../PrecacheController.js';\nimport '../_version.js';\nlet precacheController;\n/**\n * @return {PrecacheController}\n * @private\n */\nexport const getOrCreatePrecacheController = () => {\n if (!precacheController) {\n precacheController = new PrecacheController();\n }\n return precacheController;\n};\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { Route } from 'workbox-routing/Route.js';\nimport { generateURLVariations } from './utils/generateURLVariations.js';\nimport './_version.js';\n/**\n * A subclass of {@link workbox-routing.Route} that takes a\n * {@link workbox-precaching.PrecacheController}\n * instance and uses it to match incoming requests and handle fetching\n * responses from the precache.\n *\n * @memberof workbox-precaching\n * @extends workbox-routing.Route\n */\nclass PrecacheRoute extends Route {\n /**\n * @param {PrecacheController} precacheController A `PrecacheController`\n * instance used to both match requests and respond to fetch events.\n * @param {Object} [options] Options to control how requests are matched\n * against the list of precached URLs.\n * @param {string} [options.directoryIndex=index.html] The `directoryIndex` will\n * check cache entries for a URLs ending with '/' to see if there is a hit when\n * appending the `directoryIndex` value.\n * @param {Array} [options.ignoreURLParametersMatching=[/^utm_/, /^fbclid$/]] An\n * array of regex's to remove search params when looking for a cache match.\n * @param {boolean} [options.cleanURLs=true] The `cleanURLs` option will\n * check the cache for the URL with a `.html` added to the end of the end.\n * @param {workbox-precaching~urlManipulation} [options.urlManipulation]\n * This is a function that should take a URL and return an array of\n * alternative URLs that should be checked for precache matches.\n */\n constructor(precacheController, options) {\n const match = ({ request, }) => {\n const urlsToCacheKeys = precacheController.getURLsToCacheKeys();\n for (const possibleURL of generateURLVariations(request.url, options)) {\n const cacheKey = urlsToCacheKeys.get(possibleURL);\n if (cacheKey) {\n const integrity = precacheController.getIntegrityForCacheKey(cacheKey);\n return { cacheKey, integrity };\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Precaching did not find a match for ` + getFriendlyURL(request.url));\n }\n return;\n };\n super(match, precacheController.strategy);\n }\n}\nexport { PrecacheRoute };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { removeIgnoredSearchParams } from './removeIgnoredSearchParams.js';\nimport '../_version.js';\n/**\n * Generator function that yields possible variations on the original URL to\n * check, one at a time.\n *\n * @param {string} url\n * @param {Object} options\n *\n * @private\n * @memberof workbox-precaching\n */\nexport function* generateURLVariations(url, { ignoreURLParametersMatching = [/^utm_/, /^fbclid$/], directoryIndex = 'index.html', cleanURLs = true, urlManipulation, } = {}) {\n const urlObject = new URL(url, location.href);\n urlObject.hash = '';\n yield urlObject.href;\n const urlWithoutIgnoredParams = removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching);\n yield urlWithoutIgnoredParams.href;\n if (directoryIndex && urlWithoutIgnoredParams.pathname.endsWith('/')) {\n const directoryURL = new URL(urlWithoutIgnoredParams.href);\n directoryURL.pathname += directoryIndex;\n yield directoryURL.href;\n }\n if (cleanURLs) {\n const cleanURL = new URL(urlWithoutIgnoredParams.href);\n cleanURL.pathname += '.html';\n yield cleanURL.href;\n }\n if (urlManipulation) {\n const additionalURLs = urlManipulation({ url: urlObject });\n for (const urlToAttempt of additionalURLs) {\n yield urlToAttempt.href;\n }\n }\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * Removes any URL search parameters that should be ignored.\n *\n * @param {URL} urlObject The original URL.\n * @param {Array} ignoreURLParametersMatching RegExps to test against\n * each search parameter name. Matches mean that the search parameter should be\n * ignored.\n * @return {URL} The URL with any ignored search parameters removed.\n *\n * @private\n * @memberof workbox-precaching\n */\nexport function removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching = []) {\n // Convert the iterable into an array at the start of the loop to make sure\n // deletion doesn't mess up iteration.\n for (const paramName of [...urlObject.searchParams.keys()]) {\n if (ignoreURLParametersMatching.some((regExp) => regExp.test(paramName))) {\n urlObject.searchParams.delete(paramName);\n }\n }\n return urlObject;\n}\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { registerRoute } from 'workbox-routing/registerRoute.js';\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport { PrecacheRoute } from './PrecacheRoute.js';\nimport './_version.js';\n/**\n * Add a `fetch` listener to the service worker that will\n * respond to\n * [network requests]{@link https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers#Custom_responses_to_requests}\n * with precached assets.\n *\n * Requests for assets that aren't precached, the `FetchEvent` will not be\n * responded to, allowing the event to fall through to other `fetch` event\n * listeners.\n *\n * @param {Object} [options] See the {@link workbox-precaching.PrecacheRoute}\n * options.\n *\n * @memberof workbox-precaching\n */\nfunction addRoute(options) {\n const precacheController = getOrCreatePrecacheController();\n const precacheRoute = new PrecacheRoute(precacheController, options);\n registerRoute(precacheRoute);\n}\nexport { addRoute };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { Route } from './Route.js';\nimport { RegExpRoute } from './RegExpRoute.js';\nimport { getOrCreateDefaultRouter } from './utils/getOrCreateDefaultRouter.js';\nimport './_version.js';\n/**\n * Easily register a RegExp, string, or function with a caching\n * strategy to a singleton Router instance.\n *\n * This method will generate a Route for you if needed and\n * call {@link workbox-routing.Router#registerRoute}.\n *\n * @param {RegExp|string|workbox-routing.Route~matchCallback|workbox-routing.Route} capture\n * If the capture param is a `Route`, all other arguments will be ignored.\n * @param {workbox-routing~handlerCallback} [handler] A callback\n * function that returns a Promise resulting in a Response. This parameter\n * is required if `capture` is not a `Route` object.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n * @return {workbox-routing.Route} The generated `Route`.\n *\n * @memberof workbox-routing\n */\nfunction registerRoute(capture, handler, method) {\n let route;\n if (typeof capture === 'string') {\n const captureUrl = new URL(capture, location.href);\n if (process.env.NODE_ENV !== 'production') {\n if (!(capture.startsWith('/') || capture.startsWith('http'))) {\n throw new WorkboxError('invalid-string', {\n moduleName: 'workbox-routing',\n funcName: 'registerRoute',\n paramName: 'capture',\n });\n }\n // We want to check if Express-style wildcards are in the pathname only.\n // TODO: Remove this log message in v4.\n const valueToCheck = capture.startsWith('http')\n ? captureUrl.pathname\n : capture;\n // See https://github.com/pillarjs/path-to-regexp#parameters\n const wildcards = '[*:?+]';\n if (new RegExp(`${wildcards}`).exec(valueToCheck)) {\n logger.debug(`The '$capture' parameter contains an Express-style wildcard ` +\n `character (${wildcards}). Strings are now always interpreted as ` +\n `exact matches; use a RegExp for partial or wildcard matches.`);\n }\n }\n const matchCallback = ({ url }) => {\n if (process.env.NODE_ENV !== 'production') {\n if (url.pathname === captureUrl.pathname &&\n url.origin !== captureUrl.origin) {\n logger.debug(`${capture} only partially matches the cross-origin URL ` +\n `${url.toString()}. This route will only handle cross-origin requests ` +\n `if they match the entire URL.`);\n }\n }\n return url.href === captureUrl.href;\n };\n // If `capture` is a string then `handler` and `method` must be present.\n route = new Route(matchCallback, handler, method);\n }\n else if (capture instanceof RegExp) {\n // If `capture` is a `RegExp` then `handler` and `method` must be present.\n route = new RegExpRoute(capture, handler, method);\n }\n else if (typeof capture === 'function') {\n // If `capture` is a function then `handler` and `method` must be present.\n route = new Route(capture, handler, method);\n }\n else if (capture instanceof Route) {\n route = capture;\n }\n else {\n throw new WorkboxError('unsupported-route-type', {\n moduleName: 'workbox-routing',\n funcName: 'registerRoute',\n paramName: 'capture',\n });\n }\n const defaultRouter = getOrCreateDefaultRouter();\n defaultRouter.registerRoute(route);\n return route;\n}\nexport { registerRoute };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { deleteOutdatedCaches } from './utils/deleteOutdatedCaches.js';\nimport './_version.js';\n/**\n * Adds an `activate` event listener which will clean up incompatible\n * precaches that were created by older versions of Workbox.\n *\n * @memberof workbox-precaching\n */\nfunction cleanupOutdatedCaches() {\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('activate', ((event) => {\n const cacheName = cacheNames.getPrecacheName();\n event.waitUntil(deleteOutdatedCaches(cacheName).then((cachesDeleted) => {\n if (process.env.NODE_ENV !== 'production') {\n if (cachesDeleted.length > 0) {\n logger.log(`The following out-of-date precaches were cleaned up ` +\n `automatically:`, cachesDeleted);\n }\n }\n }));\n }));\n}\nexport { cleanupOutdatedCaches };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst SUBSTRING_TO_FIND = '-precache-';\n/**\n * Cleans up incompatible precaches that were created by older versions of\n * Workbox, by a service worker registered under the current scope.\n *\n * This is meant to be called as part of the `activate` event.\n *\n * This should be safe to use as long as you don't include `substringToFind`\n * (defaulting to `-precache-`) in your non-precache cache names.\n *\n * @param {string} currentPrecacheName The cache name currently in use for\n * precaching. This cache won't be deleted.\n * @param {string} [substringToFind='-precache-'] Cache names which include this\n * substring will be deleted (excluding `currentPrecacheName`).\n * @return {Array} A list of all the cache names that were deleted.\n *\n * @private\n * @memberof workbox-precaching\n */\nconst deleteOutdatedCaches = async (currentPrecacheName, substringToFind = SUBSTRING_TO_FIND) => {\n const cacheNames = await self.caches.keys();\n const cacheNamesToDelete = cacheNames.filter((cacheName) => {\n return (cacheName.includes(substringToFind) &&\n cacheName.includes(self.registration.scope) &&\n cacheName !== currentPrecacheName);\n });\n await Promise.all(cacheNamesToDelete.map((cacheName) => self.caches.delete(cacheName)));\n return cacheNamesToDelete;\n};\nexport { deleteOutdatedCaches };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport './_version.js';\n/**\n * Claim any currently available clients once the service worker\n * becomes active. This is normally used in conjunction with `skipWaiting()`.\n *\n * @memberof workbox-core\n */\nfunction clientsClaim() {\n self.addEventListener('activate', () => self.clients.claim());\n}\nexport { clientsClaim };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { addRoute } from './addRoute.js';\nimport { precache } from './precache.js';\nimport './_version.js';\n/**\n * This method will add entries to the precache list and add a route to\n * respond to fetch events.\n *\n * This is a convenience method that will call\n * {@link workbox-precaching.precache} and\n * {@link workbox-precaching.addRoute} in a single call.\n *\n * @param {Array} entries Array of entries to precache.\n * @param {Object} [options] See the\n * {@link workbox-precaching.PrecacheRoute} options.\n *\n * @memberof workbox-precaching\n */\nfunction precacheAndRoute(entries, options) {\n precache(entries);\n addRoute(options);\n}\nexport { precacheAndRoute };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport './_version.js';\n/**\n * Adds items to the precache list, removing any duplicates and\n * stores the files in the\n * {@link workbox-core.cacheNames|\"precache cache\"} when the service\n * worker installs.\n *\n * This method can be called multiple times.\n *\n * Please note: This method **will not** serve any of the cached files for you.\n * It only precaches files. To respond to a network request you call\n * {@link workbox-precaching.addRoute}.\n *\n * If you have a single array of files to precache, you can just call\n * {@link workbox-precaching.precacheAndRoute}.\n *\n * @param {Array} [entries=[]] Array of entries to precache.\n *\n * @memberof workbox-precaching\n */\nfunction precache(entries) {\n const precacheController = getOrCreatePrecacheController();\n precacheController.precache(entries);\n}\nexport { precache };\n"],"names":["self","_","e","messageGenerator","fallback","code","args","msg","length","JSON","stringify","WorkboxError","Error","constructor","errorCode","details","super","this","name","normalizeHandler","handler","handle","Route","match","method","setCatchHandler","catchHandler","RegExpRoute","regExp","url","result","exec","href","origin","location","index","slice","Router","_routes","Map","_defaultHandlerMap","routes","addFetchListener","addEventListener","event","request","responsePromise","handleRequest","respondWith","addCacheListener","data","type","payload","requestPromises","Promise","all","urlsToCache","map","entry","Request","waitUntil","ports","then","postMessage","URL","protocol","startsWith","sameOrigin","params","route","findMatchingRoute","has","get","err","reject","_catchHandler","catch","async","catchErr","matchResult","Array","isArray","Object","keys","undefined","setDefaultHandler","set","registerRoute","push","unregisterRoute","routeIndex","indexOf","splice","defaultRouter","getOrCreateDefaultRouter","_cacheNameDetails","googleAnalytics","precache","prefix","runtime","suffix","registration","scope","_createCacheName","cacheName","filter","value","join","cacheNames","userCacheName","asyncFn","returnPromise","createCacheKey","urlObject","cacheKey","revision","cacheKeyURL","originalURL","searchParams","PrecacheInstallReportPlugin","updatedURLs","notUpdatedURLs","handlerWillStart","state","originalRequest","cachedResponseWillBeUsed","cachedResponse","PrecacheCacheKeyPlugin","precacheController","cacheKeyWillBeUsed","_precacheController","getCacheKeyForURL","headers","supportStatus","copyResponse","response","modifier","clonedResponse","clone","responseInit","Headers","status","statusText","modifiedResponseInit","body","testResponse","Response","error","canConstructResponseFromBodyStream","blob","stripParams","fullURL","ignoreParams","strippedURL","param","delete","Deferred","promise","resolve","quotaErrorCallbacks","Set","toRequest","input","StrategyHandler","strategy","options","_cacheKeys","assign","_strategy","_handlerDeferred","_extendLifetimePromises","_plugins","plugins","_pluginStateMap","plugin","fetch","mode","FetchEvent","preloadResponse","possiblePreloadResponse","hasCallback","cb","iterateCallbacks","thrownErrorMessage","message","pluginFilteredRequest","fetchResponse","fetchOptions","callback","runCallbacks","fetchAndCachePut","responseClone","cachePut","cacheMatch","key","matchOptions","effectiveRequest","getCacheKey","multiMatchOptions","caches","ms","setTimeout","String","replace","RegExp","responseToCache","_ensureResponseSafeToCache","cache","open","hasCacheUpdateCallback","oldResponse","strippedRequestURL","keysOptions","ignoreSearch","cacheKeys","cacheMatchIgnoreParams","put","executeQuotaErrorCallbacks","newResponse","statefulCallback","statefulParam","doneWaiting","shift","destroy","pluginsUsed","Strategy","responseDone","handleAll","_getResponse","_awaitComplete","_handle","waitUntilError","PrecacheStrategy","_fallbackToNetwork","fallbackToNetwork","copyRedirectedCacheableResponsesPlugin","_handleInstall","_handleFetch","integrityInManifest","integrity","integrityInRequest","noIntegrityConflict","_useDefaultCacheabilityPluginIfNeeded","defaultPluginIndex","cacheWillUpdatePluginCount","entries","defaultPrecacheCacheabilityPlugin","cacheWillUpdate","redirected","PrecacheController","_urlsToCacheKeys","_urlsToCacheModes","_cacheKeysToIntegrities","install","bind","activate","addToCacheList","_installAndActiveListenersAdded","urlsToWarnAbout","cacheMode","firstEntry","secondEntry","warningMessage","console","warn","installReportPlugin","credentials","currentlyCachedRequests","expectedCacheKeys","values","deletedURLs","getURLsToCacheKeys","getCachedURLs","getIntegrityForCacheKey","matchPrecache","createHandlerBoundToURL","getOrCreatePrecacheController","PrecacheRoute","urlsToCacheKeys","possibleURL","ignoreURLParametersMatching","directoryIndex","cleanURLs","urlManipulation","hash","urlWithoutIgnoredParams","paramName","some","test","removeIgnoredSearchParams","pathname","endsWith","directoryURL","cleanURL","additionalURLs","urlToAttempt","generateURLVariations","addRoute","capture","captureUrl","matchCallback","moduleName","funcName","currentPrecacheName","substringToFind","cacheNamesToDelete","includes","deleteOutdatedCaches","cachesDeleted","clients","claim"],"mappings":"6CAEA,IACIA,KAAK,uBAAyBC,GAClC,CACA,MAAOC,GAAG,CCEV,MCgBaC,EAdIC,CAACC,KAASC,KACvB,IAAIC,EAAMF,EAIV,OAHIC,EAAKE,OAAS,IACdD,GAAQ,OAAME,KAAKC,UAAUJ,MAE1BC,CAAG,ECId,MAAMI,UAAqBC,MASvBC,WAAAA,CAAYC,EAAWC,GAEnBC,MADgBb,EAAiBW,EAAWC,IAE5CE,KAAKC,KAAOJ,EACZG,KAAKF,QAAUA,CACnB,EC9BJ,IACIf,KAAK,0BAA4BC,GACrC,CACA,MAAOC,GAAG,CCWH,MCAMiB,EAAoBC,GACzBA,GAA8B,iBAAZA,EASXA,EAWA,CAAEC,OAAQD,GCjBzB,MAAME,EAYFT,WAAAA,CAAYU,EAAOH,EAASI,EFhBH,OE8BrBP,KAAKG,QAAUD,EAAiBC,GAChCH,KAAKM,MAAQA,EACbN,KAAKO,OAASA,CAClB,CAMAC,eAAAA,CAAgBL,GACZH,KAAKS,aAAeP,EAAiBC,EACzC,ECnCJ,MAAMO,UAAoBL,EActBT,WAAAA,CAAYe,EAAQR,EAASI,GAiCzBR,OAxBcO,EAAGM,UACb,MAAMC,EAASF,EAAOG,KAAKF,EAAIG,MAE/B,GAAKF,IAODD,EAAII,SAAWC,SAASD,QAA2B,IAAjBH,EAAOK,OAY7C,OAAOL,EAAOM,MAAM,EAAE,GAEbhB,EAASI,EAC1B,ECvCJ,MAAMa,EAIFxB,WAAAA,GACII,KAAKqB,EAAU,IAAIC,IACnBtB,KAAKuB,EAAqB,IAAID,GAClC,CAMA,UAAIE,GACA,OAAOxB,KAAKqB,CAChB,CAKAI,gBAAAA,GAEI1C,KAAK2C,iBAAiB,SAAWC,IAC7B,MAAMC,QAAEA,GAAYD,EACdE,EAAkB7B,KAAK8B,cAAc,CAAEF,UAASD,UAClDE,GACAF,EAAMI,YAAYF,EACtB,GAER,CAuBAG,gBAAAA,GAEIjD,KAAK2C,iBAAiB,WAAaC,IAG/B,GAAIA,EAAMM,MAA4B,eAApBN,EAAMM,KAAKC,KAAuB,CAEhD,MAAMC,QAAEA,GAAYR,EAAMM,KAIpBG,EAAkBC,QAAQC,IAAIH,EAAQI,YAAYC,KAAKC,IACpC,iBAAVA,IACPA,EAAQ,CAACA,IAEb,MAAMb,EAAU,IAAIc,WAAWD,GAC/B,OAAOzC,KAAK8B,cAAc,CAAEF,UAASD,SAAQ,KAKjDA,EAAMgB,UAAUP,GAEZT,EAAMiB,OAASjB,EAAMiB,MAAM,IACtBR,EAAgBS,MAAK,IAAMlB,EAAMiB,MAAM,GAAGE,aAAY,IAEnE,IAER,CAaAhB,aAAAA,EAAcF,QAAEA,EAAOD,MAAEA,IASrB,MAAMf,EAAM,IAAImC,IAAInB,EAAQhB,IAAKK,SAASF,MAC1C,IAAKH,EAAIoC,SAASC,WAAW,QAIzB,OAEJ,MAAMC,EAAatC,EAAII,SAAWC,SAASD,QACrCmC,OAAEA,EAAMC,MAAEA,GAAUpD,KAAKqD,kBAAkB,CAC7C1B,QACAC,UACAsB,aACAtC,QAEJ,IAAIT,EAAUiD,GAASA,EAAMjD,QAe7B,MAAMI,EAASqB,EAAQrB,OAQvB,IAPKJ,GAAWH,KAAKuB,EAAmB+B,IAAI/C,KAKxCJ,EAAUH,KAAKuB,EAAmBgC,IAAIhD,KAErCJ,EAMD,OAkBJ,IAAI0B,EACJ,IACIA,EAAkB1B,EAAQC,OAAO,CAAEQ,MAAKgB,UAASD,QAAOwB,UAC3D,CACD,MAAOK,GACH3B,EAAkBQ,QAAQoB,OAAOD,EACrC,CAEA,MAAM/C,EAAe2C,GAASA,EAAM3C,aAuCpC,OAtCIoB,aAA2BQ,UAC1BrC,KAAK0D,GAAiBjD,KACvBoB,EAAkBA,EAAgB8B,OAAMC,UAEpC,GAAInD,EAUA,IACI,aAAaA,EAAaL,OAAO,CAAEQ,MAAKgB,UAASD,QAAOwB,UAC3D,CACD,MAAOU,GACCA,aAAoBlE,QACpB6D,EAAMK,EAEd,CAEJ,GAAI7D,KAAK0D,EAUL,OAAO1D,KAAK0D,EAActD,OAAO,CAAEQ,MAAKgB,UAASD,UAErD,MAAM6B,CAAG,KAGV3B,CACX,CAgBAwB,iBAAAA,EAAkBzC,IAAEA,EAAGsC,WAAEA,EAAUtB,QAAEA,EAAOD,MAAEA,IAC1C,MAAMH,EAASxB,KAAKqB,EAAQkC,IAAI3B,EAAQrB,SAAW,GACnD,IAAK,MAAM6C,KAAS5B,EAAQ,CACxB,IAAI2B,EAGJ,MAAMW,EAAcV,EAAM9C,MAAM,CAAEM,MAAKsC,aAAYtB,UAASD,UAC5D,GAAImC,EA6BA,OAjBAX,EAASW,GACLC,MAAMC,QAAQb,IAA6B,IAAlBA,EAAO5D,QAI3BuE,EAAYlE,cAAgBqE,QACG,IAApCA,OAAOC,KAAKJ,GAAavE,QAIG,kBAAhBuE,KAPZX,OAASgB,GAcN,CAAEf,QAAOD,SAExB,CAEA,MAAO,EACX,CAeAiB,iBAAAA,CAAkBjE,EAASI,EJ1SF,OI2SrBP,KAAKuB,EAAmB8C,IAAI9D,EAAQL,EAAiBC,GACzD,CAQAK,eAAAA,CAAgBL,GACZH,KAAK0D,EAAgBxD,EAAiBC,EAC1C,CAMAmE,aAAAA,CAAclB,GAiCLpD,KAAKqB,EAAQiC,IAAIF,EAAM7C,SACxBP,KAAKqB,EAAQgD,IAAIjB,EAAM7C,OAAQ,IAInCP,KAAKqB,EAAQkC,IAAIH,EAAM7C,QAAQgE,KAAKnB,EACxC,CAMAoB,eAAAA,CAAgBpB,GACZ,IAAKpD,KAAKqB,EAAQiC,IAAIF,EAAM7C,QACxB,MAAM,IAAIb,EAAa,6CAA8C,CACjEa,OAAQ6C,EAAM7C,SAGtB,MAAMkE,EAAazE,KAAKqB,EAAQkC,IAAIH,EAAM7C,QAAQmE,QAAQtB,GAC1D,KAAIqB,GAAc,GAId,MAAM,IAAI/E,EAAa,yCAHvBM,KAAKqB,EAAQkC,IAAIH,EAAM7C,QAAQoE,OAAOF,EAAY,EAK1D,EC7XJ,IAAIG,EAQG,MAAMC,EAA2BA,KAC/BD,IACDA,EAAgB,IAAIxD,EAEpBwD,EAAcnD,mBACdmD,EAAc5C,oBAEX4C,GChBX,MAAME,EAAoB,CACtBC,gBAAiB,kBACjBC,SAAU,cACVC,OAAQ,UACRC,QAAS,UACTC,OAAgC,oBAAjBC,aAA+BA,aAAaC,MAAQ,IAEjEC,EAAoBC,GACf,CAACT,EAAkBG,OAAQM,EAAWT,EAAkBK,QAC1DK,QAAQC,GAAUA,GAASA,EAAMlG,OAAS,IAC1CmG,KAAK,KAODC,EAWSC,GACPA,GAAiBN,EAAiBR,EAAkBE,UAZtDW,EAiBQC,GACNA,GAAiBN,EAAiBR,EAAkBI,SC3BnE,SAASvC,EAAUhB,EAAOkE,GACtB,MAAMC,EAAgBD,IAEtB,OADAlE,EAAMgB,UAAUmD,GACTA,CACX,CClBA,IACI/G,KAAK,6BAA+BC,GACxC,CACA,MAAOC,GAAG,CCeH,SAAS8G,EAAetD,GAC3B,IAAKA,EACD,MAAM,IAAI/C,EAAa,oCAAqC,CAAE+C,UAIlE,GAAqB,iBAAVA,EAAoB,CAC3B,MAAMuD,EAAY,IAAIjD,IAAIN,EAAOxB,SAASF,MAC1C,MAAO,CACHkF,SAAUD,EAAUjF,KACpBH,IAAKoF,EAAUjF,KAEvB,CACA,MAAMmF,SAAEA,EAAQtF,IAAEA,GAAQ6B,EAC1B,IAAK7B,EACD,MAAM,IAAIlB,EAAa,oCAAqC,CAAE+C,UAIlE,IAAKyD,EAAU,CACX,MAAMF,EAAY,IAAIjD,IAAInC,EAAKK,SAASF,MACxC,MAAO,CACHkF,SAAUD,EAAUjF,KACpBH,IAAKoF,EAAUjF,KAEvB,CAGA,MAAMoF,EAAc,IAAIpD,IAAInC,EAAKK,SAASF,MACpCqF,EAAc,IAAIrD,IAAInC,EAAKK,SAASF,MAE1C,OADAoF,EAAYE,aAAahC,IAxCC,kBAwC0B6B,GAC7C,CACHD,SAAUE,EAAYpF,KACtBH,IAAKwF,EAAYrF,KAEzB,CCzCA,MAAMuF,EACF1G,WAAAA,GACII,KAAKuG,YAAc,GACnBvG,KAAKwG,eAAiB,GACtBxG,KAAKyG,iBAAmB7C,OAAShC,UAAS8E,YAElCA,IACAA,EAAMC,gBAAkB/E,EAC5B,EAEJ5B,KAAK4G,yBAA2BhD,OAASjC,QAAO+E,QAAOG,qBACnD,GAAmB,YAAflF,EAAMO,MACFwE,GACAA,EAAMC,iBACND,EAAMC,2BAA2BjE,QAAS,CAE1C,MAAM9B,EAAM8F,EAAMC,gBAAgB/F,IAC9BiG,EACA7G,KAAKwG,eAAejC,KAAK3D,GAGzBZ,KAAKuG,YAAYhC,KAAK3D,EAE9B,CAEJ,OAAOiG,CAAc,CAE7B,EC3BJ,MAAMC,EACFlH,WAAAA,EAAYmH,mBAAEA,IACV/G,KAAKgH,mBAAqBpD,OAAShC,UAASuB,aAGxC,MAAM8C,GAAY9C,aAAuC,EAASA,EAAO8C,WACrEjG,KAAKiH,EAAoBC,kBAAkBtF,EAAQhB,KAEvD,OAAOqF,EACD,IAAIvD,QAAQuD,EAAU,CAAEkB,QAASvF,EAAQuF,UACzCvF,CAAO,EAEjB5B,KAAKiH,EAAsBF,CAC/B,ECnBJ,IAAIK,ECqBJxD,eAAeyD,EAAaC,EAAUC,GAClC,IAAIvG,EAAS,KAEb,GAAIsG,EAAS1G,IAAK,CAEdI,EADoB,IAAI+B,IAAIuE,EAAS1G,KAChBI,MACzB,CACA,GAAIA,IAAWjC,KAAKkC,SAASD,OACzB,MAAM,IAAItB,EAAa,6BAA8B,CAAEsB,WAE3D,MAAMwG,EAAiBF,EAASG,QAE1BC,EAAe,CACjBP,QAAS,IAAIQ,QAAQH,EAAeL,SACpCS,OAAQJ,EAAeI,OACvBC,WAAYL,EAAeK,YAGzBC,EAAuBP,EAAWA,EAASG,GAAgBA,EAI3DK,EDjCV,WACI,QAAsB5D,IAAlBiD,EAA6B,CAC7B,MAAMY,EAAe,IAAIC,SAAS,IAClC,GAAI,SAAUD,EACV,IACI,IAAIC,SAASD,EAAaD,MAC1BX,GAAgB,CACnB,CACD,MAAOc,GACHd,GAAgB,CACpB,CAEJA,GAAgB,CACpB,CACA,OAAOA,CACX,CCkBiBe,GACPX,EAAeO,WACTP,EAAeY,OAC3B,OAAO,IAAIH,SAASF,EAAMD,EAC9B,CChDA,SAASO,EAAYC,EAASC,GAC1B,MAAMC,EAAc,IAAIzF,IAAIuF,GAC5B,IAAK,MAAMG,KAASF,EAChBC,EAAYnC,aAAaqC,OAAOD,GAEpC,OAAOD,EAAYzH,IACvB,CCGA,MAAM4H,EAIF/I,WAAAA,GACII,KAAK4I,QAAU,IAAIvG,SAAQ,CAACwG,EAASpF,KACjCzD,KAAK6I,QAAUA,EACf7I,KAAKyD,OAASA,CAAM,GAE5B,ECdJ,MAAMqF,EAAsB,IAAIC,ICThC,IACIhK,KAAK,6BAA+BC,GACxC,CACA,MAAOC,GAAG,CCWV,SAAS+J,EAAUC,GACf,MAAwB,iBAAVA,EAAqB,IAAIvG,QAAQuG,GAASA,CAC5D,CAUA,MAAMC,EAiBFtJ,WAAAA,CAAYuJ,EAAUC,GAClBpJ,KAAKqJ,EAAa,GA8ClBpF,OAAOqF,OAAOtJ,KAAMoJ,GACpBpJ,KAAK2B,MAAQyH,EAAQzH,MACrB3B,KAAKuJ,EAAYJ,EACjBnJ,KAAKwJ,EAAmB,IAAIb,EAC5B3I,KAAKyJ,EAA0B,GAG/BzJ,KAAK0J,EAAW,IAAIP,EAASQ,SAC7B3J,KAAK4J,EAAkB,IAAItI,IAC3B,IAAK,MAAMuI,KAAU7J,KAAK0J,EACtB1J,KAAK4J,EAAgBvF,IAAIwF,EAAQ,CAAE,GAEvC7J,KAAK2B,MAAMgB,UAAU3C,KAAKwJ,EAAiBZ,QAC/C,CAcA,WAAMkB,CAAMb,GACR,MAAMtH,MAAEA,GAAU3B,KAClB,IAAI4B,EAAUoH,EAAUC,GACxB,GAAqB,aAAjBrH,EAAQmI,MACRpI,aAAiBqI,YACjBrI,EAAMsI,gBAAiB,CACvB,MAAMC,QAAiCvI,EAAMsI,gBAC7C,GAAIC,EAKA,OAAOA,CAEf,CAIA,MAAMvD,EAAkB3G,KAAKmK,YAAY,gBACnCvI,EAAQ6F,QACR,KACN,IACI,IAAK,MAAM2C,KAAMpK,KAAKqK,iBAAiB,oBACnCzI,QAAgBwI,EAAG,CAAExI,QAASA,EAAQ6F,QAAS9F,SAEtD,CACD,MAAO6B,GACH,GAAIA,aAAe7D,MACf,MAAM,IAAID,EAAa,kCAAmC,CACtD4K,mBAAoB9G,EAAI+G,SAGpC,CAIA,MAAMC,EAAwB5I,EAAQ6F,QACtC,IACI,IAAIgD,EAEJA,QAAsBX,MAAMlI,EAA0B,aAAjBA,EAAQmI,UAAsB5F,EAAYnE,KAAKuJ,EAAUmB,cAM9F,IAAK,MAAMC,KAAY3K,KAAKqK,iBAAiB,mBACzCI,QAAsBE,EAAS,CAC3BhJ,QACAC,QAAS4I,EACTlD,SAAUmD,IAGlB,OAAOA,CACV,CACD,MAAOvC,GAeH,MARIvB,SACM3G,KAAK4K,aAAa,eAAgB,CACpC1C,MAAOA,EACPvG,QACAgF,gBAAiBA,EAAgBc,QACjC7F,QAAS4I,EAAsB/C,UAGjCS,CACV,CACJ,CAWA,sBAAM2C,CAAiB5B,GACnB,MAAM3B,QAAiBtH,KAAK8J,MAAMb,GAC5B6B,EAAgBxD,EAASG,QAE/B,OADKzH,KAAK2C,UAAU3C,KAAK+K,SAAS9B,EAAO6B,IAClCxD,CACX,CAaA,gBAAM0D,CAAWC,GACb,MAAMrJ,EAAUoH,EAAUiC,GAC1B,IAAIpE,EACJ,MAAMtB,UAAEA,EAAS2F,aAAEA,GAAiBlL,KAAKuJ,EACnC4B,QAAyBnL,KAAKoL,YAAYxJ,EAAS,QACnDyJ,EAAoBpH,OAAOqF,OAAOrF,OAAOqF,OAAO,CAAA,EAAI4B,GAAe,CAAE3F,cAC3EsB,QAAuByE,OAAOhL,MAAM6K,EAAkBE,GAStD,IAAK,MAAMV,KAAY3K,KAAKqK,iBAAiB,4BACzCxD,QACW8D,EAAS,CACZpF,YACA2F,eACArE,iBACAjF,QAASuJ,EACTxJ,MAAO3B,KAAK2B,cACTwC,EAEf,OAAO0C,CACX,CAgBA,cAAMkE,CAASE,EAAK3D,GAChB,MAAM1F,EAAUoH,EAAUiC,GCxP3B,IAAiBM,UD2PF,EC1PX,IAAIlJ,SAASwG,GAAY2C,WAAW3C,EAAS0C,MD2PhD,MAAMJ,QAAyBnL,KAAKoL,YAAYxJ,EAAS,SAiBzD,IAAK0F,EAKD,MAAM,IAAI5H,EAAa,6BAA8B,CACjDkB,KE1RQA,EF0RYuK,EAAiBvK,IEzRlC,IAAImC,IAAI0I,OAAO7K,GAAMK,SAASF,MAG/BA,KAAK2K,QAAQ,IAAIC,OAAQ,IAAG1K,SAASD,UAAW,OAJ1CJ,MF6RhB,MAAMgL,QAAwB5L,KAAK6L,EAA2BvE,GAC9D,IAAKsE,EAKD,OAAO,EAEX,MAAMrG,UAAEA,EAAS2F,aAAEA,GAAiBlL,KAAKuJ,EACnCuC,QAAc/M,KAAKuM,OAAOS,KAAKxG,GAC/ByG,EAAyBhM,KAAKmK,YAAY,kBAC1C8B,EAAcD,QJtR5BpI,eAAsCkI,EAAOlK,EAAS2G,EAAc2C,GAChE,MAAMgB,EAAqB7D,EAAYzG,EAAQhB,IAAK2H,GAEpD,GAAI3G,EAAQhB,MAAQsL,EAChB,OAAOJ,EAAMxL,MAAMsB,EAASsJ,GAGhC,MAAMiB,EAAclI,OAAOqF,OAAOrF,OAAOqF,OAAO,CAAA,EAAI4B,GAAe,CAAEkB,cAAc,IAC7EC,QAAkBP,EAAM5H,KAAKtC,EAASuK,GAC5C,IAAK,MAAMlG,KAAYoG,EAEnB,GAAIH,IADwB7D,EAAYpC,EAASrF,IAAK2H,GAElD,OAAOuD,EAAMxL,MAAM2F,EAAUiF,EAIzC,CIuQoBoB,CAIRR,EAAOX,EAAiB1D,QAAS,CAAC,mBAAoByD,GACpD,KAKN,UACUY,EAAMS,IAAIpB,EAAkBa,EAAyBJ,EAAgBnE,QAAUmE,EACxF,CACD,MAAO1D,GACH,GAAIA,aAAiBvI,MAKjB,KAHmB,uBAAfuI,EAAMjI,YGhT1B2D,iBAKI,IAAK,MAAM+G,KAAY7B,QACb6B,GAQd,CHmS0B6B,GAEJtE,CAEd,CACA,IAAK,MAAMyC,KAAY3K,KAAKqK,iBAAiB,wBACnCM,EAAS,CACXpF,YACA0G,cACAQ,YAAab,EAAgBnE,QAC7B7F,QAASuJ,EACTxJ,MAAO3B,KAAK2B,QAGpB,OAAO,CACX,CAYA,iBAAMyJ,CAAYxJ,EAASmI,GACvB,MAAMkB,EAAO,GAAErJ,EAAQhB,SAASmJ,IAChC,IAAK/J,KAAKqJ,EAAW4B,GAAM,CACvB,IAAIE,EAAmBvJ,EACvB,IAAK,MAAM+I,KAAY3K,KAAKqK,iBAAiB,sBACzCc,EAAmBnC,QAAgB2B,EAAS,CACxCZ,OACAnI,QAASuJ,EACTxJ,MAAO3B,KAAK2B,MAEZwB,OAAQnD,KAAKmD,UAGrBnD,KAAKqJ,EAAW4B,GAAOE,CAC3B,CACA,OAAOnL,KAAKqJ,EAAW4B,EAC3B,CAQAd,WAAAA,CAAYlK,GACR,IAAK,MAAM4J,KAAU7J,KAAKuJ,EAAUI,QAChC,GAAI1J,KAAQ4J,EACR,OAAO,EAGf,OAAO,CACX,CAiBA,kBAAMe,CAAa3K,EAAMwI,GACrB,IAAK,MAAMkC,KAAY3K,KAAKqK,iBAAiBpK,SAGnC0K,EAASlC,EAEvB,CAUA,iBAAC4B,CAAiBpK,GACd,IAAK,MAAM4J,KAAU7J,KAAKuJ,EAAUI,QAChC,GAA4B,mBAAjBE,EAAO5J,GAAsB,CACpC,MAAMyG,EAAQ1G,KAAK4J,EAAgBrG,IAAIsG,GACjC6C,EAAoBjE,IACtB,MAAMkE,EAAgB1I,OAAOqF,OAAOrF,OAAOqF,OAAO,CAAA,EAAIb,GAAQ,CAAE/B,UAGhE,OAAOmD,EAAO5J,GAAM0M,EAAc,QAEhCD,CACV,CAER,CAcA/J,SAAAA,CAAUiG,GAEN,OADA5I,KAAKyJ,EAAwBlF,KAAKqE,GAC3BA,CACX,CAWA,iBAAMgE,GACF,IAAIhE,EACJ,KAAQA,EAAU5I,KAAKyJ,EAAwBoD,eACrCjE,CAEd,CAKAkE,OAAAA,GACI9M,KAAKwJ,EAAiBX,QAAQ,KAClC,CAWA,OAAMgD,CAA2BvE,GAC7B,IAAIsE,EAAkBtE,EAClByF,GAAc,EAClB,IAAK,MAAMpC,KAAY3K,KAAKqK,iBAAiB,mBAQzC,GAPAuB,QACWjB,EAAS,CACZ/I,QAAS5B,KAAK4B,QACd0F,SAAUsE,EACVjK,MAAO3B,KAAK2B,cACTwC,EACX4I,GAAc,GACTnB,EACD,MAwBR,OArBKmB,GACGnB,GAA8C,MAA3BA,EAAgBhE,SACnCgE,OAAkBzH,GAmBnByH,CACX,EIhfJ,MAAMoB,EAuBFpN,WAAAA,CAAYwJ,EAAU,IAQlBpJ,KAAKuF,UAAYI,EAA0ByD,EAAQ7D,WAQnDvF,KAAK2J,QAAUP,EAAQO,SAAW,GAQlC3J,KAAK0K,aAAetB,EAAQsB,aAQ5B1K,KAAKkL,aAAe9B,EAAQ8B,YAChC,CAoBA9K,MAAAA,CAAOgJ,GACH,MAAO6D,GAAgBjN,KAAKkN,UAAU9D,GACtC,OAAO6D,CACX,CAuBAC,SAAAA,CAAU9D,GAEFA,aAAmBY,aACnBZ,EAAU,CACNzH,MAAOyH,EACPxH,QAASwH,EAAQxH,UAGzB,MAAMD,EAAQyH,EAAQzH,MAChBC,EAAqC,iBAApBwH,EAAQxH,QACzB,IAAIc,QAAQ0G,EAAQxH,SACpBwH,EAAQxH,QACRuB,EAAS,WAAYiG,EAAUA,EAAQjG,YAASgB,EAChDhE,EAAU,IAAI+I,EAAgBlJ,KAAM,CAAE2B,QAAOC,UAASuB,WACtD8J,EAAejN,KAAKmN,EAAahN,EAASyB,EAASD,GAGzD,MAAO,CAACsL,EAFYjN,KAAKoN,EAAeH,EAAc9M,EAASyB,EAASD,GAG5E,CACA,OAAMwL,CAAahN,EAASyB,EAASD,GAEjC,IAAI2F,QADEnH,EAAQyK,aAAa,mBAAoB,CAAEjJ,QAAOC,YAExD,IAKI,GAJA0F,QAAiBtH,KAAKqN,EAAQzL,EAASzB,IAIlCmH,GAA8B,UAAlBA,EAASpF,KACtB,MAAM,IAAIxC,EAAa,cAAe,CAAEkB,IAAKgB,EAAQhB,KAE5D,CACD,MAAOsH,GACH,GAAIA,aAAiBvI,MACjB,IAAK,MAAMgL,KAAYxK,EAAQkK,iBAAiB,mBAE5C,GADA/C,QAAiBqD,EAAS,CAAEzC,QAAOvG,QAAOC,YACtC0F,EACA,MAIZ,IAAKA,EACD,MAAMY,CAOd,CACA,IAAK,MAAMyC,KAAYxK,EAAQkK,iBAAiB,sBAC5C/C,QAAiBqD,EAAS,CAAEhJ,QAAOC,UAAS0F,aAEhD,OAAOA,CACX,CACA,OAAM8F,CAAeH,EAAc9M,EAASyB,EAASD,GACjD,IAAI2F,EACAY,EACJ,IACIZ,QAAiB2F,CACpB,CACD,MAAO/E,GAGH,CAEJ,UACU/H,EAAQyK,aAAa,oBAAqB,CAC5CjJ,QACAC,UACA0F,mBAEEnH,EAAQyM,aACjB,CACD,MAAOU,GACCA,aAA0B3N,QAC1BuI,EAAQoF,EAEhB,CAQA,SAPMnN,EAAQyK,aAAa,qBAAsB,CAC7CjJ,QACAC,UACA0F,WACAY,MAAOA,IAEX/H,EAAQ2M,UACJ5E,EACA,MAAMA,CAEd,ECtLJ,MAAMqF,UAAyBP,EAkB3BpN,WAAAA,CAAYwJ,EAAU,IAClBA,EAAQ7D,UAAYI,EAA2ByD,EAAQ7D,WACvDxF,MAAMqJ,GACNpJ,KAAKwN,GAC6B,IAA9BpE,EAAQqE,kBAKZzN,KAAK2J,QAAQpF,KAAKgJ,EAAiBG,uCACvC,CAQA,OAAML,CAAQzL,EAASzB,GACnB,MAAMmH,QAAiBnH,EAAQ6K,WAAWpJ,GAC1C,OAAI0F,IAKAnH,EAAQwB,OAAgC,YAAvBxB,EAAQwB,MAAMO,WAClBlC,KAAK2N,EAAe/L,EAASzB,SAIjCH,KAAK4N,EAAahM,EAASzB,GAC5C,CACA,OAAMyN,CAAahM,EAASzB,GACxB,IAAImH,EACJ,MAAMnE,EAAUhD,EAAQgD,QAAU,GAElC,IAAInD,KAAKwN,EAuCL,MAAM,IAAI9N,EAAa,yBAA0B,CAC7C6F,UAAWvF,KAAKuF,UAChB3E,IAAKgB,EAAQhB,MAzCQ,CAMzB,MAAMiN,EAAsB1K,EAAO2K,UAC7BC,EAAqBnM,EAAQkM,UAC7BE,GAAuBD,GAAsBA,IAAuBF,EAG1EvG,QAAiBnH,EAAQ2J,MAAM,IAAIpH,QAAQd,EAAS,CAChDkM,UAA4B,YAAjBlM,EAAQmI,KACbgE,GAAsBF,OACtB1J,KASN0J,GACAG,GACiB,YAAjBpM,EAAQmI,OACR/J,KAAKiO,UACmB9N,EAAQ4K,SAASnJ,EAAS0F,EAASG,SAQnE,CAuBA,OAAOH,CACX,CACA,OAAMqG,CAAe/L,EAASzB,GAC1BH,KAAKiO,IACL,MAAM3G,QAAiBnH,EAAQ2J,MAAMlI,GAIrC,UADwBzB,EAAQ4K,SAASnJ,EAAS0F,EAASG,SAIvD,MAAM,IAAI/H,EAAa,0BAA2B,CAC9CkB,IAAKgB,EAAQhB,IACbgH,OAAQN,EAASM,SAGzB,OAAON,CACX,CA4BA2G,CAAAA,GACI,IAAIC,EAAqB,KACrBC,EAA6B,EACjC,IAAK,MAAOjN,EAAO2I,KAAW7J,KAAK2J,QAAQyE,UAEnCvE,IAAW0D,EAAiBG,yCAI5B7D,IAAW0D,EAAiBc,oCAC5BH,EAAqBhN,GAErB2I,EAAOyE,iBACPH,KAG2B,IAA/BA,EACAnO,KAAK2J,QAAQpF,KAAKgJ,EAAiBc,mCAE9BF,EAA6B,GAA4B,OAAvBD,GAEvClO,KAAK2J,QAAQhF,OAAOuJ,EAAoB,EAGhD,EAEJX,EAAiBc,kCAAoC,CACjDzK,gBAAqB0K,OAAChH,SAAEA,MACfA,GAAYA,EAASM,QAAU,IACzB,KAEJN,GAGfiG,EAAiBG,uCAAyC,CACtD9J,gBAAqB0K,OAAChH,SAAEA,KACbA,EAASiH,iBAAmBlH,EAAaC,GAAYA,GCnMpE,MAAMkH,EAWF5O,WAAAA,EAAY2F,UAAEA,EAASoE,QAAEA,EAAU,GAAE8D,kBAAEA,GAAoB,GAAU,IACjEzN,KAAKyO,EAAmB,IAAInN,IAC5BtB,KAAK0O,EAAoB,IAAIpN,IAC7BtB,KAAK2O,EAA0B,IAAIrN,IACnCtB,KAAKuJ,EAAY,IAAIgE,EAAiB,CAClChI,UAAWI,EAA2BJ,GACtCoE,QAAS,IACFA,EACH,IAAI7C,EAAuB,CAAEC,mBAAoB/G,QAErDyN,sBAGJzN,KAAK4O,QAAU5O,KAAK4O,QAAQC,KAAK7O,MACjCA,KAAK8O,SAAW9O,KAAK8O,SAASD,KAAK7O,KACvC,CAKA,YAAImJ,GACA,OAAOnJ,KAAKuJ,CAChB,CAWAvE,QAAAA,CAASoJ,GACLpO,KAAK+O,eAAeX,GACfpO,KAAKgP,IACNjQ,KAAK2C,iBAAiB,UAAW1B,KAAK4O,SACtC7P,KAAK2C,iBAAiB,WAAY1B,KAAK8O,UACvC9O,KAAKgP,GAAkC,EAE/C,CAQAD,cAAAA,CAAeX,GASX,MAAMa,EAAkB,GACxB,IAAK,MAAMxM,KAAS2L,EAAS,CAEJ,iBAAV3L,EACPwM,EAAgB1K,KAAK9B,GAEhBA,QAA4B0B,IAAnB1B,EAAMyD,UACpB+I,EAAgB1K,KAAK9B,EAAM7B,KAE/B,MAAMqF,SAAEA,EAAQrF,IAAEA,GAAQmF,EAAetD,GACnCyM,EAA6B,iBAAVzM,GAAsBA,EAAMyD,SAAW,SAAW,UAC3E,GAAIlG,KAAKyO,EAAiBnL,IAAI1C,IAC1BZ,KAAKyO,EAAiBlL,IAAI3C,KAASqF,EACnC,MAAM,IAAIvG,EAAa,wCAAyC,CAC5DyP,WAAYnP,KAAKyO,EAAiBlL,IAAI3C,GACtCwO,YAAanJ,IAGrB,GAAqB,iBAAVxD,GAAsBA,EAAMqL,UAAW,CAC9C,GAAI9N,KAAK2O,EAAwBrL,IAAI2C,IACjCjG,KAAK2O,EAAwBpL,IAAI0C,KAAcxD,EAAMqL,UACrD,MAAM,IAAIpO,EAAa,4CAA6C,CAChEkB,QAGRZ,KAAK2O,EAAwBtK,IAAI4B,EAAUxD,EAAMqL,UACrD,CAGA,GAFA9N,KAAKyO,EAAiBpK,IAAIzD,EAAKqF,GAC/BjG,KAAK0O,EAAkBrK,IAAIzD,EAAKsO,GAC5BD,EAAgB1P,OAAS,EAAG,CAC5B,MAAM8P,EACD,qDAAQJ,EAAgBvJ,KAAK,8EAK9B4J,QAAQC,KAAKF,EAKrB,CACJ,CACJ,CAWAT,OAAAA,CAAQjN,GAGJ,OAAOgB,EAAUhB,GAAOiC,UACpB,MAAM4L,EAAsB,IAAIlJ,EAChCtG,KAAKmJ,SAASQ,QAAQpF,KAAKiL,GAG3B,IAAK,MAAO5O,EAAKqF,KAAajG,KAAKyO,EAAkB,CACjD,MAAMX,EAAY9N,KAAK2O,EAAwBpL,IAAI0C,GAC7CiJ,EAAYlP,KAAK0O,EAAkBnL,IAAI3C,GACvCgB,EAAU,IAAIc,QAAQ9B,EAAK,CAC7BkN,YACAhC,MAAOoD,EACPO,YAAa,sBAEXpN,QAAQC,IAAItC,KAAKmJ,SAAS+D,UAAU,CACtC/J,OAAQ,CAAE8C,YACVrE,UACAD,UAER,CACA,MAAM4E,YAAEA,EAAWC,eAAEA,GAAmBgJ,EAIxC,MAAO,CAAEjJ,cAAaC,iBAAgB,GAE9C,CAWAsI,QAAAA,CAASnN,GAGL,OAAOgB,EAAUhB,GAAOiC,UACpB,MAAMkI,QAAc/M,KAAKuM,OAAOS,KAAK/L,KAAKmJ,SAAS5D,WAC7CmK,QAAgC5D,EAAM5H,OACtCyL,EAAoB,IAAI5G,IAAI/I,KAAKyO,EAAiBmB,UAClDC,EAAc,GACpB,IAAK,MAAMjO,KAAW8N,EACbC,EAAkBrM,IAAI1B,EAAQhB,aACzBkL,EAAMpD,OAAO9G,GACnBiO,EAAYtL,KAAK3C,EAAQhB,MAMjC,MAAO,CAAEiP,cAAa,GAE9B,CAOAC,kBAAAA,GACI,OAAO9P,KAAKyO,CAChB,CAOAsB,aAAAA,GACI,MAAO,IAAI/P,KAAKyO,EAAiBvK,OACrC,CAUAgD,iBAAAA,CAAkBtG,GACd,MAAMoF,EAAY,IAAIjD,IAAInC,EAAKK,SAASF,MACxC,OAAOf,KAAKyO,EAAiBlL,IAAIyC,EAAUjF,KAC/C,CAMAiP,uBAAAA,CAAwB/J,GACpB,OAAOjG,KAAK2O,EAAwBpL,IAAI0C,EAC5C,CAmBA,mBAAMgK,CAAcrO,GAChB,MAAMhB,EAAMgB,aAAmBc,QAAUd,EAAQhB,IAAMgB,EACjDqE,EAAWjG,KAAKkH,kBAAkBtG,GACxC,GAAIqF,EAAU,CAEV,aADoBlH,KAAKuM,OAAOS,KAAK/L,KAAKmJ,SAAS5D,YACtCjF,MAAM2F,EACvB,CAEJ,CASAiK,uBAAAA,CAAwBtP,GACpB,MAAMqF,EAAWjG,KAAKkH,kBAAkBtG,GACxC,IAAKqF,EACD,MAAM,IAAIvG,EAAa,oBAAqB,CAAEkB,QAElD,OAAQwI,IACJA,EAAQxH,QAAU,IAAIc,QAAQ9B,GAC9BwI,EAAQjG,OAASc,OAAOqF,OAAO,CAAErD,YAAYmD,EAAQjG,QAC9CnD,KAAKmJ,SAAS/I,OAAOgJ,GAEpC,ECxRJ,IAAIrC,EAKG,MAAMoJ,EAAgCA,KACpCpJ,IACDA,EAAqB,IAAIyH,GAEtBzH,GCGX,MAAMqJ,UAAsB/P,EAiBxBT,WAAAA,CAAYmH,EAAoBqC,GAe5BrJ,OAdcO,EAAGsB,cACb,MAAMyO,EAAkBtJ,EAAmB+I,qBAC3C,IAAK,MAAMQ,KCtBhB,UAAgC1P,GAAK2P,4BAAEA,EAA8B,CAAC,QAAS,YAAWC,eAAEA,EAAiB,aAAYC,UAAEA,GAAY,EAAIC,gBAAEA,GAAqB,IACrK,MAAM1K,EAAY,IAAIjD,IAAInC,EAAKK,SAASF,MACxCiF,EAAU2K,KAAO,SACX3K,EAAUjF,KAChB,MAAM6P,ECHH,SAAmC5K,EAAWuK,EAA8B,IAG/E,IAAK,MAAMM,IAAa,IAAI7K,EAAUK,aAAanC,QAC3CqM,EAA4BO,MAAMnQ,GAAWA,EAAOoQ,KAAKF,MACzD7K,EAAUK,aAAaqC,OAAOmI,GAGtC,OAAO7K,CACX,CDNoCgL,CAA0BhL,EAAWuK,GAErE,SADMK,EAAwB7P,KAC1ByP,GAAkBI,EAAwBK,SAASC,SAAS,KAAM,CAClE,MAAMC,EAAe,IAAIpO,IAAI6N,EAAwB7P,MACrDoQ,EAAaF,UAAYT,QACnBW,EAAapQ,IACvB,CACA,GAAI0P,EAAW,CACX,MAAMW,EAAW,IAAIrO,IAAI6N,EAAwB7P,MACjDqQ,EAASH,UAAY,cACfG,EAASrQ,IACnB,CACA,GAAI2P,EAAiB,CACjB,MAAMW,EAAiBX,EAAgB,CAAE9P,IAAKoF,IAC9C,IAAK,MAAMsL,KAAgBD,QACjBC,EAAavQ,IAE3B,CACJ,CDAsCwQ,CAAsB3P,EAAQhB,IAAKwI,GAAU,CACnE,MAAMnD,EAAWoK,EAAgB9M,IAAI+M,GACrC,GAAIrK,EAAU,CAEV,MAAO,CAAEA,WAAU6H,UADD/G,EAAmBiJ,wBAAwB/J,GAEjE,CACJ,CAIA,GAESc,EAAmBoC,SACpC,EG7BJ,SAASqI,EAASpI,GACd,MAAMrC,EAAqBoJ,KCK/B,SAAuBsB,EAAStR,EAASI,GACrC,IAAI6C,EACJ,GAAuB,iBAAZqO,EAAsB,CAC7B,MAAMC,EAAa,IAAI3O,IAAI0O,EAASxQ,SAASF,MAkC7CqC,EAAQ,IAAI/C,GAZUsR,EAAG/Q,SASdA,EAAIG,OAAS2Q,EAAW3Q,MAGFZ,EAASI,EAC9C,MACK,GAAIkR,aAAmB9F,OAExBvI,EAAQ,IAAI1C,EAAY+Q,EAAStR,EAASI,QAEzC,GAAuB,mBAAZkR,EAEZrO,EAAQ,IAAI/C,EAAMoR,EAAStR,EAASI,OAEnC,MAAIkR,aAAmBpR,GAIxB,MAAM,IAAIX,EAAa,yBAA0B,CAC7CkS,WAAY,kBACZC,SAAU,gBACVhB,UAAW,YANfzN,EAAQqO,CAQZ,CACsB5M,IACRP,cAAclB,EAEhC,CD/DIkB,CADsB,IAAI8L,EAAcrJ,EAAoBqC,GAEhE,yBEZA,WAEIrK,KAAK2C,iBAAiB,YAAcC,IAChC,MAAM4D,EAAYI,IAClBhE,EAAMgB,UCMeiB,OAAOkO,EAAqBC,EAnB/B,gBAoBtB,MACMC,SADmBjT,KAAKuM,OAAOpH,QACCsB,QAAQD,GAClCA,EAAU0M,SAASF,IACvBxM,EAAU0M,SAASlT,KAAKqG,aAAaC,QACrCE,IAAcuM,IAGtB,aADMzP,QAAQC,IAAI0P,EAAmBxP,KAAK+C,GAAcxG,KAAKuM,OAAO5C,OAAOnD,MACpEyM,CAAkB,EDdLE,CAAqB3M,GAAW1C,MAAMsP,QAOnD,GAEX,iBEhBA,WACIpT,KAAK2C,iBAAiB,YAAY,IAAM3C,KAAKqT,QAAQC,SACzD,qBCQA,SAA0BjE,EAAShF,ICInC,SAAkBgF,GACa+B,IACRnL,SAASoJ,EAChC,CDNIpJ,CAASoJ,GACToD,EAASpI,EACb"} \ No newline at end of file