Merge pull request #50 from apache/dependabot/npm_and_yarn/sharp-0.30.5

chore(deps-dev): bump sharp from 0.29.3 to 0.30.5
diff --git a/build/webpack.config.js b/build/webpack.config.js
index 0481145..1d0e355 100644
--- a/build/webpack.config.js
+++ b/build/webpack.config.js
@@ -46,7 +46,8 @@
               options: {
                 limit: 10000,
                 outputPath: '../asset',
-                name: '[name].[ext]'
+                name: '[name].[ext]',
+                esModule: false
               }
             }
           ]
diff --git a/package-lock.json b/package-lock.json
index 0985f51..9c4d438 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,15 +10,15 @@
       "dependencies": {
         "@lang/object-visualizer": "^4.2.0",
         "codesandbox": "^2.2.3",
-        "lodash": "^4.17.19",
+        "lodash": "^4.17.21",
         "lz-string": "^1.4.4",
-        "nanoid": "^3.1.31",
-        "prettier": "^2.3.2",
-        "resize-detector": "^0.2.2",
+        "nanoid": "^4.0.0",
+        "prettier": "^2.7.1",
+        "resize-detector": "^0.3.0",
         "scroll-into-view": "^1.14.2",
-        "semver": "^7.3.5",
-        "sucrase": "^3.17.0",
-        "vanilla-lazyload": "^12.5.1",
+        "semver": "^7.3.7",
+        "sucrase": "^3.24.0",
+        "vanilla-lazyload": "^17.8.3",
         "vue-i18n": "^8.18.2",
         "vue-scrollactive": "^0.9.3"
       },
@@ -39,7 +39,7 @@
         "echarts": "^5.2.0",
         "echarts-stat": "^1.2.0",
         "esbuild": "^0.8.34",
-        "file-loader": "^4.3.0",
+        "file-loader": "^6.2.0",
         "fs-extra": "^8.1.0",
         "globby": "^10.0.1",
         "gray-matter": "^4.0.2",
@@ -58,8 +58,9 @@
         "shelljs": "^0.8.4",
         "style-loader": "^2.0.0",
         "typescript": "^4.1.3",
+        "vue": "2.6.14",
         "vue-loader": "^15.9.6",
-        "vue-template-compiler": "^2.6.11",
+        "vue-template-compiler": "2.6.14",
         "webpack": "^5.11.1",
         "webpack-bundle-analyzer": "^4.3.0",
         "webpack-cli": "^4.3.1",
@@ -1412,6 +1413,64 @@
         "node": ">=12.16.1"
       }
     },
+    "node_modules/@jridgewell/gen-mapping": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
+      "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
+      "dev": true,
+      "dependencies": {
+        "@jridgewell/set-array": "^1.0.1",
+        "@jridgewell/sourcemap-codec": "^1.4.10",
+        "@jridgewell/trace-mapping": "^0.3.9"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/resolve-uri": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+      "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/set-array": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+      "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/source-map": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
+      "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
+      "dev": true,
+      "dependencies": {
+        "@jridgewell/gen-mapping": "^0.3.0",
+        "@jridgewell/trace-mapping": "^0.3.9"
+      }
+    },
+    "node_modules/@jridgewell/sourcemap-codec": {
+      "version": "1.4.14",
+      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+      "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
+      "dev": true
+    },
+    "node_modules/@jridgewell/trace-mapping": {
+      "version": "0.3.14",
+      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz",
+      "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==",
+      "dev": true,
+      "dependencies": {
+        "@jridgewell/resolve-uri": "^3.0.3",
+        "@jridgewell/sourcemap-codec": "^1.4.10"
+      }
+    },
     "node_modules/@lang/object-visualizer": {
       "version": "4.2.0",
       "resolved": "https://registry.npmjs.org/@lang/object-visualizer/-/object-visualizer-4.2.0.tgz",
@@ -1902,9 +1961,9 @@
       "dev": true
     },
     "node_modules/acorn": {
-      "version": "8.0.4",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.4.tgz",
-      "integrity": "sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ==",
+      "version": "8.7.1",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz",
+      "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==",
       "dev": true,
       "bin": {
         "acorn": "bin/acorn"
@@ -2086,7 +2145,7 @@
     "node_modules/archive-type": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz",
-      "integrity": "sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA=",
+      "integrity": "sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==",
       "dev": true,
       "dependencies": {
         "file-type": "^4.2.0"
@@ -2098,7 +2157,7 @@
     "node_modules/archive-type/node_modules/file-type": {
       "version": "4.4.0",
       "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz",
-      "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=",
+      "integrity": "sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ==",
       "dev": true,
       "engines": {
         "node": ">=4"
@@ -2123,15 +2182,6 @@
         "sprintf-js": "~1.0.2"
       }
     },
-    "node_modules/array-find-index": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npm.taobao.org/array-find-index/download/array-find-index-1.0.2.tgz",
-      "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/array-union": {
       "version": "2.1.0",
       "resolved": "https://registry.npm.taobao.org/array-union/download/array-union-2.1.0.tgz",
@@ -2525,9 +2575,9 @@
       }
     },
     "node_modules/bl": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz",
-      "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==",
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
+      "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",
       "dependencies": {
         "readable-stream": "^2.3.5",
         "safe-buffer": "^5.1.1"
@@ -2637,27 +2687,40 @@
       }
     },
     "node_modules/browserslist": {
-      "version": "4.14.0",
-      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.0.tgz",
-      "integrity": "sha512-pUsXKAF2lVwhmtpeA3LJrZ76jXuusrNyhduuQs7CDFf9foT4Y38aQOserd2lMe5DSSrjf3fx34oHwryuvxAUgQ==",
+      "version": "4.20.4",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.4.tgz",
+      "integrity": "sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw==",
       "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/browserslist"
+        }
+      ],
       "dependencies": {
-        "caniuse-lite": "^1.0.30001111",
-        "electron-to-chromium": "^1.3.523",
-        "escalade": "^3.0.2",
-        "node-releases": "^1.1.60"
+        "caniuse-lite": "^1.0.30001349",
+        "electron-to-chromium": "^1.4.147",
+        "escalade": "^3.1.1",
+        "node-releases": "^2.0.5",
+        "picocolors": "^1.0.0"
       },
       "bin": {
         "browserslist": "cli.js"
       },
       "engines": {
         "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
-      },
-      "funding": {
-        "type": "tidelift",
-        "url": "https://tidelift.com/funding/github/npm/browserslist"
       }
     },
+    "node_modules/browserslist/node_modules/picocolors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+      "dev": true
+    },
     "node_modules/buffer": {
       "version": "5.6.0",
       "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz",
@@ -2795,33 +2858,21 @@
         "node": ">=0.10.0"
       }
     },
-    "node_modules/camelcase-keys": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npm.taobao.org/camelcase-keys/download/camelcase-keys-2.1.0.tgz",
-      "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
-      "dev": true,
-      "dependencies": {
-        "camelcase": "^2.0.0",
-        "map-obj": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/camelcase-keys/node_modules/camelcase": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-2.1.1.tgz",
-      "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/caniuse-lite": {
-      "version": "1.0.30001113",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001113.tgz",
-      "integrity": "sha512-qMvjHiKH21zzM/VDZr6oosO6Ri3U0V2tC015jRXjOecwQCJtsU5zklTNTk31jQbIOP8gha0h1ccM/g0ECP+4BA==",
-      "dev": true
+      "version": "1.0.30001352",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001352.tgz",
+      "integrity": "sha512-GUgH8w6YergqPQDGWhJGt8GDRnY0L/iJVQcU3eJ46GYf52R8tk0Wxp0PymuFVZboJYXGiCqwozAYZNRjVj6IcA==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+        }
+      ]
     },
     "node_modules/capture-stack-trace": {
       "version": "1.0.1",
@@ -3222,9 +3273,9 @@
       }
     },
     "node_modules/concurrently/node_modules/ansi-regex": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-      "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+      "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
       "dev": true,
       "engines": {
         "node": ">=6"
@@ -3447,9 +3498,9 @@
       }
     },
     "node_modules/concurrently/node_modules/y18n": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
-      "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+      "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
       "dev": true
     },
     "node_modules/concurrently/node_modules/yargs": {
@@ -3531,12 +3582,6 @@
       "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==",
       "dev": true
     },
-    "node_modules/console-stream": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/console-stream/-/console-stream-0.1.1.tgz",
-      "integrity": "sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ=",
-      "dev": true
-    },
     "node_modules/consolidate": {
       "version": "0.15.1",
       "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz",
@@ -3767,18 +3812,6 @@
         "node": ">=4"
       }
     },
-    "node_modules/currently-unhandled": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npm.taobao.org/currently-unhandled/download/currently-unhandled-0.4.1.tgz",
-      "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
-      "dev": true,
-      "dependencies": {
-        "array-find-index": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/cwd": {
       "version": "0.9.1",
       "resolved": "https://registry.npmjs.org/cwd/-/cwd-0.9.1.tgz",
@@ -3791,15 +3824,14 @@
       }
     },
     "node_modules/cwebp-bin": {
-      "version": "6.1.1",
-      "resolved": "https://registry.npmjs.org/cwebp-bin/-/cwebp-bin-6.1.1.tgz",
-      "integrity": "sha512-NhtrQzmEuvUDS9gyWVTuBvBvp/rz0QCZpqmf8jYb/x2h29vBcaSaT2uer3lQBfP5nh2gVekgUT5UqRusXgvuaw==",
+      "version": "6.1.2",
+      "resolved": "https://registry.npmjs.org/cwebp-bin/-/cwebp-bin-6.1.2.tgz",
+      "integrity": "sha512-NLEZ/BVAl9g426hwUX/qrQ7b/EfQH7BS1tr+CzPo2EgDQbcdzmUVE+fIfsi64lsL638lWgzTEViMAL4pxV1GOg==",
       "dev": true,
       "hasInstallScript": true,
       "dependencies": {
         "bin-build": "^3.0.0",
-        "bin-wrapper": "^4.0.1",
-        "logalot": "^2.1.0"
+        "bin-wrapper": "^4.0.1"
       },
       "bin": {
         "cwebp": "cli.js"
@@ -3926,7 +3958,7 @@
     "node_modules/decompress-tar/node_modules/file-type": {
       "version": "5.2.0",
       "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
-      "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=",
+      "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==",
       "dev": true,
       "engines": {
         "node": ">=4"
@@ -3974,7 +4006,7 @@
     "node_modules/decompress-targz/node_modules/file-type": {
       "version": "5.2.0",
       "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
-      "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=",
+      "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==",
       "dev": true,
       "engines": {
         "node": ">=4"
@@ -3983,7 +4015,7 @@
     "node_modules/decompress-unzip": {
       "version": "4.0.1",
       "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz",
-      "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=",
+      "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==",
       "dev": true,
       "dependencies": {
         "file-type": "^3.8.0",
@@ -3998,7 +4030,7 @@
     "node_modules/decompress-unzip/node_modules/file-type": {
       "version": "3.9.0",
       "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz",
-      "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=",
+      "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==",
       "dev": true,
       "engines": {
         "node": ">=0.10.0"
@@ -4364,7 +4396,7 @@
     "node_modules/download/node_modules/file-type": {
       "version": "5.2.0",
       "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
-      "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=",
+      "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==",
       "dev": true,
       "engines": {
         "node": ">=4"
@@ -4423,13 +4455,13 @@
       }
     },
     "node_modules/echarts": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.2.0.tgz",
-      "integrity": "sha512-7CrCKGRjFdpLIJ/Yt1gpHeqs5PiCem2GHPdWZPwKl7WSYeZu0Qzm1bcCFe9/b4dfVaL1zlY4JmdzaVwKksVeqg==",
+      "version": "5.3.2",
+      "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.3.2.tgz",
+      "integrity": "sha512-LWCt7ohOKdJqyiBJ0OGBmE9szLdfA9sGcsMEi+GGoc6+Xo75C+BkcT/6NNGRHAWtnQl2fNow05AQjznpap28TQ==",
       "dev": true,
       "dependencies": {
         "tslib": "2.3.0",
-        "zrender": "5.2.0"
+        "zrender": "5.3.1"
       }
     },
     "node_modules/echarts-stat": {
@@ -4468,9 +4500,9 @@
       }
     },
     "node_modules/electron-to-chromium": {
-      "version": "1.3.528",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.528.tgz",
-      "integrity": "sha512-PEwLXeD679xF6+hYL32QBMzpyEr/H2v/K2v8N0ANkVvSrw2kblSgM7xmLYvzQTUy9d6V5SeV89lbwFqpatNqmw==",
+      "version": "1.4.152",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.152.tgz",
+      "integrity": "sha512-jk4Ju5SGZAQQJ1iI4Rgru7dDlvkQPLpNPWH9gIZmwCD4YteA5Bbk1xPcPDUf5jUYs3e1e80RXdi8XgKQZaigeg==",
       "dev": true
     },
     "node_modules/emojis-list": {
@@ -4610,9 +4642,9 @@
       }
     },
     "node_modules/escalade": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz",
-      "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==",
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+      "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
       "dev": true,
       "engines": {
         "node": ">=6"
@@ -4877,33 +4909,68 @@
         "pend": "~1.2.0"
       }
     },
-    "node_modules/figures": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
-      "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
-      "dev": true,
-      "dependencies": {
-        "escape-string-regexp": "^1.0.5",
-        "object-assign": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/file-loader": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz",
-      "integrity": "sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==",
+      "version": "6.2.0",
+      "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz",
+      "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==",
       "dev": true,
       "dependencies": {
-        "loader-utils": "^1.2.3",
-        "schema-utils": "^2.5.0"
+        "loader-utils": "^2.0.0",
+        "schema-utils": "^3.0.0"
       },
       "engines": {
-        "node": ">= 8.9.0"
+        "node": ">= 10.13.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
       },
       "peerDependencies": {
-        "webpack": "^4.0.0"
+        "webpack": "^4.0.0 || ^5.0.0"
+      }
+    },
+    "node_modules/file-loader/node_modules/json5": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
+      "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
+      "dev": true,
+      "bin": {
+        "json5": "lib/cli.js"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/file-loader/node_modules/loader-utils": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz",
+      "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==",
+      "dev": true,
+      "dependencies": {
+        "big.js": "^5.2.2",
+        "emojis-list": "^3.0.0",
+        "json5": "^2.1.2"
+      },
+      "engines": {
+        "node": ">=8.9.0"
+      }
+    },
+    "node_modules/file-loader/node_modules/schema-utils": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+      "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
+      "dev": true,
+      "dependencies": {
+        "@types/json-schema": "^7.0.8",
+        "ajv": "^6.12.5",
+        "ajv-keywords": "^3.5.2"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
       }
     },
     "node_modules/file-name": {
@@ -5154,15 +5221,6 @@
         "node": ">=4"
       }
     },
-    "node_modules/get-stdin": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npm.taobao.org/get-stdin/download/get-stdin-4.0.1.tgz",
-      "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/get-stream": {
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz",
@@ -5187,7 +5245,7 @@
     "node_modules/git-clone": {
       "version": "0.1.0",
       "resolved": "https://registry.npmjs.org/git-clone/-/git-clone-0.1.0.tgz",
-      "integrity": "sha1-DXYWN3gJOu9/HDAjjyqe8/B6Lrk=",
+      "integrity": "sha512-zs9rlfa7HyaJAKG9o+V7C6qfMzyc+tb1IIXdUFcOBcR1U7siKy/uPdauLlrH1mc0vOgUwIv4BF+QxPiiTYz3Rw==",
       "dev": true
     },
     "node_modules/git-config-path": {
@@ -5276,9 +5334,9 @@
       }
     },
     "node_modules/glob-parent": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-5.1.0.tgz",
-      "integrity": "sha1-X0wdHnSNMM1zrSlEs1d6gbCB6MI=",
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
       "dev": true,
       "dependencies": {
         "is-glob": "^4.0.1"
@@ -5436,18 +5494,6 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/has-ansi": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npm.taobao.org/has-ansi/download/has-ansi-2.0.0.tgz",
-      "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/has-flag": {
       "version": "3.0.0",
       "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz",
@@ -5522,9 +5568,9 @@
       }
     },
     "node_modules/hosted-git-info": {
-      "version": "2.8.5",
-      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz",
-      "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg=="
+      "version": "2.8.9",
+      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+      "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw=="
     },
     "node_modules/html-loader": {
       "version": "1.3.2",
@@ -5626,9 +5672,9 @@
       }
     },
     "node_modules/html-minifier-terser/node_modules/terser": {
-      "version": "4.8.0",
-      "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
-      "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
+      "version": "4.8.1",
+      "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz",
+      "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==",
       "dev": true,
       "dependencies": {
         "commander": "^2.20.0",
@@ -5859,18 +5905,6 @@
         "node": ">=0.8.19"
       }
     },
-    "node_modules/indent-string": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npm.taobao.org/indent-string/download/indent-string-2.1.0.tgz",
-      "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
-      "dev": true,
-      "dependencies": {
-        "repeating": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/indexes-of": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
@@ -5892,13 +5926,9 @@
       "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
     },
     "node_modules/ini": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
-      "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
-      "deprecated": "Please update to ini >=1.3.6 to avoid a prototype pollution issue",
-      "engines": {
-        "node": "*"
-      }
+      "version": "1.3.8",
+      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+      "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
     },
     "node_modules/inquirer": {
       "version": "6.5.2",
@@ -6121,18 +6151,6 @@
         "node": ">=0.10.0"
       }
     },
-    "node_modules/is-finite": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npm.taobao.org/is-finite/download/is-finite-1.0.2.tgz",
-      "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
-      "dev": true,
-      "dependencies": {
-        "number-is-nan": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/is-fullwidth-code-point": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
@@ -6433,7 +6451,7 @@
     "node_modules/latest-version": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
-      "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
+      "integrity": "sha512-Be1YRHWWlZaSsrz2U+VInk+tO0EwLIyV+23RhWLINJYwg/UIikxjlj3MhH37/6/EDCAusjajvMkMMUXRaMWl/w==",
       "dependencies": {
         "package-json": "^4.0.0"
       },
@@ -6542,9 +6560,9 @@
       }
     },
     "node_modules/lodash": {
-      "version": "4.17.19",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
-      "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ=="
+      "version": "4.17.21",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
     },
     "node_modules/log-symbols": {
       "version": "2.2.0",
@@ -6570,28 +6588,6 @@
         "node": ">=4"
       }
     },
-    "node_modules/logalot": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/logalot/-/logalot-2.1.0.tgz",
-      "integrity": "sha1-X46MkNME7fElMJUaVVSruMXj9VI=",
-      "dev": true,
-      "dependencies": {
-        "figures": "^1.3.5",
-        "squeak": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/longest": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
-      "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/loose-envify": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
@@ -6604,19 +6600,6 @@
         "loose-envify": "cli.js"
       }
     },
-    "node_modules/loud-rejection": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npm.taobao.org/loud-rejection/download/loud-rejection-1.6.0.tgz",
-      "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
-      "dev": true,
-      "dependencies": {
-        "currently-unhandled": "^0.4.1",
-        "signal-exit": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/lower-case": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
@@ -6640,24 +6623,6 @@
         "node": ">=0.10.0"
       }
     },
-    "node_modules/lpad-align": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/lpad-align/-/lpad-align-1.1.2.tgz",
-      "integrity": "sha1-IfYArBwwlcPG5JfuZyce4ISB/p4=",
-      "dev": true,
-      "dependencies": {
-        "get-stdin": "^4.0.1",
-        "indent-string": "^2.1.0",
-        "longest": "^1.0.0",
-        "meow": "^3.3.0"
-      },
-      "bin": {
-        "lpad-align": "cli.js"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/lru-cache": {
       "version": "4.1.5",
       "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz",
@@ -6797,15 +6762,6 @@
       "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
       "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
     },
-    "node_modules/map-obj": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npm.taobao.org/map-obj/download/map-obj-1.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmap-obj%2Fdownload%2Fmap-obj-1.0.1.tgz",
-      "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/marked": {
       "version": "0.3.19",
       "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz",
@@ -6818,27 +6774,6 @@
         "node": ">=0.10.0"
       }
     },
-    "node_modules/meow": {
-      "version": "3.7.0",
-      "resolved": "https://registry.npm.taobao.org/meow/download/meow-3.7.0.tgz",
-      "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
-      "dev": true,
-      "dependencies": {
-        "camelcase-keys": "^2.0.0",
-        "decamelize": "^1.1.2",
-        "loud-rejection": "^1.0.0",
-        "map-obj": "^1.0.1",
-        "minimist": "^1.1.3",
-        "normalize-package-data": "^2.3.4",
-        "object-assign": "^4.0.1",
-        "read-pkg-up": "^1.0.1",
-        "redent": "^1.0.0",
-        "trim-newlines": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/merge-source-map": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz",
@@ -7119,14 +7054,14 @@
       }
     },
     "node_modules/nanoid": {
-      "version": "3.1.31",
-      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.31.tgz",
-      "integrity": "sha512-ZivnJm0o9bb13p2Ot5CpgC2rQdzB9Uxm/mFZweqm5eMViqOJe3PV6LU2E30SiLgheesmcPrjquqraoolONSA0A==",
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.0.tgz",
+      "integrity": "sha512-IgBP8piMxe/gf73RTQx7hmnhwz0aaEXYakvqZyE302IXW3HyVNhdNGC+O2MwMAVhLEnvXlvKtGbtJf6wvHihCg==",
       "bin": {
-        "nanoid": "bin/nanoid.cjs"
+        "nanoid": "bin/nanoid.js"
       },
       "engines": {
-        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+        "node": "^14 || ^16 || >=18"
       }
     },
     "node_modules/napi-build-utils": {
@@ -7223,9 +7158,9 @@
       }
     },
     "node_modules/node-releases": {
-      "version": "1.1.60",
-      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.60.tgz",
-      "integrity": "sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA==",
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz",
+      "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==",
       "dev": true
     },
     "node_modules/node-static": {
@@ -7503,7 +7438,7 @@
     "node_modules/optimist/node_modules/minimist": {
       "version": "0.0.10",
       "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
-      "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
+      "integrity": "sha512-iotkTvxc+TwOm5Ieim8VnSNvCDjCK9S8G3scJ50ZthspSxa7jx50jkhYduuAtAjvfDUwSgOwf8+If99AlOEhyw==",
       "dev": true
     },
     "node_modules/ora": {
@@ -7710,7 +7645,7 @@
     "node_modules/package-json": {
       "version": "4.0.1",
       "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz",
-      "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=",
+      "integrity": "sha512-q/R5GrMek0vzgoomq6rm9OX+3PQve8sLwTirmK30YB3Cu0Bbt9OX9M/SIUnroN5BGJkzwGsFwDaRGD9EwBOlCA==",
       "dependencies": {
         "got": "^6.7.1",
         "registry-auth-token": "^3.0.1",
@@ -7732,7 +7667,7 @@
     "node_modules/package-json/node_modules/got": {
       "version": "6.7.1",
       "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
-      "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
+      "integrity": "sha512-Y/K3EDuiQN9rTZhBvPRWMLXIKdeD1Rj0nzunfoi0Yyn5WBEbzxXKU9Ub2X41oZBagVWOBU3MuDonFMgPWQFnwg==",
       "dependencies": {
         "create-error-class": "^3.0.0",
         "duplexer3": "^0.1.4",
@@ -7924,9 +7859,9 @@
       }
     },
     "node_modules/path-parse": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
-      "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
     },
     "node_modules/path-type": {
       "version": "1.1.0",
@@ -8215,14 +8150,17 @@
       }
     },
     "node_modules/prettier": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz",
-      "integrity": "sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==",
+      "version": "2.7.1",
+      "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz",
+      "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==",
       "bin": {
         "prettier": "bin-prettier.js"
       },
       "engines": {
         "node": ">=10.13.0"
+      },
+      "funding": {
+        "url": "https://github.com/prettier/prettier?sponsor=1"
       }
     },
     "node_modules/process-nextick-args": {
@@ -8476,19 +8414,6 @@
         "node": ">= 0.10"
       }
     },
-    "node_modules/redent": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npm.taobao.org/redent/download/redent-1.0.0.tgz",
-      "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
-      "dev": true,
-      "dependencies": {
-        "indent-string": "^2.1.0",
-        "strip-indent": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/regenerate": {
       "version": "1.4.1",
       "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz",
@@ -8606,18 +8531,6 @@
         "node": ">= 0.8.0"
       }
     },
-    "node_modules/repeating": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npm.taobao.org/repeating/download/repeating-2.0.1.tgz",
-      "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
-      "dev": true,
-      "dependencies": {
-        "is-finite": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/require-directory": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -8634,9 +8547,9 @@
       "dev": true
     },
     "node_modules/resize-detector": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/resize-detector/-/resize-detector-0.2.2.tgz",
-      "integrity": "sha512-X07ADfFqXoyfbx4/PSzr7EBF9e/RwrcS9UoPBMbau11agg5uad39ysMmXFCu0o5C3hhKbs0X/cSl85OwPIpZLQ=="
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/resize-detector/-/resize-detector-0.3.0.tgz",
+      "integrity": "sha512-R/tCuvuOHQ8o2boRP6vgx8hXCCy87H1eY9V5imBYeVNyNVpuL9ciReSccLj2gDcax9+2weXy3bc8Vv+NRXeEvQ=="
     },
     "node_modules/resolve": {
       "version": "1.14.1",
@@ -9022,9 +8935,9 @@
       }
     },
     "node_modules/shelljs": {
-      "version": "0.8.4",
-      "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz",
-      "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==",
+      "version": "0.8.5",
+      "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
+      "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
       "dev": true,
       "dependencies": {
         "glob": "^7.0.0",
@@ -9271,9 +9184,9 @@
       }
     },
     "node_modules/source-map-support": {
-      "version": "0.5.19",
-      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
-      "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
+      "version": "0.5.21",
+      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+      "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
       "dev": true,
       "dependencies": {
         "buffer-from": "^1.0.0",
@@ -9320,54 +9233,6 @@
       "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
       "dev": true
     },
-    "node_modules/squeak": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/squeak/-/squeak-1.3.0.tgz",
-      "integrity": "sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM=",
-      "dev": true,
-      "dependencies": {
-        "chalk": "^1.0.0",
-        "console-stream": "^0.1.1",
-        "lpad-align": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/squeak/node_modules/ansi-styles": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
-      "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/squeak/node_modules/chalk": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-      "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
-      "dev": true,
-      "dependencies": {
-        "ansi-styles": "^2.2.1",
-        "escape-string-regexp": "^1.0.2",
-        "has-ansi": "^2.0.0",
-        "strip-ansi": "^3.0.0",
-        "supports-color": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/squeak/node_modules/supports-color": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
-      "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.8.0"
-      }
-    },
     "node_modules/ssri": {
       "version": "4.1.6",
       "resolved": "https://registry.npmjs.org/ssri/-/ssri-4.1.6.tgz",
@@ -9480,21 +9345,6 @@
         "node": ">=6"
       }
     },
-    "node_modules/strip-indent": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npm.taobao.org/strip-indent/download/strip-indent-1.0.1.tgz",
-      "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
-      "dev": true,
-      "dependencies": {
-        "get-stdin": "^4.0.1"
-      },
-      "bin": {
-        "strip-indent": "cli.js"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/strip-json-comments": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
@@ -9583,9 +9433,9 @@
       }
     },
     "node_modules/sucrase": {
-      "version": "3.17.0",
-      "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.17.0.tgz",
-      "integrity": "sha512-wtiqaokYRjFSSrv8fQu7pThKTIZSLwiffW+PHQG52hlI8eJO47v1tXbKt6fYb8Z1kCyuCkNH9etpTUebb7g+pA==",
+      "version": "3.24.0",
+      "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.24.0.tgz",
+      "integrity": "sha512-SevqflhW356TKEyWjFHg2e5f3eH+5rzmsMJxrVMDvZIEHh/goYrpzDGA6APEj4ME9MdGm8oNgIzi1eF3c3dDQA==",
       "dependencies": {
         "commander": "^4.0.0",
         "glob": "7.1.6",
@@ -9734,14 +9584,15 @@
       }
     },
     "node_modules/terser": {
-      "version": "5.5.1",
-      "resolved": "https://registry.npmjs.org/terser/-/terser-5.5.1.tgz",
-      "integrity": "sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==",
+      "version": "5.14.2",
+      "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
+      "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
       "dev": true,
       "dependencies": {
+        "@jridgewell/source-map": "^0.3.2",
+        "acorn": "^8.5.0",
         "commander": "^2.20.0",
-        "source-map": "~0.7.2",
-        "source-map-support": "~0.5.19"
+        "source-map-support": "~0.5.20"
       },
       "bin": {
         "terser": "bin/terser"
@@ -9807,15 +9658,6 @@
         "url": "https://opencollective.com/webpack"
       }
     },
-    "node_modules/terser/node_modules/source-map": {
-      "version": "0.7.3",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
-      "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
-      "dev": true,
-      "engines": {
-        "node": ">= 8"
-      }
-    },
     "node_modules/textextensions": {
       "version": "2.6.0",
       "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-2.6.0.tgz",
@@ -9929,15 +9771,6 @@
         "tree-kill": "cli.js"
       }
     },
-    "node_modules/trim-newlines": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npm.taobao.org/trim-newlines/download/trim-newlines-1.0.0.tgz",
-      "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/trim-repeated": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
@@ -10213,9 +10046,18 @@
       }
     },
     "node_modules/vanilla-lazyload": {
-      "version": "12.5.1",
-      "resolved": "https://registry.npmjs.org/vanilla-lazyload/-/vanilla-lazyload-12.5.1.tgz",
-      "integrity": "sha512-gB986dXslHqkbYMDnwfIlKHl++lLADAEZhI6FNZy7gtVddR+1N69xkOI2vRAJssr6QzmKPCfZu4btEHWjG0pNA=="
+      "version": "17.8.3",
+      "resolved": "https://registry.npmjs.org/vanilla-lazyload/-/vanilla-lazyload-17.8.3.tgz",
+      "integrity": "sha512-0eYjhkSkfP/JCDIzVpmgnh9I3XKAA8/i/6FpRrH8qjcC+nHv5mYZ6DQZUIGU16TqJei23hHl0J/Zuv/zmCC2Zw==",
+      "funding": {
+        "type": "individual",
+        "url": "https://ko-fi.com/verlok"
+      }
+    },
+    "node_modules/vue": {
+      "version": "2.6.14",
+      "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz",
+      "integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ=="
     },
     "node_modules/vue-hot-reload-api": {
       "version": "2.3.4",
@@ -10272,9 +10114,9 @@
       }
     },
     "node_modules/vue-template-compiler": {
-      "version": "2.6.11",
-      "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.11.tgz",
-      "integrity": "sha512-KIq15bvQDrcCjpGjrAhx4mUlyyHfdmTaoNfeoATHLAiWB+MU3cx4lOzMwrnUh9cCxy0Lt1T11hAFY6TQgroUAA==",
+      "version": "2.6.14",
+      "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz",
+      "integrity": "sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==",
       "dev": true,
       "dependencies": {
         "de-indent": "^1.0.2",
@@ -10443,12 +10285,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/webpack-bundle-analyzer/node_modules/lodash": {
-      "version": "4.17.20",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
-      "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",
-      "dev": true
-    },
     "node_modules/webpack-bundle-analyzer/node_modules/supports-color": {
       "version": "7.2.0",
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -10607,50 +10443,6 @@
         "source-map": "~0.6.1"
       }
     },
-    "node_modules/webpack/node_modules/browserslist": {
-      "version": "4.16.1",
-      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.1.tgz",
-      "integrity": "sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA==",
-      "dev": true,
-      "dependencies": {
-        "caniuse-lite": "^1.0.30001173",
-        "colorette": "^1.2.1",
-        "electron-to-chromium": "^1.3.634",
-        "escalade": "^3.1.1",
-        "node-releases": "^1.1.69"
-      },
-      "bin": {
-        "browserslist": "cli.js"
-      },
-      "engines": {
-        "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/browserslist"
-      }
-    },
-    "node_modules/webpack/node_modules/caniuse-lite": {
-      "version": "1.0.30001173",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001173.tgz",
-      "integrity": "sha512-R3aqmjrICdGCTAnSXtNyvWYMK3YtV5jwudbq0T7nN9k4kmE4CBuwPqyJ+KBzepSTh0huivV2gLbSMEzTTmfeYw==",
-      "dev": true
-    },
-    "node_modules/webpack/node_modules/electron-to-chromium": {
-      "version": "1.3.634",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.634.tgz",
-      "integrity": "sha512-QPrWNYeE/A0xRvl/QP3E0nkaEvYUvH3gM04ZWYtIa6QlSpEetRlRI1xvQ7hiMIySHHEV+mwDSX8Kj4YZY6ZQAw==",
-      "dev": true
-    },
-    "node_modules/webpack/node_modules/escalade": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
-      "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
     "node_modules/webpack/node_modules/find-up": {
       "version": "5.0.0",
       "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
@@ -10673,12 +10465,6 @@
       "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
       "dev": true
     },
-    "node_modules/webpack/node_modules/node-releases": {
-      "version": "1.1.69",
-      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.69.tgz",
-      "integrity": "sha512-DGIjo79VDEyAnRlfSqYTsy+yoHd2IOjJiKUozD2MV2D85Vso6Bug56mb9tT/fY5Urt0iqk01H7x+llAruDR2zA==",
-      "dev": true
-    },
     "node_modules/webpack/node_modules/path-exists": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -10855,9 +10641,9 @@
       }
     },
     "node_modules/ws": {
-      "version": "7.4.2",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.2.tgz",
-      "integrity": "sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA==",
+      "version": "7.5.8",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz",
+      "integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==",
       "dev": true,
       "engines": {
         "node": ">=8.3.0"
@@ -10892,9 +10678,9 @@
       }
     },
     "node_modules/y18n": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
-      "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE="
+      "version": "3.2.2",
+      "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
+      "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ=="
     },
     "node_modules/yallist": {
       "version": "2.1.2",
@@ -10904,7 +10690,7 @@
     "node_modules/yargs": {
       "version": "6.6.0",
       "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz",
-      "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=",
+      "integrity": "sha512-6/QWTdisjnu5UHUzQGst+UOEuEVwIzFVGBjq3jMTFNs5WJQsH/X6nMURSaScIdF5txylr1Ao9bvbWiKi2yXbwA==",
       "dev": true,
       "dependencies": {
         "camelcase": "^3.0.0",
@@ -10925,7 +10711,7 @@
     "node_modules/yargs-parser": {
       "version": "4.2.1",
       "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz",
-      "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=",
+      "integrity": "sha512-+QQWqC2xeL0N5/TE+TY6OGEqyNRM+g2/r712PDNYgiCdXYCApXf1vzfmDSLBxfGRwV+moTq/V8FnMI24JCm2Yg==",
       "dev": true,
       "dependencies": {
         "camelcase": "^3.0.0"
@@ -10954,9 +10740,9 @@
       }
     },
     "node_modules/zrender": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.2.0.tgz",
-      "integrity": "sha512-87v3gvB0lcWy48ObA/DwrhQ95ADMMRhECVrXmHDFCBNvbxHFfEDZtrZh4VmVjLAeFAjimY4PyZ65rbLCivdszA==",
+      "version": "5.3.1",
+      "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.3.1.tgz",
+      "integrity": "sha512-7olqIjy0gWfznKr6vgfnGBk7y4UtdMvdwFmK92vVQsQeDPyzkHW1OlrLEKg6GHz1W5ePf0FeN1q2vkl/HFqhXw==",
       "dev": true,
       "dependencies": {
         "tslib": "2.3.0"
@@ -12093,6 +11879,55 @@
         "resolve-url": "^0.2.1"
       }
     },
+    "@jridgewell/gen-mapping": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
+      "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
+      "dev": true,
+      "requires": {
+        "@jridgewell/set-array": "^1.0.1",
+        "@jridgewell/sourcemap-codec": "^1.4.10",
+        "@jridgewell/trace-mapping": "^0.3.9"
+      }
+    },
+    "@jridgewell/resolve-uri": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+      "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
+      "dev": true
+    },
+    "@jridgewell/set-array": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+      "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+      "dev": true
+    },
+    "@jridgewell/source-map": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
+      "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
+      "dev": true,
+      "requires": {
+        "@jridgewell/gen-mapping": "^0.3.0",
+        "@jridgewell/trace-mapping": "^0.3.9"
+      }
+    },
+    "@jridgewell/sourcemap-codec": {
+      "version": "1.4.14",
+      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+      "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
+      "dev": true
+    },
+    "@jridgewell/trace-mapping": {
+      "version": "0.3.14",
+      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz",
+      "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==",
+      "dev": true,
+      "requires": {
+        "@jridgewell/resolve-uri": "^3.0.3",
+        "@jridgewell/sourcemap-codec": "^1.4.10"
+      }
+    },
     "@lang/object-visualizer": {
       "version": "4.2.0",
       "resolved": "https://registry.npmjs.org/@lang/object-visualizer/-/object-visualizer-4.2.0.tgz",
@@ -12512,9 +12347,9 @@
       "dev": true
     },
     "acorn": {
-      "version": "8.0.4",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.4.tgz",
-      "integrity": "sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ==",
+      "version": "8.7.1",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz",
+      "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==",
       "dev": true
     },
     "acorn-walk": {
@@ -12639,7 +12474,7 @@
     "archive-type": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz",
-      "integrity": "sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA=",
+      "integrity": "sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==",
       "dev": true,
       "requires": {
         "file-type": "^4.2.0"
@@ -12648,7 +12483,7 @@
         "file-type": {
           "version": "4.4.0",
           "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz",
-          "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=",
+          "integrity": "sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ==",
           "dev": true
         }
       }
@@ -12672,12 +12507,6 @@
         "sprintf-js": "~1.0.2"
       }
     },
-    "array-find-index": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npm.taobao.org/array-find-index/download/array-find-index-1.0.2.tgz",
-      "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
-      "dev": true
-    },
     "array-union": {
       "version": "2.1.0",
       "resolved": "https://registry.npm.taobao.org/array-union/download/array-union-2.1.0.tgz",
@@ -12993,9 +12822,9 @@
       "integrity": "sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg=="
     },
     "bl": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz",
-      "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==",
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
+      "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",
       "requires": {
         "readable-stream": "^2.3.5",
         "safe-buffer": "^5.1.1"
@@ -13083,15 +12912,24 @@
       }
     },
     "browserslist": {
-      "version": "4.14.0",
-      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.0.tgz",
-      "integrity": "sha512-pUsXKAF2lVwhmtpeA3LJrZ76jXuusrNyhduuQs7CDFf9foT4Y38aQOserd2lMe5DSSrjf3fx34oHwryuvxAUgQ==",
+      "version": "4.20.4",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.4.tgz",
+      "integrity": "sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw==",
       "dev": true,
       "requires": {
-        "caniuse-lite": "^1.0.30001111",
-        "electron-to-chromium": "^1.3.523",
-        "escalade": "^3.0.2",
-        "node-releases": "^1.1.60"
+        "caniuse-lite": "^1.0.30001349",
+        "electron-to-chromium": "^1.4.147",
+        "escalade": "^3.1.1",
+        "node-releases": "^2.0.5",
+        "picocolors": "^1.0.0"
+      },
+      "dependencies": {
+        "picocolors": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+          "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+          "dev": true
+        }
       }
     },
     "buffer": {
@@ -13222,28 +13060,10 @@
       "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
       "dev": true
     },
-    "camelcase-keys": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npm.taobao.org/camelcase-keys/download/camelcase-keys-2.1.0.tgz",
-      "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
-      "dev": true,
-      "requires": {
-        "camelcase": "^2.0.0",
-        "map-obj": "^1.0.0"
-      },
-      "dependencies": {
-        "camelcase": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-2.1.1.tgz",
-          "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
-          "dev": true
-        }
-      }
-    },
     "caniuse-lite": {
-      "version": "1.0.30001113",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001113.tgz",
-      "integrity": "sha512-qMvjHiKH21zzM/VDZr6oosO6Ri3U0V2tC015jRXjOecwQCJtsU5zklTNTk31jQbIOP8gha0h1ccM/g0ECP+4BA==",
+      "version": "1.0.30001352",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001352.tgz",
+      "integrity": "sha512-GUgH8w6YergqPQDGWhJGt8GDRnY0L/iJVQcU3eJ46GYf52R8tk0Wxp0PymuFVZboJYXGiCqwozAYZNRjVj6IcA==",
       "dev": true
     },
     "capture-stack-trace": {
@@ -13585,9 +13405,9 @@
       },
       "dependencies": {
         "ansi-regex": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+          "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
           "dev": true
         },
         "camelcase": {
@@ -13761,9 +13581,9 @@
           }
         },
         "y18n": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
-          "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
+          "version": "4.0.3",
+          "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+          "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
           "dev": true
         },
         "yargs": {
@@ -13840,12 +13660,6 @@
       "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==",
       "dev": true
     },
-    "console-stream": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/console-stream/-/console-stream-0.1.1.tgz",
-      "integrity": "sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ=",
-      "dev": true
-    },
     "consolidate": {
       "version": "0.15.1",
       "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz",
@@ -14022,15 +13836,6 @@
       "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
       "dev": true
     },
-    "currently-unhandled": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npm.taobao.org/currently-unhandled/download/currently-unhandled-0.4.1.tgz",
-      "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
-      "dev": true,
-      "requires": {
-        "array-find-index": "^1.0.1"
-      }
-    },
     "cwd": {
       "version": "0.9.1",
       "resolved": "https://registry.npmjs.org/cwd/-/cwd-0.9.1.tgz",
@@ -14040,14 +13845,13 @@
       }
     },
     "cwebp-bin": {
-      "version": "6.1.1",
-      "resolved": "https://registry.npmjs.org/cwebp-bin/-/cwebp-bin-6.1.1.tgz",
-      "integrity": "sha512-NhtrQzmEuvUDS9gyWVTuBvBvp/rz0QCZpqmf8jYb/x2h29vBcaSaT2uer3lQBfP5nh2gVekgUT5UqRusXgvuaw==",
+      "version": "6.1.2",
+      "resolved": "https://registry.npmjs.org/cwebp-bin/-/cwebp-bin-6.1.2.tgz",
+      "integrity": "sha512-NLEZ/BVAl9g426hwUX/qrQ7b/EfQH7BS1tr+CzPo2EgDQbcdzmUVE+fIfsi64lsL638lWgzTEViMAL4pxV1GOg==",
       "dev": true,
       "requires": {
         "bin-build": "^3.0.0",
-        "bin-wrapper": "^4.0.1",
-        "logalot": "^2.1.0"
+        "bin-wrapper": "^4.0.1"
       }
     },
     "cyclist": {
@@ -14161,7 +13965,7 @@
         "file-type": {
           "version": "5.2.0",
           "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
-          "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=",
+          "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==",
           "dev": true
         }
       }
@@ -14201,7 +14005,7 @@
         "file-type": {
           "version": "5.2.0",
           "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
-          "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=",
+          "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==",
           "dev": true
         }
       }
@@ -14209,7 +14013,7 @@
     "decompress-unzip": {
       "version": "4.0.1",
       "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz",
-      "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=",
+      "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==",
       "dev": true,
       "requires": {
         "file-type": "^3.8.0",
@@ -14221,7 +14025,7 @@
         "file-type": {
           "version": "3.9.0",
           "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz",
-          "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=",
+          "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==",
           "dev": true
         }
       }
@@ -14376,7 +14180,7 @@
         "file-type": {
           "version": "5.2.0",
           "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
-          "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=",
+          "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==",
           "dev": true
         },
         "get-stream": {
@@ -14543,13 +14347,13 @@
       }
     },
     "echarts": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.2.0.tgz",
-      "integrity": "sha512-7CrCKGRjFdpLIJ/Yt1gpHeqs5PiCem2GHPdWZPwKl7WSYeZu0Qzm1bcCFe9/b4dfVaL1zlY4JmdzaVwKksVeqg==",
+      "version": "5.3.2",
+      "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.3.2.tgz",
+      "integrity": "sha512-LWCt7ohOKdJqyiBJ0OGBmE9szLdfA9sGcsMEi+GGoc6+Xo75C+BkcT/6NNGRHAWtnQl2fNow05AQjznpap28TQ==",
       "dev": true,
       "requires": {
         "tslib": "2.3.0",
-        "zrender": "5.2.0"
+        "zrender": "5.3.1"
       },
       "dependencies": {
         "tslib": {
@@ -14583,9 +14387,9 @@
       }
     },
     "electron-to-chromium": {
-      "version": "1.3.528",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.528.tgz",
-      "integrity": "sha512-PEwLXeD679xF6+hYL32QBMzpyEr/H2v/K2v8N0ANkVvSrw2kblSgM7xmLYvzQTUy9d6V5SeV89lbwFqpatNqmw==",
+      "version": "1.4.152",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.152.tgz",
+      "integrity": "sha512-jk4Ju5SGZAQQJ1iI4Rgru7dDlvkQPLpNPWH9gIZmwCD4YteA5Bbk1xPcPDUf5jUYs3e1e80RXdi8XgKQZaigeg==",
       "dev": true
     },
     "emojis-list": {
@@ -14698,9 +14502,9 @@
       "dev": true
     },
     "escalade": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz",
-      "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==",
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+      "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
       "dev": true
     },
     "escape-string-regexp": {
@@ -14905,24 +14709,44 @@
         "pend": "~1.2.0"
       }
     },
-    "figures": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
-      "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
-      "dev": true,
-      "requires": {
-        "escape-string-regexp": "^1.0.5",
-        "object-assign": "^4.1.0"
-      }
-    },
     "file-loader": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz",
-      "integrity": "sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==",
+      "version": "6.2.0",
+      "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz",
+      "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==",
       "dev": true,
       "requires": {
-        "loader-utils": "^1.2.3",
-        "schema-utils": "^2.5.0"
+        "loader-utils": "^2.0.0",
+        "schema-utils": "^3.0.0"
+      },
+      "dependencies": {
+        "json5": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
+          "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
+          "dev": true
+        },
+        "loader-utils": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz",
+          "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^2.1.2"
+          }
+        },
+        "schema-utils": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
+          "dev": true,
+          "requires": {
+            "@types/json-schema": "^7.0.8",
+            "ajv": "^6.12.5",
+            "ajv-keywords": "^3.5.2"
+          }
+        }
       }
     },
     "file-name": {
@@ -15125,12 +14949,6 @@
         "npm-conf": "^1.1.0"
       }
     },
-    "get-stdin": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npm.taobao.org/get-stdin/download/get-stdin-4.0.1.tgz",
-      "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
-      "dev": true
-    },
     "get-stream": {
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz",
@@ -15149,7 +14967,7 @@
     "git-clone": {
       "version": "0.1.0",
       "resolved": "https://registry.npmjs.org/git-clone/-/git-clone-0.1.0.tgz",
-      "integrity": "sha1-DXYWN3gJOu9/HDAjjyqe8/B6Lrk=",
+      "integrity": "sha512-zs9rlfa7HyaJAKG9o+V7C6qfMzyc+tb1IIXdUFcOBcR1U7siKy/uPdauLlrH1mc0vOgUwIv4BF+QxPiiTYz3Rw==",
       "dev": true
     },
     "git-config-path": {
@@ -15219,9 +15037,9 @@
       }
     },
     "glob-parent": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-5.1.0.tgz",
-      "integrity": "sha1-X0wdHnSNMM1zrSlEs1d6gbCB6MI=",
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
       "dev": true,
       "requires": {
         "is-glob": "^4.0.1"
@@ -15347,15 +15165,6 @@
         "duplexer": "^0.1.2"
       }
     },
-    "has-ansi": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npm.taobao.org/has-ansi/download/has-ansi-2.0.0.tgz",
-      "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
-      "dev": true,
-      "requires": {
-        "ansi-regex": "^2.0.0"
-      }
-    },
     "has-flag": {
       "version": "3.0.0",
       "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz",
@@ -15409,9 +15218,9 @@
       }
     },
     "hosted-git-info": {
-      "version": "2.8.5",
-      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz",
-      "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg=="
+      "version": "2.8.9",
+      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+      "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw=="
     },
     "html-loader": {
       "version": "1.3.2",
@@ -15480,9 +15289,9 @@
           "dev": true
         },
         "terser": {
-          "version": "4.8.0",
-          "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
-          "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
+          "version": "4.8.1",
+          "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz",
+          "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==",
           "dev": true,
           "requires": {
             "commander": "^2.20.0",
@@ -15662,15 +15471,6 @@
       "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
       "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
     },
-    "indent-string": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npm.taobao.org/indent-string/download/indent-string-2.1.0.tgz",
-      "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
-      "dev": true,
-      "requires": {
-        "repeating": "^2.0.0"
-      }
-    },
     "indexes-of": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
@@ -15692,9 +15492,9 @@
       "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
     },
     "ini": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
-      "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
+      "version": "1.3.8",
+      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+      "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
     },
     "inquirer": {
       "version": "6.5.2",
@@ -15850,15 +15650,6 @@
       "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
       "dev": true
     },
-    "is-finite": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npm.taobao.org/is-finite/download/is-finite-1.0.2.tgz",
-      "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
-      "dev": true,
-      "requires": {
-        "number-is-nan": "^1.0.0"
-      }
-    },
     "is-fullwidth-code-point": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
@@ -16092,7 +15883,7 @@
     "latest-version": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
-      "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
+      "integrity": "sha512-Be1YRHWWlZaSsrz2U+VInk+tO0EwLIyV+23RhWLINJYwg/UIikxjlj3MhH37/6/EDCAusjajvMkMMUXRaMWl/w==",
       "requires": {
         "package-json": "^4.0.0"
       }
@@ -16171,9 +15962,9 @@
       }
     },
     "lodash": {
-      "version": "4.17.19",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
-      "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ=="
+      "version": "4.17.21",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
     },
     "log-symbols": {
       "version": "2.2.0",
@@ -16195,22 +15986,6 @@
         }
       }
     },
-    "logalot": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/logalot/-/logalot-2.1.0.tgz",
-      "integrity": "sha1-X46MkNME7fElMJUaVVSruMXj9VI=",
-      "dev": true,
-      "requires": {
-        "figures": "^1.3.5",
-        "squeak": "^1.0.0"
-      }
-    },
-    "longest": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
-      "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
-      "dev": true
-    },
     "loose-envify": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
@@ -16220,16 +15995,6 @@
         "js-tokens": "^3.0.0 || ^4.0.0"
       }
     },
-    "loud-rejection": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npm.taobao.org/loud-rejection/download/loud-rejection-1.6.0.tgz",
-      "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
-      "dev": true,
-      "requires": {
-        "currently-unhandled": "^0.4.1",
-        "signal-exit": "^3.0.0"
-      }
-    },
     "lower-case": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
@@ -16252,18 +16017,6 @@
       "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
       "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA=="
     },
-    "lpad-align": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/lpad-align/-/lpad-align-1.1.2.tgz",
-      "integrity": "sha1-IfYArBwwlcPG5JfuZyce4ISB/p4=",
-      "dev": true,
-      "requires": {
-        "get-stdin": "^4.0.1",
-        "indent-string": "^2.1.0",
-        "longest": "^1.0.0",
-        "meow": "^3.3.0"
-      }
-    },
     "lru-cache": {
       "version": "4.1.5",
       "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz",
@@ -16391,36 +16144,12 @@
         }
       }
     },
-    "map-obj": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npm.taobao.org/map-obj/download/map-obj-1.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmap-obj%2Fdownload%2Fmap-obj-1.0.1.tgz",
-      "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
-      "dev": true
-    },
     "marked": {
       "version": "0.3.19",
       "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz",
       "integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==",
       "dev": true
     },
-    "meow": {
-      "version": "3.7.0",
-      "resolved": "https://registry.npm.taobao.org/meow/download/meow-3.7.0.tgz",
-      "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
-      "dev": true,
-      "requires": {
-        "camelcase-keys": "^2.0.0",
-        "decamelize": "^1.1.2",
-        "loud-rejection": "^1.0.0",
-        "map-obj": "^1.0.1",
-        "minimist": "^1.1.3",
-        "normalize-package-data": "^2.3.4",
-        "object-assign": "^4.0.1",
-        "read-pkg-up": "^1.0.1",
-        "redent": "^1.0.0",
-        "trim-newlines": "^1.0.0"
-      }
-    },
     "merge-source-map": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz",
@@ -16641,9 +16370,9 @@
       }
     },
     "nanoid": {
-      "version": "3.1.31",
-      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.31.tgz",
-      "integrity": "sha512-ZivnJm0o9bb13p2Ot5CpgC2rQdzB9Uxm/mFZweqm5eMViqOJe3PV6LU2E30SiLgheesmcPrjquqraoolONSA0A=="
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.0.tgz",
+      "integrity": "sha512-IgBP8piMxe/gf73RTQx7hmnhwz0aaEXYakvqZyE302IXW3HyVNhdNGC+O2MwMAVhLEnvXlvKtGbtJf6wvHihCg=="
     },
     "napi-build-utils": {
       "version": "1.0.2",
@@ -16721,9 +16450,9 @@
       "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA="
     },
     "node-releases": {
-      "version": "1.1.60",
-      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.60.tgz",
-      "integrity": "sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA==",
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz",
+      "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==",
       "dev": true
     },
     "node-static": {
@@ -16947,7 +16676,7 @@
         "minimist": {
           "version": "0.0.10",
           "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
-          "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
+          "integrity": "sha512-iotkTvxc+TwOm5Ieim8VnSNvCDjCK9S8G3scJ50ZthspSxa7jx50jkhYduuAtAjvfDUwSgOwf8+If99AlOEhyw==",
           "dev": true
         }
       }
@@ -17100,7 +16829,7 @@
     "package-json": {
       "version": "4.0.1",
       "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz",
-      "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=",
+      "integrity": "sha512-q/R5GrMek0vzgoomq6rm9OX+3PQve8sLwTirmK30YB3Cu0Bbt9OX9M/SIUnroN5BGJkzwGsFwDaRGD9EwBOlCA==",
       "requires": {
         "got": "^6.7.1",
         "registry-auth-token": "^3.0.1",
@@ -17116,7 +16845,7 @@
         "got": {
           "version": "6.7.1",
           "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
-          "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
+          "integrity": "sha512-Y/K3EDuiQN9rTZhBvPRWMLXIKdeD1Rj0nzunfoi0Yyn5WBEbzxXKU9Ub2X41oZBagVWOBU3MuDonFMgPWQFnwg==",
           "requires": {
             "create-error-class": "^3.0.0",
             "duplexer3": "^0.1.4",
@@ -17289,9 +17018,9 @@
       "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
     },
     "path-parse": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
-      "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
     },
     "path-type": {
       "version": "1.1.0",
@@ -17516,9 +17245,9 @@
       "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw="
     },
     "prettier": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz",
-      "integrity": "sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ=="
+      "version": "2.7.1",
+      "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz",
+      "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g=="
     },
     "process-nextick-args": {
       "version": "2.0.1",
@@ -17724,16 +17453,6 @@
         "resolve": "^1.9.0"
       }
     },
-    "redent": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npm.taobao.org/redent/download/redent-1.0.0.tgz",
-      "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
-      "dev": true,
-      "requires": {
-        "indent-string": "^2.1.0",
-        "strip-indent": "^1.0.1"
-      }
-    },
     "regenerate": {
       "version": "1.4.1",
       "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz",
@@ -17832,15 +17551,6 @@
         "parse-git-config": "^1.1.1"
       }
     },
-    "repeating": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npm.taobao.org/repeating/download/repeating-2.0.1.tgz",
-      "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
-      "dev": true,
-      "requires": {
-        "is-finite": "^1.0.0"
-      }
-    },
     "require-directory": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -17854,9 +17564,9 @@
       "dev": true
     },
     "resize-detector": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/resize-detector/-/resize-detector-0.2.2.tgz",
-      "integrity": "sha512-X07ADfFqXoyfbx4/PSzr7EBF9e/RwrcS9UoPBMbau11agg5uad39ysMmXFCu0o5C3hhKbs0X/cSl85OwPIpZLQ=="
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/resize-detector/-/resize-detector-0.3.0.tgz",
+      "integrity": "sha512-R/tCuvuOHQ8o2boRP6vgx8hXCCy87H1eY9V5imBYeVNyNVpuL9ciReSccLj2gDcax9+2weXy3bc8Vv+NRXeEvQ=="
     },
     "resolve": {
       "version": "1.14.1",
@@ -18157,9 +17867,9 @@
       "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
     },
     "shelljs": {
-      "version": "0.8.4",
-      "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz",
-      "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==",
+      "version": "0.8.5",
+      "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
+      "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
       "dev": true,
       "requires": {
         "glob": "^7.0.0",
@@ -18334,9 +18044,9 @@
       "dev": true
     },
     "source-map-support": {
-      "version": "0.5.19",
-      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
-      "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
+      "version": "0.5.21",
+      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+      "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
       "dev": true,
       "requires": {
         "buffer-from": "^1.0.0",
@@ -18383,44 +18093,6 @@
       "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
       "dev": true
     },
-    "squeak": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/squeak/-/squeak-1.3.0.tgz",
-      "integrity": "sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM=",
-      "dev": true,
-      "requires": {
-        "chalk": "^1.0.0",
-        "console-stream": "^0.1.1",
-        "lpad-align": "^1.0.1"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "2.2.1",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
-          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
-          "dev": true
-        },
-        "chalk": {
-          "version": "1.1.3",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^2.2.1",
-            "escape-string-regexp": "^1.0.2",
-            "has-ansi": "^2.0.0",
-            "strip-ansi": "^3.0.0",
-            "supports-color": "^2.0.0"
-          }
-        },
-        "supports-color": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
-          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
-          "dev": true
-        }
-      }
-    },
     "ssri": {
       "version": "4.1.6",
       "resolved": "https://registry.npmjs.org/ssri/-/ssri-4.1.6.tgz",
@@ -18512,15 +18184,6 @@
       "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
       "dev": true
     },
-    "strip-indent": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npm.taobao.org/strip-indent/download/strip-indent-1.0.1.tgz",
-      "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
-      "dev": true,
-      "requires": {
-        "get-stdin": "^4.0.1"
-      }
-    },
     "strip-json-comments": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
@@ -18579,9 +18242,9 @@
       }
     },
     "sucrase": {
-      "version": "3.17.0",
-      "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.17.0.tgz",
-      "integrity": "sha512-wtiqaokYRjFSSrv8fQu7pThKTIZSLwiffW+PHQG52hlI8eJO47v1tXbKt6fYb8Z1kCyuCkNH9etpTUebb7g+pA==",
+      "version": "3.24.0",
+      "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.24.0.tgz",
+      "integrity": "sha512-SevqflhW356TKEyWjFHg2e5f3eH+5rzmsMJxrVMDvZIEHh/goYrpzDGA6APEj4ME9MdGm8oNgIzi1eF3c3dDQA==",
       "requires": {
         "commander": "^4.0.0",
         "glob": "7.1.6",
@@ -18700,22 +18363,15 @@
       }
     },
     "terser": {
-      "version": "5.5.1",
-      "resolved": "https://registry.npmjs.org/terser/-/terser-5.5.1.tgz",
-      "integrity": "sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==",
+      "version": "5.14.2",
+      "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
+      "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
       "dev": true,
       "requires": {
+        "@jridgewell/source-map": "^0.3.2",
+        "acorn": "^8.5.0",
         "commander": "^2.20.0",
-        "source-map": "~0.7.2",
-        "source-map-support": "~0.5.19"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.7.3",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
-          "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
-          "dev": true
-        }
+        "source-map-support": "~0.5.20"
       }
     },
     "terser-webpack-plugin": {
@@ -18840,12 +18496,6 @@
       "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
       "dev": true
     },
-    "trim-newlines": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npm.taobao.org/trim-newlines/download/trim-newlines-1.0.0.tgz",
-      "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
-      "dev": true
-    },
     "trim-repeated": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
@@ -19064,9 +18714,14 @@
       }
     },
     "vanilla-lazyload": {
-      "version": "12.5.1",
-      "resolved": "https://registry.npmjs.org/vanilla-lazyload/-/vanilla-lazyload-12.5.1.tgz",
-      "integrity": "sha512-gB986dXslHqkbYMDnwfIlKHl++lLADAEZhI6FNZy7gtVddR+1N69xkOI2vRAJssr6QzmKPCfZu4btEHWjG0pNA=="
+      "version": "17.8.3",
+      "resolved": "https://registry.npmjs.org/vanilla-lazyload/-/vanilla-lazyload-17.8.3.tgz",
+      "integrity": "sha512-0eYjhkSkfP/JCDIzVpmgnh9I3XKAA8/i/6FpRrH8qjcC+nHv5mYZ6DQZUIGU16TqJei23hHl0J/Zuv/zmCC2Zw=="
+    },
+    "vue": {
+      "version": "2.6.14",
+      "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz",
+      "integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ=="
     },
     "vue-hot-reload-api": {
       "version": "2.3.4",
@@ -19111,9 +18766,9 @@
       }
     },
     "vue-template-compiler": {
-      "version": "2.6.11",
-      "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.11.tgz",
-      "integrity": "sha512-KIq15bvQDrcCjpGjrAhx4mUlyyHfdmTaoNfeoATHLAiWB+MU3cx4lOzMwrnUh9cCxy0Lt1T11hAFY6TQgroUAA==",
+      "version": "2.6.14",
+      "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz",
+      "integrity": "sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==",
       "dev": true,
       "requires": {
         "de-indent": "^1.0.2",
@@ -19174,37 +18829,6 @@
         "webpack-sources": "^2.1.1"
       },
       "dependencies": {
-        "browserslist": {
-          "version": "4.16.1",
-          "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.1.tgz",
-          "integrity": "sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA==",
-          "dev": true,
-          "requires": {
-            "caniuse-lite": "^1.0.30001173",
-            "colorette": "^1.2.1",
-            "electron-to-chromium": "^1.3.634",
-            "escalade": "^3.1.1",
-            "node-releases": "^1.1.69"
-          }
-        },
-        "caniuse-lite": {
-          "version": "1.0.30001173",
-          "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001173.tgz",
-          "integrity": "sha512-R3aqmjrICdGCTAnSXtNyvWYMK3YtV5jwudbq0T7nN9k4kmE4CBuwPqyJ+KBzepSTh0huivV2gLbSMEzTTmfeYw==",
-          "dev": true
-        },
-        "electron-to-chromium": {
-          "version": "1.3.634",
-          "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.634.tgz",
-          "integrity": "sha512-QPrWNYeE/A0xRvl/QP3E0nkaEvYUvH3gM04ZWYtIa6QlSpEetRlRI1xvQ7hiMIySHHEV+mwDSX8Kj4YZY6ZQAw==",
-          "dev": true
-        },
-        "escalade": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
-          "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
-          "dev": true
-        },
         "find-up": {
           "version": "5.0.0",
           "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
@@ -19221,12 +18845,6 @@
           "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
           "dev": true
         },
-        "node-releases": {
-          "version": "1.1.69",
-          "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.69.tgz",
-          "integrity": "sha512-DGIjo79VDEyAnRlfSqYTsy+yoHd2IOjJiKUozD2MV2D85Vso6Bug56mb9tT/fY5Urt0iqk01H7x+llAruDR2zA==",
-          "dev": true
-        },
         "path-exists": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -19328,12 +18946,6 @@
           "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
           "dev": true
         },
-        "lodash": {
-          "version": "4.17.20",
-          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
-          "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",
-          "dev": true
-        },
         "supports-color": {
           "version": "7.2.0",
           "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -19545,9 +19157,9 @@
       }
     },
     "ws": {
-      "version": "7.4.2",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.2.tgz",
-      "integrity": "sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA==",
+      "version": "7.5.8",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz",
+      "integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==",
       "dev": true,
       "requires": {}
     },
@@ -19562,9 +19174,9 @@
       "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
     },
     "y18n": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
-      "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE="
+      "version": "3.2.2",
+      "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
+      "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ=="
     },
     "yallist": {
       "version": "2.1.2",
@@ -19574,7 +19186,7 @@
     "yargs": {
       "version": "6.6.0",
       "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz",
-      "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=",
+      "integrity": "sha512-6/QWTdisjnu5UHUzQGst+UOEuEVwIzFVGBjq3jMTFNs5WJQsH/X6nMURSaScIdF5txylr1Ao9bvbWiKi2yXbwA==",
       "dev": true,
       "requires": {
         "camelcase": "^3.0.0",
@@ -19595,7 +19207,7 @@
     "yargs-parser": {
       "version": "4.2.1",
       "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz",
-      "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=",
+      "integrity": "sha512-+QQWqC2xeL0N5/TE+TY6OGEqyNRM+g2/r712PDNYgiCdXYCApXf1vzfmDSLBxfGRwV+moTq/V8FnMI24JCm2Yg==",
       "dev": true,
       "requires": {
         "camelcase": "^3.0.0"
@@ -19618,9 +19230,9 @@
       "dev": true
     },
     "zrender": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.2.0.tgz",
-      "integrity": "sha512-87v3gvB0lcWy48ObA/DwrhQ95ADMMRhECVrXmHDFCBNvbxHFfEDZtrZh4VmVjLAeFAjimY4PyZ65rbLCivdszA==",
+      "version": "5.3.1",
+      "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.3.1.tgz",
+      "integrity": "sha512-7olqIjy0gWfznKr6vgfnGBk7y4UtdMvdwFmK92vVQsQeDPyzkHW1OlrLEKg6GHz1W5ePf0FeN1q2vkl/HFqhXw==",
       "dev": true,
       "requires": {
         "tslib": "2.3.0"
diff --git a/package.json b/package.json
index 2562a1a..1101cd3 100644
--- a/package.json
+++ b/package.json
@@ -34,7 +34,7 @@
     "echarts": "^5.2.0",
     "echarts-stat": "^1.2.0",
     "esbuild": "^0.8.34",
-    "file-loader": "^4.3.0",
+    "file-loader": "^6.2.0",
     "fs-extra": "^8.1.0",
     "globby": "^10.0.1",
     "gray-matter": "^4.0.2",
@@ -53,8 +53,9 @@
     "shelljs": "^0.8.4",
     "style-loader": "^2.0.0",
     "typescript": "^4.1.3",
+    "vue": "2.6.14",
     "vue-loader": "^15.9.6",
-    "vue-template-compiler": "^2.6.11",
+    "vue-template-compiler": "2.6.14",
     "webpack": "^5.11.1",
     "webpack-bundle-analyzer": "^4.3.0",
     "webpack-cli": "^4.3.1",
@@ -63,15 +64,15 @@
   "dependencies": {
     "@lang/object-visualizer": "^4.2.0",
     "codesandbox": "^2.2.3",
-    "lodash": "^4.17.19",
+    "lodash": "^4.17.21",
     "lz-string": "^1.4.4",
-    "nanoid": "^3.1.31",
-    "prettier": "^2.3.2",
-    "resize-detector": "^0.2.2",
+    "nanoid": "^4.0.0",
+    "prettier": "^2.7.1",
+    "resize-detector": "^0.3.0",
     "scroll-into-view": "^1.14.2",
-    "semver": "^7.3.5",
-    "sucrase": "^3.17.0",
-    "vanilla-lazyload": "^12.5.1",
+    "semver": "^7.3.7",
+    "sucrase": "^3.24.0",
+    "vanilla-lazyload": "^17.8.3",
     "vue-i18n": "^8.18.2",
     "vue-scrollactive": "^0.9.3"
   }
diff --git a/public/examples/ts/bar-polar-label-radial.ts b/public/examples/ts/bar-polar-label-radial.ts
index c42a96e..fe04671 100644
--- a/public/examples/ts/bar-polar-label-radial.ts
+++ b/public/examples/ts/bar-polar-label-radial.ts
@@ -33,7 +33,6 @@
       formatter: '{b}: {c}'
     }
   },
-  backgroundColor: '#fff',
   animation: false
 };
 
diff --git a/public/examples/ts/map-china-dataRange.js b/public/examples/ts/map-china-dataRange.js
deleted file mode 100644
index 8866111..0000000
--- a/public/examples/ts/map-china-dataRange.js
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
-title: Sales of iphone
-category: map
-titleCN: iphone销量
-*/
-
-function randomData() {
-  return Math.round(Math.random() * 1000);
-}
-
-option = {
-  title: {
-    text: 'iphone销量',
-    subtext: '纯属虚构',
-    left: 'center'
-  },
-  tooltip: {
-    trigger: 'item'
-  },
-  legend: {
-    orient: 'vertical',
-    left: 'left',
-    data: ['iphone3', 'iphone4', 'iphone5']
-  },
-  visualMap: {
-    min: 0,
-    max: 2500,
-    left: 'left',
-    top: 'bottom',
-    text: ['高', '低'], // 文本,默认为数值文本
-    calculable: true
-  },
-  toolbox: {
-    show: true,
-    orient: 'vertical',
-    left: 'right',
-    top: 'center',
-    feature: {
-      dataView: { readOnly: false },
-      restore: {},
-      saveAsImage: {}
-    }
-  },
-  series: [
-    {
-      name: 'iphone3',
-      type: 'map',
-      mapType: 'china',
-      roam: false,
-      label: {
-        show: true
-      },
-      data: [
-        { name: '北京', value: randomData() },
-        { name: '天津', value: randomData() },
-        { name: '上海', value: randomData() },
-        { name: '重庆', value: randomData() },
-        { name: '河北', value: randomData() },
-        { name: '河南', value: randomData() },
-        { name: '云南', value: randomData() },
-        { name: '辽宁', value: randomData() },
-        { name: '黑龙江', value: randomData() },
-        { name: '湖南', value: randomData() },
-        { name: '安徽', value: randomData() },
-        { name: '山东', value: randomData() },
-        { name: '新疆', value: randomData() },
-        { name: '江苏', value: randomData() },
-        { name: '浙江', value: randomData() },
-        { name: '江西', value: randomData() },
-        { name: '湖北', value: randomData() },
-        { name: '广西', value: randomData() },
-        { name: '甘肃', value: randomData() },
-        { name: '山西', value: randomData() },
-        { name: '内蒙古', value: randomData() },
-        { name: '陕西', value: randomData() },
-        { name: '吉林', value: randomData() },
-        { name: '福建', value: randomData() },
-        { name: '贵州', value: randomData() },
-        { name: '广东', value: randomData() },
-        { name: '青海', value: randomData() },
-        { name: '西藏', value: randomData() },
-        { name: '四川', value: randomData() },
-        { name: '宁夏', value: randomData() },
-        { name: '海南', value: randomData() },
-        { name: '台湾', value: randomData() },
-        { name: '香港', value: randomData() },
-        { name: '澳门', value: randomData() }
-      ]
-    },
-    {
-      name: 'iphone4',
-      type: 'map',
-      mapType: 'china',
-      label: {
-        show: true
-      },
-      data: [
-        { name: '北京', value: randomData() },
-        { name: '天津', value: randomData() },
-        { name: '上海', value: randomData() },
-        { name: '重庆', value: randomData() },
-        { name: '河北', value: randomData() },
-        { name: '安徽', value: randomData() },
-        { name: '新疆', value: randomData() },
-        { name: '浙江', value: randomData() },
-        { name: '江西', value: randomData() },
-        { name: '山西', value: randomData() },
-        { name: '内蒙古', value: randomData() },
-        { name: '吉林', value: randomData() },
-        { name: '福建', value: randomData() },
-        { name: '广东', value: randomData() },
-        { name: '西藏', value: randomData() },
-        { name: '四川', value: randomData() },
-        { name: '宁夏', value: randomData() },
-        { name: '香港', value: randomData() },
-        { name: '澳门', value: randomData() }
-      ]
-    },
-    {
-      name: 'iphone5',
-      type: 'map',
-      mapType: 'china',
-      label: {
-        show: true
-      },
-      data: [
-        { name: '北京', value: randomData() },
-        { name: '天津', value: randomData() },
-        { name: '上海', value: randomData() },
-        { name: '广东', value: randomData() },
-        { name: '台湾', value: randomData() },
-        { name: '香港', value: randomData() },
-        { name: '澳门', value: randomData() }
-      ]
-    }
-  ]
-};
diff --git a/public/examples/ts/map-china.js b/public/examples/ts/map-china.js
deleted file mode 100644
index 91b0b7a..0000000
--- a/public/examples/ts/map-china.js
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
-title: Map China
-category: map
-titleCN: Map China
-*/
-
-option = {
-  tooltip: {
-    trigger: 'item',
-    formatter: '{b}'
-  },
-  series: [
-    {
-      name: '中国',
-      type: 'map',
-      mapType: 'china',
-      selectedMode: 'multiple',
-      label: {
-        show: true
-      },
-      data: [{ name: '广东', selected: true }]
-    }
-  ]
-};
diff --git a/public/examples/ts/map-labels.js b/public/examples/ts/map-labels.js
deleted file mode 100644
index f1f5146..0000000
--- a/public/examples/ts/map-labels.js
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
-title: Rich Text Labels on Map
-category: map
-titleCN: 地图上的富文本标签
-*/
-
-var weatherIcons = {
-  up: ROOT_PATH + '/data/asset/img/arrow-up.png',
-  down: ROOT_PATH + '/data/asset/img/arrow-down.png'
-};
-
-option = {
-  title: {
-    text: 'Precipitation',
-    subtext: '纯属虚构',
-    left: 'center'
-  },
-  tooltip: {
-    trigger: 'item'
-  },
-  visualMap: {
-    min: 0,
-    max: 1000,
-    left: 'left',
-    top: 'bottom',
-    text: ['高', '低'],
-    calculable: true
-  },
-  toolbox: {
-    show: true,
-    orient: 'vertical',
-    left: 'right',
-    top: 'center',
-    feature: {
-      dataView: { readOnly: false },
-      saveAsImage: {}
-    }
-  },
-  animation: true,
-  animationDurationUpdate: 1000,
-  animationEasingUpdate: 'cubicInOut',
-  series: [
-    {
-      name: 'a',
-      type: 'map',
-      mapType: 'china',
-      roam: true,
-      label: {
-        show: true,
-        formatter: function (params) {
-          if (!params.data) {
-            return;
-          }
-          var icon = params.data.value[1] ? 'up' : 'down';
-          var valueType = params.data.value[1] ? 'valueUp' : 'valueDown';
-          return (
-            params.name +
-            ':{' +
-            valueType +
-            '|' +
-            params.value +
-            '} {' +
-            icon +
-            '|}'
-          );
-        },
-        position: 'inside',
-        backgroundColor: '#fff',
-        padding: [4, 5],
-        borderRadius: 3,
-        borderWidth: 1,
-        borderColor: 'rgba(0,0,0,0.5)',
-        color: '#777',
-        rich: {
-          valueUp: {
-            color: '#019D2D',
-            fontSize: 14
-          },
-          valueDown: {
-            color: 'red',
-            fontSize: 14
-          },
-          up: {
-            height: 14,
-            align: 'center',
-            backgroundColor: {
-              image: weatherIcons.up
-            }
-          },
-          down: {
-            height: 14,
-            align: 'center',
-            backgroundColor: {
-              image: weatherIcons.down
-            }
-          }
-        }
-      },
-      data: [
-        { name: '北京', value: randomData() },
-        { name: '天津', value: randomData() },
-        { name: '上海', value: randomData() },
-        { name: '重庆', value: randomData() },
-        { name: '河北', value: randomData() },
-        { name: '河南', value: randomData() },
-        { name: '云南', value: randomData() },
-        { name: '辽宁', value: randomData() },
-        { name: '黑龙江', value: randomData() },
-        { name: '湖南', value: randomData() },
-        { name: '安徽', value: randomData() },
-        { name: '山东', value: randomData() },
-        { name: '新疆', value: randomData() },
-        { name: '江苏', value: randomData() },
-        { name: '浙江', value: randomData() },
-        { name: '江西', value: randomData() },
-        { name: '湖北', value: randomData() },
-        { name: '广西', value: randomData() },
-        { name: '甘肃', value: randomData() },
-        { name: '山西', value: randomData() },
-        { name: '内蒙古', value: randomData() },
-        { name: '陕西', value: randomData() },
-        { name: '吉林', value: randomData() },
-        { name: '福建', value: randomData() },
-        { name: '贵州', value: randomData() },
-        { name: '广东', value: randomData() },
-        { name: '青海', value: randomData() },
-        { name: '西藏', value: randomData() },
-        { name: '四川', value: randomData() },
-        { name: '宁夏', value: randomData() },
-        { name: '海南', value: randomData() },
-        { name: '台湾', value: randomData() },
-        { name: '香港', value: randomData() },
-        { name: '澳门', value: randomData() }
-      ]
-    }
-  ]
-};
-
-function randomData() {
-  return [Math.round(Math.random() * 1000), Math.random() > 0.6];
-}
-
-setTimeout(function () {
-  myChart.on('mouseup', function (params) {
-    if (!down) {
-      return;
-    }
-    down = false;
-
-    var e = params.event;
-
-    var geoCoord = myChart.convertFromPixel('series', [e.offsetX, e.offsetY]);
-
-    myChart.setOption({
-      series: [
-        {
-          center: geoCoord,
-          zoom: 4,
-          animationDurationUpdate: 1000,
-          animationEasingUpdate: 'cubicInOut'
-        }
-      ]
-    });
-  });
-
-  var down;
-  myChart.on('mousedown', function () {
-    down = true;
-  });
-  myChart.on('mousemove', function () {
-    down = false;
-  });
-}, 0);
diff --git a/public/examples/ts/map-locate.js b/public/examples/ts/map-locate.js
deleted file mode 100644
index f9ed9ae..0000000
--- a/public/examples/ts/map-locate.js
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-title: Map Locate
-category: map
-titleCN: Map Locate
-*/
-
-var locations = [
-  {
-    name: '上海',
-    coord: [121.472644, 31.231706]
-  },
-  {
-    name: '北京',
-    coord: [116.405285, 39.904989]
-  },
-  {
-    name: '广东',
-    coord: [113.280637, 23.839463714285714]
-  }
-];
-option = {
-  tooltip: {
-    trigger: 'item',
-    formatter: '{b}'
-  },
-  series: [
-    {
-      name: '中国',
-      type: 'map',
-      mapType: 'china',
-      selectedMode: 'multiple',
-      label: {
-        show: true
-      }
-    }
-  ]
-};
-
-var currentLoc = 0;
-setInterval(function () {
-  myChart.setOption({
-    series: [
-      {
-        center: locations[currentLoc].coord,
-        zoom: 4,
-        data: [
-          {
-            name: locations[currentLoc].name,
-            selected: true
-          }
-        ],
-        animationDurationUpdate: 1000,
-        animationEasingUpdate: 'cubicInOut'
-      }
-    ]
-  });
-  currentLoc = (currentLoc + 1) % locations.length;
-}, 2000);
diff --git a/public/examples/ts/map-projection-globe.ts b/public/examples/ts/map-projection-globe.ts
deleted file mode 100644
index 12f062e..0000000
--- a/public/examples/ts/map-projection-globe.ts
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
-title: Map with Orthographic Projection
-category: map
-titleCN: 正交投影地图
-*/
-
-myChart.showLoading();
-
-let projection: any;
-
-$.when(
-  $.get(ROOT_PATH + '/data/asset/geo/world.json'),
-  $.getScript('https://fastly.jsdelivr.net/npm/d3-array'),
-  $.getScript('https://fastly.jsdelivr.net/npm/d3-geo')
-).done(function (res) {
-  myChart.hideLoading();
-  // Add graticule
-  const graticuleLineStrings = [];
-  for (let lat = -80; lat <= 80; lat += 10) {
-    graticuleLineStrings.push(createLineString([-180, lat], [180, lat]));
-  }
-  for (let lng = -180; lng <= 180; lng += 10) {
-    graticuleLineStrings.push(createLineString([lng, -80], [lng, 80]));
-  }
-
-  res[0].features.unshift({
-    geometry: {
-      type: 'MultiLineString',
-      coordinates: graticuleLineStrings
-    },
-    properties: {
-      name: 'graticule'
-    }
-  });
-
-  echarts.registerMap('world', res[0]);
-
-  projection = d3.geoOrthographic();
-
-  option = {
-    geo: {
-      map: 'world',
-
-      projection: {
-        project: (pt) => projection(pt),
-        unproject: (pt) => projection.invert(pt),
-        stream: projection.stream
-      },
-
-      itemStyle: {
-        borderColor: '#333',
-        borderWidth: 1,
-        borderJoin: 'round',
-        color: '#000'
-      },
-
-      emphasis: {
-        label: {
-          show: false
-        },
-
-        itemStyle: {
-          color: 'skyblue'
-        }
-      },
-
-      regions: [
-        {
-          name: 'graticule',
-          itemStyle: {
-            borderColor: '#bbb'
-          },
-          emphasis: {
-            disabled: true
-          }
-        }
-      ]
-    }
-  };
-
-  myChart.setOption(option);
-});
-
-app.config = {
-  rotateX: 0,
-  rotateY: 0,
-
-  onChange() {
-    projection && projection.rotate([app.config.rotateX, app.config.rotateY]);
-    myChart.setOption({
-      geo: {}
-    });
-  }
-};
-
-app.configParameters = {
-  rotateX: {
-    min: -180,
-    max: 180
-  },
-  rotateY: {
-    min: -80,
-    max: 80
-  }
-};
-
-function createLineString(start: number[], end: number[]) {
-  const dx = end[0] - start[0];
-  const dy = end[1] - start[1];
-  const segs = 50;
-  const stepX = dx / segs;
-  const stepY = dy / segs;
-  const points = [];
-  // TODO needs adaptive sampling on the -180 / 180 of azimuthal projections.
-  for (let i = 0; i <= segs; i++) {
-    points.push([start[0] + i * stepX, start[1] + i * stepY]);
-  }
-  return points;
-}
diff --git a/public/examples/ts/map-province.js b/public/examples/ts/map-province.js
deleted file mode 100644
index b523c00..0000000
--- a/public/examples/ts/map-province.js
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
-title: Switch among 34 Provinces
-category: map
-titleCN: 34 省切换查看
-*/
-
-// prettier-ignore
-var provinces = ['shanghai', 'hebei','shanxi','neimenggu','liaoning','jilin','heilongjiang','jiangsu','zhejiang','anhui','fujian','jiangxi','shandong','henan','hubei','hunan','guangdong','guangxi','hainan','sichuan','guizhou','yunnan','xizang','shanxi1','gansu','qinghai','ningxia','xinjiang', 'beijing', 'tianjin', 'chongqing', 'xianggang', 'aomen'];
-
-// prettier-ignore
-var provincesText = ['上海', '河北', '山西', '内蒙古', '辽宁', '吉林','黑龙江',  '江苏', '浙江', '安徽', '福建', '江西', '山东','河南', '湖北', '湖南', '广东', '广西', '海南', '四川', '贵州', '云南', '西藏', '陕西', '甘肃', '青海', '宁夏', '新疆', '北京', '天津', '重庆', '香港', '澳门'];
-
-function showProvince() {
-  var name = provinces[currentIdx];
-
-  // myChart.showLoading();
-
-  $.get(
-    ROOT_PATH + '/vendors/echarts/map/json/province/' + name + '.json',
-    function (geoJson) {
-      // myChart.hideLoading();
-
-      echarts.registerMap(name, geoJson);
-
-      myChart.setOption(
-        (option = {
-          backgroundColor: '#404a59',
-          title: {
-            text: provincesText[currentIdx],
-            left: 'center',
-            textStyle: {
-              color: '#fff'
-            }
-          },
-          series: [
-            {
-              type: 'map',
-              mapType: name,
-              emphasis: {
-                label: {
-                  color: '#fff'
-                },
-                itemStyle: {
-                  areaColor: '#389BB7',
-                  borderWidth: 0
-                }
-              },
-              itemStyle: {
-                borderColor: '#389BB7',
-                areaColor: '#fff'
-              },
-              animation: false
-              // animationDurationUpdate: 1000,
-              // animationEasingUpdate: 'quinticInOut'
-            }
-          ]
-        })
-      );
-    }
-  );
-}
-
-var currentIdx = 0;
-
-option = {
-  graphic: [
-    {
-      id: 'left-btn',
-      type: 'circle',
-      shape: { r: 20 },
-      style: {
-        text: '<',
-        fill: '#eee'
-      },
-      left: 10,
-      top: 'middle',
-      onclick: function () {
-        currentIdx -= 1;
-        if (currentIdx < 0) {
-          currentIdx += provinces.length;
-        }
-        showProvince();
-      }
-    },
-    {
-      id: 'right-btn',
-      type: 'circle',
-      shape: { r: 20 },
-      style: {
-        text: '>',
-        fill: '#eee'
-      },
-      top: 'middle',
-      right: 10,
-      onclick: function () {
-        currentIdx = (currentIdx + 1) % provinces.length;
-        showProvince();
-      }
-    }
-  ],
-
-  series: []
-};
-
-showProvince();
diff --git a/public/examples/ts/map-world-dataRange.js b/public/examples/ts/map-world-dataRange.js
deleted file mode 100644
index a8a2d2a..0000000
--- a/public/examples/ts/map-world-dataRange.js
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
-title: World Population (2010)
-category: map
-titleCN: World Population (2010)
-*/
-
-option = {
-  title: {
-    text: 'World Population (2010)',
-    subtext:
-      'from United Nations, Total population, both sexes combined, as of 1 July (thousands)',
-    sublink: 'http://esa.un.org/wpp/Excel-Data/population.htm',
-    left: 'center',
-    top: 'top'
-  },
-  tooltip: {
-    trigger: 'item',
-    formatter: function (params) {
-      var value = (params.value + '').split('.');
-      value =
-        value[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, '$1,') +
-        '.' +
-        value[1];
-      return params.seriesName + '<br/>' + params.name + ' : ' + value;
-    }
-  },
-  toolbox: {
-    show: true,
-    orient: 'vertical',
-    left: 'right',
-    top: 'center',
-    feature: {
-      dataView: { readOnly: false },
-      restore: {},
-      saveAsImage: {}
-    }
-  },
-  visualMap: {
-    min: 0,
-    max: 1000000,
-    text: ['High', 'Low'],
-    realtime: false,
-    calculable: true,
-    inRange: {
-      color: ['lightskyblue', 'yellow', 'orangered']
-    }
-  },
-  series: [
-    {
-      name: 'World Population (2010)',
-      type: 'map',
-      mapType: 'world',
-      roam: true,
-      emphasis: {
-        label: {
-          show: true
-        }
-      },
-      data: [
-        { name: 'Afghanistan', value: 28397.812 },
-        { name: 'Angola', value: 19549.124 },
-        { name: 'Albania', value: 3150.143 },
-        { name: 'United Arab Emirates', value: 8441.537 },
-        { name: 'Argentina', value: 40374.224 },
-        { name: 'Armenia', value: 2963.496 },
-        { name: 'French Southern and Antarctic Lands', value: 268.065 },
-        { name: 'Australia', value: 22404.488 },
-        { name: 'Austria', value: 8401.924 },
-        { name: 'Azerbaijan', value: 9094.718 },
-        { name: 'Burundi', value: 9232.753 },
-        { name: 'Belgium', value: 10941.288 },
-        { name: 'Benin', value: 9509.798 },
-        { name: 'Burkina Faso', value: 15540.284 },
-        { name: 'Bangladesh', value: 151125.475 },
-        { name: 'Bulgaria', value: 7389.175 },
-        { name: 'The Bahamas', value: 66402.316 },
-        { name: 'Bosnia and Herzegovina', value: 3845.929 },
-        { name: 'Belarus', value: 9491.07 },
-        { name: 'Belize', value: 308.595 },
-        { name: 'Bermuda', value: 64.951 },
-        { name: 'Bolivia', value: 716.939 },
-        { name: 'Brazil', value: 195210.154 },
-        { name: 'Brunei', value: 27.223 },
-        { name: 'Bhutan', value: 716.939 },
-        { name: 'Botswana', value: 1969.341 },
-        { name: 'Central African Republic', value: 4349.921 },
-        { name: 'Canada', value: 34126.24 },
-        { name: 'Switzerland', value: 7830.534 },
-        { name: 'Chile', value: 17150.76 },
-        { name: 'China', value: 1359821.465 },
-        { name: 'Ivory Coast', value: 60508.978 },
-        { name: 'Cameroon', value: 20624.343 },
-        { name: 'Democratic Republic of the Congo', value: 62191.161 },
-        { name: 'Republic of the Congo', value: 3573.024 },
-        { name: 'Colombia', value: 46444.798 },
-        { name: 'Costa Rica', value: 4669.685 },
-        { name: 'Cuba', value: 11281.768 },
-        { name: 'Northern Cyprus', value: 1.468 },
-        { name: 'Cyprus', value: 1103.685 },
-        { name: 'Czech Republic', value: 10553.701 },
-        { name: 'Germany', value: 83017.404 },
-        { name: 'Djibouti', value: 834.036 },
-        { name: 'Denmark', value: 5550.959 },
-        { name: 'Dominican Republic', value: 10016.797 },
-        { name: 'Algeria', value: 37062.82 },
-        { name: 'Ecuador', value: 15001.072 },
-        { name: 'Egypt', value: 78075.705 },
-        { name: 'Eritrea', value: 5741.159 },
-        { name: 'Spain', value: 46182.038 },
-        { name: 'Estonia', value: 1298.533 },
-        { name: 'Ethiopia', value: 87095.281 },
-        { name: 'Finland', value: 5367.693 },
-        { name: 'Fiji', value: 860.559 },
-        { name: 'Falkland Islands', value: 49.581 },
-        { name: 'France', value: 63230.866 },
-        { name: 'Gabon', value: 1556.222 },
-        { name: 'United Kingdom', value: 62066.35 },
-        { name: 'Georgia', value: 4388.674 },
-        { name: 'Ghana', value: 24262.901 },
-        { name: 'Guinea', value: 10876.033 },
-        { name: 'Gambia', value: 1680.64 },
-        { name: 'Guinea Bissau', value: 10876.033 },
-        { name: 'Equatorial Guinea', value: 696.167 },
-        { name: 'Greece', value: 11109.999 },
-        { name: 'Greenland', value: 56.546 },
-        { name: 'Guatemala', value: 14341.576 },
-        { name: 'French Guiana', value: 231.169 },
-        { name: 'Guyana', value: 786.126 },
-        { name: 'Honduras', value: 7621.204 },
-        { name: 'Croatia', value: 4338.027 },
-        { name: 'Haiti', value: 9896.4 },
-        { name: 'Hungary', value: 10014.633 },
-        { name: 'Indonesia', value: 240676.485 },
-        { name: 'India', value: 1205624.648 },
-        { name: 'Ireland', value: 4467.561 },
-        { name: 'Iran', value: 240676.485 },
-        { name: 'Iraq', value: 30962.38 },
-        { name: 'Iceland', value: 318.042 },
-        { name: 'Israel', value: 7420.368 },
-        { name: 'Italy', value: 60508.978 },
-        { name: 'Jamaica', value: 2741.485 },
-        { name: 'Jordan', value: 6454.554 },
-        { name: 'Japan', value: 127352.833 },
-        { name: 'Kazakhstan', value: 15921.127 },
-        { name: 'Kenya', value: 40909.194 },
-        { name: 'Kyrgyzstan', value: 5334.223 },
-        { name: 'Cambodia', value: 14364.931 },
-        { name: 'South Korea', value: 51452.352 },
-        { name: 'Kosovo', value: 97.743 },
-        { name: 'Kuwait', value: 2991.58 },
-        { name: 'Laos', value: 6395.713 },
-        { name: 'Lebanon', value: 4341.092 },
-        { name: 'Liberia', value: 3957.99 },
-        { name: 'Libya', value: 6040.612 },
-        { name: 'Sri Lanka', value: 20758.779 },
-        { name: 'Lesotho', value: 2008.921 },
-        { name: 'Lithuania', value: 3068.457 },
-        { name: 'Luxembourg', value: 507.885 },
-        { name: 'Latvia', value: 2090.519 },
-        { name: 'Morocco', value: 31642.36 },
-        { name: 'Moldova', value: 103.619 },
-        { name: 'Madagascar', value: 21079.532 },
-        { name: 'Mexico', value: 117886.404 },
-        { name: 'Macedonia', value: 507.885 },
-        { name: 'Mali', value: 13985.961 },
-        { name: 'Myanmar', value: 51931.231 },
-        { name: 'Montenegro', value: 620.078 },
-        { name: 'Mongolia', value: 2712.738 },
-        { name: 'Mozambique', value: 23967.265 },
-        { name: 'Mauritania', value: 3609.42 },
-        { name: 'Malawi', value: 15013.694 },
-        { name: 'Malaysia', value: 28275.835 },
-        { name: 'Namibia', value: 2178.967 },
-        { name: 'New Caledonia', value: 246.379 },
-        { name: 'Niger', value: 15893.746 },
-        { name: 'Nigeria', value: 159707.78 },
-        { name: 'Nicaragua', value: 5822.209 },
-        { name: 'Netherlands', value: 16615.243 },
-        { name: 'Norway', value: 4891.251 },
-        { name: 'Nepal', value: 26846.016 },
-        { name: 'New Zealand', value: 4368.136 },
-        { name: 'Oman', value: 2802.768 },
-        { name: 'Pakistan', value: 173149.306 },
-        { name: 'Panama', value: 3678.128 },
-        { name: 'Peru', value: 29262.83 },
-        { name: 'Philippines', value: 93444.322 },
-        { name: 'Papua New Guinea', value: 6858.945 },
-        { name: 'Poland', value: 38198.754 },
-        { name: 'Puerto Rico', value: 3709.671 },
-        { name: 'North Korea', value: 1.468 },
-        { name: 'Portugal', value: 10589.792 },
-        { name: 'Paraguay', value: 6459.721 },
-        { name: 'Qatar', value: 1749.713 },
-        { name: 'Romania', value: 21861.476 },
-        { name: 'Russia', value: 21861.476 },
-        { name: 'Rwanda', value: 10836.732 },
-        { name: 'Western Sahara', value: 514.648 },
-        { name: 'Saudi Arabia', value: 27258.387 },
-        { name: 'Sudan', value: 35652.002 },
-        { name: 'South Sudan', value: 9940.929 },
-        { name: 'Senegal', value: 12950.564 },
-        { name: 'Solomon Islands', value: 526.447 },
-        { name: 'Sierra Leone', value: 5751.976 },
-        { name: 'El Salvador', value: 6218.195 },
-        { name: 'Somaliland', value: 9636.173 },
-        { name: 'Somalia', value: 9636.173 },
-        { name: 'Republic of Serbia', value: 3573.024 },
-        { name: 'Suriname', value: 524.96 },
-        { name: 'Slovakia', value: 5433.437 },
-        { name: 'Slovenia', value: 2054.232 },
-        { name: 'Sweden', value: 9382.297 },
-        { name: 'Swaziland', value: 1193.148 },
-        { name: 'Syria', value: 7830.534 },
-        { name: 'Chad', value: 11720.781 },
-        { name: 'Togo', value: 6306.014 },
-        { name: 'Thailand', value: 66402.316 },
-        { name: 'Tajikistan', value: 7627.326 },
-        { name: 'Turkmenistan', value: 5041.995 },
-        { name: 'East Timor', value: 10016.797 },
-        { name: 'Trinidad and Tobago', value: 1328.095 },
-        { name: 'Tunisia', value: 10631.83 },
-        { name: 'Turkey', value: 72137.546 },
-        { name: 'United Republic of Tanzania', value: 44973.33 },
-        { name: 'Uganda', value: 33987.213 },
-        { name: 'Ukraine', value: 46050.22 },
-        { name: 'Uruguay', value: 3371.982 },
-        { name: 'United States of America', value: 312247.116 },
-        { name: 'Uzbekistan', value: 27769.27 },
-        { name: 'Venezuela', value: 236.299 },
-        { name: 'Vietnam', value: 89047.397 },
-        { name: 'Vanuatu', value: 236.299 },
-        { name: 'West Bank', value: 13.565 },
-        { name: 'Yemen', value: 22763.008 },
-        { name: 'South Africa', value: 51452.352 },
-        { name: 'Zambia', value: 13216.985 },
-        { name: 'Zimbabwe', value: 13076.978 }
-      ]
-    }
-  ]
-};
diff --git a/public/examples/ts/map-world.js b/public/examples/ts/map-world.js
deleted file mode 100644
index fcb231f..0000000
--- a/public/examples/ts/map-world.js
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
-title: Map World
-category: map
-titleCN: Map World
-*/
-
-var nameMap = {
-  Afghanistan: '阿富汗',
-  Angola: '安哥拉',
-  Albania: '阿尔巴尼亚',
-  'United Arab Emirates': '阿联酋',
-  Argentina: '阿根廷',
-  Armenia: '亚美尼亚',
-  'French Southern and Antarctic Lands': '法属南半球和南极领地',
-  Australia: '澳大利亚',
-  Austria: '奥地利',
-  Azerbaijan: '阿塞拜疆',
-  Burundi: '布隆迪',
-  Belgium: '比利时',
-  Benin: '贝宁',
-  'Burkina Faso': '布基纳法索',
-  Bangladesh: '孟加拉国',
-  Bulgaria: '保加利亚',
-  'The Bahamas': '巴哈马',
-  'Bosnia and Herzegovina': '波斯尼亚和黑塞哥维那',
-  Belarus: '白俄罗斯',
-  Belize: '伯利兹',
-  Bermuda: '百慕大',
-  Bolivia: '玻利维亚',
-  Brazil: '巴西',
-  Brunei: '文莱',
-  Bhutan: '不丹',
-  Botswana: '博茨瓦纳',
-  'Central African Republic': '中非共和国',
-  Canada: '加拿大',
-  Switzerland: '瑞士',
-  Chile: '智利',
-  China: '中国',
-  'Ivory Coast': '象牙海岸',
-  Cameroon: '喀麦隆',
-  'Democratic Republic of the Congo': '刚果民主共和国',
-  'Republic of the Congo': '刚果共和国',
-  Colombia: '哥伦比亚',
-  'Costa Rica': '哥斯达黎加',
-  Cuba: '古巴',
-  'Northern Cyprus': '北塞浦路斯',
-  Cyprus: '塞浦路斯',
-  'Czech Republic': '捷克共和国',
-  Germany: '德国',
-  Djibouti: '吉布提',
-  Denmark: '丹麦',
-  'Dominican Republic': '多明尼加共和国',
-  Algeria: '阿尔及利亚',
-  Ecuador: '厄瓜多尔',
-  Egypt: '埃及',
-  Eritrea: '厄立特里亚',
-  Spain: '西班牙',
-  Estonia: '爱沙尼亚',
-  Ethiopia: '埃塞俄比亚',
-  Finland: '芬兰',
-  Fiji: '斐',
-  'Falkland Islands': '福克兰群岛',
-  France: '法国',
-  Gabon: '加蓬',
-  'United Kingdom': '英国',
-  Georgia: '格鲁吉亚',
-  Ghana: '加纳',
-  Guinea: '几内亚',
-  Gambia: '冈比亚',
-  'Guinea Bissau': '几内亚比绍',
-  'Equatorial Guinea': '赤道几内亚',
-  Greece: '希腊',
-  Greenland: '格陵兰',
-  Guatemala: '危地马拉',
-  'French Guiana': '法属圭亚那',
-  Guyana: '圭亚那',
-  Honduras: '洪都拉斯',
-  Croatia: '克罗地亚',
-  Haiti: '海地',
-  Hungary: '匈牙利',
-  Indonesia: '印尼',
-  India: '印度',
-  Ireland: '爱尔兰',
-  Iran: '伊朗',
-  Iraq: '伊拉克',
-  Iceland: '冰岛',
-  Israel: '以色列',
-  Italy: '意大利',
-  Jamaica: '牙买加',
-  Jordan: '约旦',
-  Japan: '日本',
-  Kazakhstan: '哈萨克斯坦',
-  Kenya: '肯尼亚',
-  Kyrgyzstan: '吉尔吉斯斯坦',
-  Cambodia: '柬埔寨',
-  'South Korea': '韩国',
-  Kosovo: '科索沃',
-  Kuwait: '科威特',
-  Laos: '老挝',
-  Lebanon: '黎巴嫩',
-  Liberia: '利比里亚',
-  Libya: '利比亚',
-  'Sri Lanka': '斯里兰卡',
-  Lesotho: '莱索托',
-  Lithuania: '立陶宛',
-  Luxembourg: '卢森堡',
-  Latvia: '拉脱维亚',
-  Morocco: '摩洛哥',
-  Moldova: '摩尔多瓦',
-  Madagascar: '马达加斯加',
-  Mexico: '墨西哥',
-  Macedonia: '马其顿',
-  Mali: '马里',
-  Myanmar: '缅甸',
-  Montenegro: '黑山',
-  Mongolia: '蒙古',
-  Mozambique: '莫桑比克',
-  Mauritania: '毛里塔尼亚',
-  Malawi: '马拉维',
-  Malaysia: '马来西亚',
-  Namibia: '纳米比亚',
-  'New Caledonia': '新喀里多尼亚',
-  Niger: '尼日尔',
-  Nigeria: '尼日利亚',
-  Nicaragua: '尼加拉瓜',
-  Netherlands: '荷兰',
-  Norway: '挪威',
-  Nepal: '尼泊尔',
-  'New Zealand': '新西兰',
-  Oman: '阿曼',
-  Pakistan: '巴基斯坦',
-  Panama: '巴拿马',
-  Peru: '秘鲁',
-  Philippines: '菲律宾',
-  'Papua New Guinea': '巴布亚新几内亚',
-  Poland: '波兰',
-  'Puerto Rico': '波多黎各',
-  'North Korea': '北朝鲜',
-  Portugal: '葡萄牙',
-  Paraguay: '巴拉圭',
-  Qatar: '卡塔尔',
-  Romania: '罗马尼亚',
-  Russia: '俄罗斯',
-  Rwanda: '卢旺达',
-  'Western Sahara': '西撒哈拉',
-  'Saudi Arabia': '沙特阿拉伯',
-  Sudan: '苏丹',
-  'South Sudan': '南苏丹',
-  Senegal: '塞内加尔',
-  'Solomon Islands': '所罗门群岛',
-  'Sierra Leone': '塞拉利昂',
-  'El Salvador': '萨尔瓦多',
-  Somaliland: '索马里兰',
-  Somalia: '索马里',
-  'Republic of Serbia': '塞尔维亚共和国',
-  Suriname: '苏里南',
-  Slovakia: '斯洛伐克',
-  Slovenia: '斯洛文尼亚',
-  Sweden: '瑞典',
-  Swaziland: '斯威士兰',
-  Syria: '叙利亚',
-  Chad: '乍得',
-  Togo: '多哥',
-  Thailand: '泰国',
-  Tajikistan: '塔吉克斯坦',
-  Turkmenistan: '土库曼斯坦',
-  'East Timor': '东帝汶',
-  'Trinidad and Tobago': '特里尼达和多巴哥',
-  Tunisia: '突尼斯',
-  Turkey: '土耳其',
-  'United Republic of Tanzania': '坦桑尼亚联合共和国',
-  Uganda: '乌干达',
-  Ukraine: '乌克兰',
-  Uruguay: '乌拉圭',
-  'United States of America': '美国',
-  Uzbekistan: '乌兹别克斯坦',
-  Venezuela: '委内瑞拉',
-  Vietnam: '越南',
-  Vanuatu: '瓦努阿图',
-  'West Bank': '西岸',
-  Yemen: '也门',
-  'South Africa': '南非',
-  Zambia: '赞比亚',
-  Zimbabwe: '津巴布韦'
-};
-
-option = {
-  tooltip: {
-    trigger: 'item',
-    formatter: '{b}'
-  },
-  geo: [
-    {
-      name: '世界地图',
-      type: 'map',
-      map: 'world',
-      roam: true,
-      selectedMode: 'single',
-      label: {
-        show: false,
-        formatter: function (params) {
-          return nameMap[params.name];
-        }
-      },
-      emphasis: {
-        label: {
-          show: true
-        }
-      }
-    }
-  ],
-  series: []
-};
diff --git a/public/examples/ts/sankey-itemstyle.ts b/public/examples/ts/sankey-itemstyle.ts
index 2290737..09bf165 100644
--- a/public/examples/ts/sankey-itemstyle.ts
+++ b/public/examples/ts/sankey-itemstyle.ts
@@ -10,7 +10,6 @@
     subtext: 'Data From lisachristina1234 on GitHub',
     left: 'center'
   },
-  backgroundColor: '#FFFFFF',
   series: [
     {
       type: 'sankey',
diff --git a/src/asset/placeholder.jpg b/src/asset/placeholder.jpg
index f764f9d..b371ff2 100644
--- a/src/asset/placeholder.jpg
+++ b/src/asset/placeholder.jpg
Binary files differ
diff --git a/src/data/chart-list-data.js b/src/data/chart-list-data.js
index 74198d1..9474b0c 100644
--- a/src/data/chart-list-data.js
+++ b/src/data/chart-list-data.js
@@ -2502,28 +2502,6 @@
     "category": [
       "map"
     ],
-    "id": "map-china",
-    "ts": false,
-    "tags": [],
-    "title": "Map China",
-    "titleCN": "Map China",
-    "difficulty": 10
-  },
-  {
-    "category": [
-      "map"
-    ],
-    "id": "map-china-dataRange",
-    "ts": false,
-    "tags": [],
-    "title": "Sales of iphone",
-    "titleCN": "iphone销量",
-    "difficulty": 10
-  },
-  {
-    "category": [
-      "map"
-    ],
     "id": "map-HK",
     "ts": true,
     "tags": [],
@@ -2535,28 +2513,6 @@
     "category": [
       "map"
     ],
-    "id": "map-labels",
-    "ts": false,
-    "tags": [],
-    "title": "Rich Text Labels on Map",
-    "titleCN": "地图上的富文本标签",
-    "difficulty": 10
-  },
-  {
-    "category": [
-      "map"
-    ],
-    "id": "map-locate",
-    "ts": false,
-    "tags": [],
-    "title": "Map Locate",
-    "titleCN": "Map Locate",
-    "difficulty": 10
-  },
-  {
-    "category": [
-      "map"
-    ],
     "id": "map-polygon",
     "ts": false,
     "tags": [
@@ -2570,28 +2526,6 @@
     "category": [
       "map"
     ],
-    "id": "map-projection-globe",
-    "ts": true,
-    "tags": [],
-    "title": "Map with Orthographic Projection",
-    "titleCN": "正交投影地图",
-    "difficulty": 10
-  },
-  {
-    "category": [
-      "map"
-    ],
-    "id": "map-province",
-    "ts": false,
-    "tags": [],
-    "title": "Switch among 34 Provinces",
-    "titleCN": "34 省切换查看",
-    "difficulty": 10
-  },
-  {
-    "category": [
-      "map"
-    ],
     "id": "map-usa",
     "ts": true,
     "tags": [],
@@ -2612,28 +2546,6 @@
   },
   {
     "category": [
-      "map"
-    ],
-    "id": "map-world",
-    "ts": false,
-    "tags": [],
-    "title": "Map World",
-    "titleCN": "Map World",
-    "difficulty": 10
-  },
-  {
-    "category": [
-      "map"
-    ],
-    "id": "map-world-dataRange",
-    "ts": false,
-    "tags": [],
-    "title": "World Population (2010)",
-    "titleCN": "World Population (2010)",
-    "difficulty": 10
-  },
-  {
-    "category": [
       "pictorialBar"
     ],
     "id": "pictorialBar-body-fill",
diff --git a/src/editor/CodeMonaco.vue b/src/editor/CodeMonaco.vue
index 80275bf..073eb64 100644
--- a/src/editor/CodeMonaco.vue
+++ b/src/editor/CodeMonaco.vue
@@ -11,7 +11,11 @@
   return fetch(
     ('local' in URL_PARAMS
       ? SCRIPT_URLS.localEChartsDir
-      : SCRIPT_URLS.echartsDir.replace('{{version}}', store.echartsVersion)) +
+      : SCRIPT_URLS[
+          store.echartsVersion.indexOf('dev') > -1
+            ? 'echartsNightlyDir'
+            : 'echartsDir'
+        ].replace('{{version}}', store.echartsVersion)) +
       '/types/dist/echarts.d.ts',
     {
       mode: 'cors'
@@ -19,27 +23,28 @@
   )
     .then((response) => response.text())
     .then((code) => {
+      const tsLang = monaco.languages.typescript;
+      const typescriptDefaults = tsLang.typescriptDefaults;
       // validation settings
-      monaco.languages.typescript.typescriptDefaults.setDiagnosticsOptions({
+      typescriptDefaults.setDiagnosticsOptions({
         noSemanticValidation: false,
         noSyntaxValidation: false
       });
 
       // compiler options
-      monaco.languages.typescript.typescriptDefaults.setCompilerOptions({
-        target: monaco.languages.typescript.ScriptTarget.ES6,
+      typescriptDefaults.setCompilerOptions({
+        target: tsLang.ScriptTarget.ES6,
         allowNonTsExtensions: true,
         noResolve: false
       });
 
-      // console.log('file:///node_modules/@types/' + res[i].path);
-      monaco.languages.typescript.typescriptDefaults.addExtraLib(
+      typescriptDefaults.addExtraLib(
         code,
         // https://github.com/microsoft/monaco-editor/issues/667#issuecomment-468164794
         'file:///node_modules/@types/echarts/echarts.d.ts'
       );
 
-      monaco.languages.typescript.typescriptDefaults.addExtraLib(
+      typescriptDefaults.addExtraLib(
         `
 import * as echarts from './echarts';
 // Export for UMD module.
@@ -49,7 +54,7 @@
         'file:///node_modules/@types/echarts/index.d.ts'
       );
 
-      monaco.languages.typescript.typescriptDefaults.addExtraLib(
+      typescriptDefaults.addExtraLib(
         `import * as echarts from 'echarts';
 // Declare to global namespace.
 declare global {
@@ -90,7 +95,7 @@
   if (typeof monaco === 'undefined') {
     return loadScriptsAsync([
       SCRIPT_URLS.monacoDir + '/loader.js',
-      // Prebuilt TS transformer with surcrase
+      // Prebuilt TS transformer with sucrase
       store.cdnRoot + '/js/example-transform-ts-bundle.js'
     ]).then(function () {
       window.require.config({ paths: { vs: SCRIPT_URLS.monacoDir } });
@@ -122,7 +127,6 @@
   mounted() {
     this.loading = true;
     ensureMonacoAndTsTransformer().then(() => {
-      this.loading = false;
       const model = monaco.editor.createModel(
         this.initialCode || '',
         'typescript',
@@ -149,6 +153,8 @@
         store.sourceCode = editor.getValue();
         store.runCode = echartsExampleTransformTs(store.sourceCode);
       });
+
+      this.loading = false;
     });
   },
 
diff --git a/src/editor/Editor.vue b/src/editor/Editor.vue
index a14442e..c729dd6 100644
--- a/src/editor/Editor.vue
+++ b/src/editor/Editor.vue
@@ -269,9 +269,17 @@
         }
       });
 
-      window.addEventListener('mouseup', (e) => {
+      window.addEventListener('mouseup', () => {
         this.mousedown = false;
       });
+
+      window.addEventListener('keydown', (e) => {
+        if ((e.ctrlKey || e.metaKey) && e.key === 's') {
+          const previewRef = this.$refs.preview;
+          previewRef && previewRef.share();
+          e.preventDefault();
+        }
+      });
     }
   },
 
diff --git a/src/editor/sandbox/setup.js b/src/editor/sandbox/setup.js
index ed889d5..85b6401 100644
--- a/src/editor/sandbox/setup.js
+++ b/src/editor/sandbox/setup.js
@@ -337,6 +337,8 @@
         const option = res[0];
         echarts.util.isObject(option) && chartInstance.setOption(option, true);
       } catch (e) {
+        // PENDING: prevent chart can't be updated once error occurs
+        chartInstance.__flagInMainProcess = false;
         console.error('failed to run code', e);
         sendMessage({ evt: 'codeError', message: e.message });
       }
diff --git a/src/explore/ExampleCard.vue b/src/explore/ExampleCard.vue
index b2876a9..cd9e82c 100644
--- a/src/explore/ExampleCard.vue
+++ b/src/explore/ExampleCard.vue
@@ -1,20 +1,11 @@
 <template>
   <div class="example-list-item">
     <a target="_blank" class="example-link" :href="exampleLink">
-      <picture class="chart-area">
+      <picture>
         <source :data-srcset="screenshotURLWebP" type="image/webp" />
         <source :data-srcset="screenshotURLPNG" type="image/png" />
-        <img
-          class="chart-area"
-          src="../asset/placeholder.jpg"
-          :data-src="screenshotURLPNG"
-        />
+        <img class="chart-area" data-src="../asset/placeholder.jpg" />
       </picture>
-      <!-- <img
-        class="chart-area"
-        src="../asset/placeholder.jpg"
-        :data-src="screenshotURL"
-      /> -->
     </a>
     <div>
       <div class="example-langs">
diff --git a/src/explore/Explore.vue b/src/explore/Explore.vue
index cac1c67..6828252 100644
--- a/src/explore/Explore.vue
+++ b/src/explore/Explore.vue
@@ -65,7 +65,7 @@
 <script>
 import CHART_LIST from '../data/chart-list-data';
 import CHART_LIST_GL from '../data/chart-list-data-gl';
-import { EXAMPLE_CATEGORIES, BLACK_MAP, URL_PARAMS } from '../common/config';
+import { EXAMPLE_CATEGORIES, BLACK_MAP } from '../common/config';
 import { store } from '../common/store';
 import ExampleCard from './ExampleCard.vue';
 import LazyLoad from 'vanilla-lazyload/dist/lazyload.esm';
@@ -193,8 +193,7 @@
       const imgs = this.$el.querySelectorAll('img.chart-area');
       for (let i = 0; i < imgs.length; i++) {
         // Force lazyload to update
-        imgs[i].classList.remove(LAZY_LOADED_CLASS);
-        imgs[i].setAttribute('data-was-processed', 'false');
+        LazyLoad.resetStatus(imgs[i]);
       }
       this._lazyload.update();
     }
@@ -223,7 +222,17 @@
       // container: this.$el.querySelector('#explore-container .example-list-panel'),
       elements_selector: '.chart-area',
       load_delay: 400,
-      class_loaded: LAZY_LOADED_CLASS
+      class_loaded: LAZY_LOADED_CLASS,
+      callback_error(img) {
+        const fallbackSrc = img.getAttribute('data-src');
+        const children = img.parentElement.children;
+        for (let i = 0, len = children.length; i < len; i++) {
+          const el = children[i];
+          if (el !== img) {
+            el.srcset = fallbackSrc;
+          }
+        }
+      }
     });
   },