You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@inlong.apache.org by go...@apache.org on 2021/12/02 06:28:55 UTC

[incubator-inlong-website] branch master updated: [INLONG-1873] refactor the structure of the document (#208)

This is an automated email from the ASF dual-hosted git repository.

gosonzhang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-inlong-website.git


The following commit(s) were added to refs/heads/master by this push:
     new b9482cc  [INLONG-1873] refactor the structure of the document (#208)
b9482cc is described below

commit b9482cc04ec25478c7a95e304a53b4a5bebd01c7
Author: dockerzhang <do...@apache.org>
AuthorDate: Thu Dec 2 14:28:52 2021 +0800

    [INLONG-1873] refactor the structure of the document (#208)
    
    Co-authored-by: dockerzhang <do...@tencent.com>
---
 docs/administration/_category_.json                |     4 +
 docs/administration/approval_management.md         |    28 +
 docs/administration/user_management.md             |    43 +
 docs/contact.md                                    |     2 +-
 docs/deployment/_category_.json                    |     4 +
 docs/deployment/bare_metal.md                      |    36 +
 docs/deployment/docker.md                          |    27 +
 docs/deployment/k8s.md                             |    34 +
 docs/deployment/standalone.md                      |     7 +
 docs/design_and_concept/_category_.json            |     4 +
 docs/design_and_concept/basic_concept.md           |     7 +
 docs/introduction.md                               |    51 +
 docs/modules/_category_.json                       |     2 +-
 docs/modules/agent/_category_.json                 |     2 +-
 .../modules/agent/{architecture.md => overview.md} |     2 +-
 docs/modules/agent/quick_start.md                  |     2 +-
 docs/modules/dataproxy/_category_.json             |     2 +-
 .../dataproxy/{architecture.md => overview.md}     |     2 +-
 docs/modules/dataproxy/quick_start.md              |     2 +-
 docs/modules/manager/_category_.json               |     2 +-
 .../manager/{architecture.md => overview.md}       |     2 +-
 docs/modules/manager/quick_start.md                |     2 +-
 docs/modules/sort/_category_.json                  |     2 +-
 docs/modules/sort/{introduction.md => overview.md} |     3 +-
 docs/modules/sort/protocol_introduction.md         |     1 +
 docs/modules/sort/quick_start.md                   |     3 +-
 docs/modules/tubemq/_category_.json                |     2 +-
 .../tubemq/client_partition_assign_introduction.md |     2 +-
 docs/modules/tubemq/configure_introduction.md      |     2 +-
 docs/modules/tubemq/consumer_example.md            |   130 +-
 docs/modules/tubemq/deployment.md                  |   156 -
 .../tubemq/{architecture.md => overview.md}        |     3 +-
 docs/modules/tubemq/producer_example.md            |   263 +-
 docs/modules/tubemq/quick_start.md                 |     1 +
 docs/modules/tubemq/tubemq-manager/_category_.json |     4 +
 .../tubemq-manager/{quick_start.md => overview.md} |    46 +-
 docs/modules/tubemq/tubemq-manager/quick_start.md  |    91 +-
 docs/modules/website/_category_.json               |     2 +-
 docs/modules/website/quick_start.md                |     2 +-
 docs/quick_start/_category_.json                   |     4 +
 .../example.md => quick_start/hive_example.md}     |     2 +-
 docs/quick_start/how_to_build.md                   |    37 +
 docs/sdk/_category_.json                           |     4 +
 .../{modules => sdk}/dataproxy-sdk/_category_.json |     0
 .../dataproxy-sdk/overview.md}                     |     2 +-
 .../quick_start.md => sdk/dataproxy-sdk/usage.md}  |     4 +-
 docs/user_guide/_category_.json                    |     2 +-
 docs/user_guide/quick_start.md                     |    76 -
 docs/user_guide/user_manual.md                     |    75 +-
 docusaurus.config.js                               |     6 +-
 .../docusaurus-plugin-content-docs/current.json    |    30 +-
 .../current/administration/approval_management.md  |    24 +
 .../current/administration/user_management.md      |    41 +
 .../current}/contact.md                            |    10 +-
 .../current/deployment/_category_.json             |     4 +
 .../current/deployment/bare_metal.md               |    37 +
 .../current/deployment/docker.md                   |    27 +
 .../current/deployment/k8s.md                      |    34 +
 .../current/deployment/standalone.md               |     7 +
 .../current/design_and_concept/basic_concept.md    |     6 +
 .../current/introduction.md                        |    45 +
 .../modules/agent/{architecture.md => overview.md} |     2 +-
 .../current/modules/agent/quick_start.md           |     2 +-
 .../dataproxy/{architecture.md => overview.md}     |     2 +-
 .../current/modules/dataproxy/quick_start.md       |     2 +-
 .../manager/{architecture.md => overview.md}       |     2 +-
 .../current/modules/manager/quick_start.md         |     6 +-
 .../modules/sort/{introduction.md => overview.md}  |     3 +-
 .../current/modules/sort/protocol_introduction.md  |     1 +
 .../current/modules/sort/quick_start.md            |     3 +-
 .../tubemq/client_partition_assign_introduction.md |     2 +-
 .../current/modules/tubemq/clients_java.md         |     2 +-
 .../modules/tubemq/configure_introduction.md       |     2 +-
 .../current/modules/tubemq/consumer_example.md     |   124 +-
 .../current/modules/tubemq/deployment.md           |   156 -
 .../tubemq/{architecture.md => overview.md}        |     3 +-
 .../current/modules/tubemq/producer_example.md     |   265 +-
 .../current/modules/tubemq/quick_start.md          |     1 +
 .../modules/tubemq/tubemq-manager/_category_.json  |     4 +
 .../tubemq-manager/{quick_start.md => overview.md} |    46 +-
 .../modules/tubemq/tubemq-manager/quick_start.md   |    90 +-
 .../modules/tubemq/tubemq_perf_test_vs_Kafka_cn.md |     2 +-
 .../website/{quick_start.md => overview.md}        |     2 +-
 .../example.md => quick_start/hive_example.md}     |     2 +-
 .../current/quick_start/how_to_build.md            |    37 +
 .../current/sdk/_category_.json                    |     4 +
 .../current/sdk}/dataproxy-sdk/_category_.json     |     0
 .../dataproxy-sdk/overview.md}                     |    22 +-
 .../quick_start.md => sdk/dataproxy-sdk/usage.md}  |     6 +-
 .../current/user_guide/quick_start.md              |    76 -
 .../current/user_guide/user_manual.md              |    69 +-
 package-lock.json                                  | 19610 +++++++++++++++++++
 92 files changed, 20676 insertions(+), 1329 deletions(-)

diff --git a/docs/administration/_category_.json b/docs/administration/_category_.json
new file mode 100644
index 0000000..2aaed72
--- /dev/null
+++ b/docs/administration/_category_.json
@@ -0,0 +1,4 @@
+{
+  "label": "Administration",
+  "position": 8
+}
\ No newline at end of file
diff --git a/docs/administration/approval_management.md b/docs/administration/approval_management.md
new file mode 100644
index 0000000..2eb80ec
--- /dev/null
+++ b/docs/administration/approval_management.md
@@ -0,0 +1,28 @@
+---
+title: Approval Management
+sidebar_position: 2
+---
+
+As a data access officer and system member with approval authority, have the responsibility for data access or
+consumption approval.
+
+![](/cookbooks_img//image-1624432496461.png)
+
+#### Data Access Approval
+
+New data access approval: currently it is a first-level approval, which is approved by the system administrator.
+
+The system administrator will review whether the access process meets the access requirements based on the data access
+business information.
+
+![](/cookbooks_img//image-1624432515850.png)
+
+#### New data consumption approval
+
+New data consume approval: currently it is a first-level approval, which is approved by the person in charge of the
+business.
+
+Business approval: The person in charge of the data access business judges whether the consumption meets the business
+requirements according to the access information:
+
+![](/cookbooks_img//image-1624432535541.png)
\ No newline at end of file
diff --git a/docs/administration/user_management.md b/docs/administration/user_management.md
new file mode 100644
index 0000000..450b47f
--- /dev/null
+++ b/docs/administration/user_management.md
@@ -0,0 +1,43 @@
+---
+title: User Management
+sidebar_position: 1
+---
+
+Only users with the role of system administrator can use this function. They can create, modify, and delete users:
+
+### New user
+
+Users with system administrator rights can create new user accounts
+
+![](/cookbooks_img//image-1624432668340.png)
+
+- Account types: Ordinary users (with data access and data consumption permissions, but without data access approval and
+  account management permissions); system administrators (with data access and data consumption permissions, data access
+  approval and account management permissions)
+- username: username for login
+- user password:
+  -Effective duration: the account can be used in the system
+  ![](/cookbooks_img//image-1624432740241.png)
+
+### Delete user
+
+The system administrator can delete the account of the created user. After the deletion, the account will stop using:
+
+![](/cookbooks_img//image-1624432759224.png)
+
+### User Edit
+
+The system administrator can modify the created account:
+
+![](/cookbooks_img//image-1624432778845.png)
+
+The system administrator can modify the account type and effective duration to proceed:
+
+![](/cookbooks_img//image-1624432797226.png)
+
+### Change password
+
+The user can modify the account password, click [Modify Password], enter the old password and the new password, after
+confirmation, the new password of this account will take effect:
+
+![](/cookbooks_img//image-1624432829313.png)
diff --git a/docs/contact.md b/docs/contact.md
index 1ebf107..867e82d 100644
--- a/docs/contact.md
+++ b/docs/contact.md
@@ -3,7 +3,7 @@ title: Contact Us
 sidebar_position: 10
 ---
 
-Contact us
+Contact information
 -------
 - Ask questions on: [Apache InLong Slack](https://the-asf.slack.com/archives/C01QAG6U00L)
 - Mailing lists:
diff --git a/docs/deployment/_category_.json b/docs/deployment/_category_.json
new file mode 100644
index 0000000..52a47b5
--- /dev/null
+++ b/docs/deployment/_category_.json
@@ -0,0 +1,4 @@
+{
+  "label": "Deployment",
+  "position": 5
+}
\ No newline at end of file
diff --git a/docs/deployment/bare_metal.md b/docs/deployment/bare_metal.md
new file mode 100644
index 0000000..2ec41e5
--- /dev/null
+++ b/docs/deployment/bare_metal.md
@@ -0,0 +1,36 @@
+---
+title: bare metal
+sidebar_position: 4
+---
+
+## Environment Requirements
+- ZooKeeper 3.5+
+- MySQL 5.7+
+- Flink 1.9.x
+
+## deploy InLong TubeMQ Server
+[deploy InLong TubeMQ Server](modules/tubemq/quick_start.md)
+
+## deploy InLong TubeMQ Manager
+[deploy InLong TubeMQ Manager](modules/tubemq/tubemq-manager/quick_start.md)
+
+## deploy InLong Manager
+[deploy InLong Manager](modules/manager/quick_start.md)
+
+## deploy InLong WebSite
+[deploy InLong WebSite](modules/website/quick_start.md)
+
+## deploy InLong Sort
+[deploy InLong Sort](modules/sort/quick_start.md)
+
+## deploy InLong DataProxy
+[deploy InLong DataProxy](modules/dataproxy/quick_start.md)
+
+## deploy InLong Agent
+[deploy InLong Agent](modules/agent/quick_start.md)
+
+## Business configuration
+[How to configure a new business](docs/user_guide/user_manual)
+
+## 13 Data report verification
+At this stage, you can collect data through the file agent and verify whether the received data is consistent with the sent data in the specified Hive table.
\ No newline at end of file
diff --git a/docs/deployment/docker.md b/docs/deployment/docker.md
new file mode 100644
index 0000000..41d3732
--- /dev/null
+++ b/docs/deployment/docker.md
@@ -0,0 +1,27 @@
+---
+title: Docker
+sidebar_position: 2
+---
+
+Deploy all InLong module by Docker Compose, it's only available for development.
+
+Requirements:
+- [Docker](https://docs.docker.com/engine/install/) 19.03.1+
+- Docker Compose 1.29.2+
+
+## Deploy
+```
+docker-compose up -d
+```
+
+## Use InLong
+After all containers run successfully, you can access `http://localhost` with default account:
+```
+User: admin
+Password: inlong
+```
+
+## Destroy
+```
+docker-compose down
+```
diff --git a/docs/deployment/k8s.md b/docs/deployment/k8s.md
new file mode 100644
index 0000000..f74e0c6
--- /dev/null
+++ b/docs/deployment/k8s.md
@@ -0,0 +1,34 @@
+---
+title: Kubernetes
+sidebar_position: 3
+---
+
+## Prerequisites
+
+- Kubernetes 1.10+
+- Helm 3.0+
+- A dynamic provisioner for the PersistentVolumes(`production environment`)
+
+## Install
+
+```shell
+kubectl create namespace inlong
+helm upgrade inlong --install -n inlong ./
+```
+
+## Configuration
+
+
+
+## Uninstall
+
+```shell
+helm uninstall inlong -n inlong
+```
+
+You can delete all `PVC ` if any persistent volume claims used, it will lose all data.
+
+```shell
+kubectl delete pvc -n inlong --all
+```
+
diff --git a/docs/deployment/standalone.md b/docs/deployment/standalone.md
new file mode 100644
index 0000000..14981e6
--- /dev/null
+++ b/docs/deployment/standalone.md
@@ -0,0 +1,7 @@
+---
+title: Standalone
+sidebar_position: 1
+---
+
+Will be added soon
+
diff --git a/docs/design_and_concept/_category_.json b/docs/design_and_concept/_category_.json
new file mode 100644
index 0000000..c20a8dc
--- /dev/null
+++ b/docs/design_and_concept/_category_.json
@@ -0,0 +1,4 @@
+{
+  "label": "Design and Concept",
+  "position": 2
+}
\ No newline at end of file
diff --git a/docs/design_and_concept/basic_concept.md b/docs/design_and_concept/basic_concept.md
new file mode 100644
index 0000000..1fd2f02
--- /dev/null
+++ b/docs/design_and_concept/basic_concept.md
@@ -0,0 +1,7 @@
+---
+title: Basic Concept
+sidebar_position: 1
+---
+
+Will be added soon
+
diff --git a/docs/introduction.md b/docs/introduction.md
new file mode 100644
index 0000000..8698a90
--- /dev/null
+++ b/docs/introduction.md
@@ -0,0 +1,51 @@
+---
+title: InLong Introduction
+sidebar_position: 1
+---
+
+> InLong (应龙) is a divine beast in Chinese mythology who guides river into the sea, 
+> it is regarded as a metaphor of the InLong system for reporting streams of data.
+
+## About InLong
+[Apache InLong](https://inlong.apache.org) is a one-stop data access platform donated by Tencent to the Apache community.  It provides automatic,  safe,  reliable,  and high-performance data transmission capabilities to facilitate the construction of streaming-based data analysis,  modeling,  and applications.  
+The Apache InLong project was originally called TubeMQ,  focusing on high-performance,  low-cost message queuing services.  In order to further release the surrounding ecological capabilities of TubeMQ,  we upgraded the project to InLong,  focusing on creating a one-stop data integration solution.
+Apache InLong uses TDBank internally used by Tencent as the prototype,  and relies on trillion-level data access and processing capabilities to integrate the entire process of data collection,  aggregation,  storage,  and sorting data processing.  It is simple to use,  flexible to expand,  stable and reliable characteristic.
+
+## Features
+- Ease of Use
+
+  Apache InLong is a SaaS-based service platform. You can easily and quickly report, transfer, and distribute data by publishing and subscribing to data based on topics
+
+- Stability & Reliability
+
+  Apache InLong is derived from the actual online production environment, 
+  it delivers high-performance processing capabilities for 10 trillion-level data streams and highly reliable services for 100 billion-level data streams
+
+- Comprehensive Features
+
+  Apache InLong supports various types of data access methods and can be integrated with different types of Message Queue (MQ) services. It also provides real-time data extract, transform, 
+  and load (ETL) and sorting capabilities based on rules. Apache InLong also allows you to plug features to extend system capabilities
+
+- Service Integration
+
+  Apache InLong provides unified system monitoring and alert services. It provides fine-grained metrics to facilitate data visualization. 
+  You can view the running status of queues and topic-based data statistics in a unified data metric platform. 
+  You can also configure the alert service based on your business requirements so that users can be alerted when errors occur
+
+- Scalability
+
+  Apache InLong adopts a pluggable architecture that allows you to plug modules into the system based on specific protocols. 
+  You can replace components and add features based on your business requirements
+
+## Architecture
+<img src="/img/inlong-structure-en.png" align="center" alt="Apache InLong"/>
+
+## Modules
+Apache InLong serves the entire life cycle from data collection to landing,  and provides different processing modules according to different stages of data,  including the next modules:
+
+- **inlong-agent**,  data collection agent, supports reading regular logs from specified directories or files and reporting data one by one.  In the future,  DB collection and HTTP reporting capabilities will also be expanded.
+- **inlong-dataproxy**,  a Proxy component based on Flume-ng,  supports data transmission blocking,  placing retransmission, and has the ability to forward received data to different MQ (message queues).
+- **inlong-tubemq**,  Tencent's self-developed message queuing service,  focuses on high-performance storage and transmission of massive data in big data scenarios and has a relatively good core advantage in mass practice and low cost.
+- **inlong-sort**,  after consuming data from different MQ services,  perform ETL processing,  and then aggregate and write the data into Apache Hive, ClickHouse,  Hbase,  IceBerg,  etc.
+- **inlong-manager**, provides complete data service management and control capabilities,  including metadata,  OpenAPI,  task flow,  authority,  etc.
+- **inlong-website**, a front-end page for managing data access,  simplifying the use of the entire InLong control platform.
diff --git a/docs/modules/_category_.json b/docs/modules/_category_.json
index fe46450..a50cc69 100644
--- a/docs/modules/_category_.json
+++ b/docs/modules/_category_.json
@@ -1,4 +1,4 @@
 {
   "label": "Components",
-  "position": 5
+  "position": 4
 }
\ No newline at end of file
diff --git a/docs/modules/agent/_category_.json b/docs/modules/agent/_category_.json
index e503c23..b0b0626 100644
--- a/docs/modules/agent/_category_.json
+++ b/docs/modules/agent/_category_.json
@@ -1,4 +1,4 @@
 {
   "label": "Agent",
-  "position": 3
+  "position": 1
 }
\ No newline at end of file
diff --git a/docs/modules/agent/architecture.md b/docs/modules/agent/overview.md
similarity index 99%
rename from docs/modules/agent/architecture.md
rename to docs/modules/agent/overview.md
index 1eebfb7..0001917 100644
--- a/docs/modules/agent/architecture.md
+++ b/docs/modules/agent/overview.md
@@ -1,5 +1,5 @@
 ---
-title: Architecture
+title: Overview 
 ---
 
 ## 1 Overview of InLong-Agent
diff --git a/docs/modules/agent/quick_start.md b/docs/modules/agent/quick_start.md
index 04ef7c2..bd3185d 100644
--- a/docs/modules/agent/quick_start.md
+++ b/docs/modules/agent/quick_start.md
@@ -1,5 +1,5 @@
 ---
-title: Build && Deployment
+title: Deployment
 ---
 
 ## 1 Configuration
diff --git a/docs/modules/dataproxy/_category_.json b/docs/modules/dataproxy/_category_.json
index 148d928..8093aa7 100644
--- a/docs/modules/dataproxy/_category_.json
+++ b/docs/modules/dataproxy/_category_.json
@@ -1,4 +1,4 @@
 {
   "label": "DataProxy",
-  "position": 4
+  "position": 2
 }
\ No newline at end of file
diff --git a/docs/modules/dataproxy/architecture.md b/docs/modules/dataproxy/overview.md
similarity index 99%
rename from docs/modules/dataproxy/architecture.md
rename to docs/modules/dataproxy/overview.md
index a897a7a..c78cedf 100644
--- a/docs/modules/dataproxy/architecture.md
+++ b/docs/modules/dataproxy/overview.md
@@ -1,5 +1,5 @@
 ---
-title: Architecture
+title: Overview
 ---
 ## 1 intro
 
diff --git a/docs/modules/dataproxy/quick_start.md b/docs/modules/dataproxy/quick_start.md
index 55b9398..7e72038 100644
--- a/docs/modules/dataproxy/quick_start.md
+++ b/docs/modules/dataproxy/quick_start.md
@@ -1,5 +1,5 @@
 ---
-title: Build && Deployment
+title: Deployment
 ---
 ## 1 Deploy DataProxy
 
diff --git a/docs/modules/manager/_category_.json b/docs/modules/manager/_category_.json
index 6e9ba33..ea495c8 100644
--- a/docs/modules/manager/_category_.json
+++ b/docs/modules/manager/_category_.json
@@ -1,4 +1,4 @@
 {
   "label": "Manager",
-  "position": 1
+  "position": 5
 }
\ No newline at end of file
diff --git a/docs/modules/manager/architecture.md b/docs/modules/manager/overview.md
similarity index 97%
rename from docs/modules/manager/architecture.md
rename to docs/modules/manager/overview.md
index d82ff16..993d53d 100644
--- a/docs/modules/manager/architecture.md
+++ b/docs/modules/manager/overview.md
@@ -1,5 +1,5 @@
 ---
-title: Architecture
+title: Overview
 ---
 
 ## 1 Introduction to Apache InLong Manager
diff --git a/docs/modules/manager/quick_start.md b/docs/modules/manager/quick_start.md
index 3d32971..9da7a03 100644
--- a/docs/modules/manager/quick_start.md
+++ b/docs/modules/manager/quick_start.md
@@ -1,5 +1,5 @@
 ---
-title: Build && Deployment
+title: Deployment
 ---
 
 ## 1 Environmental preparation
diff --git a/docs/modules/sort/_category_.json b/docs/modules/sort/_category_.json
index 8f2c6e3..59ca9cb 100644
--- a/docs/modules/sort/_category_.json
+++ b/docs/modules/sort/_category_.json
@@ -1,4 +1,4 @@
 {
   "label": "Sort",
-  "position": 7
+  "position": 4
 }
\ No newline at end of file
diff --git a/docs/modules/sort/introduction.md b/docs/modules/sort/overview.md
similarity index 96%
rename from docs/modules/sort/introduction.md
rename to docs/modules/sort/overview.md
index 7e9f6b0..edf3984 100644
--- a/docs/modules/sort/introduction.md
+++ b/docs/modules/sort/overview.md
@@ -1,5 +1,6 @@
 ---
-title: Architecture
+title: Overview
+sidebar_position: 1
 ---
 
 # overview
diff --git a/docs/modules/sort/protocol_introduction.md b/docs/modules/sort/protocol_introduction.md
index 90eeb8d..6c660ed 100644
--- a/docs/modules/sort/protocol_introduction.md
+++ b/docs/modules/sort/protocol_introduction.md
@@ -1,5 +1,6 @@
 ---
 title: Zookeeper Configure
+sidebar_position: 3
 ---
 
 # Overview
diff --git a/docs/modules/sort/quick_start.md b/docs/modules/sort/quick_start.md
index 8823e05..663194c 100644
--- a/docs/modules/sort/quick_start.md
+++ b/docs/modules/sort/quick_start.md
@@ -1,5 +1,6 @@
 ---
-title: Build && Deployment
+title: Deployment
+sidebar_position: 2
 ---
 
 ## 1 Set up flink environment
diff --git a/docs/modules/tubemq/_category_.json b/docs/modules/tubemq/_category_.json
index 0ff1b29..203acb2 100644
--- a/docs/modules/tubemq/_category_.json
+++ b/docs/modules/tubemq/_category_.json
@@ -1,4 +1,4 @@
 {
   "label": "TubeMQ",
-  "position": 6
+  "position": 3
 }
\ No newline at end of file
diff --git a/docs/modules/tubemq/client_partition_assign_introduction.md b/docs/modules/tubemq/client_partition_assign_introduction.md
index 70beb1b..4930217 100644
--- a/docs/modules/tubemq/client_partition_assign_introduction.md
+++ b/docs/modules/tubemq/client_partition_assign_introduction.md
@@ -1,5 +1,5 @@
 ---
-title: Introduction to client partition assign
+title: client partition assign
 ---
 
 ## 1 Preface
diff --git a/docs/modules/tubemq/configure_introduction.md b/docs/modules/tubemq/configure_introduction.md
index 23f2ee5..d153966 100644
--- a/docs/modules/tubemq/configure_introduction.md
+++ b/docs/modules/tubemq/configure_introduction.md
@@ -1,5 +1,5 @@
 ---
-title: Configure Introduction
+title: Configuration
 ---
 
 ## 1 TubeMQ configuration item description
diff --git a/docs/modules/tubemq/consumer_example.md b/docs/modules/tubemq/consumer_example.md
index 510c69a..79bcdca 100644
--- a/docs/modules/tubemq/consumer_example.md
+++ b/docs/modules/tubemq/consumer_example.md
@@ -1,77 +1,73 @@
 ---
 title: Consumer Example
+sidebar_position: 5
 ---
 
 ## 1 Consumer Example
   TubeMQ provides two ways to consumer message, PullConsumer and PushConsumer:
 
 ### 1.1 PullConsumer 
-    ```java
-    public class PullConsumerExample {
-
-        public static void main(String[] args) throws Throwable {
-            final String masterHostAndPort = "localhost:8000";
-            final String topic = "test";
-            final String group = "test-group";
-            final ConsumerConfig consumerConfig = new ConsumerConfig(masterHostAndPort, group);
-            consumerConfig.setConsumePosition(ConsumePosition.CONSUMER_FROM_LATEST_OFFSET);
-            final MessageSessionFactory messageSessionFactory = new TubeSingleSessionFactory(consumerConfig);
-            final PullMessageConsumer messagePullConsumer = messageSessionFactory.createPullConsumer(consumerConfig);
-            messagePullConsumer.subscribe(topic, null);
-            messagePullConsumer.completeSubscribe();
-            // wait for client to join the exact consumer queue that consumer group allocated
-            while (!messagePullConsumer.isPartitionsReady(1000)) {
-                ThreadUtils.sleep(1000);
-            }
-            while (true) {
-                ConsumerResult result = messagePullConsumer.getMessage();
-                if (result.isSuccess()) {
-                    List<Message> messageList = result.getMessageList();
-                    for (Message message : messageList) {
-                        System.out.println("received message : " + message);
-                    }
-                    messagePullConsumer.confirmConsume(result.getConfirmContext(), true);
-                }
-            }
-        }   
-
-    }
-    ``` 
+```java
+   public class PullConsumerExample {
+       public static void main(String[] args) throws Throwable {
+           final String masterHostAndPort = "localhost:8000";
+           final String topic = "test";
+           final String group = "test-group";
+           final ConsumerConfig consumerConfig = new ConsumerConfig(masterHostAndPort, group);
+           consumerConfig.setConsumePosition(ConsumePosition.CONSUMER_FROM_LATEST_OFFSET);
+           final MessageSessionFactory messageSessionFactory = new TubeSingleSessionFactory(consumerConfig);
+           final PullMessageConsumer messagePullConsumer = messageSessionFactory.createPullConsumer(consumerConfig);
+           messagePullConsumer.subscribe(topic, null);
+           messagePullConsumer.completeSubscribe();
+           // wait for client to join the exact consumer queue that consumer group allocated
+           while (!messagePullConsumer.isPartitionsReady(1000)) {
+               ThreadUtils.sleep(1000);
+           }
+           while (true) {
+               ConsumerResult result = messagePullConsumer.getMessage();
+               if (result.isSuccess()) {
+                   List<Message> messageList = result.getMessageList();
+                   for (Message message : messageList) {
+                       System.out.println("received message : " + message);
+                   }
+                   messagePullConsumer.confirmConsume(result.getConfirmContext(), true);
+               }
+           }
+       }   
+   }
+``` 
    
 ### 1.2 PushConsumer
-    ```java
-    public class PushConsumerExample {
-   
-        public static void test(String[] args) throws Throwable {
-            final String masterHostAndPort = "localhost:8000";
-            final String topic = "test";
-            final String group = "test-group";
-            final ConsumerConfig consumerConfig = new ConsumerConfig(masterHostAndPort, group);
-            consumerConfig.setConsumePosition(ConsumePosition.CONSUMER_FROM_LATEST_OFFSET);
-            final MessageSessionFactory messageSessionFactory = new TubeSingleSessionFactory(consumerConfig);
-            final PushMessageConsumer pushConsumer = messageSessionFactory.createPushConsumer(consumerConfig);
-            pushConsumer.subscribe(topic, null, new MessageListener() {
-
-                @Override
-                public void receiveMessages(PeerInfo peerInfo, List<Message> messages) throws InterruptedException {
-                    for (Message message : messages) {
-                        System.out.println("received message : " + new String(message.getData()));
-                    }
-                }
-
-                @Override
-                public Executor getExecutor() {
-                    return null;
-                }
-
-                @Override
-                public void stop() {
-                    //
-                }
-            });
-            pushConsumer.completeSubscribe();
-            CountDownLatch latch = new CountDownLatch(1);
-            latch.await(10, TimeUnit.MINUTES);
-        }
-    }
-    ```
+```java
+   public class PushConsumerExample {
+  
+       public static void test(String[] args) throws Throwable {
+           final String masterHostAndPort = "localhost:8000";
+           final String topic = "test";
+           final String group = "test-group";
+           final ConsumerConfig consumerConfig = new ConsumerConfig(masterHostAndPort, group);
+           consumerConfig.setConsumePosition(ConsumePosition.CONSUMER_FROM_LATEST_OFFSET);
+           final MessageSessionFactory messageSessionFactory = new TubeSingleSessionFactory(consumerConfig);
+           final PushMessageConsumer pushConsumer = messageSessionFactory.createPushConsumer(consumerConfig);
+           pushConsumer.subscribe(topic, null, new MessageListener() {
+               @Override
+               public void receiveMessages(PeerInfo peerInfo, List<Message> messages) throws InterruptedException {
+                   for (Message message : messages) {
+                       System.out.println("received message : " + new String(message.getData()));
+                   }
+               }
+               @Override
+               public Executor getExecutor() {
+                   return null;
+               }
+               @Override
+               public void stop() {
+                   //
+               }
+           });
+           pushConsumer.completeSubscribe();
+           CountDownLatch latch = new CountDownLatch(1);
+           latch.await(10, TimeUnit.MINUTES);
+       }
+   }
+```
diff --git a/docs/modules/tubemq/deployment.md b/docs/modules/tubemq/deployment.md
deleted file mode 100644
index a4017b7..0000000
--- a/docs/modules/tubemq/deployment.md
+++ /dev/null
@@ -1,156 +0,0 @@
----
-title: Deployment
----
-
-## 1 Compile and Package Project:
-
-Enter the root directory of project and run:
-
-```
-mvn clean package -Dmaven.test.skip
-```
-
-e.g. We put the TubeMQ project package at `E:/`, then run the above command. Compilation is complete when all subdirectories are compiled successfully.
-
-![](img/sysdeployment/sys_compile.png)
-
-We can also run individual compilation in each subdirectory. Steps are the same as the whole project's compilation.
-
-## 2 Server Deployment
-
-As example above, entry directory `..\InLong\inlong-tubemq\tubemq-server\target`, we can see several JARs. `apache-inlong-tubemq-server-0.9.0-incubating-SNAPSHOT-bin.tar.gz` is the complete server-side installation package, including execution scripts, configuration files, dependencies, and frontend source code. `apache-inlong-tubemq-server-0.9.0-incubating-SNAPSHOT.jar` is a server-side processing package included in `lib` of the complete project installer. Consider to daily changes and [...]
-
-
-![](img/sysdeployment/sys_package.png)
-
-Here we have a complete package deployed onto server and we place it in `/data/inlong`
-
-![](img/sysdeployment/sys_package_list.png)
-
-
-## 3 Configuration System
-
-There are 3 roles in server package: Master, Broker and Tools. Master and Broker can be deployed on the same or different machine. It depends on the bussiness layouts. As example below, we have 3 machine to startup a complete production and consumption cluster with 2 Masters.
-
-| Machine | Role | TCP Port | TLS Port | WEB Port | Note |
-| --- | --- | --- | --- | --- | --- |
-| 9.23.27.24 | **Master** | 8099 | 8199 | 8080 | Metadata stored at `/stage/meta_data` |
-| | Broker | 8123 | 8124 | 8081 | Message stored at`/stage/msg_data` |
-| | ZooKeeper | 2181 | | | Offset stored at root directory`/tubemq` |
-| 9.23.28.24 | **Master** | 8099 | 8199 | 8080 | Metadata stored at `/stage/meta_data` |
-| | Broker | 8123 | 8124 | 8081 | Message stored at`/stage/msg_data` |
-| 9.23.27.160 | Producer ||||
-| | Consumer ||||
-|
-
-Something should be noticed during deploying Master:
-
-1. Master cluster can be deployed in 1, 2 or 3 machines. 3 machines is suggested if HA is necessary so that reading/writing configuration and access to new production/consumption is still available when one of them is shutdown. In common situation, 2 machines provide readable configuration and proper state of production/consumption already registered when one is shutdown. The minimum is 1 and it provides proper state of production/consumption already registered when is shutdown.
-2. For machines with Master Role, we should promise clock synchronization. At the same time, IP address of each Master machine should be set in `/etc/hosts` on each Master machine.
-
-![](img/sysdeployment/sys_address_host.png)
-
-Take `9.23.27.24` and `9.23.28.24` as examples, if we want to deploy both Master and Broker role on them, we need to configure in `/conf/master.ini`, `/resources/velocity.properties` and `/conf/broker.ini`. First set up the configuration of `9.23.27.24`,
-
-![](img/sysdeployment/sys_configure_1.png)
-
-then it is `9.23.28.24`.
-
-![](img/sysdeployment/sys_configure_2.png)
-
-Note that the upper right corner is configured with Master's web frontend configuration and configuration `file.resource.loader.path` in `/resources/velocity.properties` need to be modified according to the Master's installation path.
-
-## 4 Start up Master:
-
-After configuration, entry directory `bin` of Master environment and start up master.
-
-![](img/sysdeployment/sys_master_start.png)
-
-We First start up `9.23.27.24`, and then start up Master on `9.23.28.24`. The following messages indicate that the master and backup master have been successfully started up and the external service ports are reachable.
-
-![](img/sysdeployment/sys_master_startted.png)
-
-Visiting Master's Administrator panel([http://9.23.27.24:8080](http://9.23.27.24:8080)), search operation working well indicates that master has been successfully started up.
-
-![](img/sysdeployment/sys_master_console.png)
-
-## 5 Start up Broker:
-
-Starting up Broker is a little bit different to starting Master: Master is responsible for managing the entire TubeMQ cluster, including Broker node with Topic configuration on them, production and consumption managament. So we need to add metadata on Master before starting up Broker.
-
-![](img/sysdeployment/sys_broker_configure.png)
-
-Confirm and create a draft record of Broker.
-
-![](img/sysdeployment/sys_broker_online.png)
-
-We try to start up the Broker.
-
-![](img/sysdeployment/sys_broker_start.png)
-
-But we got an error message.
-
-![](img/sysdeployment/sys_broker_start_error.png)
-
-Because the broker record is currently in draft status and it is not available now. Let's go back to Master Administrator panel and publish.
-
-![](img/sysdeployment/sys_broker_online_2.png)
-
-Every changing operation need to text in an Authorization Code when submited to Master. Authorization Code is defined by `confModAuthToken` in `master.ini`. If you have the Code of this cluster, we consider you as administrator and you have permission to operate the modification.
-
-![](img/sysdeployment/sys_broker_deploy.png)
-
-
-Then we restart the Broker.
-
-![](img/sysdeployment/sys_broker_restart_1.png)
-
-![](img/sysdeployment/sys_broker_restart_2.png)
-
-Check the Master Control Panel, broker has successfully registered.
-
-![](img/sysdeployment/sys_broker_finished.png)
-
-
-## 6 Topic Configuration and Activation:
-
-Configuration of Topic is similar with Broker's, we should add metadata on Master before using them, otherwise it will report an Not Found Error during production/consumption. For example, if we try to consum a non-existent topic `test`,
-![](img/sysdeployment/test_sendmessage.png)
-
-Demo returns error message.
-![](img/sysdeployment/sys_topic_error.png)
-
-First we add a topic in topic list page in Master Control Panel.
-
-![](img/sysdeployment/sys_topic_create.png)
-
-![](img/sysdeployment/sys_topic_select.png)
-
-Choose publish scope and confirm after submit topic detail. After adding a new topic, we need to overload the topic.
-
-![](img/sysdeployment/sys_topic_deploy.png)
-
-Topic is available after overload. We can see some status of topic has changed after overload.
-
-![](img/sysdeployment/sys_topic_finished.png)
-
-
-**Note** When we are executing overload opertaion, we should make it in batches. Overload operations are controlled by state machines. It would become unwritable and un readale, read-only, readable and writable in order before published. Waiting for overloads on all brokers make topic temporary unreadable and unwritable, which result in production and consumption failure, especially production failure.
-
-## 7 Message Production and Consumption:
-
-We pack Demo for test in package or `tubemq-client-0.9.0-incubating-SNAPSHOT.jar` can be used for implementing your own production and consumption.
-We run Producer Demo in below script and we can see data accepted on Broker.
-![](img/sysdeployment/test_sendmessage_2.png)
-
-![](img/sysdeployment/sys_node_status.png)
-
-Then we run the Consumption Demo and we can see that consumption is also working properly.
-![](img/sysdeployment/sys_node_status_2.png)
-
-As we can see, files relative to broker's production and consumption already exist.
-
-![](img/sysdeployment/sys_node_log.png)
-
-Here, the compilation, deployment, system configuration, startup, production and consumption of TubeMQ has been completed!
-If you need to get further, please refer to "TubeMQ HTTP API" and make your appropriate configuration settings.
\ No newline at end of file
diff --git a/docs/modules/tubemq/architecture.md b/docs/modules/tubemq/overview.md
similarity index 99%
rename from docs/modules/tubemq/architecture.md
rename to docs/modules/tubemq/overview.md
index cd4ad51..49a092e 100644
--- a/docs/modules/tubemq/architecture.md
+++ b/docs/modules/tubemq/overview.md
@@ -1,5 +1,6 @@
 ---
-title: Architecture
+title: Overview
+sidebar_position: 1
 ---
 
 ## 1 TubeMQ Architecture:
diff --git a/docs/modules/tubemq/producer_example.md b/docs/modules/tubemq/producer_example.md
index c5d0069..08c3b08 100644
--- a/docs/modules/tubemq/producer_example.md
+++ b/docs/modules/tubemq/producer_example.md
@@ -1,5 +1,6 @@
 ---
 title: Producer Example
+sidebar_position: 4
 ---
 
 ## 1 Producer Example
@@ -8,145 +9,141 @@ title: Producer Example
   - TubeMultiSessionFactory creates new session on every call.
 
 ### 1.1 TubeSingleSessionFactory
+
 #### 1.1.1 Send Message Synchronously
+```java
+   
+   public final class SyncProducerExample {
+   
+       public static void main(String[] args) throws Throwable {
+           final String masterHostAndPort = "localhost:8000";
+           final TubeClientConfig clientConfig = new TubeClientConfig(masterHostAndPort);
+           final MessageSessionFactory messageSessionFactory = new TubeSingleSessionFactory(clientConfig);
+           final MessageProducer messageProducer = messageSessionFactory.createProducer();
+           final String topic = "test";
+           final String body = "This is a test message from single-session-factory!";
+           byte[] bodyData = StringUtils.getBytesUtf8(body);
+           messageProducer.publish(topic);
+           Message message = new Message(topic, bodyData);
+           MessageSentResult result = messageProducer.sendMessage(message);
+           if (result.isSuccess()) {
+               System.out.println("sync send message : " + message);
+           }
+           messageProducer.shutdown();
+       }
+   }
+```
 
-    ```java
-    
-    public final class SyncProducerExample {
-    
-        public static void main(String[] args) throws Throwable {
-            final String masterHostAndPort = "localhost:8000";
-            final TubeClientConfig clientConfig = new TubeClientConfig(masterHostAndPort);
-            final MessageSessionFactory messageSessionFactory = new TubeSingleSessionFactory(clientConfig);
-            final MessageProducer messageProducer = messageSessionFactory.createProducer();
-            final String topic = "test";
-            final String body = "This is a test message from single-session-factory!";
-            byte[] bodyData = StringUtils.getBytesUtf8(body);
-            messageProducer.publish(topic);
-            Message message = new Message(topic, bodyData);
-            MessageSentResult result = messageProducer.sendMessage(message);
-            if (result.isSuccess()) {
-                System.out.println("sync send message : " + message);
-            }
-            messageProducer.shutdown();
-        }
-    }
-    ```
-     
-####1.1.2 Send Message Asynchronously
-    ```java
-    public final class AsyncProducerExample {
-     
-        public static void main(String[] args) throws Throwable {
-            final String masterHostAndPort = "localhost:8000";
-            final TubeClientConfig clientConfig = new TubeClientConfig(masterHostAndPort);
-            final MessageSessionFactory messageSessionFactory = new TubeSingleSessionFactory(clientConfig);
-            final MessageProducer messageProducer = messageSessionFactory.createProducer();
-            final String topic = "test";
-            final String body = "async send message from single-session-factory!";
-            byte[] bodyData = StringUtils.getBytesUtf8(body);
-            messageProducer.publish(topic);
-            final Message message = new Message(topic, bodyData);
-            messageProducer.sendMessage(message, new MessageSentCallback(){
-                @Override
-                public void onMessageSent(MessageSentResult result) {
-                    if (result.isSuccess()) {
-                        System.out.println("async send message : " + message);
-                    } else {
-                        System.out.println("async send message failed : " + result.getErrMsg());
-                    }
-                }
-                @Override
-                public void onException(Throwable e) {
-                    System.out.println("async send message error : " + e);
-                }
-            });
-            messageProducer.shutdown();
-        }
+#### 1.1.2 Send Message Asynchronously
+```java
+   public final class AsyncProducerExample {
+   
+      public static void main(String[] args) throws Throwable {
+          final String masterHostAndPort = "localhost:8000";
+          final TubeClientConfig clientConfig = new TubeClientConfig(masterHostAndPort);
+          final MessageSessionFactory messageSessionFactory = new TubeSingleSessionFactory(clientConfig);
+          final MessageProducer messageProducer = messageSessionFactory.createProducer();
+          final String topic = "test";
+          final String body = "async send message from single-session-factory!";
+          byte[] bodyData = StringUtils.getBytesUtf8(body);
+          messageProducer.publish(topic);
+          final Message message = new Message(topic, bodyData);
+          messageProducer.sendMessage(message, new MessageSentCallback(){
+              @Override
+              public void onMessageSent(MessageSentResult result) {
+                  if (result.isSuccess()) {
+                      System.out.println("async send message : " + message);
+                  } else {
+                      System.out.println("async send message failed : " + result.getErrMsg());
+                  }
+              }
+              @Override
+              public void onException(Throwable e) {
+                  System.out.println("async send message error : " + e);
+              }
+          });
+          messageProducer.shutdown();
+      }
+```
 
-    }
-    ```
-     
 #### 1.1.3 Send Message With Attributes
-    ```java
-    public final class ProducerWithAttributeExample {
-     
-        public static void main(String[] args) throws Throwable {
-            final String masterHostAndPort = "localhost:8000";
-            final TubeClientConfig clientConfig = new TubeClientConfig(masterHostAndPort);
-            final MessageSessionFactory messageSessionFactory = new TubeSingleSessionFactory(clientConfig);
-            final MessageProducer messageProducer = messageSessionFactory.createProducer();
-            final String topic = "test";
-            final String body = "send message with attribute from single-session-factory!";
-            byte[] bodyData = StringUtils.getBytesUtf8(body);
-            messageProducer.publish(topic);
-            Message message = new Message(topic, bodyData);
-            //set attribute
-            message.setAttrKeyVal("test_key", "test value");
-            //msgType is used for consumer filtering, and msgTime(accurate to minute) is used as the pipe to send and receive statistics
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm");
-            message.putSystemHeader("test", sdf.format(new Date()));
-            messageProducer.sendMessage(message);
-            messageProducer.shutdown();
-        }
+```java
+   public final class ProducerWithAttributeExample {
+   
+      public static void main(String[] args) throws Throwable {
+          final String masterHostAndPort = "localhost:8000";
+          final TubeClientConfig clientConfig = new TubeClientConfig(masterHostAndPort);
+          final MessageSessionFactory messageSessionFactory = new TubeSingleSessionFactory(clientConfig);
+          final MessageProducer messageProducer = messageSessionFactory.createProducer();
+          final String topic = "test";
+          final String body = "send message with attribute from single-session-factory!";
+          byte[] bodyData = StringUtils.getBytesUtf8(body);
+          messageProducer.publish(topic);
+          Message message = new Message(topic, bodyData);
+          //set attribute
+          message.setAttrKeyVal("test_key", "test value");
+          //msgType is used for consumer filtering, and msgTime(accurate to minute) is used as the pipe to send and receive statistics
+          SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm");
+          message.putSystemHeader("test", sdf.format(new Date()));
+          messageProducer.sendMessage(message);
+          messageProducer.shutdown();
+      }
+```
 
-    }
-    ```
-     
 ### 1.2 TubeMultiSessionFactory
 
-    ```java
-    public class MultiSessionProducerExample {
-        
-        public static void main(String[] args) throws Throwable {
-            final int SESSION_FACTORY_NUM = 10;
-            final String masterHostAndPort = "localhost:8000";
-            final TubeClientConfig clientConfig = new TubeClientConfig(masterHostAndPort);
-            final List<MessageSessionFactory> sessionFactoryList = new ArrayList<>(SESSION_FACTORY_NUM);
-            final ExecutorService sendExecutorService = Executors.newFixedThreadPool(SESSION_FACTORY_NUM);
-            final CountDownLatch latch = new CountDownLatch(SESSION_FACTORY_NUM);
-            for (int i = 0; i < SESSION_FACTORY_NUM; i++) {
-                TubeMultiSessionFactory tubeMultiSessionFactory = new TubeMultiSessionFactory(clientConfig);
-                sessionFactoryList.add(tubeMultiSessionFactory);
-                MessageProducer producer = tubeMultiSessionFactory.createProducer();
-                Sender sender = new Sender(producer, latch);
-                sendExecutorService.submit(sender);
-            }
-            latch.await();
-            sendExecutorService.shutdownNow();
-            for (MessageSessionFactory sessionFactory : sessionFactoryList) {
-                sessionFactory.shutdown();
-            }
-        }
-    
-        private static class Sender implements Runnable {
-            
-            private MessageProducer producer;
-            
-            private CountDownLatch latch;
-    
-            public Sender(MessageProducer producer, CountDownLatch latch) {
-                this.producer = producer;
-                this.latch = latch;
-            }
-    
-            @Override
-            public void run() {
-                final String topic = "test";
-                try {
-                    producer.publish(topic);
-                    final byte[] bodyData = StringUtils.getBytesUtf8("This is a test message from multi-session factory");
-                    Message message = new Message(topic, bodyData);
-                    producer.sendMessage(message);
-                    producer.shutdown();
-                } catch (Throwable ex) {
-                    System.out.println("send message error : " + ex);
-                } finally {
-                    latch.countDown();
-                }
-            }
-        }
-    }
-    ```
+```java
+   public class MultiSessionProducerExample {
+       
+       public static void main(String[] args) throws Throwable {
+           final int SESSION_FACTORY_NUM = 10;
+           final String masterHostAndPort = "localhost:8000";
+           final TubeClientConfig clientConfig = new TubeClientConfig(masterHostAndPort);
+           final List<MessageSessionFactory> sessionFactoryList = new ArrayList<>(SESSION_FACTORY_NUM);
+           final ExecutorService sendExecutorService = Executors.newFixedThreadPool(SESSION_FACTORY_NUM);
+           final CountDownLatch latch = new CountDownLatch(SESSION_FACTORY_NUM);
+           for (int i = 0; i < SESSION_FACTORY_NUM; i++) {
+               TubeMultiSessionFactory tubeMultiSessionFactory = new TubeMultiSessionFactory(clientConfig);
+               sessionFactoryList.add(tubeMultiSessionFactory);
+               MessageProducer producer = tubeMultiSessionFactory.createProducer();
+               Sender sender = new Sender(producer, latch);
+               sendExecutorService.submit(sender);
+           }
+           latch.await();
+           sendExecutorService.shutdownNow();
+           for (MessageSessionFactory sessionFactory : sessionFactoryList) {
+               sessionFactory.shutdown();
+           }
+       }
+   
+       private static class Sender implements Runnable {
+           
+           private MessageProducer producer;
+           
+           private CountDownLatch latch;
+   
+           public Sender(MessageProducer producer, CountDownLatch latch) {
+               this.producer = producer;
+               this.latch = latch;
+           }
+   
+           @Override
+           public void run() {
+               final String topic = "test";
+               try {
+                   producer.publish(topic);
+                   final byte[] bodyData = StringUtils.getBytesUtf8("This is a test message from multi-session factory");
+                   Message message = new Message(topic, bodyData);
+                   producer.sendMessage(message);
+                   producer.shutdown();
+               } catch (Throwable ex) {
+                   System.out.println("send message error : " + ex);
+               } finally {
+                   latch.countDown();
+               }
+           }
+       }
+   }
+```
 ---
 <a href="#top">Back to top</a>
\ No newline at end of file
diff --git a/docs/modules/tubemq/quick_start.md b/docs/modules/tubemq/quick_start.md
index 4e5aff5..0994ec7 100644
--- a/docs/modules/tubemq/quick_start.md
+++ b/docs/modules/tubemq/quick_start.md
@@ -1,5 +1,6 @@
 ---
 title: Quick Start
+sidebar_position: 2
 ---
 ## 1 Deploy and Start
 
diff --git a/docs/modules/tubemq/tubemq-manager/_category_.json b/docs/modules/tubemq/tubemq-manager/_category_.json
new file mode 100644
index 0000000..fb895d8
--- /dev/null
+++ b/docs/modules/tubemq/tubemq-manager/_category_.json
@@ -0,0 +1,4 @@
+{
+  "label": "tubemq-manager",
+  "position": 5
+}
\ No newline at end of file
diff --git a/docs/modules/tubemq/tubemq-manager/quick_start.md b/docs/modules/tubemq/tubemq-manager/overview.md
similarity index 67%
copy from docs/modules/tubemq/tubemq-manager/quick_start.md
copy to docs/modules/tubemq/tubemq-manager/overview.md
index bebcefb..899e7e1 100644
--- a/docs/modules/tubemq/tubemq-manager/quick_start.md
+++ b/docs/modules/tubemq/tubemq-manager/overview.md
@@ -1,46 +1,8 @@
-## 1 Deploy TubeMQ Manager
-All deploying files at `inlong-tubemq-manager` directory.
+---
+title: Overview
+---
 
-### 1.1 configuration
-- create `tubemanager` and account in MySQL.
-- Add mysql information in conf/application.properties:
-
-```ini
-# mysql configuration for manager
-spring.datasource.url=jdbc:mysql://mysql_ip:mysql_port/tubemanager
-spring.datasource.username=mysql_username
-spring.datasource.password=mysql_password
-```
-
-### 1.2 start service
-
-``` bash
-$ bin/start-manager.sh 
-```
-
-### 1.3 register TubeMQ cluster
-
-    vim bin/init-tube-cluster.sh
-
-replace the parameters below
-```
-TUBE_MANAGER_IP=  
-TUBE_MANAGER_PORT=   
-TUBE_MASTER_IP=   
-TUBE_MASTER_PORT=
-TUBE_MASTER_WEB_PORT=
-TUBE_MASTER_TOKEN=
-```
-
-then run:
-```
-sh bin/init-tube-cluster.sh
-```
-
-this will create a cluster with id = 1, note that this operation should not be executed repeatedly.
-
-
-### 1.4 Appendix: Other Operation interface
+Operation interface
 
 #### cluster
 Query full data of clusterId and clusterName (get)
diff --git a/docs/modules/tubemq/tubemq-manager/quick_start.md b/docs/modules/tubemq/tubemq-manager/quick_start.md
index bebcefb..66b495a 100644
--- a/docs/modules/tubemq/tubemq-manager/quick_start.md
+++ b/docs/modules/tubemq/tubemq-manager/quick_start.md
@@ -1,3 +1,7 @@
+---
+title: Deployment
+---
+
 ## 1 Deploy TubeMQ Manager
 All deploying files at `inlong-tubemq-manager` directory.
 
@@ -37,89 +41,4 @@ then run:
 sh bin/init-tube-cluster.sh
 ```
 
-this will create a cluster with id = 1, note that this operation should not be executed repeatedly.
-
-
-### 1.4 Appendix: Other Operation interface
-
-#### cluster
-Query full data of clusterId and clusterName (get)
-
-Example
-
-【GET】 /v1/cluster
-
-return value
-
-    {
-    "errMsg": "",
-    "errCode": 0,
-    "result": true,
-    "data": "[{\"clusterId\":1,\"clusterName\":\"1124\", \"masterIp\":\"127.0.0.1\"}]"
-    }
-
-#### topic
-
-##### add topicTask
-
-parameter:
-
-    type	 (required) request type, fill in the field: op_query
-    clusterId	(required) Request cluster id
-    addTopicTasks (required) topicTasks, create task task json
-    user	(required) After the access authorization verification needs to verify the user, it is reserved here
-
-addTopicTasks currently only includes one field as topicName
-After accessing the region design, a new region field will be added to represent brokers in different regions
-Currently an addTopicTask will create topics in all brokers in the cluster
-
-
-AddTopicTasks is a list of the following objects, which can carry multiple create topic requests
-
-    topicName (required) topic name
-
-Example
-
-【POST】 /v1/task?method=addTopicTask
-
-    {
-    "clusterId": "1",
-    "addTopicTasks": [{"topicName": "1"}],
-    "user": "test"
-    }
-
-return json
-
-    {
-    "errMsg": "There are topic tasks [a12322] already in adding status",
-    "errCode": 200,
-    "result": false,
-    "data": ""
-    }
-
-If result is false, the writing task failed
-
-
-##### Query whether a topic is successfully created (business can be written)
-
-    clusterId	(Required) Request cluster id
-    topicName   (Required) Query topic name
-    user	(Required) After the access authorization verification needs to verify the user, it is reserved here
-
-example
-
-【POST】 /v1/topic?method=queryCanWrite
-
-    {
-    "clusterId": "1",
-    "topicName": "1",
-    "user": "test"
-    }
-
-return json
-
-    { "result":true, "errCode":0, "errMsg":"OK", }
-    { "result":false, "errCode": 100, "errMsg":"topic test is not writable"}
-    { "result":false, "errCode": 101, "errMsg":"no such topic in master"}
-
-result is false as not writable
\ No newline at end of file
+this will create a cluster with id = 1, note that this operation should not be executed repeatedly.
\ No newline at end of file
diff --git a/docs/modules/website/_category_.json b/docs/modules/website/_category_.json
index b7dc82c..b64b448 100644
--- a/docs/modules/website/_category_.json
+++ b/docs/modules/website/_category_.json
@@ -1,4 +1,4 @@
 {
   "label": "Website",
-  "position": 2
+  "position": 6
 }
\ No newline at end of file
diff --git a/docs/modules/website/quick_start.md b/docs/modules/website/quick_start.md
index a855ab2..63e0c20 100644
--- a/docs/modules/website/quick_start.md
+++ b/docs/modules/website/quick_start.md
@@ -1,5 +1,5 @@
 ---
-title: Build && Deployment
+title: Deployment
 ---
 
 ## 1 About WebSite
diff --git a/docs/quick_start/_category_.json b/docs/quick_start/_category_.json
new file mode 100644
index 0000000..c69dbd5
--- /dev/null
+++ b/docs/quick_start/_category_.json
@@ -0,0 +1,4 @@
+{
+  "label": "Quick Start",
+  "position": 3
+}
\ No newline at end of file
diff --git a/docs/user_guide/example.md b/docs/quick_start/hive_example.md
similarity index 99%
rename from docs/user_guide/example.md
rename to docs/quick_start/hive_example.md
index 6c57d7b..2ec51d6 100644
--- a/docs/user_guide/example.md
+++ b/docs/quick_start/hive_example.md
@@ -1,6 +1,6 @@
 ---
 title: Hive Example
-sidebar_position: 3
+sidebar_position: 2
 ---
 
 Here we use a simple example to help you experience InLong by Docker.
diff --git a/docs/quick_start/how_to_build.md b/docs/quick_start/how_to_build.md
new file mode 100644
index 0000000..50e81be
--- /dev/null
+++ b/docs/quick_start/how_to_build.md
@@ -0,0 +1,37 @@
+---
+title: How to Build
+sidebar_position: 1
+---
+## Download Source Code
+Download Source Code from [InLong Download Page](https://inlong.apache.org/download/main/).
+
+## Build Binary Package
+- Java [JDK 8](https://adoptopenjdk.net/?variant=openjdk8)
+- Maven 3.6.1+
+
+```
+$ mvn clean install -DskipTests
+```
+(Optional) Compile using docker image:
+```
+$ docker pull maven:3.6-openjdk-8
+$ docker run -v `pwd`:/inlong  -w /inlong maven:3.6-openjdk-8 mvn clean install -DskipTests
+```
+after compile successfully, you could find distribution file at `inlong-distribution/target` with `tar.gz` format, it includes following files:
+```
+inlong-agent
+inlong-dataproxy
+inlong-dataproxy-sdk
+inlong-manager-web
+inlong-sort
+inlong-tubemq-manager
+inlong-tubemq-server
+inlong-website
+```
+
+## Build Docker Images
+- [Docker](https://docs.docker.com/engine/install/) 19.03.1+
+
+```
+mvn clean package -DskipTests -Pdocker
+```
\ No newline at end of file
diff --git a/docs/sdk/_category_.json b/docs/sdk/_category_.json
new file mode 100644
index 0000000..6b355ca
--- /dev/null
+++ b/docs/sdk/_category_.json
@@ -0,0 +1,4 @@
+{
+  "label": "SDK",
+  "position": 6
+}
\ No newline at end of file
diff --git a/docs/modules/dataproxy-sdk/_category_.json b/docs/sdk/dataproxy-sdk/_category_.json
similarity index 100%
copy from docs/modules/dataproxy-sdk/_category_.json
copy to docs/sdk/dataproxy-sdk/_category_.json
diff --git a/docs/modules/dataproxy-sdk/architecture.md b/docs/sdk/dataproxy-sdk/overview.md
similarity index 99%
rename from docs/modules/dataproxy-sdk/architecture.md
rename to docs/sdk/dataproxy-sdk/overview.md
index 42bc4bb..da6d8d1 100644
--- a/docs/modules/dataproxy-sdk/architecture.md
+++ b/docs/sdk/dataproxy-sdk/overview.md
@@ -1,5 +1,5 @@
 ---
-title: Architecture
+title: Overview
 ---
 ## 1 intro
 When the business uses the message access method, the business generally only needs to format the data in a proxy-recognizable format (such as six-segment protocol, digital protocol, etc.)
diff --git a/docs/modules/dataproxy-sdk/quick_start.md b/docs/sdk/dataproxy-sdk/usage.md
similarity index 63%
rename from docs/modules/dataproxy-sdk/quick_start.md
rename to docs/sdk/dataproxy-sdk/usage.md
index aec4d30..7cf87b0 100644
--- a/docs/modules/dataproxy-sdk/quick_start.md
+++ b/docs/sdk/dataproxy-sdk/usage.md
@@ -1,9 +1,9 @@
 ---
-title: Build && Deployment
+title: Usage
 ---
 # how to use
 
-add dependency in pom and use the api in [architecture](architecture.md)
+add dependency in pom and use the api in [overview](overview.md)
 
     <dependency>
             <groupId>org.apache.inlong</groupId>
diff --git a/docs/user_guide/_category_.json b/docs/user_guide/_category_.json
index 6ee9555..891650a 100644
--- a/docs/user_guide/_category_.json
+++ b/docs/user_guide/_category_.json
@@ -1,4 +1,4 @@
 {
   "label": "User Guide",
-  "position": 1
+  "position": 7
 }
\ No newline at end of file
diff --git a/docs/user_guide/quick_start.md b/docs/user_guide/quick_start.md
deleted file mode 100644
index 05cd332..0000000
--- a/docs/user_guide/quick_start.md
+++ /dev/null
@@ -1,76 +0,0 @@
----
-title: Quick Start
-sidebar_position: 1
----
-
-This section contains a quick start guide to help you get started with Apache InLong.
-
-## 1 Overall architecture
-<img src="/img/inlong-structure-en.png" align="center" alt="Apache InLong"/>
-
-[Apache InLong](https://inlong.apache.org)(incubating) overall architecture is as above. This component is a one-stop data streaming platform that provides automated, secure, distributed, and efficient data publishing and subscription capabilities to help You can easily build stream-based data applications.
-
-InLong (应龙) is a divine beast in Chinese mythology who guides river into the sea, it is regarded as a metaphor of the InLong system for reporting streams of data.
-
-InLong was originally built in Tencent and has served online business for more than 8 years. It supports massive data (over 40 trillion pieces of data per day) report services under big data scenarios. The entire platform integrates 5 modules including data collection, aggregation, caching, sorting and management modules. Through this system, the business only needs to provide data sources, data service quality, data landing clusters and data landing formats, that is, data can be continu [...]
-
-
-## 2 Compile
-- Java [JDK 8](https://adoptopenjdk.net/?variant=openjdk8)
-- Maven 3.6.1+
-
-```
-$ mvn clean install -DskipTests
-```
-(Optional) Compile using docker image:
-```
-$ docker pull maven:3.6-openjdk-8
-$ docker run -v `pwd`:/inlong  -w /inlong maven:3.6-openjdk-8 mvn clean install -DskipTests
-```
-after compile successfully, you could find distribution file at `inlong-distribution/target` with `tar.gz` format, it includes following files:
-```
-inlong-agent
-inlong-dataproxy
-inlong-dataproxy-sdk
-inlong-manager-web
-inlong-sort
-inlong-tubemq-manager
-inlong-tubemq-server
-inlong-website
-```
-
-## 3 Environment Requirements
-- ZooKeeper 3.5+
-- Hadoop 2.10.x 和 Hive 2.3.x
-- MySQL 5.7+
-- Flink 1.9.x
-
-## 4 deploy InLong TubeMQ Server
-[deploy InLong TubeMQ Server](modules/tubemq/quick_start.md)
-
-## 5 deploy InLong TubeMQ Manager
-[deploy InLong TubeMQ Manager](modules/tubemq/tubemq-manager/quick_start.md)
-
-## 6 deploy InLong Manager
-[deploy InLong Manager](modules/manager/quick_start.md)
-
-## 7 deploy InLong WebSite
-[deploy InLong WebSite](modules/website/quick_start.md)
-
-## 8 deploy InLong Sort
-[deploy InLong Sort](modules/sort/quick_start.md)
-
-## 9 deploy InLong DataProxy
-[deploy InLong DataProxy](modules/dataproxy/quick_start.md)
-
-## 10 deploy InLong DataProxy-SDK
-[deploy InLong DataProxy](modules/dataproxy-sdk/quick_start.md)
-
-## 11 deploy InLong Agent
-[deploy InLong Agent](modules/agent/quick_start.md)
-
-## 12 Business configuration
-[How to configure a new business](docs/user_guide/user_manual)
-
-## 13 Data report verification
-At this stage, you can collect data through the file agent and verify whether the received data is consistent with the sent data in the specified Hive table.
diff --git a/docs/user_guide/user_manual.md b/docs/user_guide/user_manual.md
index 8f516a4..fb28663 100644
--- a/docs/user_guide/user_manual.md
+++ b/docs/user_guide/user_manual.md
@@ -1,6 +1,6 @@
 ---
-title: User Manual
-sidebar_position: 2
+title: Usage Manual
+sidebar_position: 1
 ---
 
 ## 1 User login
@@ -214,73 +214,4 @@ information, basic information about application access, and current approval pr
 Data consumption task details display basic information of current application tasks including: applicant information,
 basic consumption information, and current approval process nodes.
 
-![](/cookbooks_img//image-1624432474526.png)
-
-### 5.2 My approval
-
-As a data access officer and system member with approval authority, have the responsibility for data access or
-consumption approval.
-
-![](/cookbooks_img//image-1624432496461.png)
-
-#### 5.2.1 Data Access Approval
-
-New data access approval: currently it is a first-level approval, which is approved by the system administrator.
-
-The system administrator will review whether the access process meets the access requirements based on the data access
-business information.
-
-![](/cookbooks_img//image-1624432515850.png)
-
-#### 5.2.2 New data consumption approval
-
-New data consume approval: currently it is a first-level approval, which is approved by the person in charge of the
-business.
-
-Business approval: The person in charge of the data access business judges whether the consumption meets the business
-requirements according to the access information:
-
-![](/cookbooks_img//image-1624432535541.png)
-
-## 6 System Management
-
-Only users with the role of system administrator can use this function. They can create, modify, and delete users:
-
-![](/cookbooks_img//image-1624432652141.png)
-
-### 6.1 New user
-
-Users with system administrator rights can create new user accounts
-
-![](/cookbooks_img//image-1624432668340.png)
-
-- Account types: Ordinary users (with data access and data consumption permissions, but without data access approval and
-  account management permissions); system administrators (with data access and data consumption permissions, data access
-  approval and account management permissions)
-- username: username for login
-- user password:
-  -Effective duration: the account can be used in the system
-  ![](/cookbooks_img//image-1624432740241.png)
-
-### 6.2 Delete user
-
-The system administrator can delete the account of the created user. After the deletion, the account will stop using:
-
-![](/cookbooks_img//image-1624432759224.png)
-
-### 6.3 User Edit
-
-The system administrator can modify the created account:
-
-![](/cookbooks_img//image-1624432778845.png)
-
-The system administrator can modify the account type and effective duration to proceed:
-
-![](/cookbooks_img//image-1624432797226.png)
-
-### 6.4 Change password
-
-The user can modify the account password, click [Modify Password], enter the old password and the new password, after
-confirmation, the new password of this account will take effect:
-
-![](/cookbooks_img//image-1624432829313.png)
+![](/cookbooks_img//image-1624432474526.png)
\ No newline at end of file
diff --git a/docusaurus.config.js b/docusaurus.config.js
index 9f37c48..ed41721 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -35,7 +35,7 @@ const darkCodeTheme = require('prism-react-renderer/themes/dracula');
       ({
         docs: {
           sidebarPath: require.resolve('./sidebars.js'),
-          sidebarCollapsible: false,
+          sidebarCollapsible: true,
           // Please change this to your repo.
           editUrl: 'https://github.com/apache/incubator-inlong-website/edit/master/',
         },
@@ -75,11 +75,11 @@ const darkCodeTheme = require('prism-react-renderer/themes/dracula');
           {
             position: 'right',
             label: 'DOC',
-            to: "/docs/user_guide/quick_start",
+            to: "/docs/introduction",
             items: [
               {
                 label: "Next",
-                to: "/docs/next/user_guide/quick_start",
+                to: "/docs/next/introduction",
               },
               {
                 label: "0.11.0",
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current.json b/i18n/zh-CN/docusaurus-plugin-content-docs/current.json
index 760b298..246a467 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current.json
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current.json
@@ -3,9 +3,17 @@
     "message": "Next",
     "description": "The label for version current"
   },
-  "sidebar.tutorialSidebar.category.User Guide": {
-    "message": "引导",
-    "description": "The label for category User Guide in sidebar tutorialSidebar"
+  "sidebar.tutorialSidebar.category.Design and Concept": {
+    "message": "设计和概念",
+    "description": "The label for category Design and Concept in sidebar tutorialSidebar"
+  },
+  "sidebar.tutorialSidebar.category.Quick Start": {
+    "message": "快速开始",
+    "description": "The label for category Quick Start in sidebar tutorialSidebar"
+  },
+  "sidebar.tutorialSidebar.category.Deployment": {
+    "message": "安装部署",
+    "description": "The label for category Deployment in sidebar tutorialSidebar"
   },
   "sidebar.tutorialSidebar.category.Components": {
     "message": "组件介绍",
@@ -27,20 +35,20 @@
     "message": "DataProxy",
     "description": "The label for category DataProxy in sidebar tutorialSidebar"
   },
-  "sidebar.tutorialSidebar.category.DataProxy-SDK": {
-    "message": "DataProxy-SDK",
-    "description": "The label for category DataProxy-SDK in sidebar tutorialSidebar"
-  },
   "sidebar.tutorialSidebar.category.TubeMQ": {
     "message": "TubeMQ",
     "description": "The label for category TubeMQ in sidebar tutorialSidebar"
   },
-  "sidebar.tutorialSidebar.category.tubemq-manager": {
-    "message": "tubemq-manager",
-    "description": "The label for category tubemq-manager in sidebar tutorialSidebar"
-  },
   "sidebar.tutorialSidebar.category.Sort": {
     "message": "Sort",
     "description": "The label for category Sort in sidebar tutorialSidebar"
+  },
+  "sidebar.tutorialSidebar.category.Development": {
+    "message": "开发指引",
+    "description": "The label for category Development in sidebar tutorialSidebar"
+  },
+  "sidebar.tutorialSidebar.category.User Guide": {
+    "message": "用户指引",
+    "description": "The label for category User Guide in sidebar tutorialSidebar"
   }
 }
\ No newline at end of file
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/approval_management.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/approval_management.md
new file mode 100644
index 0000000..227923c
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/approval_management.md
@@ -0,0 +1,24 @@
+---
+title: 审批管理
+sidebar_position: 2
+---
+
+作为具有审批权限的数据接入员和系统成员,具备对数据接入或者消费审批职责:
+
+![](/cookbooks_img/image-1624432496461.png)
+
+#### 数据接入审批
+
+新建数据接入审批:目前为一级审批,由系统管理员审批。
+
+系统管理员将根据数据接入业务信息,审核此次接入流程是否符合接入要求:
+
+![](/cookbooks_img/image-1624432515850.png)
+
+#### 新建数据消费审批
+
+新建数据消费审批:目前为一级审批,由业务负责人审批。
+
+业务审批:由数据接入业务负责人根据接入信息判断此消费是否符合业务要求:
+
+![](/cookbooks_img/image-1624432535541.png)
\ No newline at end of file
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/user_management.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/user_management.md
new file mode 100644
index 0000000..f3e46d9
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/user_management.md
@@ -0,0 +1,41 @@
+---
+title: 用户管理
+sidebar_position: 1
+---
+
+角色为系统管理员的用户才可以使用此功能,他们可以创建、修改、删除用户:
+
+### 新建用户
+
+具有系统管理员权限用户,可以进行创建新用户账号:
+
+![](/cookbooks_img/image-1624432668340.png)
+
+- 账号类型: 普通用户(具有数据接入和数据消费权限,不具有数据接入审批和账号管理权限);系统管理员(具有数据接入和数据消费权限、数据接入审批和管理账号的权限)
+- 用户名称:用户登录账号ID
+- 用户密码:用户登录密码
+- 有效时长:该账号可在系统使用期限
+
+![](/cookbooks_img/image-1624432740241.png)
+
+### 删除用户
+
+系统管理员可以对已创建的用户进行账户删除,删除后此账号将停止使用:
+
+![](/cookbooks_img/image-1624432759224.png)
+
+### 修改用户
+
+系统管理员可以修改已创建的账号:
+
+![](/cookbooks_img/image-1624432778845.png)
+
+系统管理员可以修改账号类型和有效时长进行:
+
+![](/cookbooks_img/image-1624432797226.png)
+
+### 更改密码
+
+用户可以修改账号密码,点击【修改密码】,输入旧密码和新密码,确认后此账号新密码将生效:
+
+![](/cookbooks_img/image-1624432829313.png)
diff --git a/docs/contact.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/contact.md
similarity index 87%
copy from docs/contact.md
copy to i18n/zh-CN/docusaurus-plugin-content-docs/current/contact.md
index 1ebf107..09b298a 100644
--- a/docs/contact.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/contact.md
@@ -1,18 +1,18 @@
 ---
-title: Contact Us
+title: 联系我们
 sidebar_position: 10
 ---
 
-Contact us
+联系方式
 -------
-- Ask questions on: [Apache InLong Slack](https://the-asf.slack.com/archives/C01QAG6U00L)
-- Mailing lists:
+- Slack频道: [Apache InLong Slack](https://the-asf.slack.com/archives/C01QAG6U00L)
+- 邮件列表:
 
     | Name                                                                          | Scope                           |                                                                 |                                                                     |                                                                              |
     |:------------------------------------------------------------------------------|:--------------------------------|:----------------------------------------------------------------|:--------------------------------------------------------------------|:-----------------------------------------------------------------------------|
     | [dev@inlong.apache.org](mailto:dev@inlong.apache.org)     | Development-related discussions | [Subscribe](mailto:dev-subscribe@inlong.apache.org)   | [Unsubscribe](mailto:dev-unsubscribe@inlong.apache.org)   | [Archives](http://mail-archives.apache.org/mod_mbox/inlong-dev/)   |
 	
-- Home page: https://inlong.apache.org
+- 主页: https://inlong.apache.org
 - Issues: https://issues.apache.org/jira/browse/InLong
 
 
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/deployment/_category_.json b/i18n/zh-CN/docusaurus-plugin-content-docs/current/deployment/_category_.json
new file mode 100644
index 0000000..7215b38
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/deployment/_category_.json
@@ -0,0 +1,4 @@
+{
+  "label": "Build InLong",
+  "position": 7
+}
\ No newline at end of file
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/deployment/bare_metal.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/deployment/bare_metal.md
new file mode 100644
index 0000000..1396846
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/deployment/bare_metal.md
@@ -0,0 +1,37 @@
+---
+title: bare metal 部署
+sidebar_position: 4
+---
+
+## 3 环境要求
+- ZooKeeper 3.5+
+- MySQL 5.7+
+- Flink 1.9.x
+
+## 部署InLong TubeMQ Server
+[部署InLong TubeMQ Server](modules/tubemq/quick_start.md)
+
+## 部署InLong TubeMQ Manager
+[部署InLong TubeMQ Manager](modules/tubemq/tubemq-manager/quick_start.md)
+
+## 部署InLong Manager
+[部署InLong Manager](modules/manager/quick_start.md)
+
+## 部署InLong WebSite
+[部署InLong WebSite](modules/website/quick_start.md)
+
+## 部署InLong Sort
+[部署InLong Sort](modules/sort/quick_start.md)
+
+## 部署InLong DataProxy
+[部署InLong DataProxy](modules/dataproxy/quick_start.md)
+
+## 部署InLong Agent
+[部署InLong Agent](modules/agent/quick_start.md)
+
+## 业务配置
+[配置新业务](docs/user_guide/user_manual)
+
+## 数据上报验证
+到这里,您就可以通过文件Agent采集数据并在指定的Hive表中验证接收到的数据是否与发送的数据一致。
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/deployment/docker.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/deployment/docker.md
new file mode 100644
index 0000000..3f43a22
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/deployment/docker.md
@@ -0,0 +1,27 @@
+---
+title: Docker 部署
+sidebar_position: 2
+---
+
+通过Docker Compose部署InLong, 这种部署方式只适用于开发调试,不适用于生产环境.
+
+准备条件:
+- [Docker](https://docs.docker.com/engine/install/) 19.03.1+
+- Docker Compose 1.29.2+
+
+## 部署
+```
+docker-compose up -d
+```
+
+## 使用InLong
+当所有容器都成功启动后,可以访问`http://localhost`,并使用以下默认账号登录:
+```
+User: admin
+Password: inlong
+```
+
+## 销毁
+```
+docker-compose down
+```
\ No newline at end of file
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/deployment/k8s.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/deployment/k8s.md
new file mode 100644
index 0000000..340da82
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/deployment/k8s.md
@@ -0,0 +1,34 @@
+---
+title: Kubernetes 部署
+sidebar_position: 3
+---
+
+## 准备条件
+
+- Kubernetes 1.10+
+- Helm 3.0+
+- A dynamic provisioner for the PersistentVolumes(`production environment`)
+
+## 安装
+
+```shell
+kubectl create namespace inlong
+helm upgrade inlong --install -n inlong ./
+```
+
+## 配置
+
+
+
+## 卸载
+
+```shell
+helm uninstall inlong -n inlong
+```
+
+You can delete all `PVC ` if any persistent volume claims used, it will lose all data.
+
+```shell
+kubectl delete pvc -n inlong --all
+```
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/deployment/standalone.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/deployment/standalone.md
new file mode 100644
index 0000000..c897ce7
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/deployment/standalone.md
@@ -0,0 +1,7 @@
+---
+title: 单机部署
+sidebar_position: 1
+---
+
+Will be added soon
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/design_and_concept/basic_concept.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/design_and_concept/basic_concept.md
new file mode 100644
index 0000000..dab4399
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/design_and_concept/basic_concept.md
@@ -0,0 +1,6 @@
+---
+title: 基本概念
+sidebar_position: 1
+---
+
+Will be added soon
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/introduction.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/introduction.md
new file mode 100644
index 0000000..b344235
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/introduction.md
@@ -0,0 +1,45 @@
+---
+title: InLong 简介
+sidebar_position: 1
+---
+
+> InLong(应龙),中国神话故事里的神兽,引流入海,借喻 InLong 系统提供数据接入能力。
+
+## 关于 InLong
+[Apache InLong(应龙)](https://inlong.apache.org)是腾讯捐献给 Apache 社区的一站式的数据接入平台,提供自动、安全、可靠和高性能的数据传输能力,方便业务构建基于流式的数据分析、建模和应用。
+InLong 项目原名 TubeMQ ,专注于高性能、低成本的消息队列服务。为了进一步释放 TubeMQ 周边的生态能力,我们将项目升级为 InLong,专注打造一站式数据流接入服务平台。
+Apache InLong 以腾讯内部使用的 TDBank 为原型,依托万亿级别的数据接入和处理能力,整合了数据采集、汇聚、存储、分拣数据处理全流程,拥有简单易用、灵活扩展、稳定可靠等特性。
+
+## 特性
+- 简单易用
+
+  基于SaaS模式对外服务,用户只需要按主题发布和订阅数据即可完成数据的上报,传输和分发工作
+
+- 稳定可靠
+
+  系统源于实际的线上系统,服务上十万亿级的高性能及上千亿级的高可靠数据数据流量,系统稳定可靠
+
+- 功能完善
+
+  支持各种类型的数据接入方式,多种不同类型的MQ集成,以及基于配置规则的实时数据ETL和数据分拣落地,并支持以可插拔方式扩展系统能力
+
+- 服务集成
+
+  支持统一的系统监控、告警,以及细粒度的数据指标呈现,对于管道的运行情况,以数据主题为核心的数据运营情况,汇总在统一的数据指标平台,并支持通过业务设置的告警信息进行异常告警提醒
+
+- 灵活扩展
+
+  全链条上的各个模块基于协议以可插拔方式组成服务,业务可根据自身需要进行组件替换和功能扩展
+
+## 架构
+<img src="/img/inlong-structure-zh.png" align="center" alt="Apache InLong"/>
+
+## 模块
+Apache InLong 服务于数据采集到落地的整个生命周期,按数据的不同阶段提供不同的处理模块,主要包括:
+
+- **inlong-agent**,数据采集 Agent,支持从指定目录或文件读取常规日志、逐条上报。后续也将扩展 DB 采集、HTTP 上报等能力。
+- **inlong-dataproxy**,一个基于 Flume-ng 的 Proxy 组件,支持数据发送阻塞和落盘重发,拥有将接收到的数据转发到不同 MQ(消息队列)的能力。
+- **inlong-tubemq**,腾讯自研的消息队列服务,专注于大数据场景下海量数据的高性能存储和传输,在海量实践和低成本方面有着良好的核心优势。
+- **inlong-sort**,对从不同的 MQ 消费到的数据进行 ETL 处理,然后汇聚并写入 Hive、ClickHouse、Hbase、Iceberg 等存储系统。
+- **inlong-manager**,提供完整的数据服务管控能力,包括元数据、任务流、权限,OpenAPI 等。
+- **inlong-website**,用于管理数据接入的前端页面,简化整个 InLong 管控平台的使用。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/agent/architecture.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/agent/overview.md
similarity index 99%
rename from i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/agent/architecture.md
rename to i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/agent/overview.md
index 68b3590..040f595 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/agent/architecture.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/agent/overview.md
@@ -1,5 +1,5 @@
 ---
-title: 架构介绍
+title: 总览
 ---
 ## 1 InLong-Agent 概览
 InLong-Agent是一个支持多种数据源类型的收集工具,致力于实现包括file、sql、Binlog、metrics等多种异构数据源之间稳定高效的数据采集功能。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/agent/quick_start.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/agent/quick_start.md
index a5bff20..61e3cff 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/agent/quick_start.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/agent/quick_start.md
@@ -1,5 +1,5 @@
 ---
-title: 编译部署
+title: 安装部署
 ---
 
 ## 1 配置
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/dataproxy/architecture.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/dataproxy/overview.md
similarity index 99%
rename from i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/dataproxy/architecture.md
rename to i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/dataproxy/overview.md
index 272e0a8..159793e 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/dataproxy/architecture.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/dataproxy/overview.md
@@ -1,5 +1,5 @@
 ---
-title: 架构介绍
+title: 总览
 ---
 ## 1 说明
 
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/dataproxy/quick_start.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/dataproxy/quick_start.md
index 72eaacd..de5b9af 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/dataproxy/quick_start.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/dataproxy/quick_start.md
@@ -1,5 +1,5 @@
 ---
-title: 编译部署
+title: 安装部署
 ---
 ## 1 部署 DataProxy
 
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/manager/architecture.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/manager/overview.md
similarity index 98%
rename from i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/manager/architecture.md
rename to i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/manager/overview.md
index 7650366..20b4f6e 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/manager/architecture.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/manager/overview.md
@@ -1,5 +1,5 @@
 ---
-title: 架构介绍
+title: 总览
 ---
 
 ## 1 Apache InLong Manager介绍
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/manager/quick_start.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/manager/quick_start.md
index 2de98be..3238471 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/manager/quick_start.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/manager/quick_start.md
@@ -1,5 +1,5 @@
 ---
-title: 编译部署
+title: 安装部署
 ---
 
 ## 1 环境准备
@@ -17,9 +17,9 @@ title: 编译部署
   mysql> source /data/apache_inlong_manager.sql;
   ```
 
-- 参照 [编译部署TubeMQ](https://inlong.apache.org/zh-cn/docs/modules/tubemq/quick_start.html),安装并启动 Tube 集群;
+- 参照 [安装部署TubeMQ](https://inlong.apache.org/zh-cn/docs/modules/tubemq/quick_start.html),安装并启动 Tube 集群;
 
-- 参照 [编译部署TubeMQ Manager](https://inlong.apache.org/zh-cn/docs/modules/tubemq/tubemq-manager/quick_start.html),安装并启动
+- 参照 [安装部署TubeMQ Manager](https://inlong.apache.org/zh-cn/docs/modules/tubemq/tubemq-manager/quick_start.html),安装并启动
   TubeManager。
   
 ## 2 部署、启动 manager-web
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/sort/introduction.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/sort/overview.md
similarity index 97%
rename from i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/sort/introduction.md
rename to i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/sort/overview.md
index 7d24753..6e9dd52 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/sort/introduction.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/sort/overview.md
@@ -1,5 +1,6 @@
 ---
-title: 架构介绍
+title: 总览
+sidebar_position: 1
 ---
 
 # 简介
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/sort/protocol_introduction.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/sort/protocol_introduction.md
index f5c48ef..40a19c7 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/sort/protocol_introduction.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/sort/protocol_introduction.md
@@ -1,5 +1,6 @@
 ---
 title: Zookeeper配置介绍
+sidebar_position: 3
 ---
 
 # 前言
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/sort/quick_start.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/sort/quick_start.md
index fc03223..46fc560 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/sort/quick_start.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/sort/quick_start.md
@@ -1,5 +1,6 @@
 ---
-title: 编译部署
+title: 安装部署
+sidebar_position: 2
 ---
 
 ##  1 配置flink运行环境
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/client_partition_assign_introduction.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/client_partition_assign_introduction.md
index 160fa49..4d39b6d 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/client_partition_assign_introduction.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/client_partition_assign_introduction.md
@@ -1,5 +1,5 @@
 ---
-title: 客户端分区分配介绍
+title: 客户端分区分配
 ---
 
 ## 1 前言
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/clients_java.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/clients_java.md
index a767e4e..2bdb22e 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/clients_java.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/clients_java.md
@@ -1,5 +1,5 @@
 ---
-title: JAVA SDK API介绍
+title: JAVA SDK API
 ---
 
 
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/configure_introduction.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/configure_introduction.md
index c90e21d..b044534 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/configure_introduction.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/configure_introduction.md
@@ -1,5 +1,5 @@
 ---
-title: 配置参数介绍
+title: 配置参数
 ---
 
 ## 1 TubeMQ服务端配置文件说明:
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/consumer_example.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/consumer_example.md
index 93585e6..20c800e 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/consumer_example.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/consumer_example.md
@@ -1,5 +1,6 @@
 ---
 title: 消费者示例
+sidebar_position: 5
 ---
 
 ## 1 Consumer 示例
@@ -7,75 +8,70 @@ title: 消费者示例
 
 
 ### 1.1 PullConsumer 
-   ```java
-    public class PullConsumerExample {
-
-        public static void main(String[] args) throws Throwable {
-            final String masterHostAndPort = "localhost:8000";
-            final String topic = "test";
-            final String group = "test-group";
-            final ConsumerConfig consumerConfig = new ConsumerConfig(masterHostAndPort, group);
-            consumerConfig.setConsumePosition(ConsumePosition.CONSUMER_FROM_LATEST_OFFSET);
-            final MessageSessionFactory messageSessionFactory = new TubeSingleSessionFactory(consumerConfig);
-            final PullMessageConsumer messagePullConsumer = messageSessionFactory.createPullConsumer(consumerConfig);
-            messagePullConsumer.subscribe(topic, null);
-            messagePullConsumer.completeSubscribe();
-            // wait for client to join the exact consumer queue that consumer group allocated
-            while (!messagePullConsumer.isPartitionsReady(1000)) {
-                ThreadUtils.sleep(1000);
-            }
-            while (true) {
-                ConsumerResult result = messagePullConsumer.getMessage();
-                if (result.isSuccess()) {
-                    List<Message> messageList = result.getMessageList();
-                    for (Message message : messageList) {
-                        System.out.println("received message : " + message);
-                    }
-                    messagePullConsumer.confirmConsume(result.getConfirmContext(), true);
+```java
+public class PullConsumerExample {
+    public static void main(String[] args) throws Throwable {
+        final String masterHostAndPort = "localhost:8000";
+        final String topic = "test";
+        final String group = "test-group";
+        final ConsumerConfig consumerConfig = new ConsumerConfig(masterHostAndPort, group);
+        consumerConfig.setConsumePosition(ConsumePosition.CONSUMER_FROM_LATEST_OFFSET);
+        final MessageSessionFactory messageSessionFactory = new TubeSingleSessionFactory(consumerConfig);
+        final PullMessageConsumer messagePullConsumer = messageSessionFactory.createPullConsumer(consumerConfig);
+        messagePullConsumer.subscribe(topic, null);
+        messagePullConsumer.completeSubscribe();
+        // wait for client to join the exact consumer queue that consumer group allocated
+        while (!messagePullConsumer.isPartitionsReady(1000)) {
+            ThreadUtils.sleep(1000);
+        }
+        while (true) {
+            ConsumerResult result = messagePullConsumer.getMessage();
+            if (result.isSuccess()) {
+                List<Message> messageList = result.getMessageList();
+                for (Message message : messageList) {
+                    System.out.println("received message : " + message);
                 }
+                messagePullConsumer.confirmConsume(result.getConfirmContext(), true);
             }
-        }   
-
+        }
     }
-   ``` 
+}
+``` 
    
 ### 1.2 PushConsumer
-   ```java
-   public class PushConsumerExample {
-   
-        public static void test(String[] args) throws Throwable {
-            final String masterHostAndPort = "localhost:8000";
-            final String topic = "test";
-            final String group = "test-group";
-            final ConsumerConfig consumerConfig = new ConsumerConfig(masterHostAndPort, group);
-            consumerConfig.setConsumePosition(ConsumePosition.CONSUMER_FROM_LATEST_OFFSET);
-            final MessageSessionFactory messageSessionFactory = new TubeSingleSessionFactory(consumerConfig);
-            final PushMessageConsumer pushConsumer = messageSessionFactory.createPushConsumer(consumerConfig);
-            pushConsumer.subscribe(topic, null, new MessageListener() {
-
-                @Override
-                public void receiveMessages(PeerInfo peerInfo, List<Message> messages) throws InterruptedException {
-                    for (Message message : messages) {
-                        System.out.println("received message : " + new String(message.getData()));
-                    }
-                }
-
-                @Override
-                public Executor getExecutor() {
-                    return null;
-                }
-
-                @Override
-                public void stop() {
-                    //
-                }
-            });
-            pushConsumer.completeSubscribe();
-            CountDownLatch latch = new CountDownLatch(1);
-            latch.await(10, TimeUnit.MINUTES);
-        }
-    }
-    ```
+```java
+  public class PushConsumerExample {
+  
+       public static void test(String[] args) throws Throwable {
+           final String masterHostAndPort = "localhost:8000";
+           final String topic = "test";
+           final String group = "test-group";
+           final ConsumerConfig consumerConfig = new ConsumerConfig(masterHostAndPort, group);
+           consumerConfig.setConsumePosition(ConsumePosition.CONSUMER_FROM_LATEST_OFFSET);
+           final MessageSessionFactory messageSessionFactory = new TubeSingleSessionFactory(consumerConfig);
+           final PushMessageConsumer pushConsumer = messageSessionFactory.createPushConsumer(consumerConfig);
+           pushConsumer.subscribe(topic, null, new MessageListener() {
+               @Override
+               public void receiveMessages(PeerInfo peerInfo, List<Message> messages) throws InterruptedException {
+                   for (Message message : messages) {
+                       System.out.println("received message : " + new String(message.getData()));
+                   }
+               }
+               @Override
+               public Executor getExecutor() {
+                   return null;
+               }
+               @Override
+               public void stop() {
+                   //
+               }
+           });
+           pushConsumer.completeSubscribe();
+           CountDownLatch latch = new CountDownLatch(1);
+           latch.await(10, TimeUnit.MINUTES);
+       }
+   }
+```
 
 ---
 
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/deployment.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/deployment.md
deleted file mode 100644
index 9313276..0000000
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/deployment.md
+++ /dev/null
@@ -1,156 +0,0 @@
----
-title: TubeMQ编译、部署及简单使用
----
-
-## 1 工程编译打包:
-
-进入工程根目录,执行命令:
-
-```
-mvn clean package -Dmaven.test.skip
-```
-
-例如将TubeMQ源码包放在E盘根目录,按照如下方式执行上述命令,当各个子目录都编译成功时工程编译完成:
-
-![](img/sysdeployment/sys_compile.png)
-
-大家也可以进入各个子目录进行单独编译,编译过程与普通的工程编译处理过程一致。
-
-## 2 部署服务端:
-如上例子,进入..\InLong\inlong-tubemq\tubemq-server\target目录,服务侧的相关内容如下,其中apache-inlong-tubemq-server-0.9.0-incubating-SNAPSHOT-bin.tar.gz为完整的服务端安装包,里面包括执行脚本,配置文件,依赖包,以及前端的源码;apache-inlong-tubemq-server-0.9.0-incubating-SNAPSHOT.jar为服务端处理逻辑包,包含于完整工程安装包的lib里,单独提出是考虑到日常变更升级时改动点多在服务器处理逻辑上,升级的时候只需要单独替换该jar包即可:
-
-![](img/sysdeployment/sys_package.png)
-
-这里我们是全新安装,将上述完整的工程安装包部署到待安装机器上,我们这里是放置在/data/inlong目录下:
-
-![](img/sysdeployment/sys_package_list.png)
-
-
-## 3 配置系统:
-
-服务包里打包了3种角色:Master、Broker、Tools,业务使用时可以将Master和Broker放置在一起,也可以单独分开不同机器放置,依照业务对机器的规划进行处理。我们通过如下3台机器搭建一个完整的有2台Master的生产、消费环境:
-
-| 机器 | 所属角色 | TCP端口 | TLS端口 | WEB端口 | 备注 |
-| --- | --- | --- | --- | --- | --- |
-| 9.23.27.24 | **Master** | 8099 | 8199 | 8080 | 元数据存储在`/stage/meta_data` |
-| | Broker | 8123 | 8124 | 8081 | 消息储存在`/stage/msg_data` |
-| | ZooKeeper | 2181 | | | Offset储存在根目录`/tubemq` |
-| 9.23.28.24 | **Master** | 8099 | 8199 | 8080 | 元数据存储在 `/stage/meta_data` |
-| | Broker | 8123 | 8124 | 8081 | 消息储存在`/stage/msg_data` |
-| 9.23.27.160 | Producer | | | |  |
-| | Consumer | | | | |
-部署Master时需要注意:
-
-1. 部署Master的机器,Master集群可以部署1台、2台或者3台:如果要保证高可靠建议3台(任意坏1台Master对外仍然可读写配置及接入新的生产或者消费),如果只需要保证一般情况2台(任意坏1台Master对外仍然可读配置及已接入的生产和消费不受影响),最低1台(坏1台Master对外配置不可读写及已接入的生产和消费不受影响);
-2. 在完成Master的规划后,对于配置Master的机器,需要将Master所在机器加入时间同步,同时Master各个机器的IP要在各个Master机器的/etc/hosts配置里进行设置,如:
-
-![](img/sysdeployment/sys_address_host.png)
-
-以9.23.27.24和9.23.28.24为例,我们部署了Master和Broker两种角色,需要在/conf/master.ini,/resources/velocity.properties,/conf/broker.ini里进行如下配置,首先是9.23.27.24的配置:
-
-![](img/sysdeployment/sys_configure_1.png)
-
-然后是配置9.23.28.24:
-
-![](img/sysdeployment/sys_configure_2.png)
-
-要注意的是右上角的配置为Master的Web前台配置信息,需要根据Master的安装路径修改/resources/velocity.properties里的file.resource.loader.path信息。
-
-## 4 运行节点
-### 4.1 启动Master:
-
-完成如上配置设置后,首先进入主备Master所在的TubeMQ环境的bin目录,进行服务启动操作:
-
-![](img/sysdeployment/sys_master_start.png)
-
-我们首先启动9.23.27.24,然后启动9.23.28.24上的Master,如下打印可以表示主备Master都已启动成功并开启了对外服务端口:
-
-![](img/sysdeployment/sys_master_startted.png)
-
-访问Master的管控台([http://9.23.27.24:8080](http://9.23.27.24:8080) ),点击页面可以查看到如下集群信息,则表示master已成功启动:
-
-![](img/sysdeployment/sys_master_console.png)
-
-### 4.2 启动Broker:
-
-启动Broker和启动master有些差别:Master负责管理整个TubeMQ集群,包括Broker节点运行管理以及节点上部署的Topic配置管理,还有生产和消费管理等,因此,实体的Broker启动前,首先要在Master上配置Broker元数据,增加Broker相关的管理信息,如下图示:
-
-![](img/sysdeployment/sys_broker_configure.png)
-
-点击确认后形成一个草稿的Broker记录:
-
-![](img/sysdeployment/sys_broker_online.png)
-
-我们对该broker节点进行启动操作:
-
-![](img/sysdeployment/sys_broker_start.png)
-
-结果发现报错信息:
-
-![](img/sysdeployment/sys_broker_start_error.png)
-
-因为该broker目前还处在草稿状态Broker信息没有正式生效,我们回到Master管控台进行上线生效操作:
-
-![](img/sysdeployment/sys_broker_online_2.png)
-
-Master上所有的变更操作在点击确认的时候,都会弹出如上输入框,要求输入操作授权码。该信息由运维通过Master的配置文件master.ini的confModAuthToken字段进行定义:如果你知道这个集群的密码,你就可以进行该项操作,比如你是管理员,你是授权人员,或者你能登陆这个master的机器拿到这个密码,都认为你是有权操作该项功能:
-
-![](img/sysdeployment/sys_broker_deploy.png)
-
-
-然后我们再重启Broker:
-
-![](img/sysdeployment/sys_broker_restart_1.png)
-
-![](img/sysdeployment/sys_broker_restart_2.png)
-
-查看Master管控台,broker已经注册成功:
-
-![](img/sysdeployment/sys_broker_finished.png)
-
-## 5 数据生产和消费
-### 5.1 配置及生效Topic:
-
-配置Topic和配置Broker信息类似,都需要先在Master上新增元数据信息,然后才能开始使用,要不生产和消费时候会报topic不存在错误,如我们用安装包里的example对不存在的Topic名test进行生产:
-![](img/sysdeployment/test_sendmessage.png)
-
-Demo实例会报如下错误信息:
-
-![](img/sysdeployment/sys_topic_error.png)
-
-我们在Master管控台的Topic列表上加入该Topic先:
-
-![](img/sysdeployment/sys_topic_create.png)
-
-![](img/sysdeployment/sys_topic_select.png)
-
-点击确认后会有一个选择部署该新增Topic的Broker列表,选择部署范围后进行确认操作;在完成新增Topic的操作后,我们还需要对刚进行变更的配置对Broker进行重载操作,如下图示:
-
-![](img/sysdeployment/sys_topic_deploy.png)
-
-重载完成后Topic才能对外使用,我们会发现如下配置变更部分在重启完成后已改变状态:
-
-![](img/sysdeployment/sys_topic_finished.png)
-
-
-**大家需要注意的是:** 我们在重载的时候,要对待重载的Broker集合分批次进行。我们的重载通过状态机进行控制,会先进行不可读写—〉只读操作—〉可读写—〉上线运行各个子状态处理,如果所有待重启Broker全量重载,会使得已在线对外服务的Topic对外出现短暂的不可读写状况,使得生产、消费,特别是生产发送失败。
-
-### 5.2 数据生产和消费:
-
-在安装包里,我们打包了example的测试Demo,业务也可以直接使用tubemq-client-0.9.0-incubating-SNAPSHOT.jar封装自己的生产和消费逻辑,总的形式是类似,我们先执行生产者的Demo,我们可以看到Broker上已开始有数据接收:
-![](img/sysdeployment/test_sendmessage_2.png)
-
-![](img/sysdeployment/sys_node_status.png)
-
-我们再执行消费Demo,我们也可以看到消费也正常:
-
-![](img/sysdeployment/sys_node_status_2.png)
-
-在Broker的生产和消费指标日志里,相关数据已经存在:
-
-![](img/sysdeployment/sys_node_log.png)
-
-在这里,已经完成了TubeMQ的编译,部署,系统配置,启动,生产和消费。如果需要了解更深入的内容,就需要查看《TubeMQ HTTP API》里的相关内容,进行相应的配置设置。
-
----
-<a href="#top">Back to top</a>
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/architecture.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/overview.md
similarity index 99%
rename from i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/architecture.md
rename to i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/overview.md
index f2e65da..40f5321 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/architecture.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/overview.md
@@ -1,5 +1,6 @@
 ---
-title: 架构介绍
+title: 总览
+sidebar_position: 1
 ---
 
 ## 1 Apache InLong TubeMQ模块的架构 
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/producer_example.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/producer_example.md
index be2d5ce..a4beeff 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/producer_example.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/producer_example.md
@@ -1,5 +1,6 @@
 ---
 title: 生产者示例
+sidebar_position: 4
 ---
 
 ## 1 Producer 示例
@@ -8,143 +9,141 @@ TubeMQ提供了两种方式来初始化 session factory: TubeSingleSessionFactor
   - TubeMultiSessionFactory 每次调用都会创建一个session
 
 ### 1.1 TubeSingleSessionFactory
-   #### 1.1.1 Send Message Synchronously
-     ```java
-     public final class SyncProducerExample {
-    
-        public static void main(String[] args) throws Throwable {
-            final String masterHostAndPort = "localhost:8000";
-            final TubeClientConfig clientConfig = new TubeClientConfig(masterHostAndPort);
-            final MessageSessionFactory messageSessionFactory = new TubeSingleSessionFactory(clientConfig);
-            final MessageProducer messageProducer = messageSessionFactory.createProducer();
-            final String topic = "test";
-            final String body = "This is a test message from single-session-factory!";
-            byte[] bodyData = StringUtils.getBytesUtf8(body);
-            messageProducer.publish(topic);
-            Message message = new Message(topic, bodyData);
-            MessageSentResult result = messageProducer.sendMessage(message);
-            if (result.isSuccess()) {
-                System.out.println("sync send message : " + message);
-            }
-            messageProducer.shutdown();
-        }
-    }
-    ```
-     
-   #### 1.1.2 Send Message Asynchronously
-     ```java
-     public final class AsyncProducerExample {
-     
-        public static void main(String[] args) throws Throwable {
-            final String masterHostAndPort = "localhost:8000";
-            final TubeClientConfig clientConfig = new TubeClientConfig(masterHostAndPort);
-            final MessageSessionFactory messageSessionFactory = new TubeSingleSessionFactory(clientConfig);
-            final MessageProducer messageProducer = messageSessionFactory.createProducer();
-            final String topic = "test";
-            final String body = "async send message from single-session-factory!";
-            byte[] bodyData = StringUtils.getBytesUtf8(body);
-            messageProducer.publish(topic);
-            final Message message = new Message(topic, bodyData);
-            messageProducer.sendMessage(message, new MessageSentCallback(){
-                @Override
-                public void onMessageSent(MessageSentResult result) {
-                    if (result.isSuccess()) {
-                        System.out.println("async send message : " + message);
-                    } else {
-                        System.out.println("async send message failed : " + result.getErrMsg());
-                    }
-                }
-                @Override
-                public void onException(Throwable e) {
-                    System.out.println("async send message error : " + e);
-                }
-            });
-            messageProducer.shutdown();
-        }
 
-    }
-    ```
+#### 1.1.1 Send Message Synchronously
+```java
+   
+   public final class SyncProducerExample {
+   
+       public static void main(String[] args) throws Throwable {
+           final String masterHostAndPort = "localhost:8000";
+           final TubeClientConfig clientConfig = new TubeClientConfig(masterHostAndPort);
+           final MessageSessionFactory messageSessionFactory = new TubeSingleSessionFactory(clientConfig);
+           final MessageProducer messageProducer = messageSessionFactory.createProducer();
+           final String topic = "test";
+           final String body = "This is a test message from single-session-factory!";
+           byte[] bodyData = StringUtils.getBytesUtf8(body);
+           messageProducer.publish(topic);
+           Message message = new Message(topic, bodyData);
+           MessageSentResult result = messageProducer.sendMessage(message);
+           if (result.isSuccess()) {
+               System.out.println("sync send message : " + message);
+           }
+           messageProducer.shutdown();
+       }
+   }
+```
      
-   #### 1.1.3 Send Message With Attributes
-     ```java
-     public final class ProducerWithAttributeExample {
+#### 1.1.2 Send Message Asynchronously
+```java
+   public final class AsyncProducerExample {
+   
+      public static void main(String[] args) throws Throwable {
+          final String masterHostAndPort = "localhost:8000";
+          final TubeClientConfig clientConfig = new TubeClientConfig(masterHostAndPort);
+          final MessageSessionFactory messageSessionFactory = new TubeSingleSessionFactory(clientConfig);
+          final MessageProducer messageProducer = messageSessionFactory.createProducer();
+          final String topic = "test";
+          final String body = "async send message from single-session-factory!";
+          byte[] bodyData = StringUtils.getBytesUtf8(body);
+          messageProducer.publish(topic);
+          final Message message = new Message(topic, bodyData);
+          messageProducer.sendMessage(message, new MessageSentCallback(){
+              @Override
+              public void onMessageSent(MessageSentResult result) {
+                  if (result.isSuccess()) {
+                      System.out.println("async send message : " + message);
+                  } else {
+                      System.out.println("async send message failed : " + result.getErrMsg());
+                  }
+              }
+              @Override
+              public void onException(Throwable e) {
+                  System.out.println("async send message error : " + e);
+              }
+          });
+          messageProducer.shutdown();
+      }
+```
      
-        public static void main(String[] args) throws Throwable {
-            final String masterHostAndPort = "localhost:8000";
-            final TubeClientConfig clientConfig = new TubeClientConfig(masterHostAndPort);
-            final MessageSessionFactory messageSessionFactory = new TubeSingleSessionFactory(clientConfig);
-            final MessageProducer messageProducer = messageSessionFactory.createProducer();
-            final String topic = "test";
-            final String body = "send message with attribute from single-session-factory!";
-            byte[] bodyData = StringUtils.getBytesUtf8(body);
-            messageProducer.publish(topic);
-            Message message = new Message(topic, bodyData);
-            //set attribute
-            message.setAttrKeyVal("test_key", "test value");
-            //msgType is used for consumer filtering, and msgTime(accurate to minute) is used as the pipe to send and receive statistics
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm");
-            message.putSystemHeader("test", sdf.format(new Date()));
-            messageProducer.sendMessage(message);
-            messageProducer.shutdown();
-        }
-
-    }
-    ```
+#### 1.1.3 Send Message With Attributes
+```java
+   public final class ProducerWithAttributeExample {
+   
+      public static void main(String[] args) throws Throwable {
+          final String masterHostAndPort = "localhost:8000";
+          final TubeClientConfig clientConfig = new TubeClientConfig(masterHostAndPort);
+          final MessageSessionFactory messageSessionFactory = new TubeSingleSessionFactory(clientConfig);
+          final MessageProducer messageProducer = messageSessionFactory.createProducer();
+          final String topic = "test";
+          final String body = "send message with attribute from single-session-factory!";
+          byte[] bodyData = StringUtils.getBytesUtf8(body);
+          messageProducer.publish(topic);
+          Message message = new Message(topic, bodyData);
+          //set attribute
+          message.setAttrKeyVal("test_key", "test value");
+          //msgType is used for consumer filtering, and msgTime(accurate to minute) is used as the pipe to send and receive statistics
+          SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm");
+          message.putSystemHeader("test", sdf.format(new Date()));
+          messageProducer.sendMessage(message);
+          messageProducer.shutdown();
+      }
+```
      
 ### 1.2 TubeMultiSessionFactory
 
-    ```java
-    public class MultiSessionProducerExample {
-        
-        public static void main(String[] args) throws Throwable {
-            final int SESSION_FACTORY_NUM = 10;
-            final String masterHostAndPort = "localhost:8000";
-            final TubeClientConfig clientConfig = new TubeClientConfig(masterHostAndPort);
-            final List<MessageSessionFactory> sessionFactoryList = new ArrayList<>(SESSION_FACTORY_NUM);
-            final ExecutorService sendExecutorService = Executors.newFixedThreadPool(SESSION_FACTORY_NUM);
-            final CountDownLatch latch = new CountDownLatch(SESSION_FACTORY_NUM);
-            for (int i = 0; i < SESSION_FACTORY_NUM; i++) {
-                TubeMultiSessionFactory tubeMultiSessionFactory = new TubeMultiSessionFactory(clientConfig);
-                sessionFactoryList.add(tubeMultiSessionFactory);
-                MessageProducer producer = tubeMultiSessionFactory.createProducer();
-                Sender sender = new Sender(producer, latch);
-                sendExecutorService.submit(sender);
-            }
-            latch.await();
-            sendExecutorService.shutdownNow();
-            for (MessageSessionFactory sessionFactory : sessionFactoryList) {
-                sessionFactory.shutdown();
-            }
-        }
-    
-        private static class Sender implements Runnable {
-            
-            private MessageProducer producer;
-            
-            private CountDownLatch latch;
-    
-            public Sender(MessageProducer producer, CountDownLatch latch) {
-                this.producer = producer;
-                this.latch = latch;
-            }
-    
-            @Override
-            public void run() {
-                final String topic = "test";
-                try {
-                    producer.publish(topic);
-                    final byte[] bodyData = StringUtils.getBytesUtf8("This is a test message from multi-session factory");
-                    Message message = new Message(topic, bodyData);
-                    producer.sendMessage(message);
-                    producer.shutdown();
-                } catch (Throwable ex) {
-                    System.out.println("send message error : " + ex);
-                } finally {
-                    latch.countDown();
-                }
-            }
-        }
-    }
-    ```
+```java
+   public class MultiSessionProducerExample {
+       
+       public static void main(String[] args) throws Throwable {
+           final int SESSION_FACTORY_NUM = 10;
+           final String masterHostAndPort = "localhost:8000";
+           final TubeClientConfig clientConfig = new TubeClientConfig(masterHostAndPort);
+           final List<MessageSessionFactory> sessionFactoryList = new ArrayList<>(SESSION_FACTORY_NUM);
+           final ExecutorService sendExecutorService = Executors.newFixedThreadPool(SESSION_FACTORY_NUM);
+           final CountDownLatch latch = new CountDownLatch(SESSION_FACTORY_NUM);
+           for (int i = 0; i < SESSION_FACTORY_NUM; i++) {
+               TubeMultiSessionFactory tubeMultiSessionFactory = new TubeMultiSessionFactory(clientConfig);
+               sessionFactoryList.add(tubeMultiSessionFactory);
+               MessageProducer producer = tubeMultiSessionFactory.createProducer();
+               Sender sender = new Sender(producer, latch);
+               sendExecutorService.submit(sender);
+           }
+           latch.await();
+           sendExecutorService.shutdownNow();
+           for (MessageSessionFactory sessionFactory : sessionFactoryList) {
+               sessionFactory.shutdown();
+           }
+       }
+   
+       private static class Sender implements Runnable {
+           
+           private MessageProducer producer;
+           
+           private CountDownLatch latch;
+   
+           public Sender(MessageProducer producer, CountDownLatch latch) {
+               this.producer = producer;
+               this.latch = latch;
+           }
+   
+           @Override
+           public void run() {
+               final String topic = "test";
+               try {
+                   producer.publish(topic);
+                   final byte[] bodyData = StringUtils.getBytesUtf8("This is a test message from multi-session factory");
+                   Message message = new Message(topic, bodyData);
+                   producer.sendMessage(message);
+                   producer.shutdown();
+               } catch (Throwable ex) {
+                   System.out.println("send message error : " + ex);
+               } finally {
+                   latch.countDown();
+               }
+           }
+       }
+   }
+```
 ---
-<a href="#top">Back to top</a>    
+<a href="#top">Back to top</a>
\ No newline at end of file
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/quick_start.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/quick_start.md
index 191bc30..fdf0fe5 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/quick_start.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/quick_start.md
@@ -1,5 +1,6 @@
 ---
 title: 快速开始
+sidebar_position: 1
 ---
 ## 1 部署运行
 
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/tubemq-manager/_category_.json b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/tubemq-manager/_category_.json
new file mode 100644
index 0000000..fb895d8
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/tubemq-manager/_category_.json
@@ -0,0 +1,4 @@
+{
+  "label": "tubemq-manager",
+  "position": 5
+}
\ No newline at end of file
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/tubemq-manager/quick_start.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/tubemq-manager/overview.md
similarity index 63%
copy from i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/tubemq-manager/quick_start.md
copy to i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/tubemq-manager/overview.md
index b4d551f..1427a08 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/tubemq-manager/quick_start.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/tubemq-manager/overview.md
@@ -1,44 +1,8 @@
-## 1 部署TubeMQ Manager
-安装文件在inlong-tubemq-manager目录.
-
-### 1.1 配置
-- 在mysql中创建`tubemanager`数据和相应用户.
-- 在conf/application.properties中添加mysql信息:
-
-```ini
-# mysql configuration for manager
-spring.datasource.url=jdbc:mysql://mysql_ip:mysql_port/tubemanager
-spring.datasource.username=mysql_username
-spring.datasource.password=mysql_password
-```
-
-### 1.2 启动服务
-
-``` bash
-$ bin/start-manager.sh 
-```
-
-### 1.3 初始化TubeMQ集群
-
-    vim bin/init-tube-cluster.sh
-
-替换如下六个参数
-```
-TUBE_MANAGER_IP=   //tube manager服务启动ip
-TUBE_MANAGER_PORT=   //tube manager服务启动port
-TUBE_MASTER_IP=   //tube 集群master ip
-TUBE_MASTER_PORT=
-TUBE_MASTER_WEB_PORT=
-TUBE_MASTER_TOKEN=
-```
-
-然后执行以下命令:
-```
-sh bin/init-tube-cluster.sh
-```
-如上操作会创建一个clusterId为1的tube集群,注意该操作只进行一次,之后重启服务无需新建集群
-
-### 1.4 附录:其它操作接口
+---
+title: 总览
+---
+
+操作接口
 
 #### cluster
 查询clusterId以及clusterName全量数据 (get)
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/tubemq-manager/quick_start.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/tubemq-manager/quick_start.md
index b4d551f..7eee8c8 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/tubemq-manager/quick_start.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/tubemq-manager/quick_start.md
@@ -1,3 +1,7 @@
+---
+title: 安装部署
+---
+
 ## 1 部署TubeMQ Manager
 安装文件在inlong-tubemq-manager目录.
 
@@ -36,88 +40,4 @@ TUBE_MASTER_TOKEN=
 ```
 sh bin/init-tube-cluster.sh
 ```
-如上操作会创建一个clusterId为1的tube集群,注意该操作只进行一次,之后重启服务无需新建集群
-
-### 1.4 附录:其它操作接口
-
-#### cluster
-查询clusterId以及clusterName全量数据 (get)
-
-示例
-
-【GET】 /v1/cluster
-
-返回值
-
-    {
-    "errMsg": "",
-    "errCode": 0,
-    "result": true,
-    "data": "[{\"clusterId\":1,\"clusterName\":\"1124\", \"masterIp\":\"127.0.0.1\"}]"
-    }
-
-#### topic
-
-#### 添加topicTask
-
-    type	(必填) 请求类型,字段填写:op_query
-    clusterId	(必填) 请求集群id
-    addTopicTasks (必填) topicTasks,创建task任务json,
-    user	(必填) 之后接入权限验证需要验证用户,这里预留出来
-
-addTopicTasks目前只包括一个字段为topicName
-之后接入region设计会新加入region字段表示不同区域的broker
-目前一个addTopicTask会在cluster中的所有broker创建topic
-
-
-AddTopicTasks 为以下对象的List,可携带多个创建topic请求
-
-    topicName	(必填) topic名称
-
-示例
-
-【POST】 /v1/task?method=addTopicTask
-
-    {
-    "clusterId": "1",
-    "addTopicTasks": [{"topicName": "1"}],
-    "user": "test"
-    }
-
-返回json格式样例
-
-    {
-    "errMsg": "There are topic tasks [a12322] already in adding status",
-    "errCode": 200,
-    "result": false,
-    "data": ""
-    }
-
-result为false为写入task失败
-
-
-#### 查询某一个topic是否创建成功(业务可以写入)
-
-    clusterId	(必填) 请求集群id
-    topicName   (必填) 查询topic名称
-    user	(必填) 之后接入权限验证需要验证用户,这里预留出来
-
-
-示例
-
-【POST】 /v1/topic?method=queryCanWrite
-
-    {
-    "clusterId": "1",
-    "topicName": "1",
-    "user": "test"
-    }
-
-
-返回json格式样例
-
-    { "result":true, "errCode":0, "errMsg":"OK", }
-    { "result":false, "errCode": 100, "errMsg":"topic test is not writable"}
-    { "result":false, "errCode": 101, "errMsg":"no such topic in master"}
-
-result为false为不可写
\ No newline at end of file
+如上操作会创建一个clusterId为1的tube集群,注意该操作只进行一次,之后重启服务无需新建集群
\ No newline at end of file
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/tubemq_perf_test_vs_Kafka_cn.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/tubemq_perf_test_vs_Kafka_cn.md
index 4627320..0ebcd0c 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/tubemq_perf_test_vs_Kafka_cn.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/tubemq/tubemq_perf_test_vs_Kafka_cn.md
@@ -1,5 +1,5 @@
 ---
-title: TubeMQ VS Kafka性能对比测试总结
+title: TubeMQ VS Kafka
 ---
 
 ## 1 背景
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/website/quick_start.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/website/overview.md
similarity index 96%
rename from i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/website/quick_start.md
rename to i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/website/overview.md
index 157bb07..fc0eb53 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/website/quick_start.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/website/overview.md
@@ -1,5 +1,5 @@
 ---
-title: 编译部署
+title: 安装部署
 ---
 
 ## 1 关于 WebSite
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/user_guide/example.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/hive_example.md
similarity index 99%
rename from i18n/zh-CN/docusaurus-plugin-content-docs/current/user_guide/example.md
rename to i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/hive_example.md
index ae65018..1a8c4d0 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/user_guide/example.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/hive_example.md
@@ -1,6 +1,6 @@
 ---
 title: 入库 Hive 示例
-sidebar_position: 3
+sidebar_position: 2
 ---
 
 本节用一个简单的示例,帮助您使用 Docker 快速体验 InLong 的完整流程。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/how_to_build.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/how_to_build.md
new file mode 100644
index 0000000..d2c7322
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/how_to_build.md
@@ -0,0 +1,37 @@
+---
+title: 如何编译
+sidebar_position: 1
+---
+## 下载源码
+从[InLong Download Page](https://inlong.apache.org/download/main/)下载源码.
+
+## 编译二进制文件
+- Java [JDK 8](https://adoptopenjdk.net/?variant=openjdk8)
+- Maven 3.6.1+
+
+```
+$ mvn clean install -DskipTests
+```
+(可选) 使用docker编译:
+```
+$ docker pull maven:3.6-openjdk-8
+$ docker run -v `pwd`:/inlong  -w /inlong maven:3.6-openjdk-8 mvn clean install -DskipTests
+```
+若编译成功,在`inlong-distribution/target`下会找到`tar.gz`格式的安装包,解压安装目录,包括各个模块安装文件:
+```
+inlong-agent
+inlong-dataproxy
+inlong-dataproxy-sdk
+inlong-manager-web
+inlong-sort
+inlong-tubemq-manager
+inlong-tubemq-server
+inlong-website
+```
+
+## 编译Docker镜像
+- [Docker](https://docs.docker.com/engine/install/) 19.03.1+
+
+```
+mvn clean package -DskipTests -Pdocker
+```
\ No newline at end of file
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/sdk/_category_.json b/i18n/zh-CN/docusaurus-plugin-content-docs/current/sdk/_category_.json
new file mode 100644
index 0000000..6b355ca
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/sdk/_category_.json
@@ -0,0 +1,4 @@
+{
+  "label": "SDK",
+  "position": 6
+}
\ No newline at end of file
diff --git a/docs/modules/dataproxy-sdk/_category_.json b/i18n/zh-CN/docusaurus-plugin-content-docs/current/sdk/dataproxy-sdk/_category_.json
similarity index 100%
rename from docs/modules/dataproxy-sdk/_category_.json
rename to i18n/zh-CN/docusaurus-plugin-content-docs/current/sdk/dataproxy-sdk/_category_.json
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/dataproxy-sdk/architecture.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/sdk/dataproxy-sdk/overview.md
similarity index 93%
rename from i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/dataproxy-sdk/architecture.md
rename to i18n/zh-CN/docusaurus-plugin-content-docs/current/sdk/dataproxy-sdk/overview.md
index ea69a87..ede0758 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/dataproxy-sdk/architecture.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/sdk/dataproxy-sdk/overview.md
@@ -1,7 +1,7 @@
 ---
-title: 架构介绍
+title: 总览
 ---
-## 1 说明
+# 一、说明
 
 在业务使用消息接入方式时,业务一般仅需将数据按照DataProxy可识别的格式(如六段协议、数字化协议等)
 进行组包发送,就可以将数据接入到inlong。但为了保证数据可靠性、负载均衡、动态更新proxy列表等安全特性
@@ -9,9 +9,9 @@ title: 架构介绍
 
 API的设计初衷就是为了简化用户接入,承担部分可靠性相关的逻辑。用户通过在服务送程序中集成API后,即可将数据发送到DataProxy,而不用关心组包格式、负载均衡等逻辑。
 
-## 2 功能说明
+# 二、功能说明
 
-### 2.1 整体功能说明
+## 2.1 整体功能说明
 
 |  功能   | 详细描述  |
 |  ----  | ----  |
@@ -23,9 +23,9 @@ API的设计初衷就是为了简化用户接入,承担部分可靠性相关
 | DataProxy列表持久化(新)  | 根据业务id对DataProxy列表持久化,防止程序启动时配置中心发生故障无法发送数据
 
 
-### 2.2 数据发送功能说明
+## 2.2 数据发送功能说明
 
-#### 同步批量函数
+### 同步批量函数
 
     public SendResult sendMessage(List<byte[]> bodyList, String groupId, String streamId, long dt, long timeout, TimeUnit timeUnit)
 
@@ -35,7 +35,7 @@ API的设计初衷就是为了简化用户接入,承担部分可靠性相关
 
 
 
-#### 同步单条函数
+###同步单条函数
 
     public SendResult sendMessage(byte[] body, String groupId, String streamId, long dt, long timeout, TimeUnit timeUnit)
 
@@ -45,7 +45,7 @@ API的设计初衷就是为了简化用户接入,承担部分可靠性相关
 
 
 
-#### 异步批量函数
+###异步批量函数
 
     public void asyncSendMessage(SendMessageCallback callback, List<byte[]> bodyList, String groupId, String streamId, long dt, long timeout,TimeUnit timeUnit)
 
@@ -54,12 +54,10 @@ API的设计初衷就是为了简化用户接入,承担部分可靠性相关
     SendMessageCallback 是处理消息的callback。bodyList为用户需要发送的多条数据的集合,多条数据的总长度建议小于512k。groupId是业务id,streamId是接口id。dt表示该数据的时间戳,精确到毫秒级别。也可直接设置为0,此时api会后台获取当前时间作为其时间戳。timeout和timeUnit是发送数据的超时时间,一般建议设置成20s。
 
 
-#### 异步单条函数
+###异步单条函数
 
     public void asyncSendMessage(SendMessageCallback callback, byte[] body, String groupId, String streamId, long dt, long timeout, TimeUnit timeUnit)
 
     参数说明
 
-    body为单条消息内容,其余各参数涵义基本与批量发送接口一致
-
-
+    body为单条消息内容,其余各参数涵义基本与批量发送接口一致
\ No newline at end of file
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/dataproxy-sdk/quick_start.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/sdk/dataproxy-sdk/usage.md
similarity index 54%
rename from i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/dataproxy-sdk/quick_start.md
rename to i18n/zh-CN/docusaurus-plugin-content-docs/current/sdk/dataproxy-sdk/usage.md
index 72b8179..0a5f048 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/dataproxy-sdk/quick_start.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/sdk/dataproxy-sdk/usage.md
@@ -1,9 +1,9 @@
 ---
-title: 编译部署
+title: 使用
 ---
-# 使用
+# 如何使用
 
-编写java程序时,增加pom配置如下并使用[architecture](architecture.md)中定义的api进行发送:
+编写java程序时,增加pom配置如下并使用[总览](overview.md)中定义的api进行发送:
 
     <dependency>
             <groupId>org.apache.inlong</groupId>
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/user_guide/quick_start.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/user_guide/quick_start.md
deleted file mode 100644
index 934515b..0000000
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/user_guide/quick_start.md
+++ /dev/null
@@ -1,76 +0,0 @@
----
-title: 快速开始
-sidebar_position: 1
----
-
-本节包含快速入门指南,可帮助您开始使用 Apache InLong。
-
-## 1 整体架构
-<img src="/img/inlong-structure-zh.png" align="center" alt="Apache InLong"/>
-
-[Apache InLong](https://inlong.apache.org)(incubating) 整体架构如上,该组件是一站式数据流媒体平台,提供自动化、安全、分布式、高效的数据发布和订阅能力,帮助您轻松构建基于流的数据应用程序。
-
-InLong(应龙)是中国神话故事里的神兽,可以引流入海,借喻InLong可用于流式数据上报功能。
-
-InLong(应龙) 最初建于腾讯,服务线上业务8年多,支持大数据场景下的海量数据(每天40万亿条数据规模以上)报表服务。整个平台集成了数据采集、汇聚、缓存、分拣和管理模块等共5个模块,通过这个系统,业务只需要提供数据源、数据服务质量、数据落地集群和数据落地格式,即数据可以源源不断地将数据从源集群推送到目标集群,极大满足了业务大数据场景下的数据上报服务需求。
-
-## 2 编译
-- Java [JDK 8](https://adoptopenjdk.net/?variant=openjdk8)
-- Maven 3.6.1+
-
-```
-$ mvn clean install -DskipTests
-```
-(可选) 使用docker编译:
-```
-$ docker pull maven:3.6-openjdk-8
-$ docker run -v `pwd`:/inlong  -w /inlong maven:3.6-openjdk-8 mvn clean install -DskipTests
-```
-若编译成功,在`inlong-distribution/target`下会找到`tar.gz`格式的安装包,解压安装目录,包括各个模块安装文件:
-```
-inlong-agent
-inlong-dataproxy
-inlong-dataproxy-sdk
-inlong-manager-web
-inlong-sort
-inlong-tubemq-manager
-inlong-tubemq-server
-inlong-website
-```
-
-## 3 环境要求
-- ZooKeeper 3.5+
-- Hadoop 2.10.x 和 Hive 2.3.x
-- MySQL 5.7+
-- Flink 1.9.x
-
-## 4 部署InLong TubeMQ Server
-[部署InLong TubeMQ Server](modules/tubemq/quick_start.md)
-
-## 5 部署InLong TubeMQ Manager
-[部署InLong TubeMQ Manager](modules/tubemq/tubemq-manager/quick_start.md)
-
-## 6 部署InLong Manager
-[部署InLong Manager](modules/manager/quick_start.md)
-
-## 7 部署InLong WebSite
-[部署InLong WebSite](modules/website/quick_start.md)
-
-## 8 部署InLong Sort
-[部署InLong Sort](modules/sort/quick_start.md)
-
-## 9 部署InLong DataProxy
-[部署InLong DataProxy](modules/dataproxy/quick_start.md)
-
-## 10 部署InLong DataProxy-SDK
-[部署InLong DataProxy](modules/dataproxy-sdk/quick_start.md)
-
-## 11 部署InLong Agent
-[部署InLong Agent](modules/agent/quick_start.md)
-
-## 12 业务配置
-[配置新业务](docs/user_guide/user_manual)
-
-## 13 数据上报验证
-到这里,您就可以通过文件Agent采集数据并在指定的Hive表中验证接收到的数据是否与发送的数据一致。
-
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/user_guide/user_manual.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/user_guide/user_manual.md
index d6354ad..32dd907 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/user_guide/user_manual.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/user_guide/user_manual.md
@@ -1,6 +1,6 @@
 ---
-title: 用户手册
-sidebar_position: 2
+title: 使用手册
+sidebar_position: 1
 ---
 
 ## 1 用户登录
@@ -180,67 +180,4 @@ HIVE流向:
 
 数据消费任务详情展示目前申请任务基础信息包括:申请人信息、基础消费信息,以及目前审批进程节点:
 
-![](/cookbooks_img/image-1624432474526.png)
-
-### 5.2 我的审批
-
-作为具有审批权限的数据接入员和系统成员,具备对数据接入或者消费审批职责:
-
-![](/cookbooks_img/image-1624432496461.png)
-
-#### 5.2.1 数据接入审批
-
-新建数据接入审批:目前为一级审批,由系统管理员审批。
-
-系统管理员将根据数据接入业务信息,审核此次接入流程是否符合接入要求:
-
-![](/cookbooks_img/image-1624432515850.png)
-
-#### 5.2.2 新建数据消费审批
-
-新建数据消费审批:目前为一级审批,由业务负责人审批。
-
-业务审批:由数据接入业务负责人根据接入信息判断此消费是否符合业务要求:
-
-![](/cookbooks_img/image-1624432535541.png)
-
-## 6 系统管理
-
-角色为系统管理员的用户才可以使用此功能,他们可以创建、修改、删除用户:
-
-![](/cookbooks_img/image-1624432652141.png)
-
-### 6.1 新建用户
-
-具有系统管理员权限用户,可以进行创建新用户账号:
-
-![](/cookbooks_img/image-1624432668340.png)
-
-- 账号类型: 普通用户(具有数据接入和数据消费权限,不具有数据接入审批和账号管理权限);系统管理员(具有数据接入和数据消费权限、数据接入审批和管理账号的权限)
-- 用户名称:用户登录账号ID
-- 用户密码:用户登录密码
-- 有效时长:该账号可在系统使用期限
-
-![](/cookbooks_img/image-1624432740241.png)
-
-### 6.2 删除用户
-
-系统管理员可以对已创建的用户进行账户删除,删除后此账号将停止使用:
-
-![](/cookbooks_img/image-1624432759224.png)
-
-### 6.3 修改用户
-
-系统管理员可以修改已创建的账号:
-
-![](/cookbooks_img/image-1624432778845.png)
-
-系统管理员可以修改账号类型和有效时长进行:
-
-![](/cookbooks_img/image-1624432797226.png)
-
-### 6.4 更改密码
-
-用户可以修改账号密码,点击【修改密码】,输入旧密码和新密码,确认后此账号新密码将生效:
-
-![](/cookbooks_img/image-1624432829313.png)
+![](/cookbooks_img/image-1624432474526.png)
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..e10a23b
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,19610 @@
+{
+  "name": "docs-website",
+  "version": "0.0.0",
+  "lockfileVersion": 1,
+  "requires": true,
+  "dependencies": {
+    "@algolia/autocomplete-core": {
+      "version": "1.2.2",
+      "resolved": "https://mirrors.tencent.com/npm/@algolia%2fautocomplete-core/-/autocomplete-core-1.2.2.tgz",
+      "integrity": "sha512-JOQaURze45qVa8OOFDh+ozj2a/ObSRsVyz6Zd0aiBeej+RSTqrr1hDVpGNbbXYLW26G5ujuc9QIdH+rBHn95nw==",
+      "requires": {
+        "@algolia/autocomplete-shared": "1.2.2"
+      }
+    },
+    "@algolia/autocomplete-preset-algolia": {
+      "version": "1.2.2",
+      "resolved": "https://mirrors.tencent.com/npm/@algolia%2fautocomplete-preset-algolia/-/autocomplete-preset-algolia-1.2.2.tgz",
+      "integrity": "sha512-AZkh+bAMaJDzMZTelFOXJTJqkp5VPGH8W3n0B+Ggce7DdozlMRsDLguKTCQAkZ0dJ1EbBPyFL5ztL/JImB137Q==",
+      "requires": {
+        "@algolia/autocomplete-shared": "1.2.2"
+      }
+    },
+    "@algolia/autocomplete-shared": {
+      "version": "1.2.2",
+      "resolved": "https://mirrors.tencent.com/npm/@algolia%2fautocomplete-shared/-/autocomplete-shared-1.2.2.tgz",
+      "integrity": "sha512-mLTl7d2C1xVVazHt/bqh9EE/u2lbp5YOxLDdcjILXmUqOs5HH1D4SuySblXaQG1uf28FhTqMGp35qE5wJQnqAw=="
+    },
+    "@algolia/cache-browser-local-storage": {
+      "version": "4.11.0",
+      "resolved": "https://mirrors.tencent.com/npm/@algolia%2fcache-browser-local-storage/-/cache-browser-local-storage-4.11.0.tgz",
+      "integrity": "sha512-4sr9vHIG1fVA9dONagdzhsI/6M5mjs/qOe2xUP0yBmwsTsuwiZq3+Xu6D3dsxsuFetcJgC6ydQoCW8b7fDJHYQ==",
+      "requires": {
+        "@algolia/cache-common": "4.11.0"
+      }
+    },
+    "@algolia/cache-common": {
+      "version": "4.11.0",
+      "resolved": "https://mirrors.tencent.com/npm/@algolia%2fcache-common/-/cache-common-4.11.0.tgz",
+      "integrity": "sha512-lODcJRuPXqf+6mp0h6bOxPMlbNoyn3VfjBVcQh70EDP0/xExZbkpecgHyyZK4kWg+evu+mmgvTK3GVHnet/xKw=="
+    },
+    "@algolia/cache-in-memory": {
+      "version": "4.11.0",
+      "resolved": "https://mirrors.tencent.com/npm/@algolia%2fcache-in-memory/-/cache-in-memory-4.11.0.tgz",
+      "integrity": "sha512-aBz+stMSTBOBaBEQ43zJXz2DnwS7fL6dR0e2myehAgtfAWlWwLDHruc/98VOy1ZAcBk1blE2LCU02bT5HekGxQ==",
+      "requires": {
+        "@algolia/cache-common": "4.11.0"
+      }
+    },
+    "@algolia/client-account": {
+      "version": "4.11.0",
+      "resolved": "https://mirrors.tencent.com/npm/@algolia%2fclient-account/-/client-account-4.11.0.tgz",
+      "integrity": "sha512-jwmFBoUSzoMwMqgD3PmzFJV/d19p1RJXB6C1ADz4ju4mU7rkaQLtqyZroQpheLoU5s5Tilmn/T8/0U2XLoJCRQ==",
+      "requires": {
+        "@algolia/client-common": "4.11.0",
+        "@algolia/client-search": "4.11.0",
+        "@algolia/transporter": "4.11.0"
+      }
+    },
+    "@algolia/client-analytics": {
+      "version": "4.11.0",
+      "resolved": "https://mirrors.tencent.com/npm/@algolia%2fclient-analytics/-/client-analytics-4.11.0.tgz",
+      "integrity": "sha512-v5U9585aeEdYml7JqggHAj3E5CQ+jPwGVztPVhakBk8H/cmLyPS2g8wvmIbaEZCHmWn4TqFj3EBHVYxAl36fSA==",
+      "requires": {
+        "@algolia/client-common": "4.11.0",
+        "@algolia/client-search": "4.11.0",
+        "@algolia/requester-common": "4.11.0",
+        "@algolia/transporter": "4.11.0"
+      }
+    },
+    "@algolia/client-common": {
+      "version": "4.11.0",
+      "resolved": "https://mirrors.tencent.com/npm/@algolia%2fclient-common/-/client-common-4.11.0.tgz",
+      "integrity": "sha512-Qy+F+TZq12kc7tgfC+FM3RvYH/Ati7sUiUv/LkvlxFwNwNPwWGoZO81AzVSareXT/ksDDrabD4mHbdTbBPTRmQ==",
+      "requires": {
+        "@algolia/requester-common": "4.11.0",
+        "@algolia/transporter": "4.11.0"
+      }
+    },
+    "@algolia/client-personalization": {
+      "version": "4.11.0",
+      "resolved": "https://mirrors.tencent.com/npm/@algolia%2fclient-personalization/-/client-personalization-4.11.0.tgz",
+      "integrity": "sha512-mI+X5IKiijHAzf9fy8VSl/GTT67dzFDnJ0QAM8D9cMPevnfX4U72HRln3Mjd0xEaYUOGve8TK/fMg7d3Z5yG6g==",
+      "requires": {
+        "@algolia/client-common": "4.11.0",
+        "@algolia/requester-common": "4.11.0",
+        "@algolia/transporter": "4.11.0"
+      }
+    },
+    "@algolia/client-search": {
+      "version": "4.11.0",
+      "resolved": "https://mirrors.tencent.com/npm/@algolia%2fclient-search/-/client-search-4.11.0.tgz",
+      "integrity": "sha512-iovPLc5YgiXBdw2qMhU65sINgo9umWbHFzInxoNErWnYoTQWfXsW6P54/NlKx5uscoLVjSf+5RUWwFu5BX+lpw==",
+      "requires": {
+        "@algolia/client-common": "4.11.0",
+        "@algolia/requester-common": "4.11.0",
+        "@algolia/transporter": "4.11.0"
+      }
+    },
+    "@algolia/logger-common": {
+      "version": "4.11.0",
+      "resolved": "https://mirrors.tencent.com/npm/@algolia%2flogger-common/-/logger-common-4.11.0.tgz",
+      "integrity": "sha512-pRMJFeOY8hoWKIxWuGHIrqnEKN/kqKh7UilDffG/+PeEGxBuku+Wq5CfdTFG0C9ewUvn8mAJn5BhYA5k8y0Jqg=="
+    },
+    "@algolia/logger-console": {
+      "version": "4.11.0",
+      "resolved": "https://mirrors.tencent.com/npm/@algolia%2flogger-console/-/logger-console-4.11.0.tgz",
+      "integrity": "sha512-wXztMk0a3VbNmYP8Kpc+F7ekuvaqZmozM2eTLok0XIshpAeZ/NJDHDffXK2Pw+NF0wmHqurptLYwKoikjBYvhQ==",
+      "requires": {
+        "@algolia/logger-common": "4.11.0"
+      }
+    },
+    "@algolia/requester-browser-xhr": {
+      "version": "4.11.0",
+      "resolved": "https://mirrors.tencent.com/npm/@algolia%2frequester-browser-xhr/-/requester-browser-xhr-4.11.0.tgz",
+      "integrity": "sha512-Fp3SfDihAAFR8bllg8P5ouWi3+qpEVN5e7hrtVIYldKBOuI/qFv80Zv/3/AMKNJQRYglS4zWyPuqrXm58nz6KA==",
+      "requires": {
+        "@algolia/requester-common": "4.11.0"
+      }
+    },
+    "@algolia/requester-common": {
+      "version": "4.11.0",
+      "resolved": "https://mirrors.tencent.com/npm/@algolia%2frequester-common/-/requester-common-4.11.0.tgz",
+      "integrity": "sha512-+cZGe/9fuYgGuxjaBC+xTGBkK7OIYdfapxhfvEf03dviLMPmhmVYFJtJlzAjQ2YmGDJpHrGgAYj3i/fbs8yhiA=="
+    },
+    "@algolia/requester-node-http": {
+      "version": "4.11.0",
+      "resolved": "https://mirrors.tencent.com/npm/@algolia%2frequester-node-http/-/requester-node-http-4.11.0.tgz",
+      "integrity": "sha512-qJIk9SHRFkKDi6dMT9hba8X1J1z92T5AZIgl+tsApjTGIRQXJLTIm+0q4yOefokfu4CoxYwRZ9QAq+ouGwfeOg==",
+      "requires": {
+        "@algolia/requester-common": "4.11.0"
+      }
+    },
+    "@algolia/transporter": {
+      "version": "4.11.0",
+      "resolved": "https://mirrors.tencent.com/npm/@algolia%2ftransporter/-/transporter-4.11.0.tgz",
+      "integrity": "sha512-k4dyxiaEfYpw4UqybK9q7lrFzehygo6KV3OCYJMMdX0IMWV0m4DXdU27c1zYRYtthaFYaBzGF4Kjcl8p8vxCKw==",
+      "requires": {
+        "@algolia/cache-common": "4.11.0",
+        "@algolia/logger-common": "4.11.0",
+        "@algolia/requester-common": "4.11.0"
+      }
+    },
+    "@babel/code-frame": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fcode-frame/-/code-frame-7.16.0.tgz",
+      "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==",
+      "requires": {
+        "@babel/highlight": "^7.16.0"
+      }
+    },
+    "@babel/compat-data": {
+      "version": "7.16.4",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fcompat-data/-/compat-data-7.16.4.tgz",
+      "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q=="
+    },
+    "@babel/core": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fcore/-/core-7.16.0.tgz",
+      "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==",
+      "requires": {
+        "@babel/code-frame": "^7.16.0",
+        "@babel/generator": "^7.16.0",
+        "@babel/helper-compilation-targets": "^7.16.0",
+        "@babel/helper-module-transforms": "^7.16.0",
+        "@babel/helpers": "^7.16.0",
+        "@babel/parser": "^7.16.0",
+        "@babel/template": "^7.16.0",
+        "@babel/traverse": "^7.16.0",
+        "@babel/types": "^7.16.0",
+        "convert-source-map": "^1.7.0",
+        "debug": "^4.1.0",
+        "gensync": "^1.0.0-beta.2",
+        "json5": "^2.1.2",
+        "semver": "^6.3.0",
+        "source-map": "^0.5.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "6.3.0",
+          "resolved": "https://mirrors.tencent.com/npm/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+        }
+      }
+    },
+    "@babel/generator": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fgenerator/-/generator-7.16.0.tgz",
+      "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==",
+      "requires": {
+        "@babel/types": "^7.16.0",
+        "jsesc": "^2.5.1",
+        "source-map": "^0.5.0"
+      }
+    },
+    "@babel/helper-annotate-as-pure": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fhelper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz",
+      "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==",
+      "requires": {
+        "@babel/types": "^7.16.0"
+      }
+    },
+    "@babel/helper-builder-binary-assignment-operator-visitor": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fhelper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz",
+      "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==",
+      "requires": {
+        "@babel/helper-explode-assignable-expression": "^7.16.0",
+        "@babel/types": "^7.16.0"
+      }
+    },
+    "@babel/helper-compilation-targets": {
+      "version": "7.16.3",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fhelper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz",
+      "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==",
+      "requires": {
+        "@babel/compat-data": "^7.16.0",
+        "@babel/helper-validator-option": "^7.14.5",
+        "browserslist": "^4.17.5",
+        "semver": "^6.3.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "6.3.0",
+          "resolved": "https://mirrors.tencent.com/npm/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+        }
+      }
+    },
+    "@babel/helper-create-class-features-plugin": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fhelper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz",
+      "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==",
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.16.0",
+        "@babel/helper-function-name": "^7.16.0",
+        "@babel/helper-member-expression-to-functions": "^7.16.0",
+        "@babel/helper-optimise-call-expression": "^7.16.0",
+        "@babel/helper-replace-supers": "^7.16.0",
+        "@babel/helper-split-export-declaration": "^7.16.0"
+      }
+    },
+    "@babel/helper-create-regexp-features-plugin": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fhelper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz",
+      "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==",
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.16.0",
+        "regexpu-core": "^4.7.1"
+      }
+    },
+    "@babel/helper-define-polyfill-provider": {
+      "version": "0.3.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fhelper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz",
+      "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==",
+      "requires": {
+        "@babel/helper-compilation-targets": "^7.13.0",
+        "@babel/helper-module-imports": "^7.12.13",
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/traverse": "^7.13.0",
+        "debug": "^4.1.1",
+        "lodash.debounce": "^4.0.8",
+        "resolve": "^1.14.2",
+        "semver": "^6.1.2"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "6.3.0",
+          "resolved": "https://mirrors.tencent.com/npm/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+        }
+      }
+    },
+    "@babel/helper-explode-assignable-expression": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fhelper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz",
+      "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==",
+      "requires": {
+        "@babel/types": "^7.16.0"
+      }
+    },
+    "@babel/helper-function-name": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fhelper-function-name/-/helper-function-name-7.16.0.tgz",
+      "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==",
+      "requires": {
+        "@babel/helper-get-function-arity": "^7.16.0",
+        "@babel/template": "^7.16.0",
+        "@babel/types": "^7.16.0"
+      }
+    },
+    "@babel/helper-get-function-arity": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fhelper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz",
+      "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==",
+      "requires": {
+        "@babel/types": "^7.16.0"
+      }
+    },
+    "@babel/helper-hoist-variables": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fhelper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz",
+      "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==",
+      "requires": {
+        "@babel/types": "^7.16.0"
+      }
+    },
+    "@babel/helper-member-expression-to-functions": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fhelper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz",
+      "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==",
+      "requires": {
+        "@babel/types": "^7.16.0"
+      }
+    },
+    "@babel/helper-module-imports": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fhelper-module-imports/-/helper-module-imports-7.16.0.tgz",
+      "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==",
+      "requires": {
+        "@babel/types": "^7.16.0"
+      }
+    },
+    "@babel/helper-module-transforms": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fhelper-module-transforms/-/helper-module-transforms-7.16.0.tgz",
+      "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==",
+      "requires": {
+        "@babel/helper-module-imports": "^7.16.0",
+        "@babel/helper-replace-supers": "^7.16.0",
+        "@babel/helper-simple-access": "^7.16.0",
+        "@babel/helper-split-export-declaration": "^7.16.0",
+        "@babel/helper-validator-identifier": "^7.15.7",
+        "@babel/template": "^7.16.0",
+        "@babel/traverse": "^7.16.0",
+        "@babel/types": "^7.16.0"
+      }
+    },
+    "@babel/helper-optimise-call-expression": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fhelper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz",
+      "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==",
+      "requires": {
+        "@babel/types": "^7.16.0"
+      }
+    },
+    "@babel/helper-plugin-utils": {
+      "version": "7.14.5",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fhelper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz",
+      "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ=="
+    },
+    "@babel/helper-remap-async-to-generator": {
+      "version": "7.16.4",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fhelper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz",
+      "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==",
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.16.0",
+        "@babel/helper-wrap-function": "^7.16.0",
+        "@babel/types": "^7.16.0"
+      }
+    },
+    "@babel/helper-replace-supers": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fhelper-replace-supers/-/helper-replace-supers-7.16.0.tgz",
+      "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==",
+      "requires": {
+        "@babel/helper-member-expression-to-functions": "^7.16.0",
+        "@babel/helper-optimise-call-expression": "^7.16.0",
+        "@babel/traverse": "^7.16.0",
+        "@babel/types": "^7.16.0"
+      }
+    },
+    "@babel/helper-simple-access": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fhelper-simple-access/-/helper-simple-access-7.16.0.tgz",
+      "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==",
+      "requires": {
+        "@babel/types": "^7.16.0"
+      }
+    },
+    "@babel/helper-skip-transparent-expression-wrappers": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fhelper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz",
+      "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==",
+      "requires": {
+        "@babel/types": "^7.16.0"
+      }
+    },
+    "@babel/helper-split-export-declaration": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fhelper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz",
+      "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==",
+      "requires": {
+        "@babel/types": "^7.16.0"
+      }
+    },
+    "@babel/helper-validator-identifier": {
+      "version": "7.15.7",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fhelper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
+      "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w=="
+    },
+    "@babel/helper-validator-option": {
+      "version": "7.14.5",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fhelper-validator-option/-/helper-validator-option-7.14.5.tgz",
+      "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow=="
+    },
+    "@babel/helper-wrap-function": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fhelper-wrap-function/-/helper-wrap-function-7.16.0.tgz",
+      "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==",
+      "requires": {
+        "@babel/helper-function-name": "^7.16.0",
+        "@babel/template": "^7.16.0",
+        "@babel/traverse": "^7.16.0",
+        "@babel/types": "^7.16.0"
+      }
+    },
+    "@babel/helpers": {
+      "version": "7.16.3",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fhelpers/-/helpers-7.16.3.tgz",
+      "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==",
+      "requires": {
+        "@babel/template": "^7.16.0",
+        "@babel/traverse": "^7.16.3",
+        "@babel/types": "^7.16.0"
+      }
+    },
+    "@babel/highlight": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fhighlight/-/highlight-7.16.0.tgz",
+      "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==",
+      "requires": {
+        "@babel/helper-validator-identifier": "^7.15.7",
+        "chalk": "^2.0.0",
+        "js-tokens": "^4.0.0"
+      },
+      "dependencies": {
+        "chalk": {
+          "version": "2.4.2",
+          "resolved": "https://mirrors.tencent.com/npm/chalk/-/chalk-2.4.2.tgz",
+          "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+          "requires": {
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
+          }
+        }
+      }
+    },
+    "@babel/parser": {
+      "version": "7.16.4",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fparser/-/parser-7.16.4.tgz",
+      "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng=="
+    },
+    "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+      "version": "7.16.2",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz",
+      "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz",
+      "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0",
+        "@babel/plugin-proposal-optional-chaining": "^7.16.0"
+      }
+    },
+    "@babel/plugin-proposal-async-generator-functions": {
+      "version": "7.16.4",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz",
+      "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-remap-async-to-generator": "^7.16.4",
+        "@babel/plugin-syntax-async-generators": "^7.8.4"
+      }
+    },
+    "@babel/plugin-proposal-class-properties": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz",
+      "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==",
+      "requires": {
+        "@babel/helper-create-class-features-plugin": "^7.16.0",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-proposal-class-static-block": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz",
+      "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==",
+      "requires": {
+        "@babel/helper-create-class-features-plugin": "^7.16.0",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-class-static-block": "^7.14.5"
+      }
+    },
+    "@babel/plugin-proposal-dynamic-import": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz",
+      "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-export-namespace-from": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz",
+      "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-json-strings": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz",
+      "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-json-strings": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-logical-assignment-operators": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz",
+      "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+      }
+    },
+    "@babel/plugin-proposal-nullish-coalescing-operator": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz",
+      "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-numeric-separator": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz",
+      "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+      }
+    },
+    "@babel/plugin-proposal-object-rest-spread": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz",
+      "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==",
+      "requires": {
+        "@babel/compat-data": "^7.16.0",
+        "@babel/helper-compilation-targets": "^7.16.0",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-transform-parameters": "^7.16.0"
+      }
+    },
+    "@babel/plugin-proposal-optional-catch-binding": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz",
+      "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-optional-chaining": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz",
+      "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-private-methods": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz",
+      "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==",
+      "requires": {
+        "@babel/helper-create-class-features-plugin": "^7.16.0",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-proposal-private-property-in-object": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz",
+      "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==",
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.16.0",
+        "@babel/helper-create-class-features-plugin": "^7.16.0",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+      }
+    },
+    "@babel/plugin-proposal-unicode-property-regex": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz",
+      "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==",
+      "requires": {
+        "@babel/helper-create-regexp-features-plugin": "^7.16.0",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-syntax-async-generators": {
+      "version": "7.8.4",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+      "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-class-properties": {
+      "version": "7.12.13",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+      "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
+    "@babel/plugin-syntax-class-static-block": {
+      "version": "7.14.5",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
+      "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-syntax-dynamic-import": {
+      "version": "7.8.3",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+      "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-export-namespace-from": {
+      "version": "7.8.3",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
+      "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.3"
+      }
+    },
+    "@babel/plugin-syntax-json-strings": {
+      "version": "7.8.3",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+      "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-jsx": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-syntax-jsx/-/plugin-syntax-jsx-7.16.0.tgz",
+      "integrity": "sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-syntax-logical-assignment-operators": {
+      "version": "7.10.4",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+      "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      }
+    },
+    "@babel/plugin-syntax-nullish-coalescing-operator": {
+      "version": "7.8.3",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+      "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-numeric-separator": {
+      "version": "7.10.4",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+      "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      }
+    },
+    "@babel/plugin-syntax-object-rest-spread": {
+      "version": "7.8.3",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+      "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-optional-catch-binding": {
+      "version": "7.8.3",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+      "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-optional-chaining": {
+      "version": "7.8.3",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+      "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-private-property-in-object": {
+      "version": "7.14.5",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
+      "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-syntax-top-level-await": {
+      "version": "7.14.5",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+      "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-syntax-typescript": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz",
+      "integrity": "sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-arrow-functions": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz",
+      "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-async-to-generator": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz",
+      "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==",
+      "requires": {
+        "@babel/helper-module-imports": "^7.16.0",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-remap-async-to-generator": "^7.16.0"
+      }
+    },
+    "@babel/plugin-transform-block-scoped-functions": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz",
+      "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-block-scoping": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz",
+      "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-classes": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz",
+      "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==",
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.16.0",
+        "@babel/helper-function-name": "^7.16.0",
+        "@babel/helper-optimise-call-expression": "^7.16.0",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-replace-supers": "^7.16.0",
+        "@babel/helper-split-export-declaration": "^7.16.0",
+        "globals": "^11.1.0"
+      }
+    },
+    "@babel/plugin-transform-computed-properties": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz",
+      "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-destructuring": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz",
+      "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-dotall-regex": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz",
+      "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==",
+      "requires": {
+        "@babel/helper-create-regexp-features-plugin": "^7.16.0",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-duplicate-keys": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz",
+      "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-exponentiation-operator": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz",
+      "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==",
+      "requires": {
+        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-for-of": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz",
+      "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-function-name": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz",
+      "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==",
+      "requires": {
+        "@babel/helper-function-name": "^7.16.0",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-literals": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz",
+      "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-member-expression-literals": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz",
+      "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-modules-amd": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz",
+      "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==",
+      "requires": {
+        "@babel/helper-module-transforms": "^7.16.0",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "babel-plugin-dynamic-import-node": "^2.3.3"
+      },
+      "dependencies": {
+        "babel-plugin-dynamic-import-node": {
+          "version": "2.3.3",
+          "resolved": "https://mirrors.tencent.com/npm/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
+          "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
+          "requires": {
+            "object.assign": "^4.1.0"
+          }
+        }
+      }
+    },
+    "@babel/plugin-transform-modules-commonjs": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz",
+      "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==",
+      "requires": {
+        "@babel/helper-module-transforms": "^7.16.0",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-simple-access": "^7.16.0",
+        "babel-plugin-dynamic-import-node": "^2.3.3"
+      },
+      "dependencies": {
+        "babel-plugin-dynamic-import-node": {
+          "version": "2.3.3",
+          "resolved": "https://mirrors.tencent.com/npm/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
+          "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
+          "requires": {
+            "object.assign": "^4.1.0"
+          }
+        }
+      }
+    },
+    "@babel/plugin-transform-modules-systemjs": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz",
+      "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==",
+      "requires": {
+        "@babel/helper-hoist-variables": "^7.16.0",
+        "@babel/helper-module-transforms": "^7.16.0",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-validator-identifier": "^7.15.7",
+        "babel-plugin-dynamic-import-node": "^2.3.3"
+      },
+      "dependencies": {
+        "babel-plugin-dynamic-import-node": {
+          "version": "2.3.3",
+          "resolved": "https://mirrors.tencent.com/npm/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
+          "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
+          "requires": {
+            "object.assign": "^4.1.0"
+          }
+        }
+      }
+    },
+    "@babel/plugin-transform-modules-umd": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz",
+      "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==",
+      "requires": {
+        "@babel/helper-module-transforms": "^7.16.0",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-named-capturing-groups-regex": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz",
+      "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==",
+      "requires": {
+        "@babel/helper-create-regexp-features-plugin": "^7.16.0"
+      }
+    },
+    "@babel/plugin-transform-new-target": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz",
+      "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-object-super": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz",
+      "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-replace-supers": "^7.16.0"
+      }
+    },
+    "@babel/plugin-transform-parameters": {
+      "version": "7.16.3",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz",
+      "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-property-literals": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz",
+      "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-react-constant-elements": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.16.0.tgz",
+      "integrity": "sha512-OgtklS+p9t1X37eWA4XdvvbZG/3gqzX569gqmo3q4/Ui6qjfTQmOs5UTSrfdD9nVByHhX6Gbm/Pyc4KbwUXGWA==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-react-display-name": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.0.tgz",
+      "integrity": "sha512-FJFdJAqaCpndL+pIf0aeD/qlQwT7QXOvR6Cc8JPvNhKJBi2zc/DPc4g05Y3fbD/0iWAMQFGij4+Xw+4L/BMpTg==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-react-jsx": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.0.tgz",
+      "integrity": "sha512-rqDgIbukZ44pqq7NIRPGPGNklshPkvlmvqjdx3OZcGPk4zGIenYkxDTvl3LsSL8gqcc3ZzGmXPE6hR/u/voNOw==",
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.16.0",
+        "@babel/helper-module-imports": "^7.16.0",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-jsx": "^7.16.0",
+        "@babel/types": "^7.16.0"
+      }
+    },
+    "@babel/plugin-transform-react-jsx-development": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.0.tgz",
+      "integrity": "sha512-qq65iSqBRq0Hr3wq57YG2AmW0H6wgTnIzpffTphrUWUgLCOK+zf1f7G0vuOiXrp7dU1qq+fQBoqZ3wCDAkhFzw==",
+      "requires": {
+        "@babel/plugin-transform-react-jsx": "^7.16.0"
+      }
+    },
+    "@babel/plugin-transform-react-pure-annotations": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.0.tgz",
+      "integrity": "sha512-NC/Bj2MG+t8Ef5Pdpo34Ay74X4Rt804h5y81PwOpfPtmAK3i6CizmQqwyBQzIepz1Yt8wNr2Z2L7Lu3qBMfZMA==",
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.16.0",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-regenerator": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz",
+      "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==",
+      "requires": {
+        "regenerator-transform": "^0.14.2"
+      }
+    },
+    "@babel/plugin-transform-reserved-words": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz",
+      "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-runtime": {
+      "version": "7.16.4",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-runtime/-/plugin-transform-runtime-7.16.4.tgz",
+      "integrity": "sha512-pru6+yHANMTukMtEZGC4fs7XPwg35v8sj5CIEmE+gEkFljFiVJxEWxx/7ZDkTK+iZRYo1bFXBtfIN95+K3cJ5A==",
+      "requires": {
+        "@babel/helper-module-imports": "^7.16.0",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "babel-plugin-polyfill-corejs2": "^0.3.0",
+        "babel-plugin-polyfill-corejs3": "^0.4.0",
+        "babel-plugin-polyfill-regenerator": "^0.3.0",
+        "semver": "^6.3.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "6.3.0",
+          "resolved": "https://mirrors.tencent.com/npm/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+        }
+      }
+    },
+    "@babel/plugin-transform-shorthand-properties": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz",
+      "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-spread": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz",
+      "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0"
+      }
+    },
+    "@babel/plugin-transform-sticky-regex": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz",
+      "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-template-literals": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz",
+      "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-typeof-symbol": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz",
+      "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-typescript": {
+      "version": "7.16.1",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-typescript/-/plugin-transform-typescript-7.16.1.tgz",
+      "integrity": "sha512-NO4XoryBng06jjw/qWEU2LhcLJr1tWkhpMam/H4eas/CDKMX/b2/Ylb6EI256Y7+FVPCawwSM1rrJNOpDiz+Lg==",
+      "requires": {
+        "@babel/helper-create-class-features-plugin": "^7.16.0",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/plugin-syntax-typescript": "^7.16.0"
+      }
+    },
+    "@babel/plugin-transform-unicode-escapes": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz",
+      "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-unicode-regex": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fplugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz",
+      "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==",
+      "requires": {
+        "@babel/helper-create-regexp-features-plugin": "^7.16.0",
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/preset-env": {
+      "version": "7.16.4",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fpreset-env/-/preset-env-7.16.4.tgz",
+      "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==",
+      "requires": {
+        "@babel/compat-data": "^7.16.4",
+        "@babel/helper-compilation-targets": "^7.16.3",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-validator-option": "^7.14.5",
+        "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2",
+        "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0",
+        "@babel/plugin-proposal-async-generator-functions": "^7.16.4",
+        "@babel/plugin-proposal-class-properties": "^7.16.0",
+        "@babel/plugin-proposal-class-static-block": "^7.16.0",
+        "@babel/plugin-proposal-dynamic-import": "^7.16.0",
+        "@babel/plugin-proposal-export-namespace-from": "^7.16.0",
+        "@babel/plugin-proposal-json-strings": "^7.16.0",
+        "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0",
+        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0",
+        "@babel/plugin-proposal-numeric-separator": "^7.16.0",
+        "@babel/plugin-proposal-object-rest-spread": "^7.16.0",
+        "@babel/plugin-proposal-optional-catch-binding": "^7.16.0",
+        "@babel/plugin-proposal-optional-chaining": "^7.16.0",
+        "@babel/plugin-proposal-private-methods": "^7.16.0",
+        "@babel/plugin-proposal-private-property-in-object": "^7.16.0",
+        "@babel/plugin-proposal-unicode-property-regex": "^7.16.0",
+        "@babel/plugin-syntax-async-generators": "^7.8.4",
+        "@babel/plugin-syntax-class-properties": "^7.12.13",
+        "@babel/plugin-syntax-class-static-block": "^7.14.5",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+        "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+        "@babel/plugin-syntax-json-strings": "^7.8.3",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+        "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+        "@babel/plugin-syntax-top-level-await": "^7.14.5",
+        "@babel/plugin-transform-arrow-functions": "^7.16.0",
+        "@babel/plugin-transform-async-to-generator": "^7.16.0",
+        "@babel/plugin-transform-block-scoped-functions": "^7.16.0",
+        "@babel/plugin-transform-block-scoping": "^7.16.0",
+        "@babel/plugin-transform-classes": "^7.16.0",
+        "@babel/plugin-transform-computed-properties": "^7.16.0",
+        "@babel/plugin-transform-destructuring": "^7.16.0",
+        "@babel/plugin-transform-dotall-regex": "^7.16.0",
+        "@babel/plugin-transform-duplicate-keys": "^7.16.0",
+        "@babel/plugin-transform-exponentiation-operator": "^7.16.0",
+        "@babel/plugin-transform-for-of": "^7.16.0",
+        "@babel/plugin-transform-function-name": "^7.16.0",
+        "@babel/plugin-transform-literals": "^7.16.0",
+        "@babel/plugin-transform-member-expression-literals": "^7.16.0",
+        "@babel/plugin-transform-modules-amd": "^7.16.0",
+        "@babel/plugin-transform-modules-commonjs": "^7.16.0",
+        "@babel/plugin-transform-modules-systemjs": "^7.16.0",
+        "@babel/plugin-transform-modules-umd": "^7.16.0",
+        "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0",
+        "@babel/plugin-transform-new-target": "^7.16.0",
+        "@babel/plugin-transform-object-super": "^7.16.0",
+        "@babel/plugin-transform-parameters": "^7.16.3",
+        "@babel/plugin-transform-property-literals": "^7.16.0",
+        "@babel/plugin-transform-regenerator": "^7.16.0",
+        "@babel/plugin-transform-reserved-words": "^7.16.0",
+        "@babel/plugin-transform-shorthand-properties": "^7.16.0",
+        "@babel/plugin-transform-spread": "^7.16.0",
+        "@babel/plugin-transform-sticky-regex": "^7.16.0",
+        "@babel/plugin-transform-template-literals": "^7.16.0",
+        "@babel/plugin-transform-typeof-symbol": "^7.16.0",
+        "@babel/plugin-transform-unicode-escapes": "^7.16.0",
+        "@babel/plugin-transform-unicode-regex": "^7.16.0",
+        "@babel/preset-modules": "^0.1.5",
+        "@babel/types": "^7.16.0",
+        "babel-plugin-polyfill-corejs2": "^0.3.0",
+        "babel-plugin-polyfill-corejs3": "^0.4.0",
+        "babel-plugin-polyfill-regenerator": "^0.3.0",
+        "core-js-compat": "^3.19.1",
+        "semver": "^6.3.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "6.3.0",
+          "resolved": "https://mirrors.tencent.com/npm/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+        }
+      }
+    },
+    "@babel/preset-modules": {
+      "version": "0.1.5",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fpreset-modules/-/preset-modules-0.1.5.tgz",
+      "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
+        "@babel/plugin-transform-dotall-regex": "^7.4.4",
+        "@babel/types": "^7.4.4",
+        "esutils": "^2.0.2"
+      }
+    },
+    "@babel/preset-react": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fpreset-react/-/preset-react-7.16.0.tgz",
+      "integrity": "sha512-d31IFW2bLRB28uL1WoElyro8RH5l6531XfxMtCeCmp6RVAF1uTfxxUA0LH1tXl+psZdwfmIbwoG4U5VwgbhtLw==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-validator-option": "^7.14.5",
+        "@babel/plugin-transform-react-display-name": "^7.16.0",
+        "@babel/plugin-transform-react-jsx": "^7.16.0",
+        "@babel/plugin-transform-react-jsx-development": "^7.16.0",
+        "@babel/plugin-transform-react-pure-annotations": "^7.16.0"
+      }
+    },
+    "@babel/preset-typescript": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fpreset-typescript/-/preset-typescript-7.16.0.tgz",
+      "integrity": "sha512-txegdrZYgO9DlPbv+9QOVpMnKbOtezsLHWsnsRF4AjbSIsVaujrq1qg8HK0mxQpWv0jnejt0yEoW1uWpvbrDTg==",
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-validator-option": "^7.14.5",
+        "@babel/plugin-transform-typescript": "^7.16.0"
+      }
+    },
+    "@babel/runtime": {
+      "version": "7.16.3",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fruntime/-/runtime-7.16.3.tgz",
+      "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==",
+      "requires": {
+        "regenerator-runtime": "^0.13.4"
+      }
+    },
+    "@babel/runtime-corejs3": {
+      "version": "7.16.3",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2fruntime-corejs3/-/runtime-corejs3-7.16.3.tgz",
+      "integrity": "sha512-IAdDC7T0+wEB4y2gbIL0uOXEYpiZEeuFUTVbdGq+UwCcF35T/tS8KrmMomEwEc5wBbyfH3PJVpTSUqrhPDXFcQ==",
+      "requires": {
+        "core-js-pure": "^3.19.0",
+        "regenerator-runtime": "^0.13.4"
+      }
+    },
+    "@babel/template": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2ftemplate/-/template-7.16.0.tgz",
+      "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==",
+      "requires": {
+        "@babel/code-frame": "^7.16.0",
+        "@babel/parser": "^7.16.0",
+        "@babel/types": "^7.16.0"
+      }
+    },
+    "@babel/traverse": {
+      "version": "7.16.3",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2ftraverse/-/traverse-7.16.3.tgz",
+      "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==",
+      "requires": {
+        "@babel/code-frame": "^7.16.0",
+        "@babel/generator": "^7.16.0",
+        "@babel/helper-function-name": "^7.16.0",
+        "@babel/helper-hoist-variables": "^7.16.0",
+        "@babel/helper-split-export-declaration": "^7.16.0",
+        "@babel/parser": "^7.16.3",
+        "@babel/types": "^7.16.0",
+        "debug": "^4.1.0",
+        "globals": "^11.1.0"
+      }
+    },
+    "@babel/types": {
+      "version": "7.16.0",
+      "resolved": "https://mirrors.tencent.com/npm/@babel%2ftypes/-/types-7.16.0.tgz",
+      "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+      "requires": {
+        "@babel/helper-validator-identifier": "^7.15.7",
+        "to-fast-properties": "^2.0.0"
+      }
+    },
+    "@docsearch/css": {
+      "version": "3.0.0-alpha.41",
+      "resolved": "https://mirrors.tencent.com/npm/@docsearch%2fcss/-/css-3.0.0-alpha.41.tgz",
+      "integrity": "sha512-AP1jqcF/9jCrm4s0lcES3QAtHueyipKjd14L/pguk0CZYK7uI7hC0FWodmRmrgK3/HST9jiHa1waUMR6ZYedlQ=="
+    },
+    "@docsearch/react": {
+      "version": "3.0.0-alpha.41",
+      "resolved": "https://mirrors.tencent.com/npm/@docsearch%2freact/-/react-3.0.0-alpha.41.tgz",
+      "integrity": "sha512-UL0Gdter/NUea04lGuBGH0GzQ2/2q/hBfn7Rjo71rRKbjtfkQCM92leJ9tZ+9j9sFLoyuHb9XMm/B8vCjWwTEg==",
+      "requires": {
+        "@algolia/autocomplete-core": "1.2.2",
+        "@algolia/autocomplete-preset-algolia": "1.2.2",
+        "@docsearch/css": "3.0.0-alpha.41",
+        "algoliasearch": "^4.0.0"
+      }
+    },
+    "@docusaurus/core": {
+      "version": "2.0.0-beta.9",
+      "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2fcore/-/core-2.0.0-beta.9.tgz",
+      "integrity": "sha512-Bf9c6+yftZfAJk2h4HyaDvzBp5TLhqYtfnfWKKNi0Gdw9vRLXhi7IaiGaLWIuNAIJLTi++Ql0BAn+C0OO8EsWA==",
+      "requires": {
+        "@babel/core": "^7.12.16",
+        "@babel/generator": "^7.12.15",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+        "@babel/plugin-transform-runtime": "^7.15.0",
+        "@babel/preset-env": "^7.15.6",
+        "@babel/preset-react": "^7.12.13",
+        "@babel/preset-typescript": "^7.12.16",
+        "@babel/runtime": "^7.15.4",
+        "@babel/runtime-corejs3": "^7.15.4",
+        "@babel/traverse": "^7.12.13",
+        "@docusaurus/cssnano-preset": "2.0.0-beta.9",
+        "@docusaurus/react-loadable": "5.5.2",
+        "@docusaurus/types": "2.0.0-beta.9",
+        "@docusaurus/utils": "2.0.0-beta.9",
+        "@docusaurus/utils-common": "2.0.0-beta.9",
+        "@docusaurus/utils-validation": "2.0.0-beta.9",
+        "@slorber/static-site-generator-webpack-plugin": "^4.0.0",
+        "@svgr/webpack": "^5.5.0",
+        "autoprefixer": "^10.3.5",
+        "babel-loader": "^8.2.2",
+        "babel-plugin-dynamic-import-node": "2.3.0",
+        "boxen": "^5.0.1",
+        "chalk": "^4.1.2",
+        "chokidar": "^3.5.2",
+        "clean-css": "^5.1.5",
+        "commander": "^5.1.0",
+        "copy-webpack-plugin": "^9.0.1",
+        "core-js": "^3.18.0",
+        "css-loader": "^5.1.1",
+        "css-minimizer-webpack-plugin": "^3.0.2",
+        "cssnano": "^5.0.8",
+        "del": "^6.0.0",
+        "detect-port": "^1.3.0",
+        "escape-html": "^1.0.3",
+        "eta": "^1.12.3",
+        "file-loader": "^6.2.0",
+        "fs-extra": "^10.0.0",
+        "github-slugger": "^1.4.0",
+        "globby": "^11.0.2",
+        "html-minifier-terser": "^6.0.2",
+        "html-tags": "^3.1.0",
+        "html-webpack-plugin": "^5.4.0",
+        "import-fresh": "^3.3.0",
+        "is-root": "^2.1.0",
+        "leven": "^3.1.0",
+        "lodash": "^4.17.20",
+        "mini-css-extract-plugin": "^1.6.0",
+        "nprogress": "^0.2.0",
+        "postcss": "^8.3.7",
+        "postcss-loader": "^6.1.1",
+        "prompts": "^2.4.1",
+        "react-dev-utils": "12.0.0-next.47",
+        "react-error-overlay": "^6.0.9",
+        "react-helmet": "^6.1.0",
+        "react-loadable": "npm:@docusaurus/react-loadable@5.5.2",
+        "react-loadable-ssr-addon-v5-slorber": "^1.0.1",
+        "react-router": "^5.2.0",
+        "react-router-config": "^5.1.1",
+        "react-router-dom": "^5.2.0",
+        "remark-admonitions": "^1.2.1",
+        "resolve-pathname": "^3.0.0",
+        "rtl-detect": "^1.0.4",
+        "semver": "^7.3.4",
+        "serve-handler": "^6.1.3",
+        "shelljs": "^0.8.4",
+        "std-env": "^2.2.1",
+        "strip-ansi": "^6.0.0",
+        "terser-webpack-plugin": "^5.2.4",
+        "tslib": "^2.3.1",
+        "update-notifier": "^5.1.0",
+        "url-loader": "^4.1.1",
+        "wait-on": "^6.0.0",
+        "webpack": "^5.61.0",
+        "webpack-bundle-analyzer": "^4.4.2",
+        "webpack-dev-server": "^4.4.0",
+        "webpack-merge": "^5.8.0",
+        "webpackbar": "^5.0.0-3"
+      }
+    },
+    "@docusaurus/cssnano-preset": {
+      "version": "2.0.0-beta.9",
+      "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2fcssnano-preset/-/cssnano-preset-2.0.0-beta.9.tgz",
+      "integrity": "sha512-oIdoiZ/i4LXRxmuLN2ZmvGpMqtwba+ck9TlaQDWC7wvHx+EA9mvvcewKWgc7e4dxPA00+777cQvrDctAreAqLw==",
+      "requires": {
+        "cssnano-preset-advanced": "^5.1.4",
+        "postcss": "^8.3.7",
+        "postcss-sort-media-queries": "^4.1.0"
+      }
+    },
+    "@docusaurus/mdx-loader": {
+      "version": "2.0.0-beta.9",
+      "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2fmdx-loader/-/mdx-loader-2.0.0-beta.9.tgz",
+      "integrity": "sha512-qb+/Ew69kaAIiot+1lJ13ozsyCY+7/VryzopDTgr60BDCsLUvuDzjNKreBqo1xdC4JxYD/hJMV7UAHkZ8rWB8Q==",
+      "requires": {
+        "@babel/parser": "^7.12.16",
+        "@babel/traverse": "^7.12.13",
+        "@docusaurus/core": "2.0.0-beta.9",
+        "@docusaurus/utils": "2.0.0-beta.9",
+        "@mdx-js/mdx": "^1.6.21",
+        "@mdx-js/react": "^1.6.21",
+        "chalk": "^4.1.2",
+        "escape-html": "^1.0.3",
+        "file-loader": "^6.2.0",
+        "fs-extra": "^10.0.0",
+        "github-slugger": "^1.4.0",
+        "gray-matter": "^4.0.3",
+        "mdast-util-to-string": "^2.0.0",
+        "remark-emoji": "^2.1.0",
+        "stringify-object": "^3.3.0",
+        "unist-util-visit": "^2.0.2",
+        "url-loader": "^4.1.1",
+        "webpack": "^5.61.0"
+      }
+    },
+    "@docusaurus/plugin-content-blog": {
+      "version": "2.0.0-beta.9",
+      "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2fplugin-content-blog/-/plugin-content-blog-2.0.0-beta.9.tgz",
+      "integrity": "sha512-KZ6UmUa/P4SSX8/xnZpwSt7krnAfRg3S/ghZ7zeIzcp12iumSZBmLNi5rIIXcsFVH0IPOnIofEoWEaEIwaNerg==",
+      "requires": {
+        "@docusaurus/core": "2.0.0-beta.9",
+        "@docusaurus/mdx-loader": "2.0.0-beta.9",
+        "@docusaurus/types": "2.0.0-beta.9",
+        "@docusaurus/utils": "2.0.0-beta.9",
+        "@docusaurus/utils-validation": "2.0.0-beta.9",
+        "chalk": "^4.1.2",
+        "escape-string-regexp": "^4.0.0",
+        "feed": "^4.2.2",
+        "fs-extra": "^10.0.0",
+        "globby": "^11.0.2",
+        "js-yaml": "^4.0.0",
+        "loader-utils": "^2.0.0",
+        "lodash": "^4.17.20",
+        "reading-time": "^1.5.0",
+        "remark-admonitions": "^1.2.1",
+        "tslib": "^2.3.1",
+        "utility-types": "^3.10.0",
+        "webpack": "^5.61.0"
+      },
+      "dependencies": {
+        "argparse": {
+          "version": "2.0.1",
+          "resolved": "https://mirrors.tencent.com/npm/argparse/-/argparse-2.0.1.tgz",
+          "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
+        },
+        "escape-string-regexp": {
+          "version": "4.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+          "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
+        },
+        "js-yaml": {
+          "version": "4.1.0",
+          "resolved": "https://mirrors.tencent.com/npm/js-yaml/-/js-yaml-4.1.0.tgz",
+          "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+          "requires": {
+            "argparse": "^2.0.1"
+          }
+        }
+      }
+    },
+    "@docusaurus/plugin-content-docs": {
+      "version": "2.0.0-beta.9",
+      "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2fplugin-content-docs/-/plugin-content-docs-2.0.0-beta.9.tgz",
+      "integrity": "sha512-GC+CvqKuravPpK5fqlYJVmj9hc6nkd/c/rM2ONueFCqw2wyuH7esWL8RpMqgS0JM1qwwuRpi0Dd3R/zdOptHIQ==",
+      "requires": {
+        "@docusaurus/core": "2.0.0-beta.9",
+        "@docusaurus/mdx-loader": "2.0.0-beta.9",
+        "@docusaurus/types": "2.0.0-beta.9",
+        "@docusaurus/utils": "2.0.0-beta.9",
+        "@docusaurus/utils-validation": "2.0.0-beta.9",
+        "chalk": "^4.1.2",
+        "combine-promises": "^1.1.0",
+        "escape-string-regexp": "^4.0.0",
+        "execa": "^5.0.0",
+        "fs-extra": "^10.0.0",
+        "globby": "^11.0.2",
+        "import-fresh": "^3.2.2",
+        "js-yaml": "^4.0.0",
+        "loader-utils": "^2.0.0",
+        "lodash": "^4.17.20",
+        "remark-admonitions": "^1.2.1",
+        "shelljs": "^0.8.4",
+        "tslib": "^2.3.1",
+        "utility-types": "^3.10.0",
+        "webpack": "^5.61.0"
+      },
+      "dependencies": {
+        "argparse": {
+          "version": "2.0.1",
+          "resolved": "https://mirrors.tencent.com/npm/argparse/-/argparse-2.0.1.tgz",
+          "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
+        },
+        "escape-string-regexp": {
+          "version": "4.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+          "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
+        },
+        "js-yaml": {
+          "version": "4.1.0",
+          "resolved": "https://mirrors.tencent.com/npm/js-yaml/-/js-yaml-4.1.0.tgz",
+          "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+          "requires": {
+            "argparse": "^2.0.1"
+          }
+        }
+      }
+    },
+    "@docusaurus/plugin-content-pages": {
+      "version": "2.0.0-beta.6",
+      "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2fplugin-content-pages/-/plugin-content-pages-2.0.0-beta.6.tgz",
+      "integrity": "sha512-N6wARzOA8gTFeBXZSKbAN5s1Ej6R/pVg+J946E8GCYefXTFikTNRQ8+OPhax4MRzgzoOvhTQbLbRCSoAzSmjig==",
+      "requires": {
+        "@docusaurus/core": "2.0.0-beta.6",
+        "@docusaurus/mdx-loader": "2.0.0-beta.6",
+        "@docusaurus/types": "2.0.0-beta.6",
+        "@docusaurus/utils": "2.0.0-beta.6",
+        "@docusaurus/utils-validation": "2.0.0-beta.6",
+        "globby": "^11.0.2",
+        "lodash": "^4.17.20",
+        "remark-admonitions": "^1.2.1",
+        "tslib": "^2.1.0",
+        "webpack": "^5.40.0"
+      },
+      "dependencies": {
+        "@babel/code-frame": {
+          "version": "7.10.4",
+          "resolved": "https://mirrors.tencent.com/npm/@babel%2fcode-frame/-/code-frame-7.10.4.tgz",
+          "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
+          "requires": {
+            "@babel/highlight": "^7.10.4"
+          }
+        },
+        "@docusaurus/core": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2fcore/-/core-2.0.0-beta.6.tgz",
+          "integrity": "sha512-XMeI+lJKeJBGYBNOfO/Tc+5FMf21E5p1xZjfe75cgYcfZdERZ+W7aemXquwReno8xxHb4Rnfmi9dxkbOLDjqDA==",
+          "requires": {
+            "@babel/core": "^7.12.16",
+            "@babel/generator": "^7.12.15",
+            "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+            "@babel/plugin-transform-runtime": "^7.12.15",
+            "@babel/preset-env": "^7.12.16",
+            "@babel/preset-react": "^7.12.13",
+            "@babel/preset-typescript": "^7.12.16",
+            "@babel/runtime": "^7.12.5",
+            "@babel/runtime-corejs3": "^7.12.13",
+            "@babel/traverse": "^7.12.13",
+            "@docusaurus/cssnano-preset": "2.0.0-beta.6",
+            "@docusaurus/react-loadable": "5.5.0",
+            "@docusaurus/types": "2.0.0-beta.6",
+            "@docusaurus/utils": "2.0.0-beta.6",
+            "@docusaurus/utils-common": "2.0.0-beta.6",
+            "@docusaurus/utils-validation": "2.0.0-beta.6",
+            "@slorber/static-site-generator-webpack-plugin": "^4.0.0",
+            "@svgr/webpack": "^5.5.0",
+            "autoprefixer": "^10.2.5",
+            "babel-loader": "^8.2.2",
+            "babel-plugin-dynamic-import-node": "2.3.0",
+            "boxen": "^5.0.1",
+            "chalk": "^4.1.1",
+            "chokidar": "^3.5.1",
+            "clean-css": "^5.1.5",
+            "commander": "^5.1.0",
+            "copy-webpack-plugin": "^9.0.0",
+            "core-js": "^3.9.1",
+            "css-loader": "^5.1.1",
+            "css-minimizer-webpack-plugin": "^3.0.1",
+            "cssnano": "^5.0.4",
+            "del": "^6.0.0",
+            "detect-port": "^1.3.0",
+            "escape-html": "^1.0.3",
+            "eta": "^1.12.1",
+            "express": "^4.17.1",
+            "file-loader": "^6.2.0",
+            "fs-extra": "^10.0.0",
+            "github-slugger": "^1.3.0",
+            "globby": "^11.0.2",
+            "html-minifier-terser": "^5.1.1",
+            "html-tags": "^3.1.0",
+            "html-webpack-plugin": "^5.3.2",
+            "import-fresh": "^3.3.0",
+            "is-root": "^2.1.0",
+            "leven": "^3.1.0",
+            "lodash": "^4.17.20",
+            "mini-css-extract-plugin": "^1.6.0",
+            "module-alias": "^2.2.2",
+            "nprogress": "^0.2.0",
+            "postcss": "^8.2.15",
+            "postcss-loader": "^5.3.0",
+            "prompts": "^2.4.1",
+            "react-dev-utils": "^11.0.1",
+            "react-error-overlay": "^6.0.9",
+            "react-helmet": "^6.1.0",
+            "react-loadable": "^5.5.0",
+            "react-loadable-ssr-addon-v5-slorber": "^1.0.1",
+            "react-router": "^5.2.0",
+            "react-router-config": "^5.1.1",
+            "react-router-dom": "^5.2.0",
+            "remark-admonitions": "^1.2.1",
+            "resolve-pathname": "^3.0.0",
+            "rtl-detect": "^1.0.3",
+            "semver": "^7.3.4",
+            "serve-handler": "^6.1.3",
+            "shelljs": "^0.8.4",
+            "std-env": "^2.2.1",
+            "strip-ansi": "^6.0.0",
+            "terser-webpack-plugin": "^5.1.3",
+            "tslib": "^2.2.0",
+            "update-notifier": "^5.1.0",
+            "url-loader": "^4.1.1",
+            "wait-on": "^5.3.0",
+            "webpack": "^5.40.0",
+            "webpack-bundle-analyzer": "^4.4.2",
+            "webpack-dev-server": "^3.11.2",
+            "webpack-merge": "^5.8.0",
+            "webpackbar": "^5.0.0-3"
+          }
+        },
+        "@docusaurus/cssnano-preset": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2fcssnano-preset/-/cssnano-preset-2.0.0-beta.6.tgz",
+          "integrity": "sha512-RCizp2NAbADopkX5nUz1xrAbU6hGZzziQk9RdSDGJLzMgVCN6RDotq9odS8VgzNa9x2Lx3WN527UxeEbzc2GVQ==",
+          "requires": {
+            "cssnano-preset-advanced": "^5.1.1",
+            "postcss": "^8.2.15",
+            "postcss-sort-media-queries": "^3.10.11"
+          }
+        },
+        "@docusaurus/mdx-loader": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2fmdx-loader/-/mdx-loader-2.0.0-beta.6.tgz",
+          "integrity": "sha512-yO6N+OESR77WZ/pXz7muOJGLletYYksx7s7wrwrr0x+A8tzdSwiHZ9op0NyjjpW5AnItU/WQQfcjv37qv4K6HA==",
+          "requires": {
+            "@babel/parser": "^7.12.16",
+            "@babel/traverse": "^7.12.13",
+            "@docusaurus/core": "2.0.0-beta.6",
+            "@docusaurus/utils": "2.0.0-beta.6",
+            "@mdx-js/mdx": "^1.6.21",
+            "@mdx-js/react": "^1.6.21",
+            "chalk": "^4.1.1",
+            "escape-html": "^1.0.3",
+            "file-loader": "^6.2.0",
+            "fs-extra": "^10.0.0",
+            "github-slugger": "^1.3.0",
+            "gray-matter": "^4.0.3",
+            "mdast-util-to-string": "^2.0.0",
+            "remark-emoji": "^2.1.0",
+            "stringify-object": "^3.3.0",
+            "unist-util-visit": "^2.0.2",
+            "url-loader": "^4.1.1",
+            "webpack": "^5.40.0"
+          }
+        },
+        "@docusaurus/react-loadable": {
+          "version": "5.5.0",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2freact-loadable/-/react-loadable-5.5.0.tgz",
+          "integrity": "sha512-Ld/kwUE6yATIOTLq3JCsWiTa/drisajwKqBQ2Rw6IcT+sFsKfYek8F2jSH8f68AT73xX97UehduZeCSlnuCBIg==",
+          "requires": {
+            "prop-types": "^15.6.2"
+          }
+        },
+        "@docusaurus/types": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2ftypes/-/types-2.0.0-beta.6.tgz",
+          "integrity": "sha512-TrwxyI93XTZEhOmdEI8FPKDbGV61zE9PzXCdE1alwz1NOV+YXwcv+9sRTZEVLqBpr+TIja+IeeS6mxnyen/Ptg==",
+          "requires": {
+            "commander": "^5.1.0",
+            "joi": "^17.4.0",
+            "querystring": "0.2.0",
+            "webpack": "^5.40.0",
+            "webpack-merge": "^5.8.0"
+          }
+        },
+        "@docusaurus/utils": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2futils/-/utils-2.0.0-beta.6.tgz",
+          "integrity": "sha512-S72/o7VDaTvrXJy+NpfuctghGGoMW30m94PMkrL3I6V+o5eE2Uzax7dbM++moclmHvi0/Khv+TXmRIQs6ZvwgQ==",
+          "requires": {
+            "@docusaurus/types": "2.0.0-beta.6",
+            "@types/github-slugger": "^1.3.0",
+            "chalk": "^4.1.1",
+            "escape-string-regexp": "^4.0.0",
+            "fs-extra": "^10.0.0",
+            "globby": "^11.0.4",
+            "gray-matter": "^4.0.3",
+            "lodash": "^4.17.20",
+            "micromatch": "^4.0.4",
+            "resolve-pathname": "^3.0.0",
+            "tslib": "^2.2.0"
+          }
+        },
+        "@docusaurus/utils-common": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2futils-common/-/utils-common-2.0.0-beta.6.tgz",
+          "integrity": "sha512-MKm6bJxvsYWRl072jLR60z+71tTWSxoERh2eTmCYlegFnu3Tby3HOC8I3jDcC6VpVuoDGsBGNoQbOgy2LqQbXQ==",
+          "requires": {
+            "@docusaurus/types": "2.0.0-beta.6",
+            "tslib": "^2.2.0"
+          }
+        },
+        "@docusaurus/utils-validation": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2futils-validation/-/utils-validation-2.0.0-beta.6.tgz",
+          "integrity": "sha512-v0nk9bpawUd2JFDFyiHDmZuMG+/O1UvxtxvcRbvrxrul+rlzD7Q9CGxMgW3Grp2OCKQ4yFXRidBIccwqON5AVw==",
+          "requires": {
+            "@docusaurus/utils": "2.0.0-beta.6",
+            "chalk": "^4.1.1",
+            "joi": "^17.4.0",
+            "tslib": "^2.1.0"
+          }
+        },
+        "anymatch": {
+          "version": "2.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/anymatch/-/anymatch-2.0.0.tgz",
+          "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+          "requires": {
+            "micromatch": "^3.1.4",
+            "normalize-path": "^2.1.1"
+          },
+          "dependencies": {
+            "micromatch": {
+              "version": "3.1.10",
+              "resolved": "https://mirrors.tencent.com/npm/micromatch/-/micromatch-3.1.10.tgz",
+              "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+              "requires": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "braces": "^2.3.1",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "extglob": "^2.0.4",
+                "fragment-cache": "^0.2.1",
+                "kind-of": "^6.0.2",
+                "nanomatch": "^1.2.9",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.2"
+              }
+            },
+            "normalize-path": {
+              "version": "2.1.1",
+              "resolved": "https://mirrors.tencent.com/npm/normalize-path/-/normalize-path-2.1.1.tgz",
+              "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+              "requires": {
+                "remove-trailing-separator": "^1.0.1"
+              }
+            }
+          }
+        },
+        "binary-extensions": {
+          "version": "1.13.1",
+          "resolved": "https://mirrors.tencent.com/npm/binary-extensions/-/binary-extensions-1.13.1.tgz",
+          "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw=="
+        },
+        "braces": {
+          "version": "2.3.2",
+          "resolved": "https://mirrors.tencent.com/npm/braces/-/braces-2.3.2.tgz",
+          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+          "requires": {
+            "arr-flatten": "^1.1.0",
+            "array-unique": "^0.3.2",
+            "extend-shallow": "^2.0.1",
+            "fill-range": "^4.0.0",
+            "isobject": "^3.0.1",
+            "repeat-element": "^1.1.2",
+            "snapdragon": "^0.8.1",
+            "snapdragon-node": "^2.0.1",
+            "split-string": "^3.0.2",
+            "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://mirrors.tencent.com/npm/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "browserslist": {
+          "version": "4.14.2",
+          "resolved": "https://mirrors.tencent.com/npm/browserslist/-/browserslist-4.14.2.tgz",
+          "integrity": "sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==",
+          "requires": {
+            "caniuse-lite": "^1.0.30001125",
+            "electron-to-chromium": "^1.3.564",
+            "escalade": "^3.0.2",
+            "node-releases": "^1.1.61"
+          }
+        },
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://mirrors.tencent.com/npm/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "detect-port-alt": {
+          "version": "1.1.6",
+          "resolved": "https://mirrors.tencent.com/npm/detect-port-alt/-/detect-port-alt-1.1.6.tgz",
+          "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==",
+          "requires": {
+            "address": "^1.0.1",
+            "debug": "^2.6.0"
+          }
+        },
+        "escape-string-regexp": {
+          "version": "4.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+          "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
+        },
+        "extend-shallow": {
+          "version": "3.0.2",
+          "resolved": "https://mirrors.tencent.com/npm/extend-shallow/-/extend-shallow-3.0.2.tgz",
+          "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+          "requires": {
+            "assign-symbols": "^1.0.0",
+            "is-extendable": "^1.0.1"
+          },
+          "dependencies": {
+            "is-extendable": {
+              "version": "1.0.1",
+              "resolved": "https://mirrors.tencent.com/npm/is-extendable/-/is-extendable-1.0.1.tgz",
+              "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+              "requires": {
+                "is-plain-object": "^2.0.4"
+              }
+            }
+          }
+        },
+        "filesize": {
+          "version": "6.1.0",
+          "resolved": "https://mirrors.tencent.com/npm/filesize/-/filesize-6.1.0.tgz",
+          "integrity": "sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg=="
+        },
+        "fill-range": {
+          "version": "4.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/fill-range/-/fill-range-4.0.0.tgz",
+          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+          "requires": {
+            "extend-shallow": "^2.0.1",
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1",
+            "to-regex-range": "^2.1.0"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://mirrors.tencent.com/npm/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "fork-ts-checker-webpack-plugin": {
+          "version": "4.1.6",
+          "resolved": "https://mirrors.tencent.com/npm/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz",
+          "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==",
+          "requires": {
+            "@babel/code-frame": "^7.5.5",
+            "chalk": "^2.4.1",
+            "micromatch": "^3.1.10",
+            "minimatch": "^3.0.4",
+            "semver": "^5.6.0",
+            "tapable": "^1.0.0",
+            "worker-rpc": "^0.1.0"
+          },
+          "dependencies": {
+            "chalk": {
+              "version": "2.4.2",
+              "resolved": "https://mirrors.tencent.com/npm/chalk/-/chalk-2.4.2.tgz",
+              "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+              "requires": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+              }
+            },
+            "escape-string-regexp": {
+              "version": "1.0.5",
+              "resolved": "https://mirrors.tencent.com/npm/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+              "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+            },
+            "micromatch": {
+              "version": "3.1.10",
+              "resolved": "https://mirrors.tencent.com/npm/micromatch/-/micromatch-3.1.10.tgz",
+              "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+              "requires": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "braces": "^2.3.1",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "extglob": "^2.0.4",
+                "fragment-cache": "^0.2.1",
+                "kind-of": "^6.0.2",
+                "nanomatch": "^1.2.9",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.2"
+              }
+            },
+            "semver": {
+              "version": "5.7.1",
+              "resolved": "https://mirrors.tencent.com/npm/semver/-/semver-5.7.1.tgz",
+              "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+            }
+          }
+        },
+        "fsevents": {
+          "version": "1.2.13",
+          "resolved": "https://mirrors.tencent.com/npm/fsevents/-/fsevents-1.2.13.tgz",
+          "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+          "optional": true
+        },
+        "glob-parent": {
+          "version": "3.1.0",
+          "resolved": "https://mirrors.tencent.com/npm/glob-parent/-/glob-parent-3.1.0.tgz",
+          "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+          "requires": {
+            "is-glob": "^3.1.0",
+            "path-dirname": "^1.0.0"
+          },
+          "dependencies": {
+            "is-glob": {
+              "version": "3.1.0",
+              "resolved": "https://mirrors.tencent.com/npm/is-glob/-/is-glob-3.1.0.tgz",
+              "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+              "requires": {
+                "is-extglob": "^2.1.0"
+              }
+            }
+          }
+        },
+        "html-entities": {
+          "version": "1.4.0",
+          "resolved": "https://mirrors.tencent.com/npm/html-entities/-/html-entities-1.4.0.tgz",
+          "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA=="
+        },
+        "html-minifier-terser": {
+          "version": "5.1.1",
+          "resolved": "https://mirrors.tencent.com/npm/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz",
+          "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==",
+          "requires": {
+            "camel-case": "^4.1.1",
+            "clean-css": "^4.2.3",
+            "commander": "^4.1.1",
+            "he": "^1.2.0",
+            "param-case": "^3.0.3",
+            "relateurl": "^0.2.7",
+            "terser": "^4.6.3"
+          },
+          "dependencies": {
+            "clean-css": {
+              "version": "4.2.4",
+              "resolved": "https://mirrors.tencent.com/npm/clean-css/-/clean-css-4.2.4.tgz",
+              "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==",
+              "requires": {
+                "source-map": "~0.6.0"
+              }
+            },
+            "commander": {
+              "version": "4.1.1",
+              "resolved": "https://mirrors.tencent.com/npm/commander/-/commander-4.1.1.tgz",
+              "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="
+            }
+          }
+        },
+        "http-proxy-middleware": {
+          "version": "0.19.1",
+          "resolved": "https://mirrors.tencent.com/npm/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
+          "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==",
+          "requires": {
+            "http-proxy": "^1.17.0",
+            "is-glob": "^4.0.0",
+            "lodash": "^4.17.11",
+            "micromatch": "^3.1.10"
+          },
+          "dependencies": {
+            "micromatch": {
+              "version": "3.1.10",
+              "resolved": "https://mirrors.tencent.com/npm/micromatch/-/micromatch-3.1.10.tgz",
+              "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+              "requires": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "braces": "^2.3.1",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "extglob": "^2.0.4",
+                "fragment-cache": "^0.2.1",
+                "kind-of": "^6.0.2",
+                "nanomatch": "^1.2.9",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.2"
+              }
+            }
+          }
+        },
+        "immer": {
+          "version": "8.0.1",
+          "resolved": "https://mirrors.tencent.com/npm/immer/-/immer-8.0.1.tgz",
+          "integrity": "sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA=="
+        },
+        "is-binary-path": {
+          "version": "1.0.1",
+          "resolved": "https://mirrors.tencent.com/npm/is-binary-path/-/is-binary-path-1.0.1.tgz",
+          "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+          "requires": {
+            "binary-extensions": "^1.0.0"
+          }
+        },
+        "is-buffer": {
+          "version": "1.1.6",
+          "resolved": "https://mirrors.tencent.com/npm/is-buffer/-/is-buffer-1.1.6.tgz",
+          "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+        },
+        "is-number": {
+          "version": "3.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/is-number/-/is-number-3.0.0.tgz",
+          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "resolved": "https://mirrors.tencent.com/npm/kind-of/-/kind-of-3.2.2.tgz",
+              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "isarray": {
+          "version": "1.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/isarray/-/isarray-1.0.0.tgz",
+          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+        },
+        "loader-utils": {
+          "version": "2.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/loader-utils/-/loader-utils-2.0.0.tgz",
+          "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^2.1.2"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+        },
+        "node-releases": {
+          "version": "1.1.77",
+          "resolved": "https://mirrors.tencent.com/npm/node-releases/-/node-releases-1.1.77.tgz",
+          "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ=="
+        },
+        "p-map": {
+          "version": "2.1.0",
+          "resolved": "https://mirrors.tencent.com/npm/p-map/-/p-map-2.1.0.tgz",
+          "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw=="
+        },
+        "p-retry": {
+          "version": "3.0.1",
+          "resolved": "https://mirrors.tencent.com/npm/p-retry/-/p-retry-3.0.1.tgz",
+          "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==",
+          "requires": {
+            "retry": "^0.12.0"
+          }
+        },
+        "postcss-loader": {
+          "version": "5.3.0",
+          "resolved": "https://mirrors.tencent.com/npm/postcss-loader/-/postcss-loader-5.3.0.tgz",
+          "integrity": "sha512-/+Z1RAmssdiSLgIZwnJHwBMnlABPgF7giYzTN2NOfr9D21IJZ4mQC1R2miwp80zno9M4zMD/umGI8cR+2EL5zw==",
+          "requires": {
+            "cosmiconfig": "^7.0.0",
+            "klona": "^2.0.4",
+            "semver": "^7.3.4"
+          }
+        },
+        "postcss-sort-media-queries": {
+          "version": "3.12.13",
+          "resolved": "https://mirrors.tencent.com/npm/postcss-sort-media-queries/-/postcss-sort-media-queries-3.12.13.tgz",
+          "integrity": "sha512-bFbR1+P6HhZWXcT5DVV2pBH5Y2U5daKbFd0j+kcwKdzrxkbmgFu0GhI2JfFUyy5KQIeW+YJGP+vwNDOS5hIn2g==",
+          "requires": {
+            "sort-css-media-queries": "2.0.4"
+          }
+        },
+        "range-parser": {
+          "version": "1.2.1",
+          "resolved": "https://mirrors.tencent.com/npm/range-parser/-/range-parser-1.2.1.tgz",
+          "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
+        },
+        "react-dev-utils": {
+          "version": "11.0.4",
+          "resolved": "https://mirrors.tencent.com/npm/react-dev-utils/-/react-dev-utils-11.0.4.tgz",
+          "integrity": "sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A==",
+          "requires": {
+            "@babel/code-frame": "7.10.4",
+            "address": "1.1.2",
+            "browserslist": "4.14.2",
+            "chalk": "2.4.2",
+            "cross-spawn": "7.0.3",
+            "detect-port-alt": "1.1.6",
+            "escape-string-regexp": "2.0.0",
+            "filesize": "6.1.0",
+            "find-up": "4.1.0",
+            "fork-ts-checker-webpack-plugin": "4.1.6",
+            "global-modules": "2.0.0",
+            "globby": "11.0.1",
+            "gzip-size": "5.1.1",
+            "immer": "8.0.1",
+            "is-root": "2.1.0",
+            "loader-utils": "2.0.0",
+            "open": "^7.0.2",
+            "pkg-up": "3.1.0",
+            "prompts": "2.4.0",
+            "react-error-overlay": "^6.0.9",
+            "recursive-readdir": "2.2.2",
+            "shell-quote": "1.7.2",
+            "strip-ansi": "6.0.0",
+            "text-table": "0.2.0"
+          },
+          "dependencies": {
+            "chalk": {
+              "version": "2.4.2",
+              "resolved": "https://mirrors.tencent.com/npm/chalk/-/chalk-2.4.2.tgz",
+              "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+              "requires": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+              },
+              "dependencies": {
+                "escape-string-regexp": {
+                  "version": "1.0.5",
+                  "resolved": "https://mirrors.tencent.com/npm/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+                  "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+                }
+              }
+            },
+            "escape-string-regexp": {
+              "version": "2.0.0",
+              "resolved": "https://mirrors.tencent.com/npm/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+              "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w=="
+            },
+            "globby": {
+              "version": "11.0.1",
+              "resolved": "https://mirrors.tencent.com/npm/globby/-/globby-11.0.1.tgz",
+              "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==",
+              "requires": {
+                "array-union": "^2.1.0",
+                "dir-glob": "^3.0.1",
+                "fast-glob": "^3.1.1",
+                "ignore": "^5.1.4",
+                "merge2": "^1.3.0",
+                "slash": "^3.0.0"
+              }
+            },
+            "prompts": {
+              "version": "2.4.0",
+              "resolved": "https://mirrors.tencent.com/npm/prompts/-/prompts-2.4.0.tgz",
+              "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==",
+              "requires": {
+                "kleur": "^3.0.3",
+                "sisteransi": "^1.0.5"
+              }
+            },
+            "strip-ansi": {
+              "version": "6.0.0",
+              "resolved": "https://mirrors.tencent.com/npm/strip-ansi/-/strip-ansi-6.0.0.tgz",
+              "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+              "requires": {
+                "ansi-regex": "^5.0.0"
+              }
+            }
+          }
+        },
+        "readable-stream": {
+          "version": "2.3.7",
+          "resolved": "https://mirrors.tencent.com/npm/readable-stream/-/readable-stream-2.3.7.tgz",
+          "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.3",
+            "isarray": "~1.0.0",
+            "process-nextick-args": "~2.0.0",
+            "safe-buffer": "~5.1.1",
+            "string_decoder": "~1.1.1",
+            "util-deprecate": "~1.0.1"
+          }
+        },
+        "readdirp": {
+          "version": "2.2.1",
+          "resolved": "https://mirrors.tencent.com/npm/readdirp/-/readdirp-2.2.1.tgz",
+          "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+          "requires": {
+            "graceful-fs": "^4.1.11",
+            "micromatch": "^3.1.10",
+            "readable-stream": "^2.0.2"
+          },
+          "dependencies": {
+            "micromatch": {
+              "version": "3.1.10",
+              "resolved": "https://mirrors.tencent.com/npm/micromatch/-/micromatch-3.1.10.tgz",
+              "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+              "requires": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "braces": "^2.3.1",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "extglob": "^2.0.4",
+                "fragment-cache": "^0.2.1",
+                "kind-of": "^6.0.2",
+                "nanomatch": "^1.2.9",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.2"
+              }
+            }
+          }
+        },
+        "retry": {
+          "version": "0.12.0",
+          "resolved": "https://mirrors.tencent.com/npm/retry/-/retry-0.12.0.tgz",
+          "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs="
+        },
+        "rimraf": {
+          "version": "2.7.1",
+          "resolved": "https://mirrors.tencent.com/npm/rimraf/-/rimraf-2.7.1.tgz",
+          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        },
+        "rxjs": {
+          "version": "6.6.7",
+          "resolved": "https://mirrors.tencent.com/npm/rxjs/-/rxjs-6.6.7.tgz",
+          "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
+          "requires": {
+            "tslib": "^1.9.0"
+          },
+          "dependencies": {
+            "tslib": {
+              "version": "1.14.1",
+              "resolved": "https://mirrors.tencent.com/npm/tslib/-/tslib-1.14.1.tgz",
+              "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+            }
+          }
+        },
+        "schema-utils": {
+          "version": "1.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/schema-utils/-/schema-utils-1.0.0.tgz",
+          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        },
+        "shell-quote": {
+          "version": "1.7.2",
+          "resolved": "https://mirrors.tencent.com/npm/shell-quote/-/shell-quote-1.7.2.tgz",
+          "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg=="
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://mirrors.tencent.com/npm/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+        },
+        "string_decoder": {
+          "version": "1.1.1",
+          "resolved": "https://mirrors.tencent.com/npm/string_decoder/-/string_decoder-1.1.1.tgz",
+          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+          "requires": {
+            "safe-buffer": "~5.1.0"
+          }
+        },
+        "tapable": {
+          "version": "1.1.3",
+          "resolved": "https://mirrors.tencent.com/npm/tapable/-/tapable-1.1.3.tgz",
+          "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA=="
+        },
+        "terser": {
+          "version": "4.8.0",
+          "resolved": "https://mirrors.tencent.com/npm/terser/-/terser-4.8.0.tgz",
+          "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
+          "requires": {
+            "commander": "^2.20.0",
+            "source-map": "~0.6.1",
+            "source-map-support": "~0.5.12"
+          },
+          "dependencies": {
+            "commander": {
+              "version": "2.20.3",
+              "resolved": "https://mirrors.tencent.com/npm/commander/-/commander-2.20.3.tgz",
+              "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+            }
+          }
+        },
+        "to-regex-range": {
+          "version": "2.1.1",
+          "resolved": "https://mirrors.tencent.com/npm/to-regex-range/-/to-regex-range-2.1.1.tgz",
+          "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+          "requires": {
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1"
+          }
+        },
+        "wait-on": {
+          "version": "5.3.0",
+          "resolved": "https://mirrors.tencent.com/npm/wait-on/-/wait-on-5.3.0.tgz",
+          "integrity": "sha512-DwrHrnTK+/0QFaB9a8Ol5Lna3k7WvUR4jzSKmz0YaPBpuN2sACyiPVKVfj6ejnjcajAcvn3wlbTyMIn9AZouOg==",
+          "requires": {
+            "axios": "^0.21.1",
+            "joi": "^17.3.0",
+            "lodash": "^4.17.21",
+            "minimist": "^1.2.5",
+            "rxjs": "^6.6.3"
+          }
+        },
+        "webpack-dev-middleware": {
+          "version": "3.7.3",
+          "resolved": "https://mirrors.tencent.com/npm/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz",
+          "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==",
+          "requires": {
+            "memory-fs": "^0.4.1",
+            "mime": "^2.4.4",
+            "mkdirp": "^0.5.1",
+            "range-parser": "^1.2.1",
+            "webpack-log": "^2.0.0"
+          }
+        },
+        "webpack-dev-server": {
+          "version": "3.11.3",
+          "resolved": "https://mirrors.tencent.com/npm/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz",
+          "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==",
+          "requires": {
+            "ansi-html-community": "0.0.8",
+            "bonjour": "^3.5.0",
+            "chokidar": "^2.1.8",
+            "compression": "^1.7.4",
+            "connect-history-api-fallback": "^1.6.0",
+            "debug": "^4.1.1",
+            "del": "^4.1.1",
+            "express": "^4.17.1",
+            "html-entities": "^1.3.1",
+            "http-proxy-middleware": "0.19.1",
+            "import-local": "^2.0.0",
+            "internal-ip": "^4.3.0",
+            "ip": "^1.1.5",
+            "is-absolute-url": "^3.0.3",
+            "killable": "^1.0.1",
+            "loglevel": "^1.6.8",
+            "opn": "^5.5.0",
+            "p-retry": "^3.0.1",
+            "portfinder": "^1.0.26",
+            "schema-utils": "^1.0.0",
+            "selfsigned": "^1.10.8",
+            "semver": "^6.3.0",
+            "serve-index": "^1.9.1",
+            "sockjs": "^0.3.21",
+            "sockjs-client": "^1.5.0",
+            "spdy": "^4.0.2",
+            "strip-ansi": "^3.0.1",
+            "supports-color": "^6.1.0",
+            "url": "^0.11.0",
+            "webpack-dev-middleware": "^3.7.2",
+            "webpack-log": "^2.0.0",
+            "ws": "^6.2.1",
+            "yargs": "^13.3.2"
+          },
+          "dependencies": {
+            "ansi-regex": {
+              "version": "2.1.1",
+              "resolved": "https://mirrors.tencent.com/npm/ansi-regex/-/ansi-regex-2.1.1.tgz",
+              "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+            },
+            "array-union": {
+              "version": "1.0.2",
+              "resolved": "https://mirrors.tencent.com/npm/array-union/-/array-union-1.0.2.tgz",
+              "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+              "requires": {
+                "array-uniq": "^1.0.1"
+              }
+            },
+            "chokidar": {
+              "version": "2.1.8",
+              "resolved": "https://mirrors.tencent.com/npm/chokidar/-/chokidar-2.1.8.tgz",
+              "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+              "requires": {
+                "anymatch": "^2.0.0",
+                "async-each": "^1.0.1",
+                "braces": "^2.3.2",
+                "fsevents": "^1.2.7",
+                "glob-parent": "^3.1.0",
+                "inherits": "^2.0.3",
+                "is-binary-path": "^1.0.0",
+                "is-glob": "^4.0.0",
+                "normalize-path": "^3.0.0",
+                "path-is-absolute": "^1.0.0",
+                "readdirp": "^2.2.1",
+                "upath": "^1.1.1"
+              }
+            },
+            "debug": {
+              "version": "4.3.3",
+              "resolved": "https://mirrors.tencent.com/npm/debug/-/debug-4.3.3.tgz",
+              "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+              "requires": {
+                "ms": "2.1.2"
+              }
+            },
+            "del": {
+              "version": "4.1.1",
+              "resolved": "https://mirrors.tencent.com/npm/del/-/del-4.1.1.tgz",
+              "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==",
+              "requires": {
+                "@types/glob": "^7.1.1",
+                "globby": "^6.1.0",
+                "is-path-cwd": "^2.0.0",
+                "is-path-in-cwd": "^2.0.0",
+                "p-map": "^2.0.0",
+                "pify": "^4.0.1",
+                "rimraf": "^2.6.3"
+              }
+            },
+            "globby": {
+              "version": "6.1.0",
+              "resolved": "https://mirrors.tencent.com/npm/globby/-/globby-6.1.0.tgz",
+              "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+              "requires": {
+                "array-union": "^1.0.1",
+                "glob": "^7.0.3",
+                "object-assign": "^4.0.1",
+                "pify": "^2.0.0",
+                "pinkie-promise": "^2.0.0"
+              },
+              "dependencies": {
+                "pify": {
+                  "version": "2.3.0",
+                  "resolved": "https://mirrors.tencent.com/npm/pify/-/pify-2.3.0.tgz",
+                  "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
+                }
+              }
+            },
+            "ms": {
+              "version": "2.1.2",
+              "resolved": "https://mirrors.tencent.com/npm/ms/-/ms-2.1.2.tgz",
+              "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+            },
+            "semver": {
+              "version": "6.3.0",
+              "resolved": "https://mirrors.tencent.com/npm/semver/-/semver-6.3.0.tgz",
+              "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+            },
+            "strip-ansi": {
+              "version": "3.0.1",
+              "resolved": "https://mirrors.tencent.com/npm/strip-ansi/-/strip-ansi-3.0.1.tgz",
+              "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+              "requires": {
+                "ansi-regex": "^2.0.0"
+              }
+            },
+            "supports-color": {
+              "version": "6.1.0",
+              "resolved": "https://mirrors.tencent.com/npm/supports-color/-/supports-color-6.1.0.tgz",
+              "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+              "requires": {
+                "has-flag": "^3.0.0"
+              }
+            }
+          }
+        },
+        "ws": {
+          "version": "6.2.2",
+          "resolved": "https://mirrors.tencent.com/npm/ws/-/ws-6.2.2.tgz",
+          "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==",
+          "requires": {
+            "async-limiter": "~1.0.0"
+          }
+        }
+      }
+    },
+    "@docusaurus/plugin-debug": {
+      "version": "2.0.0-beta.6",
+      "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2fplugin-debug/-/plugin-debug-2.0.0-beta.6.tgz",
+      "integrity": "sha512-TJXDBR2Gr/mhBrcj+/4+rTShSm/Qg56Jfezbm/2fFvuPgVlUwy6oj08s2/kYSTmkfG7G+c4iX1GBHjtyo1KxZA==",
+      "requires": {
+        "@docusaurus/core": "2.0.0-beta.6",
+        "@docusaurus/types": "2.0.0-beta.6",
+        "@docusaurus/utils": "2.0.0-beta.6",
+        "fs-extra": "^9.1.0",
+        "react-json-view": "^1.21.3",
+        "tslib": "^2.1.0"
+      },
+      "dependencies": {
+        "@babel/code-frame": {
+          "version": "7.10.4",
+          "resolved": "https://mirrors.tencent.com/npm/@babel%2fcode-frame/-/code-frame-7.10.4.tgz",
+          "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
+          "requires": {
+            "@babel/highlight": "^7.10.4"
+          }
+        },
+        "@docusaurus/core": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2fcore/-/core-2.0.0-beta.6.tgz",
+          "integrity": "sha512-XMeI+lJKeJBGYBNOfO/Tc+5FMf21E5p1xZjfe75cgYcfZdERZ+W7aemXquwReno8xxHb4Rnfmi9dxkbOLDjqDA==",
+          "requires": {
+            "@babel/core": "^7.12.16",
+            "@babel/generator": "^7.12.15",
+            "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+            "@babel/plugin-transform-runtime": "^7.12.15",
+            "@babel/preset-env": "^7.12.16",
+            "@babel/preset-react": "^7.12.13",
+            "@babel/preset-typescript": "^7.12.16",
+            "@babel/runtime": "^7.12.5",
+            "@babel/runtime-corejs3": "^7.12.13",
+            "@babel/traverse": "^7.12.13",
+            "@docusaurus/cssnano-preset": "2.0.0-beta.6",
+            "@docusaurus/react-loadable": "5.5.0",
+            "@docusaurus/types": "2.0.0-beta.6",
+            "@docusaurus/utils": "2.0.0-beta.6",
+            "@docusaurus/utils-common": "2.0.0-beta.6",
+            "@docusaurus/utils-validation": "2.0.0-beta.6",
+            "@slorber/static-site-generator-webpack-plugin": "^4.0.0",
+            "@svgr/webpack": "^5.5.0",
+            "autoprefixer": "^10.2.5",
+            "babel-loader": "^8.2.2",
+            "babel-plugin-dynamic-import-node": "2.3.0",
+            "boxen": "^5.0.1",
+            "chalk": "^4.1.1",
+            "chokidar": "^3.5.1",
+            "clean-css": "^5.1.5",
+            "commander": "^5.1.0",
+            "copy-webpack-plugin": "^9.0.0",
+            "core-js": "^3.9.1",
+            "css-loader": "^5.1.1",
+            "css-minimizer-webpack-plugin": "^3.0.1",
+            "cssnano": "^5.0.4",
+            "del": "^6.0.0",
+            "detect-port": "^1.3.0",
+            "escape-html": "^1.0.3",
+            "eta": "^1.12.1",
+            "express": "^4.17.1",
+            "file-loader": "^6.2.0",
+            "fs-extra": "^10.0.0",
+            "github-slugger": "^1.3.0",
+            "globby": "^11.0.2",
+            "html-minifier-terser": "^5.1.1",
+            "html-tags": "^3.1.0",
+            "html-webpack-plugin": "^5.3.2",
+            "import-fresh": "^3.3.0",
+            "is-root": "^2.1.0",
+            "leven": "^3.1.0",
+            "lodash": "^4.17.20",
+            "mini-css-extract-plugin": "^1.6.0",
+            "module-alias": "^2.2.2",
+            "nprogress": "^0.2.0",
+            "postcss": "^8.2.15",
+            "postcss-loader": "^5.3.0",
+            "prompts": "^2.4.1",
+            "react-dev-utils": "^11.0.1",
+            "react-error-overlay": "^6.0.9",
+            "react-helmet": "^6.1.0",
+            "react-loadable": "^5.5.0",
+            "react-loadable-ssr-addon-v5-slorber": "^1.0.1",
+            "react-router": "^5.2.0",
+            "react-router-config": "^5.1.1",
+            "react-router-dom": "^5.2.0",
+            "remark-admonitions": "^1.2.1",
+            "resolve-pathname": "^3.0.0",
+            "rtl-detect": "^1.0.3",
+            "semver": "^7.3.4",
+            "serve-handler": "^6.1.3",
+            "shelljs": "^0.8.4",
+            "std-env": "^2.2.1",
+            "strip-ansi": "^6.0.0",
+            "terser-webpack-plugin": "^5.1.3",
+            "tslib": "^2.2.0",
+            "update-notifier": "^5.1.0",
+            "url-loader": "^4.1.1",
+            "wait-on": "^5.3.0",
+            "webpack": "^5.40.0",
+            "webpack-bundle-analyzer": "^4.4.2",
+            "webpack-dev-server": "^3.11.2",
+            "webpack-merge": "^5.8.0",
+            "webpackbar": "^5.0.0-3"
+          },
+          "dependencies": {
+            "fs-extra": {
+              "version": "10.0.0",
+              "resolved": "https://mirrors.tencent.com/npm/fs-extra/-/fs-extra-10.0.0.tgz",
+              "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==",
+              "requires": {
+                "graceful-fs": "^4.2.0",
+                "jsonfile": "^6.0.1",
+                "universalify": "^2.0.0"
+              }
+            }
+          }
+        },
+        "@docusaurus/cssnano-preset": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2fcssnano-preset/-/cssnano-preset-2.0.0-beta.6.tgz",
+          "integrity": "sha512-RCizp2NAbADopkX5nUz1xrAbU6hGZzziQk9RdSDGJLzMgVCN6RDotq9odS8VgzNa9x2Lx3WN527UxeEbzc2GVQ==",
+          "requires": {
+            "cssnano-preset-advanced": "^5.1.1",
+            "postcss": "^8.2.15",
+            "postcss-sort-media-queries": "^3.10.11"
+          }
+        },
+        "@docusaurus/react-loadable": {
+          "version": "5.5.0",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2freact-loadable/-/react-loadable-5.5.0.tgz",
+          "integrity": "sha512-Ld/kwUE6yATIOTLq3JCsWiTa/drisajwKqBQ2Rw6IcT+sFsKfYek8F2jSH8f68AT73xX97UehduZeCSlnuCBIg==",
+          "requires": {
+            "prop-types": "^15.6.2"
+          }
+        },
+        "@docusaurus/types": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2ftypes/-/types-2.0.0-beta.6.tgz",
+          "integrity": "sha512-TrwxyI93XTZEhOmdEI8FPKDbGV61zE9PzXCdE1alwz1NOV+YXwcv+9sRTZEVLqBpr+TIja+IeeS6mxnyen/Ptg==",
+          "requires": {
+            "commander": "^5.1.0",
+            "joi": "^17.4.0",
+            "querystring": "0.2.0",
+            "webpack": "^5.40.0",
+            "webpack-merge": "^5.8.0"
+          }
+        },
+        "@docusaurus/utils": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2futils/-/utils-2.0.0-beta.6.tgz",
+          "integrity": "sha512-S72/o7VDaTvrXJy+NpfuctghGGoMW30m94PMkrL3I6V+o5eE2Uzax7dbM++moclmHvi0/Khv+TXmRIQs6ZvwgQ==",
+          "requires": {
+            "@docusaurus/types": "2.0.0-beta.6",
+            "@types/github-slugger": "^1.3.0",
+            "chalk": "^4.1.1",
+            "escape-string-regexp": "^4.0.0",
+            "fs-extra": "^10.0.0",
+            "globby": "^11.0.4",
+            "gray-matter": "^4.0.3",
+            "lodash": "^4.17.20",
+            "micromatch": "^4.0.4",
+            "resolve-pathname": "^3.0.0",
+            "tslib": "^2.2.0"
+          },
+          "dependencies": {
+            "fs-extra": {
+              "version": "10.0.0",
+              "resolved": "https://mirrors.tencent.com/npm/fs-extra/-/fs-extra-10.0.0.tgz",
+              "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==",
+              "requires": {
+                "graceful-fs": "^4.2.0",
+                "jsonfile": "^6.0.1",
+                "universalify": "^2.0.0"
+              }
+            }
+          }
+        },
+        "@docusaurus/utils-common": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2futils-common/-/utils-common-2.0.0-beta.6.tgz",
+          "integrity": "sha512-MKm6bJxvsYWRl072jLR60z+71tTWSxoERh2eTmCYlegFnu3Tby3HOC8I3jDcC6VpVuoDGsBGNoQbOgy2LqQbXQ==",
+          "requires": {
+            "@docusaurus/types": "2.0.0-beta.6",
+            "tslib": "^2.2.0"
+          }
+        },
+        "@docusaurus/utils-validation": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2futils-validation/-/utils-validation-2.0.0-beta.6.tgz",
+          "integrity": "sha512-v0nk9bpawUd2JFDFyiHDmZuMG+/O1UvxtxvcRbvrxrul+rlzD7Q9CGxMgW3Grp2OCKQ4yFXRidBIccwqON5AVw==",
+          "requires": {
+            "@docusaurus/utils": "2.0.0-beta.6",
+            "chalk": "^4.1.1",
+            "joi": "^17.4.0",
+            "tslib": "^2.1.0"
+          }
+        },
+        "anymatch": {
+          "version": "2.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/anymatch/-/anymatch-2.0.0.tgz",
+          "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+          "requires": {
+            "micromatch": "^3.1.4",
+            "normalize-path": "^2.1.1"
+          },
+          "dependencies": {
+            "micromatch": {
+              "version": "3.1.10",
+              "resolved": "https://mirrors.tencent.com/npm/micromatch/-/micromatch-3.1.10.tgz",
+              "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+              "requires": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "braces": "^2.3.1",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "extglob": "^2.0.4",
+                "fragment-cache": "^0.2.1",
+                "kind-of": "^6.0.2",
+                "nanomatch": "^1.2.9",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.2"
+              }
+            },
+            "normalize-path": {
+              "version": "2.1.1",
+              "resolved": "https://mirrors.tencent.com/npm/normalize-path/-/normalize-path-2.1.1.tgz",
+              "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+              "requires": {
+                "remove-trailing-separator": "^1.0.1"
+              }
+            }
+          }
+        },
+        "binary-extensions": {
+          "version": "1.13.1",
+          "resolved": "https://mirrors.tencent.com/npm/binary-extensions/-/binary-extensions-1.13.1.tgz",
+          "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw=="
+        },
+        "braces": {
+          "version": "2.3.2",
+          "resolved": "https://mirrors.tencent.com/npm/braces/-/braces-2.3.2.tgz",
+          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+          "requires": {
+            "arr-flatten": "^1.1.0",
+            "array-unique": "^0.3.2",
+            "extend-shallow": "^2.0.1",
+            "fill-range": "^4.0.0",
+            "isobject": "^3.0.1",
+            "repeat-element": "^1.1.2",
+            "snapdragon": "^0.8.1",
+            "snapdragon-node": "^2.0.1",
+            "split-string": "^3.0.2",
+            "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://mirrors.tencent.com/npm/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "browserslist": {
+          "version": "4.14.2",
+          "resolved": "https://mirrors.tencent.com/npm/browserslist/-/browserslist-4.14.2.tgz",
+          "integrity": "sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==",
+          "requires": {
+            "caniuse-lite": "^1.0.30001125",
+            "electron-to-chromium": "^1.3.564",
+            "escalade": "^3.0.2",
+            "node-releases": "^1.1.61"
+          }
+        },
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://mirrors.tencent.com/npm/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "detect-port-alt": {
+          "version": "1.1.6",
+          "resolved": "https://mirrors.tencent.com/npm/detect-port-alt/-/detect-port-alt-1.1.6.tgz",
+          "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==",
+          "requires": {
+            "address": "^1.0.1",
+            "debug": "^2.6.0"
+          }
+        },
+        "escape-string-regexp": {
+          "version": "4.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+          "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
+        },
+        "extend-shallow": {
+          "version": "3.0.2",
+          "resolved": "https://mirrors.tencent.com/npm/extend-shallow/-/extend-shallow-3.0.2.tgz",
+          "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+          "requires": {
+            "assign-symbols": "^1.0.0",
+            "is-extendable": "^1.0.1"
+          },
+          "dependencies": {
+            "is-extendable": {
+              "version": "1.0.1",
+              "resolved": "https://mirrors.tencent.com/npm/is-extendable/-/is-extendable-1.0.1.tgz",
+              "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+              "requires": {
+                "is-plain-object": "^2.0.4"
+              }
+            }
+          }
+        },
+        "filesize": {
+          "version": "6.1.0",
+          "resolved": "https://mirrors.tencent.com/npm/filesize/-/filesize-6.1.0.tgz",
+          "integrity": "sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg=="
+        },
+        "fill-range": {
+          "version": "4.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/fill-range/-/fill-range-4.0.0.tgz",
+          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+          "requires": {
+            "extend-shallow": "^2.0.1",
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1",
+            "to-regex-range": "^2.1.0"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://mirrors.tencent.com/npm/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "fork-ts-checker-webpack-plugin": {
+          "version": "4.1.6",
+          "resolved": "https://mirrors.tencent.com/npm/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz",
+          "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==",
+          "requires": {
+            "@babel/code-frame": "^7.5.5",
+            "chalk": "^2.4.1",
+            "micromatch": "^3.1.10",
+            "minimatch": "^3.0.4",
+            "semver": "^5.6.0",
+            "tapable": "^1.0.0",
+            "worker-rpc": "^0.1.0"
+          },
+          "dependencies": {
+            "chalk": {
+              "version": "2.4.2",
+              "resolved": "https://mirrors.tencent.com/npm/chalk/-/chalk-2.4.2.tgz",
+              "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+              "requires": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+              }
+            },
+            "escape-string-regexp": {
+              "version": "1.0.5",
+              "resolved": "https://mirrors.tencent.com/npm/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+              "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+            },
+            "micromatch": {
+              "version": "3.1.10",
+              "resolved": "https://mirrors.tencent.com/npm/micromatch/-/micromatch-3.1.10.tgz",
+              "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+              "requires": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "braces": "^2.3.1",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "extglob": "^2.0.4",
+                "fragment-cache": "^0.2.1",
+                "kind-of": "^6.0.2",
+                "nanomatch": "^1.2.9",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.2"
+              }
+            },
+            "semver": {
+              "version": "5.7.1",
+              "resolved": "https://mirrors.tencent.com/npm/semver/-/semver-5.7.1.tgz",
+              "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+            }
+          }
+        },
+        "fs-extra": {
+          "version": "9.1.0",
+          "resolved": "https://mirrors.tencent.com/npm/fs-extra/-/fs-extra-9.1.0.tgz",
+          "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+          "requires": {
+            "at-least-node": "^1.0.0",
+            "graceful-fs": "^4.2.0",
+            "jsonfile": "^6.0.1",
+            "universalify": "^2.0.0"
+          }
+        },
+        "fsevents": {
+          "version": "1.2.13",
+          "resolved": "https://mirrors.tencent.com/npm/fsevents/-/fsevents-1.2.13.tgz",
+          "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+          "optional": true
+        },
+        "glob-parent": {
+          "version": "3.1.0",
+          "resolved": "https://mirrors.tencent.com/npm/glob-parent/-/glob-parent-3.1.0.tgz",
+          "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+          "requires": {
+            "is-glob": "^3.1.0",
+            "path-dirname": "^1.0.0"
+          },
+          "dependencies": {
+            "is-glob": {
+              "version": "3.1.0",
+              "resolved": "https://mirrors.tencent.com/npm/is-glob/-/is-glob-3.1.0.tgz",
+              "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+              "requires": {
+                "is-extglob": "^2.1.0"
+              }
+            }
+          }
+        },
+        "html-entities": {
+          "version": "1.4.0",
+          "resolved": "https://mirrors.tencent.com/npm/html-entities/-/html-entities-1.4.0.tgz",
+          "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA=="
+        },
+        "html-minifier-terser": {
+          "version": "5.1.1",
+          "resolved": "https://mirrors.tencent.com/npm/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz",
+          "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==",
+          "requires": {
+            "camel-case": "^4.1.1",
+            "clean-css": "^4.2.3",
+            "commander": "^4.1.1",
+            "he": "^1.2.0",
+            "param-case": "^3.0.3",
+            "relateurl": "^0.2.7",
+            "terser": "^4.6.3"
+          },
+          "dependencies": {
+            "clean-css": {
+              "version": "4.2.4",
+              "resolved": "https://mirrors.tencent.com/npm/clean-css/-/clean-css-4.2.4.tgz",
+              "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==",
+              "requires": {
+                "source-map": "~0.6.0"
+              }
+            },
+            "commander": {
+              "version": "4.1.1",
+              "resolved": "https://mirrors.tencent.com/npm/commander/-/commander-4.1.1.tgz",
+              "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="
+            }
+          }
+        },
+        "http-proxy-middleware": {
+          "version": "0.19.1",
+          "resolved": "https://mirrors.tencent.com/npm/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
+          "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==",
+          "requires": {
+            "http-proxy": "^1.17.0",
+            "is-glob": "^4.0.0",
+            "lodash": "^4.17.11",
+            "micromatch": "^3.1.10"
+          },
+          "dependencies": {
+            "micromatch": {
+              "version": "3.1.10",
+              "resolved": "https://mirrors.tencent.com/npm/micromatch/-/micromatch-3.1.10.tgz",
+              "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+              "requires": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "braces": "^2.3.1",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "extglob": "^2.0.4",
+                "fragment-cache": "^0.2.1",
+                "kind-of": "^6.0.2",
+                "nanomatch": "^1.2.9",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.2"
+              }
+            }
+          }
+        },
+        "immer": {
+          "version": "8.0.1",
+          "resolved": "https://mirrors.tencent.com/npm/immer/-/immer-8.0.1.tgz",
+          "integrity": "sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA=="
+        },
+        "is-binary-path": {
+          "version": "1.0.1",
+          "resolved": "https://mirrors.tencent.com/npm/is-binary-path/-/is-binary-path-1.0.1.tgz",
+          "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+          "requires": {
+            "binary-extensions": "^1.0.0"
+          }
+        },
+        "is-buffer": {
+          "version": "1.1.6",
+          "resolved": "https://mirrors.tencent.com/npm/is-buffer/-/is-buffer-1.1.6.tgz",
+          "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+        },
+        "is-number": {
+          "version": "3.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/is-number/-/is-number-3.0.0.tgz",
+          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "resolved": "https://mirrors.tencent.com/npm/kind-of/-/kind-of-3.2.2.tgz",
+              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "isarray": {
+          "version": "1.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/isarray/-/isarray-1.0.0.tgz",
+          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+        },
+        "loader-utils": {
+          "version": "2.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/loader-utils/-/loader-utils-2.0.0.tgz",
+          "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^2.1.2"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+        },
+        "node-releases": {
+          "version": "1.1.77",
+          "resolved": "https://mirrors.tencent.com/npm/node-releases/-/node-releases-1.1.77.tgz",
+          "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ=="
+        },
+        "p-map": {
+          "version": "2.1.0",
+          "resolved": "https://mirrors.tencent.com/npm/p-map/-/p-map-2.1.0.tgz",
+          "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw=="
+        },
+        "p-retry": {
+          "version": "3.0.1",
+          "resolved": "https://mirrors.tencent.com/npm/p-retry/-/p-retry-3.0.1.tgz",
+          "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==",
+          "requires": {
+            "retry": "^0.12.0"
+          }
+        },
+        "postcss-loader": {
+          "version": "5.3.0",
+          "resolved": "https://mirrors.tencent.com/npm/postcss-loader/-/postcss-loader-5.3.0.tgz",
+          "integrity": "sha512-/+Z1RAmssdiSLgIZwnJHwBMnlABPgF7giYzTN2NOfr9D21IJZ4mQC1R2miwp80zno9M4zMD/umGI8cR+2EL5zw==",
+          "requires": {
+            "cosmiconfig": "^7.0.0",
+            "klona": "^2.0.4",
+            "semver": "^7.3.4"
+          }
+        },
+        "postcss-sort-media-queries": {
+          "version": "3.12.13",
+          "resolved": "https://mirrors.tencent.com/npm/postcss-sort-media-queries/-/postcss-sort-media-queries-3.12.13.tgz",
+          "integrity": "sha512-bFbR1+P6HhZWXcT5DVV2pBH5Y2U5daKbFd0j+kcwKdzrxkbmgFu0GhI2JfFUyy5KQIeW+YJGP+vwNDOS5hIn2g==",
+          "requires": {
+            "sort-css-media-queries": "2.0.4"
+          }
+        },
+        "range-parser": {
+          "version": "1.2.1",
+          "resolved": "https://mirrors.tencent.com/npm/range-parser/-/range-parser-1.2.1.tgz",
+          "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
+        },
+        "react-dev-utils": {
+          "version": "11.0.4",
+          "resolved": "https://mirrors.tencent.com/npm/react-dev-utils/-/react-dev-utils-11.0.4.tgz",
+          "integrity": "sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A==",
+          "requires": {
+            "@babel/code-frame": "7.10.4",
+            "address": "1.1.2",
+            "browserslist": "4.14.2",
+            "chalk": "2.4.2",
+            "cross-spawn": "7.0.3",
+            "detect-port-alt": "1.1.6",
+            "escape-string-regexp": "2.0.0",
+            "filesize": "6.1.0",
+            "find-up": "4.1.0",
+            "fork-ts-checker-webpack-plugin": "4.1.6",
+            "global-modules": "2.0.0",
+            "globby": "11.0.1",
+            "gzip-size": "5.1.1",
+            "immer": "8.0.1",
+            "is-root": "2.1.0",
+            "loader-utils": "2.0.0",
+            "open": "^7.0.2",
+            "pkg-up": "3.1.0",
+            "prompts": "2.4.0",
+            "react-error-overlay": "^6.0.9",
+            "recursive-readdir": "2.2.2",
+            "shell-quote": "1.7.2",
+            "strip-ansi": "6.0.0",
+            "text-table": "0.2.0"
+          },
+          "dependencies": {
+            "chalk": {
+              "version": "2.4.2",
+              "resolved": "https://mirrors.tencent.com/npm/chalk/-/chalk-2.4.2.tgz",
+              "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+              "requires": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+              },
+              "dependencies": {
+                "escape-string-regexp": {
+                  "version": "1.0.5",
+                  "resolved": "https://mirrors.tencent.com/npm/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+                  "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+                }
+              }
+            },
+            "escape-string-regexp": {
+              "version": "2.0.0",
+              "resolved": "https://mirrors.tencent.com/npm/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+              "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w=="
+            },
+            "globby": {
+              "version": "11.0.1",
+              "resolved": "https://mirrors.tencent.com/npm/globby/-/globby-11.0.1.tgz",
+              "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==",
+              "requires": {
+                "array-union": "^2.1.0",
+                "dir-glob": "^3.0.1",
+                "fast-glob": "^3.1.1",
+                "ignore": "^5.1.4",
+                "merge2": "^1.3.0",
+                "slash": "^3.0.0"
+              }
+            },
+            "prompts": {
+              "version": "2.4.0",
+              "resolved": "https://mirrors.tencent.com/npm/prompts/-/prompts-2.4.0.tgz",
+              "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==",
+              "requires": {
+                "kleur": "^3.0.3",
+                "sisteransi": "^1.0.5"
+              }
+            },
+            "strip-ansi": {
+              "version": "6.0.0",
+              "resolved": "https://mirrors.tencent.com/npm/strip-ansi/-/strip-ansi-6.0.0.tgz",
+              "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+              "requires": {
+                "ansi-regex": "^5.0.0"
+              }
+            }
+          }
+        },
+        "readable-stream": {
+          "version": "2.3.7",
+          "resolved": "https://mirrors.tencent.com/npm/readable-stream/-/readable-stream-2.3.7.tgz",
+          "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.3",
+            "isarray": "~1.0.0",
+            "process-nextick-args": "~2.0.0",
+            "safe-buffer": "~5.1.1",
+            "string_decoder": "~1.1.1",
+            "util-deprecate": "~1.0.1"
+          }
+        },
+        "readdirp": {
+          "version": "2.2.1",
+          "resolved": "https://mirrors.tencent.com/npm/readdirp/-/readdirp-2.2.1.tgz",
+          "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+          "requires": {
+            "graceful-fs": "^4.1.11",
+            "micromatch": "^3.1.10",
+            "readable-stream": "^2.0.2"
+          },
+          "dependencies": {
+            "micromatch": {
+              "version": "3.1.10",
+              "resolved": "https://mirrors.tencent.com/npm/micromatch/-/micromatch-3.1.10.tgz",
+              "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+              "requires": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "braces": "^2.3.1",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "extglob": "^2.0.4",
+                "fragment-cache": "^0.2.1",
+                "kind-of": "^6.0.2",
+                "nanomatch": "^1.2.9",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.2"
+              }
+            }
+          }
+        },
+        "retry": {
+          "version": "0.12.0",
+          "resolved": "https://mirrors.tencent.com/npm/retry/-/retry-0.12.0.tgz",
+          "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs="
+        },
+        "rimraf": {
+          "version": "2.7.1",
+          "resolved": "https://mirrors.tencent.com/npm/rimraf/-/rimraf-2.7.1.tgz",
+          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        },
+        "rxjs": {
+          "version": "6.6.7",
+          "resolved": "https://mirrors.tencent.com/npm/rxjs/-/rxjs-6.6.7.tgz",
+          "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
+          "requires": {
+            "tslib": "^1.9.0"
+          },
+          "dependencies": {
+            "tslib": {
+              "version": "1.14.1",
+              "resolved": "https://mirrors.tencent.com/npm/tslib/-/tslib-1.14.1.tgz",
+              "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+            }
+          }
+        },
+        "schema-utils": {
+          "version": "1.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/schema-utils/-/schema-utils-1.0.0.tgz",
+          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        },
+        "shell-quote": {
+          "version": "1.7.2",
+          "resolved": "https://mirrors.tencent.com/npm/shell-quote/-/shell-quote-1.7.2.tgz",
+          "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg=="
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://mirrors.tencent.com/npm/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+        },
+        "string_decoder": {
+          "version": "1.1.1",
+          "resolved": "https://mirrors.tencent.com/npm/string_decoder/-/string_decoder-1.1.1.tgz",
+          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+          "requires": {
+            "safe-buffer": "~5.1.0"
+          }
+        },
+        "tapable": {
+          "version": "1.1.3",
+          "resolved": "https://mirrors.tencent.com/npm/tapable/-/tapable-1.1.3.tgz",
+          "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA=="
+        },
+        "terser": {
+          "version": "4.8.0",
+          "resolved": "https://mirrors.tencent.com/npm/terser/-/terser-4.8.0.tgz",
+          "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
+          "requires": {
+            "commander": "^2.20.0",
+            "source-map": "~0.6.1",
+            "source-map-support": "~0.5.12"
+          },
+          "dependencies": {
+            "commander": {
+              "version": "2.20.3",
+              "resolved": "https://mirrors.tencent.com/npm/commander/-/commander-2.20.3.tgz",
+              "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+            }
+          }
+        },
+        "to-regex-range": {
+          "version": "2.1.1",
+          "resolved": "https://mirrors.tencent.com/npm/to-regex-range/-/to-regex-range-2.1.1.tgz",
+          "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+          "requires": {
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1"
+          }
+        },
+        "wait-on": {
+          "version": "5.3.0",
+          "resolved": "https://mirrors.tencent.com/npm/wait-on/-/wait-on-5.3.0.tgz",
+          "integrity": "sha512-DwrHrnTK+/0QFaB9a8Ol5Lna3k7WvUR4jzSKmz0YaPBpuN2sACyiPVKVfj6ejnjcajAcvn3wlbTyMIn9AZouOg==",
+          "requires": {
+            "axios": "^0.21.1",
+            "joi": "^17.3.0",
+            "lodash": "^4.17.21",
+            "minimist": "^1.2.5",
+            "rxjs": "^6.6.3"
+          }
+        },
+        "webpack-dev-middleware": {
+          "version": "3.7.3",
+          "resolved": "https://mirrors.tencent.com/npm/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz",
+          "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==",
+          "requires": {
+            "memory-fs": "^0.4.1",
+            "mime": "^2.4.4",
+            "mkdirp": "^0.5.1",
+            "range-parser": "^1.2.1",
+            "webpack-log": "^2.0.0"
+          }
+        },
+        "webpack-dev-server": {
+          "version": "3.11.3",
+          "resolved": "https://mirrors.tencent.com/npm/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz",
+          "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==",
+          "requires": {
+            "ansi-html-community": "0.0.8",
+            "bonjour": "^3.5.0",
+            "chokidar": "^2.1.8",
+            "compression": "^1.7.4",
+            "connect-history-api-fallback": "^1.6.0",
+            "debug": "^4.1.1",
+            "del": "^4.1.1",
+            "express": "^4.17.1",
+            "html-entities": "^1.3.1",
+            "http-proxy-middleware": "0.19.1",
+            "import-local": "^2.0.0",
+            "internal-ip": "^4.3.0",
+            "ip": "^1.1.5",
+            "is-absolute-url": "^3.0.3",
+            "killable": "^1.0.1",
+            "loglevel": "^1.6.8",
+            "opn": "^5.5.0",
+            "p-retry": "^3.0.1",
+            "portfinder": "^1.0.26",
+            "schema-utils": "^1.0.0",
+            "selfsigned": "^1.10.8",
+            "semver": "^6.3.0",
+            "serve-index": "^1.9.1",
+            "sockjs": "^0.3.21",
+            "sockjs-client": "^1.5.0",
+            "spdy": "^4.0.2",
+            "strip-ansi": "^3.0.1",
+            "supports-color": "^6.1.0",
+            "url": "^0.11.0",
+            "webpack-dev-middleware": "^3.7.2",
+            "webpack-log": "^2.0.0",
+            "ws": "^6.2.1",
+            "yargs": "^13.3.2"
+          },
+          "dependencies": {
+            "ansi-regex": {
+              "version": "2.1.1",
+              "resolved": "https://mirrors.tencent.com/npm/ansi-regex/-/ansi-regex-2.1.1.tgz",
+              "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+            },
+            "array-union": {
+              "version": "1.0.2",
+              "resolved": "https://mirrors.tencent.com/npm/array-union/-/array-union-1.0.2.tgz",
+              "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+              "requires": {
+                "array-uniq": "^1.0.1"
+              }
+            },
+            "chokidar": {
+              "version": "2.1.8",
+              "resolved": "https://mirrors.tencent.com/npm/chokidar/-/chokidar-2.1.8.tgz",
+              "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+              "requires": {
+                "anymatch": "^2.0.0",
+                "async-each": "^1.0.1",
+                "braces": "^2.3.2",
+                "fsevents": "^1.2.7",
+                "glob-parent": "^3.1.0",
+                "inherits": "^2.0.3",
+                "is-binary-path": "^1.0.0",
+                "is-glob": "^4.0.0",
+                "normalize-path": "^3.0.0",
+                "path-is-absolute": "^1.0.0",
+                "readdirp": "^2.2.1",
+                "upath": "^1.1.1"
+              }
+            },
+            "debug": {
+              "version": "4.3.3",
+              "resolved": "https://mirrors.tencent.com/npm/debug/-/debug-4.3.3.tgz",
+              "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+              "requires": {
+                "ms": "2.1.2"
+              }
+            },
+            "del": {
+              "version": "4.1.1",
+              "resolved": "https://mirrors.tencent.com/npm/del/-/del-4.1.1.tgz",
+              "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==",
+              "requires": {
+                "@types/glob": "^7.1.1",
+                "globby": "^6.1.0",
+                "is-path-cwd": "^2.0.0",
+                "is-path-in-cwd": "^2.0.0",
+                "p-map": "^2.0.0",
+                "pify": "^4.0.1",
+                "rimraf": "^2.6.3"
+              }
+            },
+            "globby": {
+              "version": "6.1.0",
+              "resolved": "https://mirrors.tencent.com/npm/globby/-/globby-6.1.0.tgz",
+              "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+              "requires": {
+                "array-union": "^1.0.1",
+                "glob": "^7.0.3",
+                "object-assign": "^4.0.1",
+                "pify": "^2.0.0",
+                "pinkie-promise": "^2.0.0"
+              },
+              "dependencies": {
+                "pify": {
+                  "version": "2.3.0",
+                  "resolved": "https://mirrors.tencent.com/npm/pify/-/pify-2.3.0.tgz",
+                  "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
+                }
+              }
+            },
+            "ms": {
+              "version": "2.1.2",
+              "resolved": "https://mirrors.tencent.com/npm/ms/-/ms-2.1.2.tgz",
+              "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+            },
+            "semver": {
+              "version": "6.3.0",
+              "resolved": "https://mirrors.tencent.com/npm/semver/-/semver-6.3.0.tgz",
+              "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+            },
+            "strip-ansi": {
+              "version": "3.0.1",
+              "resolved": "https://mirrors.tencent.com/npm/strip-ansi/-/strip-ansi-3.0.1.tgz",
+              "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+              "requires": {
+                "ansi-regex": "^2.0.0"
+              }
+            },
+            "supports-color": {
+              "version": "6.1.0",
+              "resolved": "https://mirrors.tencent.com/npm/supports-color/-/supports-color-6.1.0.tgz",
+              "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+              "requires": {
+                "has-flag": "^3.0.0"
+              }
+            }
+          }
+        },
+        "ws": {
+          "version": "6.2.2",
+          "resolved": "https://mirrors.tencent.com/npm/ws/-/ws-6.2.2.tgz",
+          "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==",
+          "requires": {
+            "async-limiter": "~1.0.0"
+          }
+        }
+      }
+    },
+    "@docusaurus/plugin-google-analytics": {
+      "version": "2.0.0-beta.6",
+      "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2fplugin-google-analytics/-/plugin-google-analytics-2.0.0-beta.6.tgz",
+      "integrity": "sha512-AHbMNPN3gkWXYFnmHL9MBcRODByAgzHZoH/5v3xwbSV2FOZo6kx4Hp94I6oFM0o5mp+i6X7slDncgGTWSGxCMg==",
+      "requires": {
+        "@docusaurus/core": "2.0.0-beta.6"
+      },
+      "dependencies": {
+        "@babel/code-frame": {
+          "version": "7.10.4",
+          "resolved": "https://mirrors.tencent.com/npm/@babel%2fcode-frame/-/code-frame-7.10.4.tgz",
+          "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
+          "requires": {
+            "@babel/highlight": "^7.10.4"
+          }
+        },
+        "@docusaurus/core": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2fcore/-/core-2.0.0-beta.6.tgz",
+          "integrity": "sha512-XMeI+lJKeJBGYBNOfO/Tc+5FMf21E5p1xZjfe75cgYcfZdERZ+W7aemXquwReno8xxHb4Rnfmi9dxkbOLDjqDA==",
+          "requires": {
+            "@babel/core": "^7.12.16",
+            "@babel/generator": "^7.12.15",
+            "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+            "@babel/plugin-transform-runtime": "^7.12.15",
+            "@babel/preset-env": "^7.12.16",
+            "@babel/preset-react": "^7.12.13",
+            "@babel/preset-typescript": "^7.12.16",
+            "@babel/runtime": "^7.12.5",
+            "@babel/runtime-corejs3": "^7.12.13",
+            "@babel/traverse": "^7.12.13",
+            "@docusaurus/cssnano-preset": "2.0.0-beta.6",
+            "@docusaurus/react-loadable": "5.5.0",
+            "@docusaurus/types": "2.0.0-beta.6",
+            "@docusaurus/utils": "2.0.0-beta.6",
+            "@docusaurus/utils-common": "2.0.0-beta.6",
+            "@docusaurus/utils-validation": "2.0.0-beta.6",
+            "@slorber/static-site-generator-webpack-plugin": "^4.0.0",
+            "@svgr/webpack": "^5.5.0",
+            "autoprefixer": "^10.2.5",
+            "babel-loader": "^8.2.2",
+            "babel-plugin-dynamic-import-node": "2.3.0",
+            "boxen": "^5.0.1",
+            "chalk": "^4.1.1",
+            "chokidar": "^3.5.1",
+            "clean-css": "^5.1.5",
+            "commander": "^5.1.0",
+            "copy-webpack-plugin": "^9.0.0",
+            "core-js": "^3.9.1",
+            "css-loader": "^5.1.1",
+            "css-minimizer-webpack-plugin": "^3.0.1",
+            "cssnano": "^5.0.4",
+            "del": "^6.0.0",
+            "detect-port": "^1.3.0",
+            "escape-html": "^1.0.3",
+            "eta": "^1.12.1",
+            "express": "^4.17.1",
+            "file-loader": "^6.2.0",
+            "fs-extra": "^10.0.0",
+            "github-slugger": "^1.3.0",
+            "globby": "^11.0.2",
+            "html-minifier-terser": "^5.1.1",
+            "html-tags": "^3.1.0",
+            "html-webpack-plugin": "^5.3.2",
+            "import-fresh": "^3.3.0",
+            "is-root": "^2.1.0",
+            "leven": "^3.1.0",
+            "lodash": "^4.17.20",
+            "mini-css-extract-plugin": "^1.6.0",
+            "module-alias": "^2.2.2",
+            "nprogress": "^0.2.0",
+            "postcss": "^8.2.15",
+            "postcss-loader": "^5.3.0",
+            "prompts": "^2.4.1",
+            "react-dev-utils": "^11.0.1",
+            "react-error-overlay": "^6.0.9",
+            "react-helmet": "^6.1.0",
+            "react-loadable": "^5.5.0",
+            "react-loadable-ssr-addon-v5-slorber": "^1.0.1",
+            "react-router": "^5.2.0",
+            "react-router-config": "^5.1.1",
+            "react-router-dom": "^5.2.0",
+            "remark-admonitions": "^1.2.1",
+            "resolve-pathname": "^3.0.0",
+            "rtl-detect": "^1.0.3",
+            "semver": "^7.3.4",
+            "serve-handler": "^6.1.3",
+            "shelljs": "^0.8.4",
+            "std-env": "^2.2.1",
+            "strip-ansi": "^6.0.0",
+            "terser-webpack-plugin": "^5.1.3",
+            "tslib": "^2.2.0",
+            "update-notifier": "^5.1.0",
+            "url-loader": "^4.1.1",
+            "wait-on": "^5.3.0",
+            "webpack": "^5.40.0",
+            "webpack-bundle-analyzer": "^4.4.2",
+            "webpack-dev-server": "^3.11.2",
+            "webpack-merge": "^5.8.0",
+            "webpackbar": "^5.0.0-3"
+          }
+        },
+        "@docusaurus/cssnano-preset": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2fcssnano-preset/-/cssnano-preset-2.0.0-beta.6.tgz",
+          "integrity": "sha512-RCizp2NAbADopkX5nUz1xrAbU6hGZzziQk9RdSDGJLzMgVCN6RDotq9odS8VgzNa9x2Lx3WN527UxeEbzc2GVQ==",
+          "requires": {
+            "cssnano-preset-advanced": "^5.1.1",
+            "postcss": "^8.2.15",
+            "postcss-sort-media-queries": "^3.10.11"
+          }
+        },
+        "@docusaurus/react-loadable": {
+          "version": "5.5.0",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2freact-loadable/-/react-loadable-5.5.0.tgz",
+          "integrity": "sha512-Ld/kwUE6yATIOTLq3JCsWiTa/drisajwKqBQ2Rw6IcT+sFsKfYek8F2jSH8f68AT73xX97UehduZeCSlnuCBIg==",
+          "requires": {
+            "prop-types": "^15.6.2"
+          }
+        },
+        "@docusaurus/types": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2ftypes/-/types-2.0.0-beta.6.tgz",
+          "integrity": "sha512-TrwxyI93XTZEhOmdEI8FPKDbGV61zE9PzXCdE1alwz1NOV+YXwcv+9sRTZEVLqBpr+TIja+IeeS6mxnyen/Ptg==",
+          "requires": {
+            "commander": "^5.1.0",
+            "joi": "^17.4.0",
+            "querystring": "0.2.0",
+            "webpack": "^5.40.0",
+            "webpack-merge": "^5.8.0"
+          }
+        },
+        "@docusaurus/utils": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2futils/-/utils-2.0.0-beta.6.tgz",
+          "integrity": "sha512-S72/o7VDaTvrXJy+NpfuctghGGoMW30m94PMkrL3I6V+o5eE2Uzax7dbM++moclmHvi0/Khv+TXmRIQs6ZvwgQ==",
+          "requires": {
+            "@docusaurus/types": "2.0.0-beta.6",
+            "@types/github-slugger": "^1.3.0",
+            "chalk": "^4.1.1",
+            "escape-string-regexp": "^4.0.0",
+            "fs-extra": "^10.0.0",
+            "globby": "^11.0.4",
+            "gray-matter": "^4.0.3",
+            "lodash": "^4.17.20",
+            "micromatch": "^4.0.4",
+            "resolve-pathname": "^3.0.0",
+            "tslib": "^2.2.0"
+          }
+        },
+        "@docusaurus/utils-common": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2futils-common/-/utils-common-2.0.0-beta.6.tgz",
+          "integrity": "sha512-MKm6bJxvsYWRl072jLR60z+71tTWSxoERh2eTmCYlegFnu3Tby3HOC8I3jDcC6VpVuoDGsBGNoQbOgy2LqQbXQ==",
+          "requires": {
+            "@docusaurus/types": "2.0.0-beta.6",
+            "tslib": "^2.2.0"
+          }
+        },
+        "@docusaurus/utils-validation": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2futils-validation/-/utils-validation-2.0.0-beta.6.tgz",
+          "integrity": "sha512-v0nk9bpawUd2JFDFyiHDmZuMG+/O1UvxtxvcRbvrxrul+rlzD7Q9CGxMgW3Grp2OCKQ4yFXRidBIccwqON5AVw==",
+          "requires": {
+            "@docusaurus/utils": "2.0.0-beta.6",
+            "chalk": "^4.1.1",
+            "joi": "^17.4.0",
+            "tslib": "^2.1.0"
+          }
+        },
+        "anymatch": {
+          "version": "2.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/anymatch/-/anymatch-2.0.0.tgz",
+          "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+          "requires": {
+            "micromatch": "^3.1.4",
+            "normalize-path": "^2.1.1"
+          },
+          "dependencies": {
+            "micromatch": {
+              "version": "3.1.10",
+              "resolved": "https://mirrors.tencent.com/npm/micromatch/-/micromatch-3.1.10.tgz",
+              "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+              "requires": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "braces": "^2.3.1",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "extglob": "^2.0.4",
+                "fragment-cache": "^0.2.1",
+                "kind-of": "^6.0.2",
+                "nanomatch": "^1.2.9",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.2"
+              }
+            },
+            "normalize-path": {
+              "version": "2.1.1",
+              "resolved": "https://mirrors.tencent.com/npm/normalize-path/-/normalize-path-2.1.1.tgz",
+              "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+              "requires": {
+                "remove-trailing-separator": "^1.0.1"
+              }
+            }
+          }
+        },
+        "binary-extensions": {
+          "version": "1.13.1",
+          "resolved": "https://mirrors.tencent.com/npm/binary-extensions/-/binary-extensions-1.13.1.tgz",
+          "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw=="
+        },
+        "braces": {
+          "version": "2.3.2",
+          "resolved": "https://mirrors.tencent.com/npm/braces/-/braces-2.3.2.tgz",
+          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+          "requires": {
+            "arr-flatten": "^1.1.0",
+            "array-unique": "^0.3.2",
+            "extend-shallow": "^2.0.1",
+            "fill-range": "^4.0.0",
+            "isobject": "^3.0.1",
+            "repeat-element": "^1.1.2",
+            "snapdragon": "^0.8.1",
+            "snapdragon-node": "^2.0.1",
+            "split-string": "^3.0.2",
+            "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://mirrors.tencent.com/npm/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "browserslist": {
+          "version": "4.14.2",
+          "resolved": "https://mirrors.tencent.com/npm/browserslist/-/browserslist-4.14.2.tgz",
+          "integrity": "sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==",
+          "requires": {
+            "caniuse-lite": "^1.0.30001125",
+            "electron-to-chromium": "^1.3.564",
+            "escalade": "^3.0.2",
+            "node-releases": "^1.1.61"
+          }
+        },
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://mirrors.tencent.com/npm/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "detect-port-alt": {
+          "version": "1.1.6",
+          "resolved": "https://mirrors.tencent.com/npm/detect-port-alt/-/detect-port-alt-1.1.6.tgz",
+          "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==",
+          "requires": {
+            "address": "^1.0.1",
+            "debug": "^2.6.0"
+          }
+        },
+        "escape-string-regexp": {
+          "version": "4.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+          "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
+        },
+        "extend-shallow": {
+          "version": "3.0.2",
+          "resolved": "https://mirrors.tencent.com/npm/extend-shallow/-/extend-shallow-3.0.2.tgz",
+          "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+          "requires": {
+            "assign-symbols": "^1.0.0",
+            "is-extendable": "^1.0.1"
+          },
+          "dependencies": {
+            "is-extendable": {
+              "version": "1.0.1",
+              "resolved": "https://mirrors.tencent.com/npm/is-extendable/-/is-extendable-1.0.1.tgz",
+              "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+              "requires": {
+                "is-plain-object": "^2.0.4"
+              }
+            }
+          }
+        },
+        "filesize": {
+          "version": "6.1.0",
+          "resolved": "https://mirrors.tencent.com/npm/filesize/-/filesize-6.1.0.tgz",
+          "integrity": "sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg=="
+        },
+        "fill-range": {
+          "version": "4.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/fill-range/-/fill-range-4.0.0.tgz",
+          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+          "requires": {
+            "extend-shallow": "^2.0.1",
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1",
+            "to-regex-range": "^2.1.0"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://mirrors.tencent.com/npm/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "fork-ts-checker-webpack-plugin": {
+          "version": "4.1.6",
+          "resolved": "https://mirrors.tencent.com/npm/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz",
+          "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==",
+          "requires": {
+            "@babel/code-frame": "^7.5.5",
+            "chalk": "^2.4.1",
+            "micromatch": "^3.1.10",
+            "minimatch": "^3.0.4",
+            "semver": "^5.6.0",
+            "tapable": "^1.0.0",
+            "worker-rpc": "^0.1.0"
+          },
+          "dependencies": {
+            "chalk": {
+              "version": "2.4.2",
+              "resolved": "https://mirrors.tencent.com/npm/chalk/-/chalk-2.4.2.tgz",
+              "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+              "requires": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+              }
+            },
+            "escape-string-regexp": {
+              "version": "1.0.5",
+              "resolved": "https://mirrors.tencent.com/npm/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+              "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+            },
+            "micromatch": {
+              "version": "3.1.10",
+              "resolved": "https://mirrors.tencent.com/npm/micromatch/-/micromatch-3.1.10.tgz",
+              "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+              "requires": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "braces": "^2.3.1",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "extglob": "^2.0.4",
+                "fragment-cache": "^0.2.1",
+                "kind-of": "^6.0.2",
+                "nanomatch": "^1.2.9",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.2"
+              }
+            },
+            "semver": {
+              "version": "5.7.1",
+              "resolved": "https://mirrors.tencent.com/npm/semver/-/semver-5.7.1.tgz",
+              "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+            }
+          }
+        },
+        "fsevents": {
+          "version": "1.2.13",
+          "resolved": "https://mirrors.tencent.com/npm/fsevents/-/fsevents-1.2.13.tgz",
+          "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+          "optional": true
+        },
+        "glob-parent": {
+          "version": "3.1.0",
+          "resolved": "https://mirrors.tencent.com/npm/glob-parent/-/glob-parent-3.1.0.tgz",
+          "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+          "requires": {
+            "is-glob": "^3.1.0",
+            "path-dirname": "^1.0.0"
+          },
+          "dependencies": {
+            "is-glob": {
+              "version": "3.1.0",
+              "resolved": "https://mirrors.tencent.com/npm/is-glob/-/is-glob-3.1.0.tgz",
+              "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+              "requires": {
+                "is-extglob": "^2.1.0"
+              }
+            }
+          }
+        },
+        "html-entities": {
+          "version": "1.4.0",
+          "resolved": "https://mirrors.tencent.com/npm/html-entities/-/html-entities-1.4.0.tgz",
+          "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA=="
+        },
+        "html-minifier-terser": {
+          "version": "5.1.1",
+          "resolved": "https://mirrors.tencent.com/npm/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz",
+          "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==",
+          "requires": {
+            "camel-case": "^4.1.1",
+            "clean-css": "^4.2.3",
+            "commander": "^4.1.1",
+            "he": "^1.2.0",
+            "param-case": "^3.0.3",
+            "relateurl": "^0.2.7",
+            "terser": "^4.6.3"
+          },
+          "dependencies": {
+            "clean-css": {
+              "version": "4.2.4",
+              "resolved": "https://mirrors.tencent.com/npm/clean-css/-/clean-css-4.2.4.tgz",
+              "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==",
+              "requires": {
+                "source-map": "~0.6.0"
+              }
+            },
+            "commander": {
+              "version": "4.1.1",
+              "resolved": "https://mirrors.tencent.com/npm/commander/-/commander-4.1.1.tgz",
+              "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="
+            }
+          }
+        },
+        "http-proxy-middleware": {
+          "version": "0.19.1",
+          "resolved": "https://mirrors.tencent.com/npm/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
+          "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==",
+          "requires": {
+            "http-proxy": "^1.17.0",
+            "is-glob": "^4.0.0",
+            "lodash": "^4.17.11",
+            "micromatch": "^3.1.10"
+          },
+          "dependencies": {
+            "micromatch": {
+              "version": "3.1.10",
+              "resolved": "https://mirrors.tencent.com/npm/micromatch/-/micromatch-3.1.10.tgz",
+              "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+              "requires": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "braces": "^2.3.1",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "extglob": "^2.0.4",
+                "fragment-cache": "^0.2.1",
+                "kind-of": "^6.0.2",
+                "nanomatch": "^1.2.9",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.2"
+              }
+            }
+          }
+        },
+        "immer": {
+          "version": "8.0.1",
+          "resolved": "https://mirrors.tencent.com/npm/immer/-/immer-8.0.1.tgz",
+          "integrity": "sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA=="
+        },
+        "is-binary-path": {
+          "version": "1.0.1",
+          "resolved": "https://mirrors.tencent.com/npm/is-binary-path/-/is-binary-path-1.0.1.tgz",
+          "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+          "requires": {
+            "binary-extensions": "^1.0.0"
+          }
+        },
+        "is-buffer": {
+          "version": "1.1.6",
+          "resolved": "https://mirrors.tencent.com/npm/is-buffer/-/is-buffer-1.1.6.tgz",
+          "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+        },
+        "is-number": {
+          "version": "3.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/is-number/-/is-number-3.0.0.tgz",
+          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "resolved": "https://mirrors.tencent.com/npm/kind-of/-/kind-of-3.2.2.tgz",
+              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "isarray": {
+          "version": "1.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/isarray/-/isarray-1.0.0.tgz",
+          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+        },
+        "loader-utils": {
+          "version": "2.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/loader-utils/-/loader-utils-2.0.0.tgz",
+          "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^2.1.2"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+        },
+        "node-releases": {
+          "version": "1.1.77",
+          "resolved": "https://mirrors.tencent.com/npm/node-releases/-/node-releases-1.1.77.tgz",
+          "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ=="
+        },
+        "p-map": {
+          "version": "2.1.0",
+          "resolved": "https://mirrors.tencent.com/npm/p-map/-/p-map-2.1.0.tgz",
+          "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw=="
+        },
+        "p-retry": {
+          "version": "3.0.1",
+          "resolved": "https://mirrors.tencent.com/npm/p-retry/-/p-retry-3.0.1.tgz",
+          "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==",
+          "requires": {
+            "retry": "^0.12.0"
+          }
+        },
+        "postcss-loader": {
+          "version": "5.3.0",
+          "resolved": "https://mirrors.tencent.com/npm/postcss-loader/-/postcss-loader-5.3.0.tgz",
+          "integrity": "sha512-/+Z1RAmssdiSLgIZwnJHwBMnlABPgF7giYzTN2NOfr9D21IJZ4mQC1R2miwp80zno9M4zMD/umGI8cR+2EL5zw==",
+          "requires": {
+            "cosmiconfig": "^7.0.0",
+            "klona": "^2.0.4",
+            "semver": "^7.3.4"
+          }
+        },
+        "postcss-sort-media-queries": {
+          "version": "3.12.13",
+          "resolved": "https://mirrors.tencent.com/npm/postcss-sort-media-queries/-/postcss-sort-media-queries-3.12.13.tgz",
+          "integrity": "sha512-bFbR1+P6HhZWXcT5DVV2pBH5Y2U5daKbFd0j+kcwKdzrxkbmgFu0GhI2JfFUyy5KQIeW+YJGP+vwNDOS5hIn2g==",
+          "requires": {
+            "sort-css-media-queries": "2.0.4"
+          }
+        },
+        "range-parser": {
+          "version": "1.2.1",
+          "resolved": "https://mirrors.tencent.com/npm/range-parser/-/range-parser-1.2.1.tgz",
+          "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
+        },
+        "react-dev-utils": {
+          "version": "11.0.4",
+          "resolved": "https://mirrors.tencent.com/npm/react-dev-utils/-/react-dev-utils-11.0.4.tgz",
+          "integrity": "sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A==",
+          "requires": {
+            "@babel/code-frame": "7.10.4",
+            "address": "1.1.2",
+            "browserslist": "4.14.2",
+            "chalk": "2.4.2",
+            "cross-spawn": "7.0.3",
+            "detect-port-alt": "1.1.6",
+            "escape-string-regexp": "2.0.0",
+            "filesize": "6.1.0",
+            "find-up": "4.1.0",
+            "fork-ts-checker-webpack-plugin": "4.1.6",
+            "global-modules": "2.0.0",
+            "globby": "11.0.1",
+            "gzip-size": "5.1.1",
+            "immer": "8.0.1",
+            "is-root": "2.1.0",
+            "loader-utils": "2.0.0",
+            "open": "^7.0.2",
+            "pkg-up": "3.1.0",
+            "prompts": "2.4.0",
+            "react-error-overlay": "^6.0.9",
+            "recursive-readdir": "2.2.2",
+            "shell-quote": "1.7.2",
+            "strip-ansi": "6.0.0",
+            "text-table": "0.2.0"
+          },
+          "dependencies": {
+            "chalk": {
+              "version": "2.4.2",
+              "resolved": "https://mirrors.tencent.com/npm/chalk/-/chalk-2.4.2.tgz",
+              "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+              "requires": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+              },
+              "dependencies": {
+                "escape-string-regexp": {
+                  "version": "1.0.5",
+                  "resolved": "https://mirrors.tencent.com/npm/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+                  "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+                }
+              }
+            },
+            "escape-string-regexp": {
+              "version": "2.0.0",
+              "resolved": "https://mirrors.tencent.com/npm/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+              "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w=="
+            },
+            "globby": {
+              "version": "11.0.1",
+              "resolved": "https://mirrors.tencent.com/npm/globby/-/globby-11.0.1.tgz",
+              "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==",
+              "requires": {
+                "array-union": "^2.1.0",
+                "dir-glob": "^3.0.1",
+                "fast-glob": "^3.1.1",
+                "ignore": "^5.1.4",
+                "merge2": "^1.3.0",
+                "slash": "^3.0.0"
+              }
+            },
+            "prompts": {
+              "version": "2.4.0",
+              "resolved": "https://mirrors.tencent.com/npm/prompts/-/prompts-2.4.0.tgz",
+              "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==",
+              "requires": {
+                "kleur": "^3.0.3",
+                "sisteransi": "^1.0.5"
+              }
+            },
+            "strip-ansi": {
+              "version": "6.0.0",
+              "resolved": "https://mirrors.tencent.com/npm/strip-ansi/-/strip-ansi-6.0.0.tgz",
+              "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+              "requires": {
+                "ansi-regex": "^5.0.0"
+              }
+            }
+          }
+        },
+        "readable-stream": {
+          "version": "2.3.7",
+          "resolved": "https://mirrors.tencent.com/npm/readable-stream/-/readable-stream-2.3.7.tgz",
+          "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.3",
+            "isarray": "~1.0.0",
+            "process-nextick-args": "~2.0.0",
+            "safe-buffer": "~5.1.1",
+            "string_decoder": "~1.1.1",
+            "util-deprecate": "~1.0.1"
+          }
+        },
+        "readdirp": {
+          "version": "2.2.1",
+          "resolved": "https://mirrors.tencent.com/npm/readdirp/-/readdirp-2.2.1.tgz",
+          "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+          "requires": {
+            "graceful-fs": "^4.1.11",
+            "micromatch": "^3.1.10",
+            "readable-stream": "^2.0.2"
+          },
+          "dependencies": {
+            "micromatch": {
+              "version": "3.1.10",
+              "resolved": "https://mirrors.tencent.com/npm/micromatch/-/micromatch-3.1.10.tgz",
+              "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+              "requires": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "braces": "^2.3.1",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "extglob": "^2.0.4",
+                "fragment-cache": "^0.2.1",
+                "kind-of": "^6.0.2",
+                "nanomatch": "^1.2.9",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.2"
+              }
+            }
+          }
+        },
+        "retry": {
+          "version": "0.12.0",
+          "resolved": "https://mirrors.tencent.com/npm/retry/-/retry-0.12.0.tgz",
+          "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs="
+        },
+        "rimraf": {
+          "version": "2.7.1",
+          "resolved": "https://mirrors.tencent.com/npm/rimraf/-/rimraf-2.7.1.tgz",
+          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        },
+        "rxjs": {
+          "version": "6.6.7",
+          "resolved": "https://mirrors.tencent.com/npm/rxjs/-/rxjs-6.6.7.tgz",
+          "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
+          "requires": {
+            "tslib": "^1.9.0"
+          },
+          "dependencies": {
+            "tslib": {
+              "version": "1.14.1",
+              "resolved": "https://mirrors.tencent.com/npm/tslib/-/tslib-1.14.1.tgz",
+              "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+            }
+          }
+        },
+        "schema-utils": {
+          "version": "1.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/schema-utils/-/schema-utils-1.0.0.tgz",
+          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        },
+        "shell-quote": {
+          "version": "1.7.2",
+          "resolved": "https://mirrors.tencent.com/npm/shell-quote/-/shell-quote-1.7.2.tgz",
+          "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg=="
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://mirrors.tencent.com/npm/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+        },
+        "string_decoder": {
+          "version": "1.1.1",
+          "resolved": "https://mirrors.tencent.com/npm/string_decoder/-/string_decoder-1.1.1.tgz",
+          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+          "requires": {
+            "safe-buffer": "~5.1.0"
+          }
+        },
+        "tapable": {
+          "version": "1.1.3",
+          "resolved": "https://mirrors.tencent.com/npm/tapable/-/tapable-1.1.3.tgz",
+          "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA=="
+        },
+        "terser": {
+          "version": "4.8.0",
+          "resolved": "https://mirrors.tencent.com/npm/terser/-/terser-4.8.0.tgz",
+          "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
+          "requires": {
+            "commander": "^2.20.0",
+            "source-map": "~0.6.1",
+            "source-map-support": "~0.5.12"
+          },
+          "dependencies": {
+            "commander": {
+              "version": "2.20.3",
+              "resolved": "https://mirrors.tencent.com/npm/commander/-/commander-2.20.3.tgz",
+              "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+            }
+          }
+        },
+        "to-regex-range": {
+          "version": "2.1.1",
+          "resolved": "https://mirrors.tencent.com/npm/to-regex-range/-/to-regex-range-2.1.1.tgz",
+          "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+          "requires": {
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1"
+          }
+        },
+        "wait-on": {
+          "version": "5.3.0",
+          "resolved": "https://mirrors.tencent.com/npm/wait-on/-/wait-on-5.3.0.tgz",
+          "integrity": "sha512-DwrHrnTK+/0QFaB9a8Ol5Lna3k7WvUR4jzSKmz0YaPBpuN2sACyiPVKVfj6ejnjcajAcvn3wlbTyMIn9AZouOg==",
+          "requires": {
+            "axios": "^0.21.1",
+            "joi": "^17.3.0",
+            "lodash": "^4.17.21",
+            "minimist": "^1.2.5",
+            "rxjs": "^6.6.3"
+          }
+        },
+        "webpack-dev-middleware": {
+          "version": "3.7.3",
+          "resolved": "https://mirrors.tencent.com/npm/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz",
+          "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==",
+          "requires": {
+            "memory-fs": "^0.4.1",
+            "mime": "^2.4.4",
+            "mkdirp": "^0.5.1",
+            "range-parser": "^1.2.1",
+            "webpack-log": "^2.0.0"
+          }
+        },
+        "webpack-dev-server": {
+          "version": "3.11.3",
+          "resolved": "https://mirrors.tencent.com/npm/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz",
+          "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==",
+          "requires": {
+            "ansi-html-community": "0.0.8",
+            "bonjour": "^3.5.0",
+            "chokidar": "^2.1.8",
+            "compression": "^1.7.4",
+            "connect-history-api-fallback": "^1.6.0",
+            "debug": "^4.1.1",
+            "del": "^4.1.1",
+            "express": "^4.17.1",
+            "html-entities": "^1.3.1",
+            "http-proxy-middleware": "0.19.1",
+            "import-local": "^2.0.0",
+            "internal-ip": "^4.3.0",
+            "ip": "^1.1.5",
+            "is-absolute-url": "^3.0.3",
+            "killable": "^1.0.1",
+            "loglevel": "^1.6.8",
+            "opn": "^5.5.0",
+            "p-retry": "^3.0.1",
+            "portfinder": "^1.0.26",
+            "schema-utils": "^1.0.0",
+            "selfsigned": "^1.10.8",
+            "semver": "^6.3.0",
+            "serve-index": "^1.9.1",
+            "sockjs": "^0.3.21",
+            "sockjs-client": "^1.5.0",
+            "spdy": "^4.0.2",
+            "strip-ansi": "^3.0.1",
+            "supports-color": "^6.1.0",
+            "url": "^0.11.0",
+            "webpack-dev-middleware": "^3.7.2",
+            "webpack-log": "^2.0.0",
+            "ws": "^6.2.1",
+            "yargs": "^13.3.2"
+          },
+          "dependencies": {
+            "ansi-regex": {
+              "version": "2.1.1",
+              "resolved": "https://mirrors.tencent.com/npm/ansi-regex/-/ansi-regex-2.1.1.tgz",
+              "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+            },
+            "array-union": {
+              "version": "1.0.2",
+              "resolved": "https://mirrors.tencent.com/npm/array-union/-/array-union-1.0.2.tgz",
+              "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+              "requires": {
+                "array-uniq": "^1.0.1"
+              }
+            },
+            "chokidar": {
+              "version": "2.1.8",
+              "resolved": "https://mirrors.tencent.com/npm/chokidar/-/chokidar-2.1.8.tgz",
+              "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+              "requires": {
+                "anymatch": "^2.0.0",
+                "async-each": "^1.0.1",
+                "braces": "^2.3.2",
+                "fsevents": "^1.2.7",
+                "glob-parent": "^3.1.0",
+                "inherits": "^2.0.3",
+                "is-binary-path": "^1.0.0",
+                "is-glob": "^4.0.0",
+                "normalize-path": "^3.0.0",
+                "path-is-absolute": "^1.0.0",
+                "readdirp": "^2.2.1",
+                "upath": "^1.1.1"
+              }
+            },
+            "debug": {
+              "version": "4.3.3",
+              "resolved": "https://mirrors.tencent.com/npm/debug/-/debug-4.3.3.tgz",
+              "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+              "requires": {
+                "ms": "2.1.2"
+              }
+            },
+            "del": {
+              "version": "4.1.1",
+              "resolved": "https://mirrors.tencent.com/npm/del/-/del-4.1.1.tgz",
+              "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==",
+              "requires": {
+                "@types/glob": "^7.1.1",
+                "globby": "^6.1.0",
+                "is-path-cwd": "^2.0.0",
+                "is-path-in-cwd": "^2.0.0",
+                "p-map": "^2.0.0",
+                "pify": "^4.0.1",
+                "rimraf": "^2.6.3"
+              }
+            },
+            "globby": {
+              "version": "6.1.0",
+              "resolved": "https://mirrors.tencent.com/npm/globby/-/globby-6.1.0.tgz",
+              "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+              "requires": {
+                "array-union": "^1.0.1",
+                "glob": "^7.0.3",
+                "object-assign": "^4.0.1",
+                "pify": "^2.0.0",
+                "pinkie-promise": "^2.0.0"
+              },
+              "dependencies": {
+                "pify": {
+                  "version": "2.3.0",
+                  "resolved": "https://mirrors.tencent.com/npm/pify/-/pify-2.3.0.tgz",
+                  "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
+                }
+              }
+            },
+            "ms": {
+              "version": "2.1.2",
+              "resolved": "https://mirrors.tencent.com/npm/ms/-/ms-2.1.2.tgz",
+              "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+            },
+            "semver": {
+              "version": "6.3.0",
+              "resolved": "https://mirrors.tencent.com/npm/semver/-/semver-6.3.0.tgz",
+              "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+            },
+            "strip-ansi": {
+              "version": "3.0.1",
+              "resolved": "https://mirrors.tencent.com/npm/strip-ansi/-/strip-ansi-3.0.1.tgz",
+              "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+              "requires": {
+                "ansi-regex": "^2.0.0"
+              }
+            },
+            "supports-color": {
+              "version": "6.1.0",
+              "resolved": "https://mirrors.tencent.com/npm/supports-color/-/supports-color-6.1.0.tgz",
+              "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+              "requires": {
+                "has-flag": "^3.0.0"
+              }
+            }
+          }
+        },
+        "ws": {
+          "version": "6.2.2",
+          "resolved": "https://mirrors.tencent.com/npm/ws/-/ws-6.2.2.tgz",
+          "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==",
+          "requires": {
+            "async-limiter": "~1.0.0"
+          }
+        }
+      }
+    },
+    "@docusaurus/plugin-google-gtag": {
+      "version": "2.0.0-beta.6",
+      "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2fplugin-google-gtag/-/plugin-google-gtag-2.0.0-beta.6.tgz",
+      "integrity": "sha512-uJyQ30sXbVRS3TGtVJFA0s1ozrluuREu6NK2Z3TLtKpeT2NTe5iaqXN0Xp749hr3bjbgpEe6gMixVh//jg503w==",
+      "requires": {
+        "@docusaurus/core": "2.0.0-beta.6"
+      },
+      "dependencies": {
+        "@babel/code-frame": {
+          "version": "7.10.4",
+          "resolved": "https://mirrors.tencent.com/npm/@babel%2fcode-frame/-/code-frame-7.10.4.tgz",
+          "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
+          "requires": {
+            "@babel/highlight": "^7.10.4"
+          }
+        },
+        "@docusaurus/core": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2fcore/-/core-2.0.0-beta.6.tgz",
+          "integrity": "sha512-XMeI+lJKeJBGYBNOfO/Tc+5FMf21E5p1xZjfe75cgYcfZdERZ+W7aemXquwReno8xxHb4Rnfmi9dxkbOLDjqDA==",
+          "requires": {
+            "@babel/core": "^7.12.16",
+            "@babel/generator": "^7.12.15",
+            "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+            "@babel/plugin-transform-runtime": "^7.12.15",
+            "@babel/preset-env": "^7.12.16",
+            "@babel/preset-react": "^7.12.13",
+            "@babel/preset-typescript": "^7.12.16",
+            "@babel/runtime": "^7.12.5",
+            "@babel/runtime-corejs3": "^7.12.13",
+            "@babel/traverse": "^7.12.13",
+            "@docusaurus/cssnano-preset": "2.0.0-beta.6",
+            "@docusaurus/react-loadable": "5.5.0",
+            "@docusaurus/types": "2.0.0-beta.6",
+            "@docusaurus/utils": "2.0.0-beta.6",
+            "@docusaurus/utils-common": "2.0.0-beta.6",
+            "@docusaurus/utils-validation": "2.0.0-beta.6",
+            "@slorber/static-site-generator-webpack-plugin": "^4.0.0",
+            "@svgr/webpack": "^5.5.0",
+            "autoprefixer": "^10.2.5",
+            "babel-loader": "^8.2.2",
+            "babel-plugin-dynamic-import-node": "2.3.0",
+            "boxen": "^5.0.1",
+            "chalk": "^4.1.1",
+            "chokidar": "^3.5.1",
+            "clean-css": "^5.1.5",
+            "commander": "^5.1.0",
+            "copy-webpack-plugin": "^9.0.0",
+            "core-js": "^3.9.1",
+            "css-loader": "^5.1.1",
+            "css-minimizer-webpack-plugin": "^3.0.1",
+            "cssnano": "^5.0.4",
+            "del": "^6.0.0",
+            "detect-port": "^1.3.0",
+            "escape-html": "^1.0.3",
+            "eta": "^1.12.1",
+            "express": "^4.17.1",
+            "file-loader": "^6.2.0",
+            "fs-extra": "^10.0.0",
+            "github-slugger": "^1.3.0",
+            "globby": "^11.0.2",
+            "html-minifier-terser": "^5.1.1",
+            "html-tags": "^3.1.0",
+            "html-webpack-plugin": "^5.3.2",
+            "import-fresh": "^3.3.0",
+            "is-root": "^2.1.0",
+            "leven": "^3.1.0",
+            "lodash": "^4.17.20",
+            "mini-css-extract-plugin": "^1.6.0",
+            "module-alias": "^2.2.2",
+            "nprogress": "^0.2.0",
+            "postcss": "^8.2.15",
+            "postcss-loader": "^5.3.0",
+            "prompts": "^2.4.1",
+            "react-dev-utils": "^11.0.1",
+            "react-error-overlay": "^6.0.9",
+            "react-helmet": "^6.1.0",
+            "react-loadable": "^5.5.0",
+            "react-loadable-ssr-addon-v5-slorber": "^1.0.1",
+            "react-router": "^5.2.0",
+            "react-router-config": "^5.1.1",
+            "react-router-dom": "^5.2.0",
+            "remark-admonitions": "^1.2.1",
+            "resolve-pathname": "^3.0.0",
+            "rtl-detect": "^1.0.3",
+            "semver": "^7.3.4",
+            "serve-handler": "^6.1.3",
+            "shelljs": "^0.8.4",
+            "std-env": "^2.2.1",
+            "strip-ansi": "^6.0.0",
+            "terser-webpack-plugin": "^5.1.3",
+            "tslib": "^2.2.0",
+            "update-notifier": "^5.1.0",
+            "url-loader": "^4.1.1",
+            "wait-on": "^5.3.0",
+            "webpack": "^5.40.0",
+            "webpack-bundle-analyzer": "^4.4.2",
+            "webpack-dev-server": "^3.11.2",
+            "webpack-merge": "^5.8.0",
+            "webpackbar": "^5.0.0-3"
+          }
+        },
+        "@docusaurus/cssnano-preset": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2fcssnano-preset/-/cssnano-preset-2.0.0-beta.6.tgz",
+          "integrity": "sha512-RCizp2NAbADopkX5nUz1xrAbU6hGZzziQk9RdSDGJLzMgVCN6RDotq9odS8VgzNa9x2Lx3WN527UxeEbzc2GVQ==",
+          "requires": {
+            "cssnano-preset-advanced": "^5.1.1",
+            "postcss": "^8.2.15",
+            "postcss-sort-media-queries": "^3.10.11"
+          }
+        },
+        "@docusaurus/react-loadable": {
+          "version": "5.5.0",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2freact-loadable/-/react-loadable-5.5.0.tgz",
+          "integrity": "sha512-Ld/kwUE6yATIOTLq3JCsWiTa/drisajwKqBQ2Rw6IcT+sFsKfYek8F2jSH8f68AT73xX97UehduZeCSlnuCBIg==",
+          "requires": {
+            "prop-types": "^15.6.2"
+          }
+        },
+        "@docusaurus/types": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2ftypes/-/types-2.0.0-beta.6.tgz",
+          "integrity": "sha512-TrwxyI93XTZEhOmdEI8FPKDbGV61zE9PzXCdE1alwz1NOV+YXwcv+9sRTZEVLqBpr+TIja+IeeS6mxnyen/Ptg==",
+          "requires": {
+            "commander": "^5.1.0",
+            "joi": "^17.4.0",
+            "querystring": "0.2.0",
+            "webpack": "^5.40.0",
+            "webpack-merge": "^5.8.0"
+          }
+        },
+        "@docusaurus/utils": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2futils/-/utils-2.0.0-beta.6.tgz",
+          "integrity": "sha512-S72/o7VDaTvrXJy+NpfuctghGGoMW30m94PMkrL3I6V+o5eE2Uzax7dbM++moclmHvi0/Khv+TXmRIQs6ZvwgQ==",
+          "requires": {
+            "@docusaurus/types": "2.0.0-beta.6",
+            "@types/github-slugger": "^1.3.0",
+            "chalk": "^4.1.1",
+            "escape-string-regexp": "^4.0.0",
+            "fs-extra": "^10.0.0",
+            "globby": "^11.0.4",
+            "gray-matter": "^4.0.3",
+            "lodash": "^4.17.20",
+            "micromatch": "^4.0.4",
+            "resolve-pathname": "^3.0.0",
+            "tslib": "^2.2.0"
+          }
+        },
+        "@docusaurus/utils-common": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2futils-common/-/utils-common-2.0.0-beta.6.tgz",
+          "integrity": "sha512-MKm6bJxvsYWRl072jLR60z+71tTWSxoERh2eTmCYlegFnu3Tby3HOC8I3jDcC6VpVuoDGsBGNoQbOgy2LqQbXQ==",
+          "requires": {
+            "@docusaurus/types": "2.0.0-beta.6",
+            "tslib": "^2.2.0"
+          }
+        },
+        "@docusaurus/utils-validation": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2futils-validation/-/utils-validation-2.0.0-beta.6.tgz",
+          "integrity": "sha512-v0nk9bpawUd2JFDFyiHDmZuMG+/O1UvxtxvcRbvrxrul+rlzD7Q9CGxMgW3Grp2OCKQ4yFXRidBIccwqON5AVw==",
+          "requires": {
+            "@docusaurus/utils": "2.0.0-beta.6",
+            "chalk": "^4.1.1",
+            "joi": "^17.4.0",
+            "tslib": "^2.1.0"
+          }
+        },
+        "anymatch": {
+          "version": "2.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/anymatch/-/anymatch-2.0.0.tgz",
+          "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+          "requires": {
+            "micromatch": "^3.1.4",
+            "normalize-path": "^2.1.1"
+          },
+          "dependencies": {
+            "micromatch": {
+              "version": "3.1.10",
+              "resolved": "https://mirrors.tencent.com/npm/micromatch/-/micromatch-3.1.10.tgz",
+              "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+              "requires": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "braces": "^2.3.1",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "extglob": "^2.0.4",
+                "fragment-cache": "^0.2.1",
+                "kind-of": "^6.0.2",
+                "nanomatch": "^1.2.9",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.2"
+              }
+            },
+            "normalize-path": {
+              "version": "2.1.1",
+              "resolved": "https://mirrors.tencent.com/npm/normalize-path/-/normalize-path-2.1.1.tgz",
+              "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+              "requires": {
+                "remove-trailing-separator": "^1.0.1"
+              }
+            }
+          }
+        },
+        "binary-extensions": {
+          "version": "1.13.1",
+          "resolved": "https://mirrors.tencent.com/npm/binary-extensions/-/binary-extensions-1.13.1.tgz",
+          "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw=="
+        },
+        "braces": {
+          "version": "2.3.2",
+          "resolved": "https://mirrors.tencent.com/npm/braces/-/braces-2.3.2.tgz",
+          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+          "requires": {
+            "arr-flatten": "^1.1.0",
+            "array-unique": "^0.3.2",
+            "extend-shallow": "^2.0.1",
+            "fill-range": "^4.0.0",
+            "isobject": "^3.0.1",
+            "repeat-element": "^1.1.2",
+            "snapdragon": "^0.8.1",
+            "snapdragon-node": "^2.0.1",
+            "split-string": "^3.0.2",
+            "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://mirrors.tencent.com/npm/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "browserslist": {
+          "version": "4.14.2",
+          "resolved": "https://mirrors.tencent.com/npm/browserslist/-/browserslist-4.14.2.tgz",
+          "integrity": "sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==",
+          "requires": {
+            "caniuse-lite": "^1.0.30001125",
+            "electron-to-chromium": "^1.3.564",
+            "escalade": "^3.0.2",
+            "node-releases": "^1.1.61"
+          }
+        },
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://mirrors.tencent.com/npm/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "detect-port-alt": {
+          "version": "1.1.6",
+          "resolved": "https://mirrors.tencent.com/npm/detect-port-alt/-/detect-port-alt-1.1.6.tgz",
+          "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==",
+          "requires": {
+            "address": "^1.0.1",
+            "debug": "^2.6.0"
+          }
+        },
+        "escape-string-regexp": {
+          "version": "4.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+          "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
+        },
+        "extend-shallow": {
+          "version": "3.0.2",
+          "resolved": "https://mirrors.tencent.com/npm/extend-shallow/-/extend-shallow-3.0.2.tgz",
+          "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+          "requires": {
+            "assign-symbols": "^1.0.0",
+            "is-extendable": "^1.0.1"
+          },
+          "dependencies": {
+            "is-extendable": {
+              "version": "1.0.1",
+              "resolved": "https://mirrors.tencent.com/npm/is-extendable/-/is-extendable-1.0.1.tgz",
+              "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+              "requires": {
+                "is-plain-object": "^2.0.4"
+              }
+            }
+          }
+        },
+        "filesize": {
+          "version": "6.1.0",
+          "resolved": "https://mirrors.tencent.com/npm/filesize/-/filesize-6.1.0.tgz",
+          "integrity": "sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg=="
+        },
+        "fill-range": {
+          "version": "4.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/fill-range/-/fill-range-4.0.0.tgz",
+          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+          "requires": {
+            "extend-shallow": "^2.0.1",
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1",
+            "to-regex-range": "^2.1.0"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://mirrors.tencent.com/npm/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "fork-ts-checker-webpack-plugin": {
+          "version": "4.1.6",
+          "resolved": "https://mirrors.tencent.com/npm/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz",
+          "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==",
+          "requires": {
+            "@babel/code-frame": "^7.5.5",
+            "chalk": "^2.4.1",
+            "micromatch": "^3.1.10",
+            "minimatch": "^3.0.4",
+            "semver": "^5.6.0",
+            "tapable": "^1.0.0",
+            "worker-rpc": "^0.1.0"
+          },
+          "dependencies": {
+            "chalk": {
+              "version": "2.4.2",
+              "resolved": "https://mirrors.tencent.com/npm/chalk/-/chalk-2.4.2.tgz",
+              "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+              "requires": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+              }
+            },
+            "escape-string-regexp": {
+              "version": "1.0.5",
+              "resolved": "https://mirrors.tencent.com/npm/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+              "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+            },
+            "micromatch": {
+              "version": "3.1.10",
+              "resolved": "https://mirrors.tencent.com/npm/micromatch/-/micromatch-3.1.10.tgz",
+              "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+              "requires": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "braces": "^2.3.1",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "extglob": "^2.0.4",
+                "fragment-cache": "^0.2.1",
+                "kind-of": "^6.0.2",
+                "nanomatch": "^1.2.9",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.2"
+              }
+            },
+            "semver": {
+              "version": "5.7.1",
+              "resolved": "https://mirrors.tencent.com/npm/semver/-/semver-5.7.1.tgz",
+              "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+            }
+          }
+        },
+        "fsevents": {
+          "version": "1.2.13",
+          "resolved": "https://mirrors.tencent.com/npm/fsevents/-/fsevents-1.2.13.tgz",
+          "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+          "optional": true
+        },
+        "glob-parent": {
+          "version": "3.1.0",
+          "resolved": "https://mirrors.tencent.com/npm/glob-parent/-/glob-parent-3.1.0.tgz",
+          "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+          "requires": {
+            "is-glob": "^3.1.0",
+            "path-dirname": "^1.0.0"
+          },
+          "dependencies": {
+            "is-glob": {
+              "version": "3.1.0",
+              "resolved": "https://mirrors.tencent.com/npm/is-glob/-/is-glob-3.1.0.tgz",
+              "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+              "requires": {
+                "is-extglob": "^2.1.0"
+              }
+            }
+          }
+        },
+        "html-entities": {
+          "version": "1.4.0",
+          "resolved": "https://mirrors.tencent.com/npm/html-entities/-/html-entities-1.4.0.tgz",
+          "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA=="
+        },
+        "html-minifier-terser": {
+          "version": "5.1.1",
+          "resolved": "https://mirrors.tencent.com/npm/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz",
+          "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==",
+          "requires": {
+            "camel-case": "^4.1.1",
+            "clean-css": "^4.2.3",
+            "commander": "^4.1.1",
+            "he": "^1.2.0",
+            "param-case": "^3.0.3",
+            "relateurl": "^0.2.7",
+            "terser": "^4.6.3"
+          },
+          "dependencies": {
+            "clean-css": {
+              "version": "4.2.4",
+              "resolved": "https://mirrors.tencent.com/npm/clean-css/-/clean-css-4.2.4.tgz",
+              "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==",
+              "requires": {
+                "source-map": "~0.6.0"
+              }
+            },
+            "commander": {
+              "version": "4.1.1",
+              "resolved": "https://mirrors.tencent.com/npm/commander/-/commander-4.1.1.tgz",
+              "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="
+            }
+          }
+        },
+        "http-proxy-middleware": {
+          "version": "0.19.1",
+          "resolved": "https://mirrors.tencent.com/npm/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
+          "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==",
+          "requires": {
+            "http-proxy": "^1.17.0",
+            "is-glob": "^4.0.0",
+            "lodash": "^4.17.11",
+            "micromatch": "^3.1.10"
+          },
+          "dependencies": {
+            "micromatch": {
+              "version": "3.1.10",
+              "resolved": "https://mirrors.tencent.com/npm/micromatch/-/micromatch-3.1.10.tgz",
+              "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+              "requires": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "braces": "^2.3.1",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "extglob": "^2.0.4",
+                "fragment-cache": "^0.2.1",
+                "kind-of": "^6.0.2",
+                "nanomatch": "^1.2.9",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.2"
+              }
+            }
+          }
+        },
+        "immer": {
+          "version": "8.0.1",
+          "resolved": "https://mirrors.tencent.com/npm/immer/-/immer-8.0.1.tgz",
+          "integrity": "sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA=="
+        },
+        "is-binary-path": {
+          "version": "1.0.1",
+          "resolved": "https://mirrors.tencent.com/npm/is-binary-path/-/is-binary-path-1.0.1.tgz",
+          "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+          "requires": {
+            "binary-extensions": "^1.0.0"
+          }
+        },
+        "is-buffer": {
+          "version": "1.1.6",
+          "resolved": "https://mirrors.tencent.com/npm/is-buffer/-/is-buffer-1.1.6.tgz",
+          "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+        },
+        "is-number": {
+          "version": "3.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/is-number/-/is-number-3.0.0.tgz",
+          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "resolved": "https://mirrors.tencent.com/npm/kind-of/-/kind-of-3.2.2.tgz",
+              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "isarray": {
+          "version": "1.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/isarray/-/isarray-1.0.0.tgz",
+          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+        },
+        "loader-utils": {
+          "version": "2.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/loader-utils/-/loader-utils-2.0.0.tgz",
+          "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^2.1.2"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+        },
+        "node-releases": {
+          "version": "1.1.77",
+          "resolved": "https://mirrors.tencent.com/npm/node-releases/-/node-releases-1.1.77.tgz",
+          "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ=="
+        },
+        "p-map": {
+          "version": "2.1.0",
+          "resolved": "https://mirrors.tencent.com/npm/p-map/-/p-map-2.1.0.tgz",
+          "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw=="
+        },
+        "p-retry": {
+          "version": "3.0.1",
+          "resolved": "https://mirrors.tencent.com/npm/p-retry/-/p-retry-3.0.1.tgz",
+          "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==",
+          "requires": {
+            "retry": "^0.12.0"
+          }
+        },
+        "postcss-loader": {
+          "version": "5.3.0",
+          "resolved": "https://mirrors.tencent.com/npm/postcss-loader/-/postcss-loader-5.3.0.tgz",
+          "integrity": "sha512-/+Z1RAmssdiSLgIZwnJHwBMnlABPgF7giYzTN2NOfr9D21IJZ4mQC1R2miwp80zno9M4zMD/umGI8cR+2EL5zw==",
+          "requires": {
+            "cosmiconfig": "^7.0.0",
+            "klona": "^2.0.4",
+            "semver": "^7.3.4"
+          }
+        },
+        "postcss-sort-media-queries": {
+          "version": "3.12.13",
+          "resolved": "https://mirrors.tencent.com/npm/postcss-sort-media-queries/-/postcss-sort-media-queries-3.12.13.tgz",
+          "integrity": "sha512-bFbR1+P6HhZWXcT5DVV2pBH5Y2U5daKbFd0j+kcwKdzrxkbmgFu0GhI2JfFUyy5KQIeW+YJGP+vwNDOS5hIn2g==",
+          "requires": {
+            "sort-css-media-queries": "2.0.4"
+          }
+        },
+        "range-parser": {
+          "version": "1.2.1",
+          "resolved": "https://mirrors.tencent.com/npm/range-parser/-/range-parser-1.2.1.tgz",
+          "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
+        },
+        "react-dev-utils": {
+          "version": "11.0.4",
+          "resolved": "https://mirrors.tencent.com/npm/react-dev-utils/-/react-dev-utils-11.0.4.tgz",
+          "integrity": "sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A==",
+          "requires": {
+            "@babel/code-frame": "7.10.4",
+            "address": "1.1.2",
+            "browserslist": "4.14.2",
+            "chalk": "2.4.2",
+            "cross-spawn": "7.0.3",
+            "detect-port-alt": "1.1.6",
+            "escape-string-regexp": "2.0.0",
+            "filesize": "6.1.0",
+            "find-up": "4.1.0",
+            "fork-ts-checker-webpack-plugin": "4.1.6",
+            "global-modules": "2.0.0",
+            "globby": "11.0.1",
+            "gzip-size": "5.1.1",
+            "immer": "8.0.1",
+            "is-root": "2.1.0",
+            "loader-utils": "2.0.0",
+            "open": "^7.0.2",
+            "pkg-up": "3.1.0",
+            "prompts": "2.4.0",
+            "react-error-overlay": "^6.0.9",
+            "recursive-readdir": "2.2.2",
+            "shell-quote": "1.7.2",
+            "strip-ansi": "6.0.0",
+            "text-table": "0.2.0"
+          },
+          "dependencies": {
+            "chalk": {
+              "version": "2.4.2",
+              "resolved": "https://mirrors.tencent.com/npm/chalk/-/chalk-2.4.2.tgz",
+              "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+              "requires": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+              },
+              "dependencies": {
+                "escape-string-regexp": {
+                  "version": "1.0.5",
+                  "resolved": "https://mirrors.tencent.com/npm/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+                  "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+                }
+              }
+            },
+            "escape-string-regexp": {
+              "version": "2.0.0",
+              "resolved": "https://mirrors.tencent.com/npm/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+              "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w=="
+            },
+            "globby": {
+              "version": "11.0.1",
+              "resolved": "https://mirrors.tencent.com/npm/globby/-/globby-11.0.1.tgz",
+              "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==",
+              "requires": {
+                "array-union": "^2.1.0",
+                "dir-glob": "^3.0.1",
+                "fast-glob": "^3.1.1",
+                "ignore": "^5.1.4",
+                "merge2": "^1.3.0",
+                "slash": "^3.0.0"
+              }
+            },
+            "prompts": {
+              "version": "2.4.0",
+              "resolved": "https://mirrors.tencent.com/npm/prompts/-/prompts-2.4.0.tgz",
+              "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==",
+              "requires": {
+                "kleur": "^3.0.3",
+                "sisteransi": "^1.0.5"
+              }
+            },
+            "strip-ansi": {
+              "version": "6.0.0",
+              "resolved": "https://mirrors.tencent.com/npm/strip-ansi/-/strip-ansi-6.0.0.tgz",
+              "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+              "requires": {
+                "ansi-regex": "^5.0.0"
+              }
+            }
+          }
+        },
+        "readable-stream": {
+          "version": "2.3.7",
+          "resolved": "https://mirrors.tencent.com/npm/readable-stream/-/readable-stream-2.3.7.tgz",
+          "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.3",
+            "isarray": "~1.0.0",
+            "process-nextick-args": "~2.0.0",
+            "safe-buffer": "~5.1.1",
+            "string_decoder": "~1.1.1",
+            "util-deprecate": "~1.0.1"
+          }
+        },
+        "readdirp": {
+          "version": "2.2.1",
+          "resolved": "https://mirrors.tencent.com/npm/readdirp/-/readdirp-2.2.1.tgz",
+          "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+          "requires": {
+            "graceful-fs": "^4.1.11",
+            "micromatch": "^3.1.10",
+            "readable-stream": "^2.0.2"
+          },
+          "dependencies": {
+            "micromatch": {
+              "version": "3.1.10",
+              "resolved": "https://mirrors.tencent.com/npm/micromatch/-/micromatch-3.1.10.tgz",
+              "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+              "requires": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "braces": "^2.3.1",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "extglob": "^2.0.4",
+                "fragment-cache": "^0.2.1",
+                "kind-of": "^6.0.2",
+                "nanomatch": "^1.2.9",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.2"
+              }
+            }
+          }
+        },
+        "retry": {
+          "version": "0.12.0",
+          "resolved": "https://mirrors.tencent.com/npm/retry/-/retry-0.12.0.tgz",
+          "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs="
+        },
+        "rimraf": {
+          "version": "2.7.1",
+          "resolved": "https://mirrors.tencent.com/npm/rimraf/-/rimraf-2.7.1.tgz",
+          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        },
+        "rxjs": {
+          "version": "6.6.7",
+          "resolved": "https://mirrors.tencent.com/npm/rxjs/-/rxjs-6.6.7.tgz",
+          "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
+          "requires": {
+            "tslib": "^1.9.0"
+          },
+          "dependencies": {
+            "tslib": {
+              "version": "1.14.1",
+              "resolved": "https://mirrors.tencent.com/npm/tslib/-/tslib-1.14.1.tgz",
+              "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+            }
+          }
+        },
+        "schema-utils": {
+          "version": "1.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/schema-utils/-/schema-utils-1.0.0.tgz",
+          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        },
+        "shell-quote": {
+          "version": "1.7.2",
+          "resolved": "https://mirrors.tencent.com/npm/shell-quote/-/shell-quote-1.7.2.tgz",
+          "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg=="
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://mirrors.tencent.com/npm/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+        },
+        "string_decoder": {
+          "version": "1.1.1",
+          "resolved": "https://mirrors.tencent.com/npm/string_decoder/-/string_decoder-1.1.1.tgz",
+          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+          "requires": {
+            "safe-buffer": "~5.1.0"
+          }
+        },
+        "tapable": {
+          "version": "1.1.3",
+          "resolved": "https://mirrors.tencent.com/npm/tapable/-/tapable-1.1.3.tgz",
+          "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA=="
+        },
+        "terser": {
+          "version": "4.8.0",
+          "resolved": "https://mirrors.tencent.com/npm/terser/-/terser-4.8.0.tgz",
+          "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
+          "requires": {
+            "commander": "^2.20.0",
+            "source-map": "~0.6.1",
+            "source-map-support": "~0.5.12"
+          },
+          "dependencies": {
+            "commander": {
+              "version": "2.20.3",
+              "resolved": "https://mirrors.tencent.com/npm/commander/-/commander-2.20.3.tgz",
+              "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+            }
+          }
+        },
+        "to-regex-range": {
+          "version": "2.1.1",
+          "resolved": "https://mirrors.tencent.com/npm/to-regex-range/-/to-regex-range-2.1.1.tgz",
+          "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+          "requires": {
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1"
+          }
+        },
+        "wait-on": {
+          "version": "5.3.0",
+          "resolved": "https://mirrors.tencent.com/npm/wait-on/-/wait-on-5.3.0.tgz",
+          "integrity": "sha512-DwrHrnTK+/0QFaB9a8Ol5Lna3k7WvUR4jzSKmz0YaPBpuN2sACyiPVKVfj6ejnjcajAcvn3wlbTyMIn9AZouOg==",
+          "requires": {
+            "axios": "^0.21.1",
+            "joi": "^17.3.0",
+            "lodash": "^4.17.21",
+            "minimist": "^1.2.5",
+            "rxjs": "^6.6.3"
+          }
+        },
+        "webpack-dev-middleware": {
+          "version": "3.7.3",
+          "resolved": "https://mirrors.tencent.com/npm/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz",
+          "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==",
+          "requires": {
+            "memory-fs": "^0.4.1",
+            "mime": "^2.4.4",
+            "mkdirp": "^0.5.1",
+            "range-parser": "^1.2.1",
+            "webpack-log": "^2.0.0"
+          }
+        },
+        "webpack-dev-server": {
+          "version": "3.11.3",
+          "resolved": "https://mirrors.tencent.com/npm/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz",
+          "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==",
+          "requires": {
+            "ansi-html-community": "0.0.8",
+            "bonjour": "^3.5.0",
+            "chokidar": "^2.1.8",
+            "compression": "^1.7.4",
+            "connect-history-api-fallback": "^1.6.0",
+            "debug": "^4.1.1",
+            "del": "^4.1.1",
+            "express": "^4.17.1",
+            "html-entities": "^1.3.1",
+            "http-proxy-middleware": "0.19.1",
+            "import-local": "^2.0.0",
+            "internal-ip": "^4.3.0",
+            "ip": "^1.1.5",
+            "is-absolute-url": "^3.0.3",
+            "killable": "^1.0.1",
+            "loglevel": "^1.6.8",
+            "opn": "^5.5.0",
+            "p-retry": "^3.0.1",
+            "portfinder": "^1.0.26",
+            "schema-utils": "^1.0.0",
+            "selfsigned": "^1.10.8",
+            "semver": "^6.3.0",
+            "serve-index": "^1.9.1",
+            "sockjs": "^0.3.21",
+            "sockjs-client": "^1.5.0",
+            "spdy": "^4.0.2",
+            "strip-ansi": "^3.0.1",
+            "supports-color": "^6.1.0",
+            "url": "^0.11.0",
+            "webpack-dev-middleware": "^3.7.2",
+            "webpack-log": "^2.0.0",
+            "ws": "^6.2.1",
+            "yargs": "^13.3.2"
+          },
+          "dependencies": {
+            "ansi-regex": {
+              "version": "2.1.1",
+              "resolved": "https://mirrors.tencent.com/npm/ansi-regex/-/ansi-regex-2.1.1.tgz",
+              "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+            },
+            "array-union": {
+              "version": "1.0.2",
+              "resolved": "https://mirrors.tencent.com/npm/array-union/-/array-union-1.0.2.tgz",
+              "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+              "requires": {
+                "array-uniq": "^1.0.1"
+              }
+            },
+            "chokidar": {
+              "version": "2.1.8",
+              "resolved": "https://mirrors.tencent.com/npm/chokidar/-/chokidar-2.1.8.tgz",
+              "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+              "requires": {
+                "anymatch": "^2.0.0",
+                "async-each": "^1.0.1",
+                "braces": "^2.3.2",
+                "fsevents": "^1.2.7",
+                "glob-parent": "^3.1.0",
+                "inherits": "^2.0.3",
+                "is-binary-path": "^1.0.0",
+                "is-glob": "^4.0.0",
+                "normalize-path": "^3.0.0",
+                "path-is-absolute": "^1.0.0",
+                "readdirp": "^2.2.1",
+                "upath": "^1.1.1"
+              }
+            },
+            "debug": {
+              "version": "4.3.3",
+              "resolved": "https://mirrors.tencent.com/npm/debug/-/debug-4.3.3.tgz",
+              "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+              "requires": {
+                "ms": "2.1.2"
+              }
+            },
+            "del": {
+              "version": "4.1.1",
+              "resolved": "https://mirrors.tencent.com/npm/del/-/del-4.1.1.tgz",
+              "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==",
+              "requires": {
+                "@types/glob": "^7.1.1",
+                "globby": "^6.1.0",
+                "is-path-cwd": "^2.0.0",
+                "is-path-in-cwd": "^2.0.0",
+                "p-map": "^2.0.0",
+                "pify": "^4.0.1",
+                "rimraf": "^2.6.3"
+              }
+            },
+            "globby": {
+              "version": "6.1.0",
+              "resolved": "https://mirrors.tencent.com/npm/globby/-/globby-6.1.0.tgz",
+              "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+              "requires": {
+                "array-union": "^1.0.1",
+                "glob": "^7.0.3",
+                "object-assign": "^4.0.1",
+                "pify": "^2.0.0",
+                "pinkie-promise": "^2.0.0"
+              },
+              "dependencies": {
+                "pify": {
+                  "version": "2.3.0",
+                  "resolved": "https://mirrors.tencent.com/npm/pify/-/pify-2.3.0.tgz",
+                  "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
+                }
+              }
+            },
+            "ms": {
+              "version": "2.1.2",
+              "resolved": "https://mirrors.tencent.com/npm/ms/-/ms-2.1.2.tgz",
+              "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+            },
+            "semver": {
+              "version": "6.3.0",
+              "resolved": "https://mirrors.tencent.com/npm/semver/-/semver-6.3.0.tgz",
+              "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+            },
+            "strip-ansi": {
+              "version": "3.0.1",
+              "resolved": "https://mirrors.tencent.com/npm/strip-ansi/-/strip-ansi-3.0.1.tgz",
+              "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+              "requires": {
+                "ansi-regex": "^2.0.0"
+              }
+            },
+            "supports-color": {
+              "version": "6.1.0",
+              "resolved": "https://mirrors.tencent.com/npm/supports-color/-/supports-color-6.1.0.tgz",
+              "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+              "requires": {
+                "has-flag": "^3.0.0"
+              }
+            }
+          }
+        },
+        "ws": {
+          "version": "6.2.2",
+          "resolved": "https://mirrors.tencent.com/npm/ws/-/ws-6.2.2.tgz",
+          "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==",
+          "requires": {
+            "async-limiter": "~1.0.0"
+          }
+        }
+      }
+    },
+    "@docusaurus/plugin-sitemap": {
+      "version": "2.0.0-beta.6",
+      "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2fplugin-sitemap/-/plugin-sitemap-2.0.0-beta.6.tgz",
+      "integrity": "sha512-jpTaODqyCgg+20RtMw8gSvCKQOvH18FpKhIu6FG+z4zgHP33qaJouVM7/1ZKPrfNt4z7xDOyBNUzzdmpssHA8A==",
+      "requires": {
+        "@docusaurus/core": "2.0.0-beta.6",
+        "@docusaurus/types": "2.0.0-beta.6",
+        "@docusaurus/utils": "2.0.0-beta.6",
+        "@docusaurus/utils-common": "2.0.0-beta.6",
+        "@docusaurus/utils-validation": "2.0.0-beta.6",
+        "fs-extra": "^10.0.0",
+        "sitemap": "^7.0.0",
+        "tslib": "^2.2.0"
+      },
+      "dependencies": {
+        "@babel/code-frame": {
+          "version": "7.10.4",
+          "resolved": "https://mirrors.tencent.com/npm/@babel%2fcode-frame/-/code-frame-7.10.4.tgz",
+          "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
+          "requires": {
+            "@babel/highlight": "^7.10.4"
+          }
+        },
+        "@docusaurus/core": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2fcore/-/core-2.0.0-beta.6.tgz",
+          "integrity": "sha512-XMeI+lJKeJBGYBNOfO/Tc+5FMf21E5p1xZjfe75cgYcfZdERZ+W7aemXquwReno8xxHb4Rnfmi9dxkbOLDjqDA==",
+          "requires": {
+            "@babel/core": "^7.12.16",
+            "@babel/generator": "^7.12.15",
+            "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+            "@babel/plugin-transform-runtime": "^7.12.15",
+            "@babel/preset-env": "^7.12.16",
+            "@babel/preset-react": "^7.12.13",
+            "@babel/preset-typescript": "^7.12.16",
+            "@babel/runtime": "^7.12.5",
+            "@babel/runtime-corejs3": "^7.12.13",
+            "@babel/traverse": "^7.12.13",
+            "@docusaurus/cssnano-preset": "2.0.0-beta.6",
+            "@docusaurus/react-loadable": "5.5.0",
+            "@docusaurus/types": "2.0.0-beta.6",
+            "@docusaurus/utils": "2.0.0-beta.6",
+            "@docusaurus/utils-common": "2.0.0-beta.6",
+            "@docusaurus/utils-validation": "2.0.0-beta.6",
+            "@slorber/static-site-generator-webpack-plugin": "^4.0.0",
+            "@svgr/webpack": "^5.5.0",
+            "autoprefixer": "^10.2.5",
+            "babel-loader": "^8.2.2",
+            "babel-plugin-dynamic-import-node": "2.3.0",
+            "boxen": "^5.0.1",
+            "chalk": "^4.1.1",
+            "chokidar": "^3.5.1",
+            "clean-css": "^5.1.5",
+            "commander": "^5.1.0",
+            "copy-webpack-plugin": "^9.0.0",
+            "core-js": "^3.9.1",
+            "css-loader": "^5.1.1",
+            "css-minimizer-webpack-plugin": "^3.0.1",
+            "cssnano": "^5.0.4",
+            "del": "^6.0.0",
+            "detect-port": "^1.3.0",
+            "escape-html": "^1.0.3",
+            "eta": "^1.12.1",
+            "express": "^4.17.1",
+            "file-loader": "^6.2.0",
+            "fs-extra": "^10.0.0",
+            "github-slugger": "^1.3.0",
+            "globby": "^11.0.2",
+            "html-minifier-terser": "^5.1.1",
+            "html-tags": "^3.1.0",
+            "html-webpack-plugin": "^5.3.2",
+            "import-fresh": "^3.3.0",
+            "is-root": "^2.1.0",
+            "leven": "^3.1.0",
+            "lodash": "^4.17.20",
+            "mini-css-extract-plugin": "^1.6.0",
+            "module-alias": "^2.2.2",
+            "nprogress": "^0.2.0",
+            "postcss": "^8.2.15",
+            "postcss-loader": "^5.3.0",
+            "prompts": "^2.4.1",
+            "react-dev-utils": "^11.0.1",
+            "react-error-overlay": "^6.0.9",
+            "react-helmet": "^6.1.0",
+            "react-loadable": "^5.5.0",
+            "react-loadable-ssr-addon-v5-slorber": "^1.0.1",
+            "react-router": "^5.2.0",
+            "react-router-config": "^5.1.1",
+            "react-router-dom": "^5.2.0",
+            "remark-admonitions": "^1.2.1",
+            "resolve-pathname": "^3.0.0",
+            "rtl-detect": "^1.0.3",
+            "semver": "^7.3.4",
+            "serve-handler": "^6.1.3",
+            "shelljs": "^0.8.4",
+            "std-env": "^2.2.1",
+            "strip-ansi": "^6.0.0",
+            "terser-webpack-plugin": "^5.1.3",
+            "tslib": "^2.2.0",
+            "update-notifier": "^5.1.0",
+            "url-loader": "^4.1.1",
+            "wait-on": "^5.3.0",
+            "webpack": "^5.40.0",
+            "webpack-bundle-analyzer": "^4.4.2",
+            "webpack-dev-server": "^3.11.2",
+            "webpack-merge": "^5.8.0",
+            "webpackbar": "^5.0.0-3"
+          }
+        },
+        "@docusaurus/cssnano-preset": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2fcssnano-preset/-/cssnano-preset-2.0.0-beta.6.tgz",
+          "integrity": "sha512-RCizp2NAbADopkX5nUz1xrAbU6hGZzziQk9RdSDGJLzMgVCN6RDotq9odS8VgzNa9x2Lx3WN527UxeEbzc2GVQ==",
+          "requires": {
+            "cssnano-preset-advanced": "^5.1.1",
+            "postcss": "^8.2.15",
+            "postcss-sort-media-queries": "^3.10.11"
+          }
+        },
+        "@docusaurus/react-loadable": {
+          "version": "5.5.0",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2freact-loadable/-/react-loadable-5.5.0.tgz",
+          "integrity": "sha512-Ld/kwUE6yATIOTLq3JCsWiTa/drisajwKqBQ2Rw6IcT+sFsKfYek8F2jSH8f68AT73xX97UehduZeCSlnuCBIg==",
+          "requires": {
+            "prop-types": "^15.6.2"
+          }
+        },
+        "@docusaurus/types": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2ftypes/-/types-2.0.0-beta.6.tgz",
+          "integrity": "sha512-TrwxyI93XTZEhOmdEI8FPKDbGV61zE9PzXCdE1alwz1NOV+YXwcv+9sRTZEVLqBpr+TIja+IeeS6mxnyen/Ptg==",
+          "requires": {
+            "commander": "^5.1.0",
+            "joi": "^17.4.0",
+            "querystring": "0.2.0",
+            "webpack": "^5.40.0",
+            "webpack-merge": "^5.8.0"
+          }
+        },
+        "@docusaurus/utils": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2futils/-/utils-2.0.0-beta.6.tgz",
+          "integrity": "sha512-S72/o7VDaTvrXJy+NpfuctghGGoMW30m94PMkrL3I6V+o5eE2Uzax7dbM++moclmHvi0/Khv+TXmRIQs6ZvwgQ==",
+          "requires": {
+            "@docusaurus/types": "2.0.0-beta.6",
+            "@types/github-slugger": "^1.3.0",
+            "chalk": "^4.1.1",
+            "escape-string-regexp": "^4.0.0",
+            "fs-extra": "^10.0.0",
+            "globby": "^11.0.4",
+            "gray-matter": "^4.0.3",
+            "lodash": "^4.17.20",
+            "micromatch": "^4.0.4",
+            "resolve-pathname": "^3.0.0",
+            "tslib": "^2.2.0"
+          }
+        },
+        "@docusaurus/utils-common": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2futils-common/-/utils-common-2.0.0-beta.6.tgz",
+          "integrity": "sha512-MKm6bJxvsYWRl072jLR60z+71tTWSxoERh2eTmCYlegFnu3Tby3HOC8I3jDcC6VpVuoDGsBGNoQbOgy2LqQbXQ==",
+          "requires": {
+            "@docusaurus/types": "2.0.0-beta.6",
+            "tslib": "^2.2.0"
+          }
+        },
+        "@docusaurus/utils-validation": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2futils-validation/-/utils-validation-2.0.0-beta.6.tgz",
+          "integrity": "sha512-v0nk9bpawUd2JFDFyiHDmZuMG+/O1UvxtxvcRbvrxrul+rlzD7Q9CGxMgW3Grp2OCKQ4yFXRidBIccwqON5AVw==",
+          "requires": {
+            "@docusaurus/utils": "2.0.0-beta.6",
+            "chalk": "^4.1.1",
+            "joi": "^17.4.0",
+            "tslib": "^2.1.0"
+          }
+        },
+        "anymatch": {
+          "version": "2.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/anymatch/-/anymatch-2.0.0.tgz",
+          "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+          "requires": {
+            "micromatch": "^3.1.4",
+            "normalize-path": "^2.1.1"
+          },
+          "dependencies": {
+            "micromatch": {
+              "version": "3.1.10",
+              "resolved": "https://mirrors.tencent.com/npm/micromatch/-/micromatch-3.1.10.tgz",
+              "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+              "requires": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "braces": "^2.3.1",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "extglob": "^2.0.4",
+                "fragment-cache": "^0.2.1",
+                "kind-of": "^6.0.2",
+                "nanomatch": "^1.2.9",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.2"
+              }
+            },
+            "normalize-path": {
+              "version": "2.1.1",
+              "resolved": "https://mirrors.tencent.com/npm/normalize-path/-/normalize-path-2.1.1.tgz",
+              "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+              "requires": {
+                "remove-trailing-separator": "^1.0.1"
+              }
+            }
+          }
+        },
+        "binary-extensions": {
+          "version": "1.13.1",
+          "resolved": "https://mirrors.tencent.com/npm/binary-extensions/-/binary-extensions-1.13.1.tgz",
+          "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw=="
+        },
+        "braces": {
+          "version": "2.3.2",
+          "resolved": "https://mirrors.tencent.com/npm/braces/-/braces-2.3.2.tgz",
+          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+          "requires": {
+            "arr-flatten": "^1.1.0",
+            "array-unique": "^0.3.2",
+            "extend-shallow": "^2.0.1",
+            "fill-range": "^4.0.0",
+            "isobject": "^3.0.1",
+            "repeat-element": "^1.1.2",
+            "snapdragon": "^0.8.1",
+            "snapdragon-node": "^2.0.1",
+            "split-string": "^3.0.2",
+            "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://mirrors.tencent.com/npm/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "browserslist": {
+          "version": "4.14.2",
+          "resolved": "https://mirrors.tencent.com/npm/browserslist/-/browserslist-4.14.2.tgz",
+          "integrity": "sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==",
+          "requires": {
+            "caniuse-lite": "^1.0.30001125",
+            "electron-to-chromium": "^1.3.564",
+            "escalade": "^3.0.2",
+            "node-releases": "^1.1.61"
+          }
+        },
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://mirrors.tencent.com/npm/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "detect-port-alt": {
+          "version": "1.1.6",
+          "resolved": "https://mirrors.tencent.com/npm/detect-port-alt/-/detect-port-alt-1.1.6.tgz",
+          "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==",
+          "requires": {
+            "address": "^1.0.1",
+            "debug": "^2.6.0"
+          }
+        },
+        "escape-string-regexp": {
+          "version": "4.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+          "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
+        },
+        "extend-shallow": {
+          "version": "3.0.2",
+          "resolved": "https://mirrors.tencent.com/npm/extend-shallow/-/extend-shallow-3.0.2.tgz",
+          "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+          "requires": {
+            "assign-symbols": "^1.0.0",
+            "is-extendable": "^1.0.1"
+          },
+          "dependencies": {
+            "is-extendable": {
+              "version": "1.0.1",
+              "resolved": "https://mirrors.tencent.com/npm/is-extendable/-/is-extendable-1.0.1.tgz",
+              "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+              "requires": {
+                "is-plain-object": "^2.0.4"
+              }
+            }
+          }
+        },
+        "filesize": {
+          "version": "6.1.0",
+          "resolved": "https://mirrors.tencent.com/npm/filesize/-/filesize-6.1.0.tgz",
+          "integrity": "sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg=="
+        },
+        "fill-range": {
+          "version": "4.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/fill-range/-/fill-range-4.0.0.tgz",
+          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+          "requires": {
+            "extend-shallow": "^2.0.1",
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1",
+            "to-regex-range": "^2.1.0"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://mirrors.tencent.com/npm/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "fork-ts-checker-webpack-plugin": {
+          "version": "4.1.6",
+          "resolved": "https://mirrors.tencent.com/npm/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz",
+          "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==",
+          "requires": {
+            "@babel/code-frame": "^7.5.5",
+            "chalk": "^2.4.1",
+            "micromatch": "^3.1.10",
+            "minimatch": "^3.0.4",
+            "semver": "^5.6.0",
+            "tapable": "^1.0.0",
+            "worker-rpc": "^0.1.0"
+          },
+          "dependencies": {
+            "chalk": {
+              "version": "2.4.2",
+              "resolved": "https://mirrors.tencent.com/npm/chalk/-/chalk-2.4.2.tgz",
+              "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+              "requires": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+              }
+            },
+            "escape-string-regexp": {
+              "version": "1.0.5",
+              "resolved": "https://mirrors.tencent.com/npm/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+              "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+            },
+            "micromatch": {
+              "version": "3.1.10",
+              "resolved": "https://mirrors.tencent.com/npm/micromatch/-/micromatch-3.1.10.tgz",
+              "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+              "requires": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "braces": "^2.3.1",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "extglob": "^2.0.4",
+                "fragment-cache": "^0.2.1",
+                "kind-of": "^6.0.2",
+                "nanomatch": "^1.2.9",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.2"
+              }
+            },
+            "semver": {
+              "version": "5.7.1",
+              "resolved": "https://mirrors.tencent.com/npm/semver/-/semver-5.7.1.tgz",
+              "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+            }
+          }
+        },
+        "fsevents": {
+          "version": "1.2.13",
+          "resolved": "https://mirrors.tencent.com/npm/fsevents/-/fsevents-1.2.13.tgz",
+          "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+          "optional": true
+        },
+        "glob-parent": {
+          "version": "3.1.0",
+          "resolved": "https://mirrors.tencent.com/npm/glob-parent/-/glob-parent-3.1.0.tgz",
+          "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+          "requires": {
+            "is-glob": "^3.1.0",
+            "path-dirname": "^1.0.0"
+          },
+          "dependencies": {
+            "is-glob": {
+              "version": "3.1.0",
+              "resolved": "https://mirrors.tencent.com/npm/is-glob/-/is-glob-3.1.0.tgz",
+              "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+              "requires": {
+                "is-extglob": "^2.1.0"
+              }
+            }
+          }
+        },
+        "html-entities": {
+          "version": "1.4.0",
+          "resolved": "https://mirrors.tencent.com/npm/html-entities/-/html-entities-1.4.0.tgz",
+          "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA=="
+        },
+        "html-minifier-terser": {
+          "version": "5.1.1",
+          "resolved": "https://mirrors.tencent.com/npm/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz",
+          "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==",
+          "requires": {
+            "camel-case": "^4.1.1",
+            "clean-css": "^4.2.3",
+            "commander": "^4.1.1",
+            "he": "^1.2.0",
+            "param-case": "^3.0.3",
+            "relateurl": "^0.2.7",
+            "terser": "^4.6.3"
+          },
+          "dependencies": {
+            "clean-css": {
+              "version": "4.2.4",
+              "resolved": "https://mirrors.tencent.com/npm/clean-css/-/clean-css-4.2.4.tgz",
+              "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==",
+              "requires": {
+                "source-map": "~0.6.0"
+              }
+            },
+            "commander": {
+              "version": "4.1.1",
+              "resolved": "https://mirrors.tencent.com/npm/commander/-/commander-4.1.1.tgz",
+              "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="
+            }
+          }
+        },
+        "http-proxy-middleware": {
+          "version": "0.19.1",
+          "resolved": "https://mirrors.tencent.com/npm/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
+          "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==",
+          "requires": {
+            "http-proxy": "^1.17.0",
+            "is-glob": "^4.0.0",
+            "lodash": "^4.17.11",
+            "micromatch": "^3.1.10"
+          },
+          "dependencies": {
+            "micromatch": {
+              "version": "3.1.10",
+              "resolved": "https://mirrors.tencent.com/npm/micromatch/-/micromatch-3.1.10.tgz",
+              "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+              "requires": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "braces": "^2.3.1",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "extglob": "^2.0.4",
+                "fragment-cache": "^0.2.1",
+                "kind-of": "^6.0.2",
+                "nanomatch": "^1.2.9",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.2"
+              }
+            }
+          }
+        },
+        "immer": {
+          "version": "8.0.1",
+          "resolved": "https://mirrors.tencent.com/npm/immer/-/immer-8.0.1.tgz",
+          "integrity": "sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA=="
+        },
+        "is-binary-path": {
+          "version": "1.0.1",
+          "resolved": "https://mirrors.tencent.com/npm/is-binary-path/-/is-binary-path-1.0.1.tgz",
+          "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+          "requires": {
+            "binary-extensions": "^1.0.0"
+          }
+        },
+        "is-buffer": {
+          "version": "1.1.6",
+          "resolved": "https://mirrors.tencent.com/npm/is-buffer/-/is-buffer-1.1.6.tgz",
+          "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+        },
+        "is-number": {
+          "version": "3.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/is-number/-/is-number-3.0.0.tgz",
+          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "resolved": "https://mirrors.tencent.com/npm/kind-of/-/kind-of-3.2.2.tgz",
+              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "isarray": {
+          "version": "1.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/isarray/-/isarray-1.0.0.tgz",
+          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+        },
+        "loader-utils": {
+          "version": "2.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/loader-utils/-/loader-utils-2.0.0.tgz",
+          "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^2.1.2"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+        },
+        "node-releases": {
+          "version": "1.1.77",
+          "resolved": "https://mirrors.tencent.com/npm/node-releases/-/node-releases-1.1.77.tgz",
+          "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ=="
+        },
+        "p-map": {
+          "version": "2.1.0",
+          "resolved": "https://mirrors.tencent.com/npm/p-map/-/p-map-2.1.0.tgz",
+          "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw=="
+        },
+        "p-retry": {
+          "version": "3.0.1",
+          "resolved": "https://mirrors.tencent.com/npm/p-retry/-/p-retry-3.0.1.tgz",
+          "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==",
+          "requires": {
+            "retry": "^0.12.0"
+          }
+        },
+        "postcss-loader": {
+          "version": "5.3.0",
+          "resolved": "https://mirrors.tencent.com/npm/postcss-loader/-/postcss-loader-5.3.0.tgz",
+          "integrity": "sha512-/+Z1RAmssdiSLgIZwnJHwBMnlABPgF7giYzTN2NOfr9D21IJZ4mQC1R2miwp80zno9M4zMD/umGI8cR+2EL5zw==",
+          "requires": {
+            "cosmiconfig": "^7.0.0",
+            "klona": "^2.0.4",
+            "semver": "^7.3.4"
+          }
+        },
+        "postcss-sort-media-queries": {
+          "version": "3.12.13",
+          "resolved": "https://mirrors.tencent.com/npm/postcss-sort-media-queries/-/postcss-sort-media-queries-3.12.13.tgz",
+          "integrity": "sha512-bFbR1+P6HhZWXcT5DVV2pBH5Y2U5daKbFd0j+kcwKdzrxkbmgFu0GhI2JfFUyy5KQIeW+YJGP+vwNDOS5hIn2g==",
+          "requires": {
+            "sort-css-media-queries": "2.0.4"
+          }
+        },
+        "range-parser": {
+          "version": "1.2.1",
+          "resolved": "https://mirrors.tencent.com/npm/range-parser/-/range-parser-1.2.1.tgz",
+          "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
+        },
+        "react-dev-utils": {
+          "version": "11.0.4",
+          "resolved": "https://mirrors.tencent.com/npm/react-dev-utils/-/react-dev-utils-11.0.4.tgz",
+          "integrity": "sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A==",
+          "requires": {
+            "@babel/code-frame": "7.10.4",
+            "address": "1.1.2",
+            "browserslist": "4.14.2",
+            "chalk": "2.4.2",
+            "cross-spawn": "7.0.3",
+            "detect-port-alt": "1.1.6",
+            "escape-string-regexp": "2.0.0",
+            "filesize": "6.1.0",
+            "find-up": "4.1.0",
+            "fork-ts-checker-webpack-plugin": "4.1.6",
+            "global-modules": "2.0.0",
+            "globby": "11.0.1",
+            "gzip-size": "5.1.1",
+            "immer": "8.0.1",
+            "is-root": "2.1.0",
+            "loader-utils": "2.0.0",
+            "open": "^7.0.2",
+            "pkg-up": "3.1.0",
+            "prompts": "2.4.0",
+            "react-error-overlay": "^6.0.9",
+            "recursive-readdir": "2.2.2",
+            "shell-quote": "1.7.2",
+            "strip-ansi": "6.0.0",
+            "text-table": "0.2.0"
+          },
+          "dependencies": {
+            "chalk": {
+              "version": "2.4.2",
+              "resolved": "https://mirrors.tencent.com/npm/chalk/-/chalk-2.4.2.tgz",
+              "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+              "requires": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+              },
+              "dependencies": {
+                "escape-string-regexp": {
+                  "version": "1.0.5",
+                  "resolved": "https://mirrors.tencent.com/npm/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+                  "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+                }
+              }
+            },
+            "escape-string-regexp": {
+              "version": "2.0.0",
+              "resolved": "https://mirrors.tencent.com/npm/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+              "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w=="
+            },
+            "globby": {
+              "version": "11.0.1",
+              "resolved": "https://mirrors.tencent.com/npm/globby/-/globby-11.0.1.tgz",
+              "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==",
+              "requires": {
+                "array-union": "^2.1.0",
+                "dir-glob": "^3.0.1",
+                "fast-glob": "^3.1.1",
+                "ignore": "^5.1.4",
+                "merge2": "^1.3.0",
+                "slash": "^3.0.0"
+              }
+            },
+            "prompts": {
+              "version": "2.4.0",
+              "resolved": "https://mirrors.tencent.com/npm/prompts/-/prompts-2.4.0.tgz",
+              "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==",
+              "requires": {
+                "kleur": "^3.0.3",
+                "sisteransi": "^1.0.5"
+              }
+            },
+            "strip-ansi": {
+              "version": "6.0.0",
+              "resolved": "https://mirrors.tencent.com/npm/strip-ansi/-/strip-ansi-6.0.0.tgz",
+              "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+              "requires": {
+                "ansi-regex": "^5.0.0"
+              }
+            }
+          }
+        },
+        "readable-stream": {
+          "version": "2.3.7",
+          "resolved": "https://mirrors.tencent.com/npm/readable-stream/-/readable-stream-2.3.7.tgz",
+          "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.3",
+            "isarray": "~1.0.0",
+            "process-nextick-args": "~2.0.0",
+            "safe-buffer": "~5.1.1",
+            "string_decoder": "~1.1.1",
+            "util-deprecate": "~1.0.1"
+          }
+        },
+        "readdirp": {
+          "version": "2.2.1",
+          "resolved": "https://mirrors.tencent.com/npm/readdirp/-/readdirp-2.2.1.tgz",
+          "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+          "requires": {
+            "graceful-fs": "^4.1.11",
+            "micromatch": "^3.1.10",
+            "readable-stream": "^2.0.2"
+          },
+          "dependencies": {
+            "micromatch": {
+              "version": "3.1.10",
+              "resolved": "https://mirrors.tencent.com/npm/micromatch/-/micromatch-3.1.10.tgz",
+              "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+              "requires": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "braces": "^2.3.1",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "extglob": "^2.0.4",
+                "fragment-cache": "^0.2.1",
+                "kind-of": "^6.0.2",
+                "nanomatch": "^1.2.9",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.2"
+              }
+            }
+          }
+        },
+        "retry": {
+          "version": "0.12.0",
+          "resolved": "https://mirrors.tencent.com/npm/retry/-/retry-0.12.0.tgz",
+          "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs="
+        },
+        "rimraf": {
+          "version": "2.7.1",
+          "resolved": "https://mirrors.tencent.com/npm/rimraf/-/rimraf-2.7.1.tgz",
+          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        },
+        "rxjs": {
+          "version": "6.6.7",
+          "resolved": "https://mirrors.tencent.com/npm/rxjs/-/rxjs-6.6.7.tgz",
+          "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
+          "requires": {
+            "tslib": "^1.9.0"
+          },
+          "dependencies": {
+            "tslib": {
+              "version": "1.14.1",
+              "resolved": "https://mirrors.tencent.com/npm/tslib/-/tslib-1.14.1.tgz",
+              "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+            }
+          }
+        },
+        "schema-utils": {
+          "version": "1.0.0",
+          "resolved": "https://mirrors.tencent.com/npm/schema-utils/-/schema-utils-1.0.0.tgz",
+          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        },
+        "shell-quote": {
+          "version": "1.7.2",
+          "resolved": "https://mirrors.tencent.com/npm/shell-quote/-/shell-quote-1.7.2.tgz",
+          "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg=="
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://mirrors.tencent.com/npm/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+        },
+        "string_decoder": {
+          "version": "1.1.1",
+          "resolved": "https://mirrors.tencent.com/npm/string_decoder/-/string_decoder-1.1.1.tgz",
+          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+          "requires": {
+            "safe-buffer": "~5.1.0"
+          }
+        },
+        "tapable": {
+          "version": "1.1.3",
+          "resolved": "https://mirrors.tencent.com/npm/tapable/-/tapable-1.1.3.tgz",
+          "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA=="
+        },
+        "terser": {
+          "version": "4.8.0",
+          "resolved": "https://mirrors.tencent.com/npm/terser/-/terser-4.8.0.tgz",
+          "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
+          "requires": {
+            "commander": "^2.20.0",
+            "source-map": "~0.6.1",
+            "source-map-support": "~0.5.12"
+          },
+          "dependencies": {
+            "commander": {
+              "version": "2.20.3",
+              "resolved": "https://mirrors.tencent.com/npm/commander/-/commander-2.20.3.tgz",
+              "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+            }
+          }
+        },
+        "to-regex-range": {
+          "version": "2.1.1",
+          "resolved": "https://mirrors.tencent.com/npm/to-regex-range/-/to-regex-range-2.1.1.tgz",
+          "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+          "requires": {
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1"
+          }
+        },
+        "wait-on": {
+          "version": "5.3.0",
+          "resolved": "https://mirrors.tencent.com/npm/wait-on/-/wait-on-5.3.0.tgz",
+          "integrity": "sha512-DwrHrnTK+/0QFaB9a8Ol5Lna3k7WvUR4jzSKmz0YaPBpuN2sACyiPVKVfj6ejnjcajAcvn3wlbTyMIn9AZouOg==",
+          "requires": {
+            "axios": "^0.21.1",
+            "joi": "^17.3.0",
+            "lodash": "^4.17.21",
+            "minimist": "^1.2.5",
+            "rxjs": "^6.6.3"
+          }
+        },
+        "webpack-dev-middleware": {
+          "version": "3.7.3",
+          "resolved": "https://mirrors.tencent.com/npm/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz",
+          "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==",
+          "requires": {
+            "memory-fs": "^0.4.1",
+            "mime": "^2.4.4",
+            "mkdirp": "^0.5.1",
+            "range-parser": "^1.2.1",
+            "webpack-log": "^2.0.0"
+          }
+        },
+        "webpack-dev-server": {
+          "version": "3.11.3",
+          "resolved": "https://mirrors.tencent.com/npm/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz",
+          "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==",
+          "requires": {
+            "ansi-html-community": "0.0.8",
+            "bonjour": "^3.5.0",
+            "chokidar": "^2.1.8",
+            "compression": "^1.7.4",
+            "connect-history-api-fallback": "^1.6.0",
+            "debug": "^4.1.1",
+            "del": "^4.1.1",
+            "express": "^4.17.1",
+            "html-entities": "^1.3.1",
+            "http-proxy-middleware": "0.19.1",
+            "import-local": "^2.0.0",
+            "internal-ip": "^4.3.0",
+            "ip": "^1.1.5",
+            "is-absolute-url": "^3.0.3",
+            "killable": "^1.0.1",
+            "loglevel": "^1.6.8",
+            "opn": "^5.5.0",
+            "p-retry": "^3.0.1",
+            "portfinder": "^1.0.26",
+            "schema-utils": "^1.0.0",
+            "selfsigned": "^1.10.8",
+            "semver": "^6.3.0",
+            "serve-index": "^1.9.1",
+            "sockjs": "^0.3.21",
+            "sockjs-client": "^1.5.0",
+            "spdy": "^4.0.2",
+            "strip-ansi": "^3.0.1",
+            "supports-color": "^6.1.0",
+            "url": "^0.11.0",
+            "webpack-dev-middleware": "^3.7.2",
+            "webpack-log": "^2.0.0",
+            "ws": "^6.2.1",
+            "yargs": "^13.3.2"
+          },
+          "dependencies": {
+            "ansi-regex": {
+              "version": "2.1.1",
+              "resolved": "https://mirrors.tencent.com/npm/ansi-regex/-/ansi-regex-2.1.1.tgz",
+              "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+            },
+            "array-union": {
+              "version": "1.0.2",
+              "resolved": "https://mirrors.tencent.com/npm/array-union/-/array-union-1.0.2.tgz",
+              "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+              "requires": {
+                "array-uniq": "^1.0.1"
+              }
+            },
+            "chokidar": {
+              "version": "2.1.8",
+              "resolved": "https://mirrors.tencent.com/npm/chokidar/-/chokidar-2.1.8.tgz",
+              "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+              "requires": {
+                "anymatch": "^2.0.0",
+                "async-each": "^1.0.1",
+                "braces": "^2.3.2",
+                "fsevents": "^1.2.7",
+                "glob-parent": "^3.1.0",
+                "inherits": "^2.0.3",
+                "is-binary-path": "^1.0.0",
+                "is-glob": "^4.0.0",
+                "normalize-path": "^3.0.0",
+                "path-is-absolute": "^1.0.0",
+                "readdirp": "^2.2.1",
+                "upath": "^1.1.1"
+              }
+            },
+            "debug": {
+              "version": "4.3.3",
+              "resolved": "https://mirrors.tencent.com/npm/debug/-/debug-4.3.3.tgz",
+              "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+              "requires": {
+                "ms": "2.1.2"
+              }
+            },
+            "del": {
+              "version": "4.1.1",
+              "resolved": "https://mirrors.tencent.com/npm/del/-/del-4.1.1.tgz",
+              "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==",
+              "requires": {
+                "@types/glob": "^7.1.1",
+                "globby": "^6.1.0",
+                "is-path-cwd": "^2.0.0",
+                "is-path-in-cwd": "^2.0.0",
+                "p-map": "^2.0.0",
+                "pify": "^4.0.1",
+                "rimraf": "^2.6.3"
+              }
+            },
+            "globby": {
+              "version": "6.1.0",
+              "resolved": "https://mirrors.tencent.com/npm/globby/-/globby-6.1.0.tgz",
+              "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+              "requires": {
+                "array-union": "^1.0.1",
+                "glob": "^7.0.3",
+                "object-assign": "^4.0.1",
+                "pify": "^2.0.0",
+                "pinkie-promise": "^2.0.0"
+              },
+              "dependencies": {
+                "pify": {
+                  "version": "2.3.0",
+                  "resolved": "https://mirrors.tencent.com/npm/pify/-/pify-2.3.0.tgz",
+                  "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
+                }
+              }
+            },
+            "ms": {
+              "version": "2.1.2",
+              "resolved": "https://mirrors.tencent.com/npm/ms/-/ms-2.1.2.tgz",
+              "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+            },
+            "semver": {
+              "version": "6.3.0",
+              "resolved": "https://mirrors.tencent.com/npm/semver/-/semver-6.3.0.tgz",
+              "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+            },
+            "strip-ansi": {
+              "version": "3.0.1",
+              "resolved": "https://mirrors.tencent.com/npm/strip-ansi/-/strip-ansi-3.0.1.tgz",
+              "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+              "requires": {
+                "ansi-regex": "^2.0.0"
+              }
+            },
+            "supports-color": {
+              "version": "6.1.0",
+              "resolved": "https://mirrors.tencent.com/npm/supports-color/-/supports-color-6.1.0.tgz",
+              "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+              "requires": {
+                "has-flag": "^3.0.0"
+              }
+            }
+          }
+        },
+        "ws": {
+          "version": "6.2.2",
+          "resolved": "https://mirrors.tencent.com/npm/ws/-/ws-6.2.2.tgz",
+          "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==",
+          "requires": {
+            "async-limiter": "~1.0.0"
+          }
+        }
+      }
+    },
+    "@docusaurus/preset-classic": {
+      "version": "2.0.0-beta.6",
+      "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2fpreset-classic/-/preset-classic-2.0.0-beta.6.tgz",
+      "integrity": "sha512-riqQRcNssNH7oto8nAjYIO79/ZucidexHTDlgD+trP56ploHLJp4kIlxb44IGOmx3es8/z4egWtM+acY/39N2Q==",
+      "requires": {
+        "@docusaurus/core": "2.0.0-beta.6",
+        "@docusaurus/plugin-content-blog": "2.0.0-beta.6",
+        "@docusaurus/plugin-content-docs": "2.0.0-beta.6",
+        "@docusaurus/plugin-content-pages": "2.0.0-beta.6",
+        "@docusaurus/plugin-debug": "2.0.0-beta.6",
+        "@docusaurus/plugin-google-analytics": "2.0.0-beta.6",
+        "@docusaurus/plugin-google-gtag": "2.0.0-beta.6",
+        "@docusaurus/plugin-sitemap": "2.0.0-beta.6",
+        "@docusaurus/theme-classic": "2.0.0-beta.6",
+        "@docusaurus/theme-search-algolia": "2.0.0-beta.6"
+      },
+      "dependencies": {
+        "@babel/code-frame": {
+          "version": "7.10.4",
+          "resolved": "https://mirrors.tencent.com/npm/@babel%2fcode-frame/-/code-frame-7.10.4.tgz",
+          "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
+          "requires": {
+            "@babel/highlight": "^7.10.4"
+          }
+        },
+        "@docusaurus/core": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2fcore/-/core-2.0.0-beta.6.tgz",
+          "integrity": "sha512-XMeI+lJKeJBGYBNOfO/Tc+5FMf21E5p1xZjfe75cgYcfZdERZ+W7aemXquwReno8xxHb4Rnfmi9dxkbOLDjqDA==",
+          "requires": {
+            "@babel/core": "^7.12.16",
+            "@babel/generator": "^7.12.15",
+            "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+            "@babel/plugin-transform-runtime": "^7.12.15",
+            "@babel/preset-env": "^7.12.16",
+            "@babel/preset-react": "^7.12.13",
+            "@babel/preset-typescript": "^7.12.16",
+            "@babel/runtime": "^7.12.5",
+            "@babel/runtime-corejs3": "^7.12.13",
+            "@babel/traverse": "^7.12.13",
+            "@docusaurus/cssnano-preset": "2.0.0-beta.6",
+            "@docusaurus/react-loadable": "5.5.0",
+            "@docusaurus/types": "2.0.0-beta.6",
+            "@docusaurus/utils": "2.0.0-beta.6",
+            "@docusaurus/utils-common": "2.0.0-beta.6",
+            "@docusaurus/utils-validation": "2.0.0-beta.6",
+            "@slorber/static-site-generator-webpack-plugin": "^4.0.0",
+            "@svgr/webpack": "^5.5.0",
+            "autoprefixer": "^10.2.5",
+            "babel-loader": "^8.2.2",
+            "babel-plugin-dynamic-import-node": "2.3.0",
+            "boxen": "^5.0.1",
+            "chalk": "^4.1.1",
+            "chokidar": "^3.5.1",
+            "clean-css": "^5.1.5",
+            "commander": "^5.1.0",
+            "copy-webpack-plugin": "^9.0.0",
+            "core-js": "^3.9.1",
+            "css-loader": "^5.1.1",
+            "css-minimizer-webpack-plugin": "^3.0.1",
+            "cssnano": "^5.0.4",
+            "del": "^6.0.0",
+            "detect-port": "^1.3.0",
+            "escape-html": "^1.0.3",
+            "eta": "^1.12.1",
+            "express": "^4.17.1",
+            "file-loader": "^6.2.0",
+            "fs-extra": "^10.0.0",
+            "github-slugger": "^1.3.0",
+            "globby": "^11.0.2",
+            "html-minifier-terser": "^5.1.1",
+            "html-tags": "^3.1.0",
+            "html-webpack-plugin": "^5.3.2",
+            "import-fresh": "^3.3.0",
+            "is-root": "^2.1.0",
+            "leven": "^3.1.0",
+            "lodash": "^4.17.20",
+            "mini-css-extract-plugin": "^1.6.0",
+            "module-alias": "^2.2.2",
+            "nprogress": "^0.2.0",
+            "postcss": "^8.2.15",
+            "postcss-loader": "^5.3.0",
+            "prompts": "^2.4.1",
+            "react-dev-utils": "^11.0.1",
+            "react-error-overlay": "^6.0.9",
+            "react-helmet": "^6.1.0",
+            "react-loadable": "^5.5.0",
+            "react-loadable-ssr-addon-v5-slorber": "^1.0.1",
+            "react-router": "^5.2.0",
+            "react-router-config": "^5.1.1",
+            "react-router-dom": "^5.2.0",
+            "remark-admonitions": "^1.2.1",
+            "resolve-pathname": "^3.0.0",
+            "rtl-detect": "^1.0.3",
+            "semver": "^7.3.4",
+            "serve-handler": "^6.1.3",
+            "shelljs": "^0.8.4",
+            "std-env": "^2.2.1",
+            "strip-ansi": "^6.0.0",
+            "terser-webpack-plugin": "^5.1.3",
+            "tslib": "^2.2.0",
+            "update-notifier": "^5.1.0",
+            "url-loader": "^4.1.1",
+            "wait-on": "^5.3.0",
+            "webpack": "^5.40.0",
+            "webpack-bundle-analyzer": "^4.4.2",
+            "webpack-dev-server": "^3.11.2",
+            "webpack-merge": "^5.8.0",
+            "webpackbar": "^5.0.0-3"
+          }
+        },
+        "@docusaurus/cssnano-preset": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2fcssnano-preset/-/cssnano-preset-2.0.0-beta.6.tgz",
+          "integrity": "sha512-RCizp2NAbADopkX5nUz1xrAbU6hGZzziQk9RdSDGJLzMgVCN6RDotq9odS8VgzNa9x2Lx3WN527UxeEbzc2GVQ==",
+          "requires": {
+            "cssnano-preset-advanced": "^5.1.1",
+            "postcss": "^8.2.15",
+            "postcss-sort-media-queries": "^3.10.11"
+          }
+        },
+        "@docusaurus/mdx-loader": {
+          "version": "2.0.0-beta.6",
+          "resolved": "https://mirrors.tencent.com/npm/@docusaurus%2fmdx-loader/-/mdx-loader-2.0.0-beta.6.tgz",
+          "integrity": "sha512-yO6N+OESR77WZ/pXz7muOJGLletYYksx7s7wrwrr0x+A8tzdSwiHZ9op0NyjjpW5AnItU/WQQfcjv37qv4K6HA==",
+          "requires": {
+            "@babel/parser": "^7.12.16",
+            "@babel/traverse": "^7.12.13",
+            "@docusaurus/core": "2.0.0-beta.6",
+            "@docusaurus/utils": "2.0.0-beta.6",
+            "@mdx-js/mdx": "^1.6.21",
+            "@mdx-js/react": "^1.6.21",
+            "chalk": "^4.1.1",
+            "escape-html": "^1.0.3",
+            "file-loader": "^6.2.0",
+            "fs-extra": "^10.0.0",
+            "github-slugger": "^1.3.0",
+            "gray-matter": "^4.0.3",
+            "mdast-util-to-string": "^2.0.0",
+            "remark-emoji": "^2.1.0",
... 13074 lines suppressed ...