zhangliang2 %!s(int64=3) %!d(string=hai) anos
achega
84a440b0cb
Modificáronse 88 ficheiros con 36556 adicións e 0 borrados
  1. 25 0
      .eslintrc.js
  2. 26 0
      .gitignore
  3. 34 0
      README.md
  4. 22 0
      babel.config.js
  5. 3 0
      cypress.json
  6. 26676 0
      package-lock.json
  7. 87 0
      package.json
  8. BIN=BIN
      public/favicon.ico
  9. 18 0
      public/index.html
  10. 16 0
      src/App.vue
  11. 8 0
      src/api/common.js
  12. 10 0
      src/api/index.js
  13. BIN=BIN
      src/assets/common/css/fonts/element-icons.eot
  14. BIN=BIN
      src/assets/common/css/fonts/element-icons.ttf
  15. BIN=BIN
      src/assets/common/css/fonts/element-icons.woff
  16. 0 0
      src/assets/common/css/index.css
  17. 245 0
      src/assets/common/css/reset.css
  18. 836 0
      src/assets/common/css/theme.less
  19. BIN=BIN
      src/assets/common/image/car.png
  20. BIN=BIN
      src/assets/common/image/menu/icon.png
  21. BIN=BIN
      src/assets/common/image/menu/iconFold.png
  22. BIN=BIN
      src/assets/common/image/menu/menuA.png
  23. BIN=BIN
      src/assets/common/image/menu/menuB.png
  24. BIN=BIN
      src/assets/common/image/menu/menuC.png
  25. BIN=BIN
      src/assets/common/image/menu/menuD.png
  26. BIN=BIN
      src/assets/common/image/menu/menuE.png
  27. BIN=BIN
      src/assets/common/image/menu/menuF.png
  28. BIN=BIN
      src/assets/common/image/photoF.png
  29. BIN=BIN
      src/assets/common/image/photoH.png
  30. BIN=BIN
      src/assets/common/image/photoS.png
  31. 1 0
      src/assets/common/image/userIcon.txt
  32. BIN=BIN
      src/assets/logo.png
  33. 90 0
      src/axios/filter.js
  34. 47 0
      src/components/HelloWorld.vue
  35. 915 0
      src/components/grid/TableList.vue
  36. 52 0
      src/components/grid/TablePage.vue
  37. 172 0
      src/components/grid/TableSet.vue
  38. 78 0
      src/components/grid/searchLayout.vue
  39. 287 0
      src/components/toolbar/toolbar.vue
  40. 377 0
      src/components/toolbar/toolbarTab.vue
  41. 74 0
      src/lib/autoTrim.js
  42. 26 0
      src/main.js
  43. 17 0
      src/router/algorithmsLibrary.js
  44. 24 0
      src/router/filter.js
  45. 93 0
      src/router/index.js
  46. 33 0
      src/router/modelLibrary.js
  47. 57 0
      src/router/sceneLibrary.js
  48. 17 0
      src/router/systemManagement.js
  49. 14 0
      src/store/index.js
  50. 6 0
      src/views/About.vue
  51. 220 0
      src/views/algorithmsLibrary/addAlgorithms.vue
  52. 230 0
      src/views/algorithmsLibrary/algorithmsLibraryList.vue
  53. 26 0
      src/views/algorithmsLibrary/index.vue
  54. 48 0
      src/views/index.vue
  55. 305 0
      src/views/modelLibrary/addVehicleConfiguration.vue
  56. 19 0
      src/views/modelLibrary/common/util.less
  57. 131 0
      src/views/modelLibrary/components/formCamera.vue
  58. 105 0
      src/views/modelLibrary/components/formGps.vue
  59. 145 0
      src/views/modelLibrary/components/formLaserRadar.vue
  60. 26 0
      src/views/modelLibrary/components/formMillimeterWaveRadar.vue
  61. 205 0
      src/views/modelLibrary/components/formPerfectSensor.vue
  62. 204 0
      src/views/modelLibrary/components/handleConfigList.vue
  63. 150 0
      src/views/modelLibrary/components/modelList.vue
  64. 28 0
      src/views/modelLibrary/index.vue
  65. 155 0
      src/views/modelLibrary/sensorModel.vue
  66. 370 0
      src/views/modelLibrary/vehicleConfigurationList.vue
  67. 309 0
      src/views/modelLibrary/vehicleModel.vue
  68. 129 0
      src/views/page/breadCrumb.vue
  69. 401 0
      src/views/page/pageMenu.vue
  70. 98 0
      src/views/sceneLibrary/common/util.less
  71. 90 0
      src/views/sceneLibrary/gradingRule.vue
  72. 228 0
      src/views/sceneLibrary/gradingRulesList.vue
  73. 26 0
      src/views/sceneLibrary/index.vue
  74. 224 0
      src/views/sceneLibrary/naturalDrivingScenarioList.vue
  75. 285 0
      src/views/sceneLibrary/scenarioTestPackageManagementList.vue
  76. 813 0
      src/views/sceneLibrary/scenePacketList.vue
  77. 197 0
      src/views/sceneLibrary/standardRegulationSimulationScenarioList.vue
  78. 268 0
      src/views/sceneLibrary/trafficAccidentSimulationScenarioList.vue
  79. 195 0
      src/views/systemManagement/accountManagement.vue
  80. 294 0
      src/views/systemManagement/addAccount.vue
  81. 26 0
      src/views/systemManagement/index.vue
  82. 10 0
      tests/e2e/.eslintrc.js
  83. 25 0
      tests/e2e/plugins/index.js
  84. 8 0
      tests/e2e/specs/test.js
  85. 25 0
      tests/e2e/support/commands.js
  86. 20 0
      tests/e2e/support/index.js
  87. 13 0
      tests/unit/example.spec.js
  88. 119 0
      vue.config.js

+ 25 - 0
.eslintrc.js

@@ -0,0 +1,25 @@
+module.exports = {
+  root: true,
+  env: {
+    node: true,
+  },
+  extends: ["plugin:vue/essential", "eslint:recommended", "@vue/prettier"],
+  parserOptions: {
+    parser: "babel-eslint",
+  },
+  rules: {
+    "no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
+    "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
+  },
+  overrides: [
+    {
+      files: [
+        "**/__tests__/*.{j,t}s?(x)",
+        "**/tests/unit/**/*.spec.{j,t}s?(x)",
+      ],
+      env: {
+        mocha: true,
+      },
+    },
+  ],
+};

+ 26 - 0
.gitignore

@@ -0,0 +1,26 @@
+.DS_Store
+node_modules
+/dist
+
+/tests/e2e/videos/
+/tests/e2e/screenshots/
+
+
+# local env files
+.env.local
+.env.*.local
+
+# Log files
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?

+ 34 - 0
README.md

@@ -0,0 +1,34 @@
+# cicv-oa
+
+## Project setup
+```
+npm install
+```
+
+### Compiles and hot-reloads for development
+```
+npm run serve
+```
+
+### Compiles and minifies for production
+```
+npm run build
+```
+
+### Run your unit tests
+```
+npm run test:unit
+```
+
+### Run your end-to-end tests
+```
+npm run test:e2e
+```
+
+### Lints and fixes files
+```
+npm run lint
+```
+
+### Customize configuration
+See [Configuration Reference](https://cli.vuejs.org/config/).

+ 22 - 0
babel.config.js

@@ -0,0 +1,22 @@
+//打包时删除console
+const plugins = [];
+if (['production', 'prod'].includes(process.env.NODE_ENV)) {
+  plugins.push("transform-remove-console")
+}
+
+//ie兼容
+module.exports = {
+  presets: [
+    [
+      "@vue/app",
+      {
+        "useBuiltIns": "entry",
+        // polyfills: [
+        //   'es6.promise',
+        //   'es6.symbol'
+        // ]
+      }
+    ]
+  ],
+  plugins: plugins
+};

+ 3 - 0
cypress.json

@@ -0,0 +1,3 @@
+{
+  "pluginsFile": "tests/e2e/plugins/index.js"
+}

+ 26676 - 0
package-lock.json

@@ -0,0 +1,26676 @@
+{
+  "name": "cicv-oa",
+  "version": "0.1.0",
+  "lockfileVersion": 2,
+  "requires": true,
+  "packages": {
+    "": {
+      "name": "cicv-oa",
+      "version": "0.1.0",
+      "dependencies": {
+        "axios": "^0.19.0",
+        "bootstrap": "^4.3.1",
+        "core-js": "^2.6.5",
+        "echarts": "^4.3.0",
+        "element-resize-detector": "^1.1.15",
+        "element-ui": "^2.10.1",
+        "font-awesome": "^4.7.0",
+        "jquery": "^3.4.1",
+        "js-file-download": "^0.4.8",
+        "moment": "^2.24.0",
+        "popper.js": "^1.15.0",
+        "quill-image-drop-module": "^1.0.3",
+        "quill-image-resize-module": "^3.0.0",
+        "spark-md5": "^3.0.1",
+        "style-loader": "^0.23.1",
+        "tinymce": "^5.1.5",
+        "vue": "^2.6.10",
+        "vue-axios": "^2.1.4",
+        "vue-cropper": "^0.4.9",
+        "vue-full-calendar": "^2.7.0",
+        "vue-quill-editor": "^3.0.6",
+        "vue-resource": "^1.5.1",
+        "vue-router": "^3.0.7",
+        "vuex": "^3.1.1",
+        "wangeditor": "^4.6.3",
+        "xlsx": "^0.16.9"
+      },
+      "devDependencies": {
+        "@babel/core": "^7.12.10",
+        "@babel/plugin-transform-runtime": "^7.12.10",
+        "@babel/preset-env": "^7.12.11",
+        "@vue/cli-plugin-babel": "^3.9.0",
+        "@vue/cli-plugin-eslint": "^3.9.0",
+        "@vue/cli-service": "^3.9.0",
+        "babel-eslint": "^10.0.2",
+        "babel-loader": "^8.2.2",
+        "babel-plugin-transform-remove-console": "^6.9.4",
+        "babel-polyfill": "^6.26.0",
+        "compression-webpack-plugin": "^5.0.0",
+        "es6-promise": "^4.2.8",
+        "eslint": "^5.16.0",
+        "eslint-plugin-vue": "^5.0.0",
+        "less": "^3.9.0",
+        "less-loader": "^5.0.0",
+        "mockjs": "^1.0.1-beta3",
+        "style-resources-loader": "^1.2.1",
+        "vue-cli-plugin-style-resources-loader": "^0.1.3",
+        "vue-template-compiler": "^2.6.10",
+        "webpack-bundle-analyzer": "^4.4.0"
+      }
+    },
+    "node_modules/@babel/code-frame": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/highlight": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/compat-data": {
+      "version": "7.16.4",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/core": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.16.7",
+        "@babel/generator": "^7.16.7",
+        "@babel/helper-compilation-targets": "^7.16.7",
+        "@babel/helper-module-transforms": "^7.16.7",
+        "@babel/helpers": "^7.16.7",
+        "@babel/parser": "^7.16.7",
+        "@babel/template": "^7.16.7",
+        "@babel/traverse": "^7.16.7",
+        "@babel/types": "^7.16.7",
+        "convert-source-map": "^1.7.0",
+        "debug": "^4.1.0",
+        "gensync": "^1.0.0-beta.2",
+        "json5": "^2.1.2",
+        "semver": "^6.3.0",
+        "source-map": "^0.5.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/babel"
+      }
+    },
+    "node_modules/@babel/generator": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.16.7",
+        "jsesc": "^2.5.1",
+        "source-map": "^0.5.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-annotate-as-pure": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-explode-assignable-expression": "^7.16.7",
+        "@babel/types": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-compilation-targets": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/compat-data": "^7.16.4",
+        "@babel/helper-validator-option": "^7.16.7",
+        "browserslist": "^4.17.5",
+        "semver": "^6.3.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-create-class-features-plugin": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.16.7",
+        "@babel/helper-environment-visitor": "^7.16.7",
+        "@babel/helper-function-name": "^7.16.7",
+        "@babel/helper-member-expression-to-functions": "^7.16.7",
+        "@babel/helper-optimise-call-expression": "^7.16.7",
+        "@babel/helper-replace-supers": "^7.16.7",
+        "@babel/helper-split-export-declaration": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-create-regexp-features-plugin": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.16.7",
+        "regexpu-core": "^4.7.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-define-polyfill-provider": {
+      "version": "0.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-compilation-targets": "^7.13.0",
+        "@babel/helper-module-imports": "^7.12.13",
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/traverse": "^7.13.0",
+        "debug": "^4.1.1",
+        "lodash.debounce": "^4.0.8",
+        "resolve": "^1.14.2",
+        "semver": "^6.1.2"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.4.0-0"
+      }
+    },
+    "node_modules/@babel/helper-environment-visitor": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-explode-assignable-expression": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-function-name": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-get-function-arity": "^7.16.7",
+        "@babel/template": "^7.16.7",
+        "@babel/types": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-get-function-arity": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-hoist-variables": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-member-expression-to-functions": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-module-imports": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-module-transforms": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-environment-visitor": "^7.16.7",
+        "@babel/helper-module-imports": "^7.16.7",
+        "@babel/helper-simple-access": "^7.16.7",
+        "@babel/helper-split-export-declaration": "^7.16.7",
+        "@babel/helper-validator-identifier": "^7.16.7",
+        "@babel/template": "^7.16.7",
+        "@babel/traverse": "^7.16.7",
+        "@babel/types": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-optimise-call-expression": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-plugin-utils": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-remap-async-to-generator": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.16.7",
+        "@babel/helper-wrap-function": "^7.16.7",
+        "@babel/types": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-replace-supers": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-environment-visitor": "^7.16.7",
+        "@babel/helper-member-expression-to-functions": "^7.16.7",
+        "@babel/helper-optimise-call-expression": "^7.16.7",
+        "@babel/traverse": "^7.16.7",
+        "@babel/types": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-simple-access": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+      "version": "7.16.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.16.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-split-export-declaration": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-identifier": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-option": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-wrap-function": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-function-name": "^7.16.7",
+        "@babel/template": "^7.16.7",
+        "@babel/traverse": "^7.16.7",
+        "@babel/types": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helpers": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/template": "^7.16.7",
+        "@babel/traverse": "^7.16.7",
+        "@babel/types": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/highlight": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-validator-identifier": "^7.16.7",
+        "chalk": "^2.0.0",
+        "js-tokens": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/parser": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "parser": "bin/babel-parser.js"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0",
+        "@babel/plugin-proposal-optional-chaining": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.13.0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-async-generator-functions": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-remap-async-to-generator": "^7.16.7",
+        "@babel/plugin-syntax-async-generators": "^7.8.4"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-class-properties": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-create-class-features-plugin": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-class-static-block": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-create-class-features-plugin": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/plugin-syntax-class-static-block": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.12.0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-decorators": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-create-class-features-plugin": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/plugin-syntax-decorators": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-dynamic-import": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-export-namespace-from": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-json-strings": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/plugin-syntax-json-strings": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-logical-assignment-operators": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-numeric-separator": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-object-rest-spread": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/compat-data": "^7.16.4",
+        "@babel/helper-compilation-targets": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-transform-parameters": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-optional-catch-binding": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-optional-chaining": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-private-methods": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-create-class-features-plugin": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-private-property-in-object": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.16.7",
+        "@babel/helper-create-class-features-plugin": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-unicode-property-regex": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-async-generators": {
+      "version": "7.8.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-class-properties": {
+      "version": "7.12.13",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-class-static-block": {
+      "version": "7.14.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-decorators": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-dynamic-import": {
+      "version": "7.8.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-export-namespace-from": {
+      "version": "7.8.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.3"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-json-strings": {
+      "version": "7.8.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-jsx": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
+      "version": "7.10.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
+      "version": "7.8.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-numeric-separator": {
+      "version": "7.10.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-object-rest-spread": {
+      "version": "7.8.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-optional-catch-binding": {
+      "version": "7.8.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-optional-chaining": {
+      "version": "7.8.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-private-property-in-object": {
+      "version": "7.14.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-top-level-await": {
+      "version": "7.14.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-arrow-functions": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-async-to-generator": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-module-imports": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-remap-async-to-generator": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-block-scoped-functions": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-block-scoping": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-classes": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.16.7",
+        "@babel/helper-environment-visitor": "^7.16.7",
+        "@babel/helper-function-name": "^7.16.7",
+        "@babel/helper-optimise-call-expression": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-replace-supers": "^7.16.7",
+        "@babel/helper-split-export-declaration": "^7.16.7",
+        "globals": "^11.1.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-computed-properties": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-destructuring": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-dotall-regex": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-duplicate-keys": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-exponentiation-operator": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-for-of": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-function-name": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-compilation-targets": "^7.16.7",
+        "@babel/helper-function-name": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-literals": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-member-expression-literals": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-modules-amd": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-module-transforms": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "babel-plugin-dynamic-import-node": "^2.3.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-modules-commonjs": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-module-transforms": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-simple-access": "^7.16.7",
+        "babel-plugin-dynamic-import-node": "^2.3.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-modules-systemjs": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-hoist-variables": "^7.16.7",
+        "@babel/helper-module-transforms": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-validator-identifier": "^7.16.7",
+        "babel-plugin-dynamic-import-node": "^2.3.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-modules-umd": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-module-transforms": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-new-target": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-object-super": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-replace-supers": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-parameters": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-property-literals": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-regenerator": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "regenerator-transform": "^0.14.2"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-reserved-words": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-runtime": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-module-imports": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "babel-plugin-polyfill-corejs2": "^0.3.0",
+        "babel-plugin-polyfill-corejs3": "^0.4.0",
+        "babel-plugin-polyfill-regenerator": "^0.3.0",
+        "semver": "^6.3.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-shorthand-properties": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-spread": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-sticky-regex": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-template-literals": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-typeof-symbol": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-unicode-escapes": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-unicode-regex": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/preset-env": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/compat-data": "^7.16.4",
+        "@babel/helper-compilation-targets": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-validator-option": "^7.16.7",
+        "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7",
+        "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7",
+        "@babel/plugin-proposal-async-generator-functions": "^7.16.7",
+        "@babel/plugin-proposal-class-properties": "^7.16.7",
+        "@babel/plugin-proposal-class-static-block": "^7.16.7",
+        "@babel/plugin-proposal-dynamic-import": "^7.16.7",
+        "@babel/plugin-proposal-export-namespace-from": "^7.16.7",
+        "@babel/plugin-proposal-json-strings": "^7.16.7",
+        "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7",
+        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7",
+        "@babel/plugin-proposal-numeric-separator": "^7.16.7",
+        "@babel/plugin-proposal-object-rest-spread": "^7.16.7",
+        "@babel/plugin-proposal-optional-catch-binding": "^7.16.7",
+        "@babel/plugin-proposal-optional-chaining": "^7.16.7",
+        "@babel/plugin-proposal-private-methods": "^7.16.7",
+        "@babel/plugin-proposal-private-property-in-object": "^7.16.7",
+        "@babel/plugin-proposal-unicode-property-regex": "^7.16.7",
+        "@babel/plugin-syntax-async-generators": "^7.8.4",
+        "@babel/plugin-syntax-class-properties": "^7.12.13",
+        "@babel/plugin-syntax-class-static-block": "^7.14.5",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+        "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+        "@babel/plugin-syntax-json-strings": "^7.8.3",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+        "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+        "@babel/plugin-syntax-top-level-await": "^7.14.5",
+        "@babel/plugin-transform-arrow-functions": "^7.16.7",
+        "@babel/plugin-transform-async-to-generator": "^7.16.7",
+        "@babel/plugin-transform-block-scoped-functions": "^7.16.7",
+        "@babel/plugin-transform-block-scoping": "^7.16.7",
+        "@babel/plugin-transform-classes": "^7.16.7",
+        "@babel/plugin-transform-computed-properties": "^7.16.7",
+        "@babel/plugin-transform-destructuring": "^7.16.7",
+        "@babel/plugin-transform-dotall-regex": "^7.16.7",
+        "@babel/plugin-transform-duplicate-keys": "^7.16.7",
+        "@babel/plugin-transform-exponentiation-operator": "^7.16.7",
+        "@babel/plugin-transform-for-of": "^7.16.7",
+        "@babel/plugin-transform-function-name": "^7.16.7",
+        "@babel/plugin-transform-literals": "^7.16.7",
+        "@babel/plugin-transform-member-expression-literals": "^7.16.7",
+        "@babel/plugin-transform-modules-amd": "^7.16.7",
+        "@babel/plugin-transform-modules-commonjs": "^7.16.7",
+        "@babel/plugin-transform-modules-systemjs": "^7.16.7",
+        "@babel/plugin-transform-modules-umd": "^7.16.7",
+        "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.7",
+        "@babel/plugin-transform-new-target": "^7.16.7",
+        "@babel/plugin-transform-object-super": "^7.16.7",
+        "@babel/plugin-transform-parameters": "^7.16.7",
+        "@babel/plugin-transform-property-literals": "^7.16.7",
+        "@babel/plugin-transform-regenerator": "^7.16.7",
+        "@babel/plugin-transform-reserved-words": "^7.16.7",
+        "@babel/plugin-transform-shorthand-properties": "^7.16.7",
+        "@babel/plugin-transform-spread": "^7.16.7",
+        "@babel/plugin-transform-sticky-regex": "^7.16.7",
+        "@babel/plugin-transform-template-literals": "^7.16.7",
+        "@babel/plugin-transform-typeof-symbol": "^7.16.7",
+        "@babel/plugin-transform-unicode-escapes": "^7.16.7",
+        "@babel/plugin-transform-unicode-regex": "^7.16.7",
+        "@babel/preset-modules": "^0.1.5",
+        "@babel/types": "^7.16.7",
+        "babel-plugin-polyfill-corejs2": "^0.3.0",
+        "babel-plugin-polyfill-corejs3": "^0.4.0",
+        "babel-plugin-polyfill-regenerator": "^0.3.0",
+        "core-js-compat": "^3.19.1",
+        "semver": "^6.3.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/preset-modules": {
+      "version": "0.1.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
+        "@babel/plugin-transform-dotall-regex": "^7.4.4",
+        "@babel/types": "^7.4.4",
+        "esutils": "^2.0.2"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/runtime": {
+      "version": "7.16.7",
+      "license": "MIT",
+      "dependencies": {
+        "regenerator-runtime": "^0.13.4"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/runtime-corejs2": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "core-js": "^2.6.5",
+        "regenerator-runtime": "^0.13.4"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/runtime-corejs3": {
+      "version": "7.16.7",
+      "license": "MIT",
+      "dependencies": {
+        "core-js-pure": "^3.19.0",
+        "regenerator-runtime": "^0.13.4"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/template": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.16.7",
+        "@babel/parser": "^7.16.7",
+        "@babel/types": "^7.16.7"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/traverse": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.16.7",
+        "@babel/generator": "^7.16.7",
+        "@babel/helper-environment-visitor": "^7.16.7",
+        "@babel/helper-function-name": "^7.16.7",
+        "@babel/helper-hoist-variables": "^7.16.7",
+        "@babel/helper-split-export-declaration": "^7.16.7",
+        "@babel/parser": "^7.16.7",
+        "@babel/types": "^7.16.7",
+        "debug": "^4.1.0",
+        "globals": "^11.1.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/types": {
+      "version": "7.16.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-validator-identifier": "^7.16.7",
+        "to-fast-properties": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@gar/promisify": {
+      "version": "1.1.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@hapi/address": {
+      "version": "2.1.4",
+      "dev": true,
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/@hapi/bourne": {
+      "version": "1.3.2",
+      "dev": true,
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/@hapi/hoek": {
+      "version": "8.5.1",
+      "dev": true,
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/@hapi/joi": {
+      "version": "15.1.1",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "@hapi/address": "2.x.x",
+        "@hapi/bourne": "1.x.x",
+        "@hapi/hoek": "8.x.x",
+        "@hapi/topo": "3.x.x"
+      }
+    },
+    "node_modules/@hapi/topo": {
+      "version": "3.1.6",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "@hapi/hoek": "^8.3.0"
+      }
+    },
+    "node_modules/@intervolga/optimize-cssnano-plugin": {
+      "version": "1.0.6",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cssnano": "^4.0.0",
+        "cssnano-preset-default": "^4.0.0",
+        "postcss": "^7.0.0"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0"
+      }
+    },
+    "node_modules/@mrmlnc/readdir-enhanced": {
+      "version": "2.2.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "call-me-maybe": "^1.0.1",
+        "glob-to-regexp": "^0.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@nodelib/fs.stat": {
+      "version": "1.1.3",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/@npmcli/fs": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "@gar/promisify": "^1.0.1",
+        "semver": "^7.3.5"
+      },
+      "engines": {
+        "node": "^12.13.0 || ^14.15.0 || >=16"
+      }
+    },
+    "node_modules/@npmcli/fs/node_modules/lru-cache": {
+      "version": "6.0.0",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@npmcli/fs/node_modules/semver": {
+      "version": "7.3.5",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "lru-cache": "^6.0.0"
+      },
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@npmcli/fs/node_modules/yallist": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/@npmcli/move-file": {
+      "version": "1.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "mkdirp": "^1.0.4",
+        "rimraf": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@npmcli/move-file/node_modules/mkdirp": {
+      "version": "1.0.4",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "mkdirp": "bin/cmd.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@npmcli/move-file/node_modules/rimraf": {
+      "version": "3.0.2",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/@polka/url": {
+      "version": "1.0.0-next.21",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@sindresorhus/is": {
+      "version": "4.2.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sindresorhus/is?sponsor=1"
+      }
+    },
+    "node_modules/@soda/friendly-errors-webpack-plugin": {
+      "version": "1.8.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "chalk": "^3.0.0",
+        "error-stack-parser": "^2.0.6",
+        "string-width": "^4.2.3",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0 || ^5.0.0"
+      }
+    },
+    "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/chalk": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/color-convert": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/color-name": {
+      "version": "1.1.4",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/has-flag": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/supports-color": {
+      "version": "7.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@szmarczak/http-timer": {
+      "version": "4.0.6",
+      "license": "MIT",
+      "dependencies": {
+        "defer-to-connect": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@types/cacheable-request": {
+      "version": "6.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "@types/http-cache-semantics": "*",
+        "@types/keyv": "*",
+        "@types/node": "*",
+        "@types/responselike": "*"
+      }
+    },
+    "node_modules/@types/glob": {
+      "version": "7.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/minimatch": "*",
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/http-cache-semantics": {
+      "version": "4.0.1",
+      "license": "MIT"
+    },
+    "node_modules/@types/json-schema": {
+      "version": "7.0.9",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@types/keyv": {
+      "version": "3.1.3",
+      "license": "MIT",
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/minimatch": {
+      "version": "3.0.5",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@types/node": {
+      "version": "17.0.8",
+      "license": "MIT"
+    },
+    "node_modules/@types/normalize-package-data": {
+      "version": "2.4.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@types/q": {
+      "version": "1.5.5",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@types/responselike": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@vue/babel-helper-vue-jsx-merge-props": {
+      "version": "1.2.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@vue/babel-plugin-transform-vue-jsx": {
+      "version": "1.2.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-module-imports": "^7.0.0",
+        "@babel/plugin-syntax-jsx": "^7.2.0",
+        "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1",
+        "html-tags": "^2.0.0",
+        "lodash.kebabcase": "^4.1.1",
+        "svg-tags": "^1.0.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@vue/babel-preset-app": {
+      "version": "3.12.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-module-imports": "^7.0.0",
+        "@babel/plugin-proposal-class-properties": "^7.0.0",
+        "@babel/plugin-proposal-decorators": "^7.1.0",
+        "@babel/plugin-syntax-dynamic-import": "^7.0.0",
+        "@babel/plugin-syntax-jsx": "^7.0.0",
+        "@babel/plugin-transform-runtime": "^7.4.0",
+        "@babel/preset-env": "^7.0.0 < 7.4.0",
+        "@babel/runtime": "^7.0.0",
+        "@babel/runtime-corejs2": "^7.2.0",
+        "@vue/babel-preset-jsx": "^1.0.0",
+        "babel-plugin-dynamic-import-node": "^2.2.0",
+        "babel-plugin-module-resolver": "3.2.0",
+        "core-js": "^2.6.5"
+      }
+    },
+    "node_modules/@vue/babel-preset-app/node_modules/@babel/preset-env": {
+      "version": "7.3.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-module-imports": "^7.0.0",
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-proposal-async-generator-functions": "^7.2.0",
+        "@babel/plugin-proposal-json-strings": "^7.2.0",
+        "@babel/plugin-proposal-object-rest-spread": "^7.3.4",
+        "@babel/plugin-proposal-optional-catch-binding": "^7.2.0",
+        "@babel/plugin-proposal-unicode-property-regex": "^7.2.0",
+        "@babel/plugin-syntax-async-generators": "^7.2.0",
+        "@babel/plugin-syntax-json-strings": "^7.2.0",
+        "@babel/plugin-syntax-object-rest-spread": "^7.2.0",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.2.0",
+        "@babel/plugin-transform-arrow-functions": "^7.2.0",
+        "@babel/plugin-transform-async-to-generator": "^7.3.4",
+        "@babel/plugin-transform-block-scoped-functions": "^7.2.0",
+        "@babel/plugin-transform-block-scoping": "^7.3.4",
+        "@babel/plugin-transform-classes": "^7.3.4",
+        "@babel/plugin-transform-computed-properties": "^7.2.0",
+        "@babel/plugin-transform-destructuring": "^7.2.0",
+        "@babel/plugin-transform-dotall-regex": "^7.2.0",
+        "@babel/plugin-transform-duplicate-keys": "^7.2.0",
+        "@babel/plugin-transform-exponentiation-operator": "^7.2.0",
+        "@babel/plugin-transform-for-of": "^7.2.0",
+        "@babel/plugin-transform-function-name": "^7.2.0",
+        "@babel/plugin-transform-literals": "^7.2.0",
+        "@babel/plugin-transform-modules-amd": "^7.2.0",
+        "@babel/plugin-transform-modules-commonjs": "^7.2.0",
+        "@babel/plugin-transform-modules-systemjs": "^7.3.4",
+        "@babel/plugin-transform-modules-umd": "^7.2.0",
+        "@babel/plugin-transform-named-capturing-groups-regex": "^7.3.0",
+        "@babel/plugin-transform-new-target": "^7.0.0",
+        "@babel/plugin-transform-object-super": "^7.2.0",
+        "@babel/plugin-transform-parameters": "^7.2.0",
+        "@babel/plugin-transform-regenerator": "^7.3.4",
+        "@babel/plugin-transform-shorthand-properties": "^7.2.0",
+        "@babel/plugin-transform-spread": "^7.2.0",
+        "@babel/plugin-transform-sticky-regex": "^7.2.0",
+        "@babel/plugin-transform-template-literals": "^7.2.0",
+        "@babel/plugin-transform-typeof-symbol": "^7.2.0",
+        "@babel/plugin-transform-unicode-regex": "^7.2.0",
+        "browserslist": "^4.3.4",
+        "invariant": "^2.2.2",
+        "js-levenshtein": "^1.1.3",
+        "semver": "^5.3.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@vue/babel-preset-app/node_modules/semver": {
+      "version": "5.7.1",
+      "dev": true,
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/@vue/babel-preset-jsx": {
+      "version": "1.2.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1",
+        "@vue/babel-plugin-transform-vue-jsx": "^1.2.1",
+        "@vue/babel-sugar-composition-api-inject-h": "^1.2.1",
+        "@vue/babel-sugar-composition-api-render-instance": "^1.2.4",
+        "@vue/babel-sugar-functional-vue": "^1.2.2",
+        "@vue/babel-sugar-inject-h": "^1.2.2",
+        "@vue/babel-sugar-v-model": "^1.2.3",
+        "@vue/babel-sugar-v-on": "^1.2.3"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@vue/babel-sugar-composition-api-inject-h": {
+      "version": "1.2.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/plugin-syntax-jsx": "^7.2.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@vue/babel-sugar-composition-api-render-instance": {
+      "version": "1.2.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/plugin-syntax-jsx": "^7.2.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@vue/babel-sugar-functional-vue": {
+      "version": "1.2.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/plugin-syntax-jsx": "^7.2.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@vue/babel-sugar-inject-h": {
+      "version": "1.2.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/plugin-syntax-jsx": "^7.2.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@vue/babel-sugar-v-model": {
+      "version": "1.2.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/plugin-syntax-jsx": "^7.2.0",
+        "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1",
+        "@vue/babel-plugin-transform-vue-jsx": "^1.2.1",
+        "camelcase": "^5.0.0",
+        "html-tags": "^2.0.0",
+        "svg-tags": "^1.0.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@vue/babel-sugar-v-on": {
+      "version": "1.2.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/plugin-syntax-jsx": "^7.2.0",
+        "@vue/babel-plugin-transform-vue-jsx": "^1.2.1",
+        "camelcase": "^5.0.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@vue/cli-overlay": {
+      "version": "3.12.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@vue/cli-plugin-babel": {
+      "version": "3.12.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/core": "^7.0.0",
+        "@vue/babel-preset-app": "^3.12.1",
+        "@vue/cli-shared-utils": "^3.12.1",
+        "babel-loader": "^8.0.5",
+        "webpack": "^4.0.0"
+      }
+    },
+    "node_modules/@vue/cli-plugin-babel/node_modules/@vue/cli-shared-utils": {
+      "version": "3.12.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@hapi/joi": "^15.0.1",
+        "chalk": "^2.4.1",
+        "execa": "^1.0.0",
+        "launch-editor": "^2.2.1",
+        "lru-cache": "^5.1.1",
+        "node-ipc": "^9.1.1",
+        "open": "^6.3.0",
+        "ora": "^3.4.0",
+        "request": "^2.87.0",
+        "request-promise-native": "^1.0.7",
+        "semver": "^6.0.0",
+        "string.prototype.padstart": "^3.0.0"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint": {
+      "version": "3.12.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@vue/cli-shared-utils": "^3.12.1",
+        "babel-eslint": "^10.0.1",
+        "eslint-loader": "^2.1.2",
+        "globby": "^9.2.0",
+        "webpack": "^4.0.0",
+        "yorkie": "^2.0.0"
+      },
+      "optionalDependencies": {
+        "eslint": "^4.19.1",
+        "eslint-plugin-vue": "^4.7.1"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/@vue/cli-shared-utils": {
+      "version": "3.12.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@hapi/joi": "^15.0.1",
+        "chalk": "^2.4.1",
+        "execa": "^1.0.0",
+        "launch-editor": "^2.2.1",
+        "lru-cache": "^5.1.1",
+        "node-ipc": "^9.1.1",
+        "open": "^6.3.0",
+        "ora": "^3.4.0",
+        "request": "^2.87.0",
+        "request-promise-native": "^1.0.7",
+        "semver": "^6.0.0",
+        "string.prototype.padstart": "^3.0.0"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/acorn": {
+      "version": "5.7.4",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/acorn-jsx": {
+      "version": "3.0.1",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "acorn": "^3.0.4"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/acorn-jsx/node_modules/acorn": {
+      "version": "3.3.0",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/ajv": {
+      "version": "5.5.2",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "co": "^4.6.0",
+        "fast-deep-equal": "^1.0.0",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.3.0"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/ajv-keywords": {
+      "version": "2.1.1",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "peerDependencies": {
+        "ajv": "^5.0.0"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/ansi-regex": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/chardet": {
+      "version": "0.4.2",
+      "dev": true,
+      "license": "MIT",
+      "optional": true
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/cli-cursor": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "restore-cursor": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/cross-spawn": {
+      "version": "5.1.0",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "lru-cache": "^4.0.1",
+        "shebang-command": "^1.2.0",
+        "which": "^1.2.9"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/cross-spawn/node_modules/lru-cache": {
+      "version": "4.1.5",
+      "dev": true,
+      "license": "ISC",
+      "optional": true,
+      "dependencies": {
+        "pseudomap": "^1.0.2",
+        "yallist": "^2.1.2"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/debug": {
+      "version": "3.2.7",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "ms": "^2.1.1"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/doctrine": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "Apache-2.0",
+      "optional": true,
+      "dependencies": {
+        "esutils": "^2.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/eslint": {
+      "version": "4.19.1",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "ajv": "^5.3.0",
+        "babel-code-frame": "^6.22.0",
+        "chalk": "^2.1.0",
+        "concat-stream": "^1.6.0",
+        "cross-spawn": "^5.1.0",
+        "debug": "^3.1.0",
+        "doctrine": "^2.1.0",
+        "eslint-scope": "^3.7.1",
+        "eslint-visitor-keys": "^1.0.0",
+        "espree": "^3.5.4",
+        "esquery": "^1.0.0",
+        "esutils": "^2.0.2",
+        "file-entry-cache": "^2.0.0",
+        "functional-red-black-tree": "^1.0.1",
+        "glob": "^7.1.2",
+        "globals": "^11.0.1",
+        "ignore": "^3.3.3",
+        "imurmurhash": "^0.1.4",
+        "inquirer": "^3.0.6",
+        "is-resolvable": "^1.0.0",
+        "js-yaml": "^3.9.1",
+        "json-stable-stringify-without-jsonify": "^1.0.1",
+        "levn": "^0.3.0",
+        "lodash": "^4.17.4",
+        "minimatch": "^3.0.2",
+        "mkdirp": "^0.5.1",
+        "natural-compare": "^1.4.0",
+        "optionator": "^0.8.2",
+        "path-is-inside": "^1.0.2",
+        "pluralize": "^7.0.0",
+        "progress": "^2.0.0",
+        "regexpp": "^1.0.1",
+        "require-uncached": "^1.0.3",
+        "semver": "^5.3.0",
+        "strip-ansi": "^4.0.0",
+        "strip-json-comments": "~2.0.1",
+        "table": "4.0.2",
+        "text-table": "~0.2.0"
+      },
+      "bin": {
+        "eslint": "bin/eslint.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/eslint-plugin-vue": {
+      "version": "4.7.1",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "vue-eslint-parser": "^2.0.3"
+      },
+      "engines": {
+        "node": ">=4"
+      },
+      "peerDependencies": {
+        "eslint": "^3.18.0 || ^4.0.0"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/eslint-scope": {
+      "version": "3.7.3",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "optional": true,
+      "dependencies": {
+        "esrecurse": "^4.1.0",
+        "estraverse": "^4.1.1"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/eslint/node_modules/semver": {
+      "version": "5.7.1",
+      "dev": true,
+      "license": "ISC",
+      "optional": true,
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/espree": {
+      "version": "3.5.4",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "optional": true,
+      "dependencies": {
+        "acorn": "^5.5.0",
+        "acorn-jsx": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/external-editor": {
+      "version": "2.2.0",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "chardet": "^0.4.0",
+        "iconv-lite": "^0.4.17",
+        "tmp": "^0.0.33"
+      },
+      "engines": {
+        "node": ">=0.12"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/fast-deep-equal": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT",
+      "optional": true
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/figures": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "escape-string-regexp": "^1.0.5"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/file-entry-cache": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "flat-cache": "^1.2.1",
+        "object-assign": "^4.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/flat-cache": {
+      "version": "1.3.4",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "circular-json": "^0.3.1",
+        "graceful-fs": "^4.1.2",
+        "rimraf": "~2.6.2",
+        "write": "^0.2.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/ignore": {
+      "version": "3.3.10",
+      "dev": true,
+      "license": "MIT",
+      "optional": true
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/inquirer": {
+      "version": "3.3.0",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "ansi-escapes": "^3.0.0",
+        "chalk": "^2.0.0",
+        "cli-cursor": "^2.1.0",
+        "cli-width": "^2.0.0",
+        "external-editor": "^2.0.4",
+        "figures": "^2.0.0",
+        "lodash": "^4.3.0",
+        "mute-stream": "0.0.7",
+        "run-async": "^2.2.0",
+        "rx-lite": "^4.0.8",
+        "rx-lite-aggregates": "^4.0.8",
+        "string-width": "^2.1.0",
+        "strip-ansi": "^4.0.0",
+        "through": "^2.3.6"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/is-fullwidth-code-point": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/json-schema-traverse": {
+      "version": "0.3.1",
+      "dev": true,
+      "license": "MIT",
+      "optional": true
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/mimic-fn": {
+      "version": "1.2.0",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/onetime": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "mimic-fn": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/regexpp": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/restore-cursor": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "onetime": "^2.0.0",
+        "signal-exit": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/rimraf": {
+      "version": "2.6.3",
+      "dev": true,
+      "license": "ISC",
+      "optional": true,
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/slice-ansi": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "is-fullwidth-code-point": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/string-width": {
+      "version": "2.1.1",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/strip-ansi": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "ansi-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/table": {
+      "version": "4.0.2",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "optional": true,
+      "dependencies": {
+        "ajv": "^5.2.3",
+        "ajv-keywords": "^2.1.0",
+        "chalk": "^2.1.0",
+        "lodash": "^4.17.4",
+        "slice-ansi": "1.0.0",
+        "string-width": "^2.1.1"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/tmp": {
+      "version": "0.0.33",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "os-tmpdir": "~1.0.2"
+      },
+      "engines": {
+        "node": ">=0.6.0"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/vue-eslint-parser": {
+      "version": "2.0.3",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "debug": "^3.1.0",
+        "eslint-scope": "^3.7.1",
+        "eslint-visitor-keys": "^1.0.0",
+        "espree": "^3.5.2",
+        "esquery": "^1.0.0",
+        "lodash": "^4.17.4"
+      },
+      "engines": {
+        "node": ">=4"
+      },
+      "peerDependencies": {
+        "eslint": ">=3.9.0"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/write": {
+      "version": "0.2.1",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "mkdirp": "^0.5.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/@vue/cli-plugin-eslint/node_modules/yallist": {
+      "version": "2.1.2",
+      "dev": true,
+      "license": "ISC",
+      "optional": true
+    },
+    "node_modules/@vue/cli-service": {
+      "version": "3.12.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@intervolga/optimize-cssnano-plugin": "^1.0.5",
+        "@soda/friendly-errors-webpack-plugin": "^1.7.1",
+        "@vue/cli-overlay": "^3.12.1",
+        "@vue/cli-shared-utils": "^3.12.1",
+        "@vue/component-compiler-utils": "^3.0.0",
+        "@vue/preload-webpack-plugin": "^1.1.0",
+        "@vue/web-component-wrapper": "^1.2.0",
+        "acorn": "^6.1.1",
+        "acorn-walk": "^6.1.1",
+        "address": "^1.0.3",
+        "autoprefixer": "^9.5.1",
+        "browserslist": "^4.5.4",
+        "cache-loader": "^2.0.1",
+        "case-sensitive-paths-webpack-plugin": "^2.2.0",
+        "chalk": "^2.4.2",
+        "cli-highlight": "^2.1.0",
+        "clipboardy": "^2.0.0",
+        "cliui": "^5.0.0",
+        "copy-webpack-plugin": "^4.6.0",
+        "css-loader": "^1.0.1",
+        "cssnano": "^4.1.10",
+        "current-script-polyfill": "^1.0.0",
+        "debug": "^4.1.1",
+        "default-gateway": "^5.0.2",
+        "dotenv": "^7.0.0",
+        "dotenv-expand": "^5.1.0",
+        "escape-string-regexp": "^1.0.5",
+        "file-loader": "^3.0.1",
+        "fs-extra": "^7.0.1",
+        "globby": "^9.2.0",
+        "hash-sum": "^1.0.2",
+        "html-webpack-plugin": "^3.2.0",
+        "launch-editor-middleware": "^2.2.1",
+        "lodash.defaultsdeep": "^4.6.1",
+        "lodash.mapvalues": "^4.6.0",
+        "lodash.transform": "^4.6.0",
+        "mini-css-extract-plugin": "^0.8.0",
+        "minimist": "^1.2.0",
+        "ora": "^3.4.0",
+        "portfinder": "^1.0.20",
+        "postcss-loader": "^3.0.0",
+        "read-pkg": "^5.0.0",
+        "semver": "^6.0.0",
+        "slash": "^2.0.0",
+        "source-map-url": "^0.4.0",
+        "ssri": "^6.0.1",
+        "string.prototype.padend": "^3.0.0",
+        "terser-webpack-plugin": "^1.2.3",
+        "thread-loader": "^2.1.2",
+        "url-loader": "^1.1.2",
+        "vue-loader": "^15.7.0",
+        "webpack": "^4.0.0",
+        "webpack-bundle-analyzer": "^3.3.0",
+        "webpack-chain": "^4.11.0",
+        "webpack-dev-server": "^3.4.1",
+        "webpack-merge": "^4.2.1"
+      },
+      "bin": {
+        "vue-cli-service": "bin/vue-cli-service.js"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "peerDependencies": {
+        "vue-template-compiler": "^2.0.0"
+      }
+    },
+    "node_modules/@vue/cli-service/node_modules/@vue/cli-shared-utils": {
+      "version": "3.12.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@hapi/joi": "^15.0.1",
+        "chalk": "^2.4.1",
+        "execa": "^1.0.0",
+        "launch-editor": "^2.2.1",
+        "lru-cache": "^5.1.1",
+        "node-ipc": "^9.1.1",
+        "open": "^6.3.0",
+        "ora": "^3.4.0",
+        "request": "^2.87.0",
+        "request-promise-native": "^1.0.7",
+        "semver": "^6.0.0",
+        "string.prototype.padstart": "^3.0.0"
+      }
+    },
+    "node_modules/@vue/cli-service/node_modules/acorn": {
+      "version": "6.4.2",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/@vue/cli-service/node_modules/commander": {
+      "version": "2.20.3",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@vue/cli-service/node_modules/css-loader": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "babel-code-frame": "^6.26.0",
+        "css-selector-tokenizer": "^0.7.0",
+        "icss-utils": "^2.1.0",
+        "loader-utils": "^1.0.2",
+        "lodash": "^4.17.11",
+        "postcss": "^6.0.23",
+        "postcss-modules-extract-imports": "^1.2.0",
+        "postcss-modules-local-by-default": "^1.2.0",
+        "postcss-modules-scope": "^1.1.0",
+        "postcss-modules-values": "^1.3.0",
+        "postcss-value-parser": "^3.3.0",
+        "source-list-map": "^2.0.0"
+      },
+      "engines": {
+        "node": ">= 6.9.0 <7.0.0 || >= 8.9.0"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0"
+      }
+    },
+    "node_modules/@vue/cli-service/node_modules/gzip-size": {
+      "version": "5.1.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "duplexer": "^0.1.1",
+        "pify": "^4.0.1"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/@vue/cli-service/node_modules/icss-utils": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "postcss": "^6.0.1"
+      }
+    },
+    "node_modules/@vue/cli-service/node_modules/lodash": {
+      "version": "4.17.21",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@vue/cli-service/node_modules/pify": {
+      "version": "4.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/@vue/cli-service/node_modules/postcss": {
+      "version": "6.0.23",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "chalk": "^2.4.1",
+        "source-map": "^0.6.1",
+        "supports-color": "^5.4.0"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/@vue/cli-service/node_modules/postcss-modules-extract-imports": {
+      "version": "1.2.1",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "postcss": "^6.0.1"
+      }
+    },
+    "node_modules/@vue/cli-service/node_modules/postcss-modules-local-by-default": {
+      "version": "1.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "css-selector-tokenizer": "^0.7.0",
+        "postcss": "^6.0.1"
+      }
+    },
+    "node_modules/@vue/cli-service/node_modules/postcss-modules-scope": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "css-selector-tokenizer": "^0.7.0",
+        "postcss": "^6.0.1"
+      }
+    },
+    "node_modules/@vue/cli-service/node_modules/postcss-modules-values": {
+      "version": "1.3.0",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "icss-replace-symbols": "^1.1.0",
+        "postcss": "^6.0.1"
+      }
+    },
+    "node_modules/@vue/cli-service/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@vue/cli-service/node_modules/source-map": {
+      "version": "0.6.1",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/@vue/cli-service/node_modules/webpack-bundle-analyzer": {
+      "version": "3.9.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "acorn": "^7.1.1",
+        "acorn-walk": "^7.1.1",
+        "bfj": "^6.1.1",
+        "chalk": "^2.4.1",
+        "commander": "^2.18.0",
+        "ejs": "^2.6.1",
+        "express": "^4.16.3",
+        "filesize": "^3.6.1",
+        "gzip-size": "^5.0.0",
+        "lodash": "^4.17.19",
+        "mkdirp": "^0.5.1",
+        "opener": "^1.5.1",
+        "ws": "^6.0.0"
+      },
+      "bin": {
+        "webpack-bundle-analyzer": "lib/bin/analyzer.js"
+      },
+      "engines": {
+        "node": ">= 6.14.4"
+      }
+    },
+    "node_modules/@vue/cli-service/node_modules/webpack-bundle-analyzer/node_modules/acorn": {
+      "version": "7.4.1",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/@vue/cli-service/node_modules/webpack-bundle-analyzer/node_modules/acorn-walk": {
+      "version": "7.2.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/@vue/cli-service/node_modules/ws": {
+      "version": "6.2.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "async-limiter": "~1.0.0"
+      }
+    },
+    "node_modules/@vue/component-compiler-utils": {
+      "version": "3.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "consolidate": "^0.15.1",
+        "hash-sum": "^1.0.2",
+        "lru-cache": "^4.1.2",
+        "merge-source-map": "^1.1.0",
+        "postcss": "^7.0.36",
+        "postcss-selector-parser": "^6.0.2",
+        "source-map": "~0.6.1",
+        "vue-template-es2015-compiler": "^1.9.0"
+      },
+      "optionalDependencies": {
+        "prettier": "^1.18.2 || ^2.0.0"
+      }
+    },
+    "node_modules/@vue/component-compiler-utils/node_modules/lru-cache": {
+      "version": "4.1.5",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "pseudomap": "^1.0.2",
+        "yallist": "^2.1.2"
+      }
+    },
+    "node_modules/@vue/component-compiler-utils/node_modules/source-map": {
+      "version": "0.6.1",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/@vue/component-compiler-utils/node_modules/yallist": {
+      "version": "2.1.2",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/@vue/preload-webpack-plugin": {
+      "version": "1.1.2",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=6.0.0"
+      },
+      "peerDependencies": {
+        "html-webpack-plugin": ">=2.26.0",
+        "webpack": ">=4.0.0"
+      }
+    },
+    "node_modules/@vue/web-component-wrapper": {
+      "version": "1.3.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@webassemblyjs/ast": {
+      "version": "1.9.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@webassemblyjs/helper-module-context": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/wast-parser": "1.9.0"
+      }
+    },
+    "node_modules/@webassemblyjs/floating-point-hex-parser": {
+      "version": "1.9.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@webassemblyjs/helper-api-error": {
+      "version": "1.9.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@webassemblyjs/helper-buffer": {
+      "version": "1.9.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@webassemblyjs/helper-code-frame": {
+      "version": "1.9.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@webassemblyjs/wast-printer": "1.9.0"
+      }
+    },
+    "node_modules/@webassemblyjs/helper-fsm": {
+      "version": "1.9.0",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/@webassemblyjs/helper-module-context": {
+      "version": "1.9.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@webassemblyjs/ast": "1.9.0"
+      }
+    },
+    "node_modules/@webassemblyjs/helper-wasm-bytecode": {
+      "version": "1.9.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@webassemblyjs/helper-wasm-section": {
+      "version": "1.9.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-buffer": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/wasm-gen": "1.9.0"
+      }
+    },
+    "node_modules/@webassemblyjs/ieee754": {
+      "version": "1.9.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@xtuc/ieee754": "^1.2.0"
+      }
+    },
+    "node_modules/@webassemblyjs/leb128": {
+      "version": "1.9.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "node_modules/@webassemblyjs/utf8": {
+      "version": "1.9.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@webassemblyjs/wasm-edit": {
+      "version": "1.9.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-buffer": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/helper-wasm-section": "1.9.0",
+        "@webassemblyjs/wasm-gen": "1.9.0",
+        "@webassemblyjs/wasm-opt": "1.9.0",
+        "@webassemblyjs/wasm-parser": "1.9.0",
+        "@webassemblyjs/wast-printer": "1.9.0"
+      }
+    },
+    "node_modules/@webassemblyjs/wasm-gen": {
+      "version": "1.9.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/ieee754": "1.9.0",
+        "@webassemblyjs/leb128": "1.9.0",
+        "@webassemblyjs/utf8": "1.9.0"
+      }
+    },
+    "node_modules/@webassemblyjs/wasm-opt": {
+      "version": "1.9.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-buffer": "1.9.0",
+        "@webassemblyjs/wasm-gen": "1.9.0",
+        "@webassemblyjs/wasm-parser": "1.9.0"
+      }
+    },
+    "node_modules/@webassemblyjs/wasm-parser": {
+      "version": "1.9.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-api-error": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/ieee754": "1.9.0",
+        "@webassemblyjs/leb128": "1.9.0",
+        "@webassemblyjs/utf8": "1.9.0"
+      }
+    },
+    "node_modules/@webassemblyjs/wast-parser": {
+      "version": "1.9.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/floating-point-hex-parser": "1.9.0",
+        "@webassemblyjs/helper-api-error": "1.9.0",
+        "@webassemblyjs/helper-code-frame": "1.9.0",
+        "@webassemblyjs/helper-fsm": "1.9.0",
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "node_modules/@webassemblyjs/wast-printer": {
+      "version": "1.9.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/wast-parser": "1.9.0",
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "node_modules/@xtuc/ieee754": {
+      "version": "1.2.0",
+      "dev": true,
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/@xtuc/long": {
+      "version": "4.2.2",
+      "dev": true,
+      "license": "Apache-2.0"
+    },
+    "node_modules/accepts": {
+      "version": "1.3.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "mime-types": "~2.1.24",
+        "negotiator": "0.6.2"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/acorn": {
+      "version": "7.4.1",
+      "dev": true,
+      "license": "MIT",
+      "peer": true,
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/acorn-jsx": {
+      "version": "5.3.2",
+      "dev": true,
+      "license": "MIT",
+      "peerDependencies": {
+        "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+      }
+    },
+    "node_modules/acorn-walk": {
+      "version": "6.2.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/address": {
+      "version": "1.1.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.12.0"
+      }
+    },
+    "node_modules/adler-32": {
+      "version": "1.2.0",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "exit-on-epipe": "~1.0.1",
+        "printj": "~1.1.0"
+      },
+      "bin": {
+        "adler32": "bin/adler32.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/aggregate-error": {
+      "version": "3.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "clean-stack": "^2.0.0",
+        "indent-string": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/aggregate-error/node_modules/indent-string": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ajv": {
+      "version": "6.12.6",
+      "license": "MIT",
+      "dependencies": {
+        "fast-deep-equal": "^3.1.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/epoberezkin"
+      }
+    },
+    "node_modules/ajv-errors": {
+      "version": "1.0.1",
+      "license": "MIT",
+      "peerDependencies": {
+        "ajv": ">=5.0.0"
+      }
+    },
+    "node_modules/ajv-keywords": {
+      "version": "3.5.2",
+      "license": "MIT",
+      "peerDependencies": {
+        "ajv": "^6.9.1"
+      }
+    },
+    "node_modules/alphanum-sort": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/ansi-colors": {
+      "version": "3.2.3",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/ansi-escapes": {
+      "version": "3.2.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/ansi-html-community": {
+      "version": "0.0.8",
+      "dev": true,
+      "engines": [
+        "node >= 0.8.0"
+      ],
+      "license": "Apache-2.0",
+      "bin": {
+        "ansi-html": "bin/ansi-html"
+      }
+    },
+    "node_modules/ansi-regex": {
+      "version": "5.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/any-promise": {
+      "version": "1.3.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/anymatch": {
+      "version": "3.1.2",
+      "dev": true,
+      "license": "ISC",
+      "optional": true,
+      "dependencies": {
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/aproba": {
+      "version": "1.2.0",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/arch": {
+      "version": "2.2.0",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT"
+    },
+    "node_modules/argparse": {
+      "version": "1.0.10",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "sprintf-js": "~1.0.2"
+      }
+    },
+    "node_modules/arr-diff": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/arr-flatten": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/arr-union": {
+      "version": "3.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/array-flatten": {
+      "version": "1.1.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/array-union": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "array-uniq": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/array-uniq": {
+      "version": "1.0.3",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/array-unique": {
+      "version": "0.3.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/asn1": {
+      "version": "0.2.6",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "safer-buffer": "~2.1.0"
+      }
+    },
+    "node_modules/asn1.js": {
+      "version": "5.4.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "bn.js": "^4.0.0",
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0",
+        "safer-buffer": "^2.1.0"
+      }
+    },
+    "node_modules/asn1.js/node_modules/bn.js": {
+      "version": "4.12.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/assert": {
+      "version": "1.5.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "object-assign": "^4.1.1",
+        "util": "0.10.3"
+      }
+    },
+    "node_modules/assert-plus": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/assert/node_modules/inherits": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/assert/node_modules/util": {
+      "version": "0.10.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "2.0.1"
+      }
+    },
+    "node_modules/assign-symbols": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/astral-regex": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/async-each": {
+      "version": "1.0.3",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/async-limiter": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/async-validator": {
+      "version": "1.8.5",
+      "dependencies": {
+        "babel-runtime": "6.x"
+      }
+    },
+    "node_modules/asynckit": {
+      "version": "0.4.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/atob": {
+      "version": "2.1.2",
+      "dev": true,
+      "license": "(MIT OR Apache-2.0)",
+      "bin": {
+        "atob": "bin/atob.js"
+      },
+      "engines": {
+        "node": ">= 4.5.0"
+      }
+    },
+    "node_modules/autoprefixer": {
+      "version": "9.8.8",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "browserslist": "^4.12.0",
+        "caniuse-lite": "^1.0.30001109",
+        "normalize-range": "^0.1.2",
+        "num2fraction": "^1.2.2",
+        "picocolors": "^0.2.1",
+        "postcss": "^7.0.32",
+        "postcss-value-parser": "^4.1.0"
+      },
+      "bin": {
+        "autoprefixer": "bin/autoprefixer"
+      },
+      "funding": {
+        "type": "tidelift",
+        "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+      }
+    },
+    "node_modules/aws-sign2": {
+      "version": "0.7.0",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/aws4": {
+      "version": "1.11.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/axios": {
+      "version": "0.19.2",
+      "license": "MIT",
+      "dependencies": {
+        "follow-redirects": "1.5.10"
+      }
+    },
+    "node_modules/axios/node_modules/debug": {
+      "version": "3.1.0",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/axios/node_modules/follow-redirects": {
+      "version": "1.5.10",
+      "license": "MIT",
+      "dependencies": {
+        "debug": "=3.1.0"
+      },
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/axios/node_modules/ms": {
+      "version": "2.0.0",
+      "license": "MIT"
+    },
+    "node_modules/babel-code-frame": {
+      "version": "6.26.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "chalk": "^1.1.3",
+        "esutils": "^2.0.2",
+        "js-tokens": "^3.0.2"
+      }
+    },
+    "node_modules/babel-code-frame/node_modules/ansi-regex": {
+      "version": "2.1.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/babel-code-frame/node_modules/ansi-styles": {
+      "version": "2.2.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/babel-code-frame/node_modules/chalk": {
+      "version": "1.1.3",
+      "dev": true,
+      "license": "MIT",
+      "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/babel-code-frame/node_modules/js-tokens": {
+      "version": "3.0.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/babel-code-frame/node_modules/strip-ansi": {
+      "version": "3.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/babel-code-frame/node_modules/supports-color": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/babel-eslint": {
+      "version": "10.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.0.0",
+        "@babel/parser": "^7.7.0",
+        "@babel/traverse": "^7.7.0",
+        "@babel/types": "^7.7.0",
+        "eslint-visitor-keys": "^1.0.0",
+        "resolve": "^1.12.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "peerDependencies": {
+        "eslint": ">= 4.12.1"
+      }
+    },
+    "node_modules/babel-helper-vue-jsx-merge-props": {
+      "version": "2.0.3",
+      "license": "MIT"
+    },
+    "node_modules/babel-loader": {
+      "version": "8.2.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "find-cache-dir": "^3.3.1",
+        "loader-utils": "^1.4.0",
+        "make-dir": "^3.1.0",
+        "schema-utils": "^2.6.5"
+      },
+      "engines": {
+        "node": ">= 8.9"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0",
+        "webpack": ">=2"
+      }
+    },
+    "node_modules/babel-plugin-dynamic-import-node": {
+      "version": "2.3.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "object.assign": "^4.1.0"
+      }
+    },
+    "node_modules/babel-plugin-module-resolver": {
+      "version": "3.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "find-babel-config": "^1.1.0",
+        "glob": "^7.1.2",
+        "pkg-up": "^2.0.0",
+        "reselect": "^3.0.1",
+        "resolve": "^1.4.0"
+      },
+      "engines": {
+        "node": ">= 6.0.0"
+      }
+    },
+    "node_modules/babel-plugin-polyfill-corejs2": {
+      "version": "0.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/compat-data": "^7.13.11",
+        "@babel/helper-define-polyfill-provider": "^0.3.0",
+        "semver": "^6.1.1"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/babel-plugin-polyfill-corejs3": {
+      "version": "0.4.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-define-polyfill-provider": "^0.3.0",
+        "core-js-compat": "^3.18.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/babel-plugin-polyfill-regenerator": {
+      "version": "0.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-define-polyfill-provider": "^0.3.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/babel-plugin-transform-remove-console": {
+      "version": "6.9.4",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/babel-plugin-transform-runtime": {
+      "version": "6.23.0",
+      "license": "MIT",
+      "dependencies": {
+        "babel-runtime": "^6.22.0"
+      }
+    },
+    "node_modules/babel-polyfill": {
+      "version": "6.26.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "babel-runtime": "^6.26.0",
+        "core-js": "^2.5.0",
+        "regenerator-runtime": "^0.10.5"
+      }
+    },
+    "node_modules/babel-polyfill/node_modules/regenerator-runtime": {
+      "version": "0.10.5",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/babel-runtime": {
+      "version": "6.26.0",
+      "license": "MIT",
+      "dependencies": {
+        "core-js": "^2.4.0",
+        "regenerator-runtime": "^0.11.0"
+      }
+    },
+    "node_modules/babel-runtime/node_modules/regenerator-runtime": {
+      "version": "0.11.1",
+      "license": "MIT"
+    },
+    "node_modules/balanced-match": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/base": {
+      "version": "0.11.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cache-base": "^1.0.1",
+        "class-utils": "^0.3.5",
+        "component-emitter": "^1.2.1",
+        "define-property": "^1.0.0",
+        "isobject": "^3.0.1",
+        "mixin-deep": "^1.2.0",
+        "pascalcase": "^0.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/base/node_modules/define-property": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-descriptor": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/base64-js": {
+      "version": "1.5.1",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT"
+    },
+    "node_modules/batch": {
+      "version": "0.6.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/batch-processor": {
+      "version": "1.0.0",
+      "license": "MIT"
+    },
+    "node_modules/bcrypt-pbkdf": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "tweetnacl": "^0.14.3"
+      }
+    },
+    "node_modules/bfj": {
+      "version": "6.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "bluebird": "^3.5.5",
+        "check-types": "^8.0.3",
+        "hoopy": "^0.1.4",
+        "tryer": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 6.0.0"
+      }
+    },
+    "node_modules/big.js": {
+      "version": "5.2.2",
+      "license": "MIT",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/binary-extensions": {
+      "version": "1.13.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/bluebird": {
+      "version": "3.7.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/bn.js": {
+      "version": "5.2.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/body-parser": {
+      "version": "1.19.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "bytes": "3.1.1",
+        "content-type": "~1.0.4",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "http-errors": "1.8.1",
+        "iconv-lite": "0.4.24",
+        "on-finished": "~2.3.0",
+        "qs": "6.9.6",
+        "raw-body": "2.4.2",
+        "type-is": "~1.6.18"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/body-parser/node_modules/debug": {
+      "version": "2.6.9",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/body-parser/node_modules/ms": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/body-parser/node_modules/qs": {
+      "version": "6.9.6",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/bonjour": {
+      "version": "3.5.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "array-flatten": "^2.1.0",
+        "deep-equal": "^1.0.1",
+        "dns-equal": "^1.0.0",
+        "dns-txt": "^2.0.2",
+        "multicast-dns": "^6.0.1",
+        "multicast-dns-service-types": "^1.1.0"
+      }
+    },
+    "node_modules/bonjour/node_modules/array-flatten": {
+      "version": "2.1.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/boolbase": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/bootstrap": {
+      "version": "4.6.1",
+      "license": "MIT",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/bootstrap"
+      },
+      "peerDependencies": {
+        "jquery": "1.9.1 - 3",
+        "popper.js": "^1.16.1"
+      }
+    },
+    "node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/braces": {
+      "version": "2.3.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "arr-flatten": "^1.1.0",
+        "array-unique": "^0.3.2",
+        "extend-shallow": "^2.0.1",
+        "fill-range": "^4.0.0",
+        "isobject": "^3.0.1",
+        "repeat-element": "^1.1.2",
+        "snapdragon": "^0.8.1",
+        "snapdragon-node": "^2.0.1",
+        "split-string": "^3.0.2",
+        "to-regex": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/braces/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/braces/node_modules/is-extendable": {
+      "version": "0.1.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/brorand": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/browserify-aes": {
+      "version": "1.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "buffer-xor": "^1.0.3",
+        "cipher-base": "^1.0.0",
+        "create-hash": "^1.1.0",
+        "evp_bytestokey": "^1.0.3",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "node_modules/browserify-cipher": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "browserify-aes": "^1.0.4",
+        "browserify-des": "^1.0.0",
+        "evp_bytestokey": "^1.0.0"
+      }
+    },
+    "node_modules/browserify-des": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cipher-base": "^1.0.1",
+        "des.js": "^1.0.0",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      }
+    },
+    "node_modules/browserify-rsa": {
+      "version": "4.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "bn.js": "^5.0.0",
+        "randombytes": "^2.0.1"
+      }
+    },
+    "node_modules/browserify-sign": {
+      "version": "4.2.1",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "bn.js": "^5.1.1",
+        "browserify-rsa": "^4.0.1",
+        "create-hash": "^1.2.0",
+        "create-hmac": "^1.1.7",
+        "elliptic": "^6.5.3",
+        "inherits": "^2.0.4",
+        "parse-asn1": "^5.1.5",
+        "readable-stream": "^3.6.0",
+        "safe-buffer": "^5.2.0"
+      }
+    },
+    "node_modules/browserify-sign/node_modules/readable-stream": {
+      "version": "3.6.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "string_decoder": "^1.1.1",
+        "util-deprecate": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/browserify-sign/node_modules/safe-buffer": {
+      "version": "5.2.1",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT"
+    },
+    "node_modules/browserify-zlib": {
+      "version": "0.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "pako": "~1.0.5"
+      }
+    },
+    "node_modules/browserslist": {
+      "version": "4.19.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "caniuse-lite": "^1.0.30001286",
+        "electron-to-chromium": "^1.4.17",
+        "escalade": "^3.1.1",
+        "node-releases": "^2.0.1",
+        "picocolors": "^1.0.0"
+      },
+      "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/browserslist/node_modules/picocolors": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/buffer": {
+      "version": "4.9.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "base64-js": "^1.0.2",
+        "ieee754": "^1.1.4",
+        "isarray": "^1.0.0"
+      }
+    },
+    "node_modules/buffer-from": {
+      "version": "1.1.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/buffer-indexof": {
+      "version": "1.1.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/buffer-xor": {
+      "version": "1.0.3",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/builtin-status-codes": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/bytes": {
+      "version": "3.1.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/cacache": {
+      "version": "12.0.4",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "bluebird": "^3.5.5",
+        "chownr": "^1.1.1",
+        "figgy-pudding": "^3.5.1",
+        "glob": "^7.1.4",
+        "graceful-fs": "^4.1.15",
+        "infer-owner": "^1.0.3",
+        "lru-cache": "^5.1.1",
+        "mississippi": "^3.0.0",
+        "mkdirp": "^0.5.1",
+        "move-concurrently": "^1.0.1",
+        "promise-inflight": "^1.0.1",
+        "rimraf": "^2.6.3",
+        "ssri": "^6.0.1",
+        "unique-filename": "^1.1.1",
+        "y18n": "^4.0.0"
+      }
+    },
+    "node_modules/cache-base": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "collection-visit": "^1.0.0",
+        "component-emitter": "^1.2.1",
+        "get-value": "^2.0.6",
+        "has-value": "^1.0.0",
+        "isobject": "^3.0.1",
+        "set-value": "^2.0.0",
+        "to-object-path": "^0.3.0",
+        "union-value": "^1.0.0",
+        "unset-value": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/cache-loader": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "loader-utils": "^1.1.0",
+        "mkdirp": "^0.5.1",
+        "neo-async": "^2.6.0",
+        "normalize-path": "^3.0.0",
+        "schema-utils": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 6.9.0"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0"
+      }
+    },
+    "node_modules/cache-loader/node_modules/schema-utils": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ajv": "^6.1.0",
+        "ajv-errors": "^1.0.0",
+        "ajv-keywords": "^3.1.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/cacheable-lookup": {
+      "version": "5.0.4",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10.6.0"
+      }
+    },
+    "node_modules/cacheable-request": {
+      "version": "7.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "clone-response": "^1.0.2",
+        "get-stream": "^5.1.0",
+        "http-cache-semantics": "^4.0.0",
+        "keyv": "^4.0.0",
+        "lowercase-keys": "^2.0.0",
+        "normalize-url": "^6.0.1",
+        "responselike": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/cacheable-request/node_modules/get-stream": {
+      "version": "5.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "pump": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/cacheable-request/node_modules/normalize-url": {
+      "version": "6.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/call-bind": {
+      "version": "1.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "function-bind": "^1.1.1",
+        "get-intrinsic": "^1.0.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/call-me-maybe": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/caller-callsite": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "callsites": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/caller-path": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "caller-callsite": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/callsites": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/camel-case": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "no-case": "^2.2.0",
+        "upper-case": "^1.1.1"
+      }
+    },
+    "node_modules/camelcase": {
+      "version": "5.3.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/caniuse-api": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "browserslist": "^4.0.0",
+        "caniuse-lite": "^1.0.0",
+        "lodash.memoize": "^4.1.2",
+        "lodash.uniq": "^4.5.0"
+      }
+    },
+    "node_modules/caniuse-lite": {
+      "version": "1.0.30001296",
+      "dev": true,
+      "license": "CC-BY-4.0",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/browserslist"
+      }
+    },
+    "node_modules/case-sensitive-paths-webpack-plugin": {
+      "version": "2.4.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/caseless": {
+      "version": "0.12.0",
+      "dev": true,
+      "license": "Apache-2.0"
+    },
+    "node_modules/cfb": {
+      "version": "1.2.1",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "adler-32": "~1.3.0",
+        "crc-32": "~1.2.0",
+        "printj": "~1.3.0"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/cfb/node_modules/adler-32": {
+      "version": "1.3.0",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "printj": "~1.2.2"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/cfb/node_modules/adler-32/node_modules/printj": {
+      "version": "1.2.3",
+      "license": "Apache-2.0",
+      "bin": {
+        "printj": "bin/printj.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/cfb/node_modules/printj": {
+      "version": "1.3.0",
+      "license": "Apache-2.0",
+      "bin": {
+        "printj": "bin/printj.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/chalk": {
+      "version": "2.4.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/chardet": {
+      "version": "0.7.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/check-types": {
+      "version": "8.0.3",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/chokidar": {
+      "version": "2.1.8",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "anymatch": "^2.0.0",
+        "async-each": "^1.0.1",
+        "braces": "^2.3.2",
+        "glob-parent": "^3.1.0",
+        "inherits": "^2.0.3",
+        "is-binary-path": "^1.0.0",
+        "is-glob": "^4.0.0",
+        "normalize-path": "^3.0.0",
+        "path-is-absolute": "^1.0.0",
+        "readdirp": "^2.2.1",
+        "upath": "^1.1.1"
+      },
+      "optionalDependencies": {
+        "fsevents": "^1.2.7"
+      }
+    },
+    "node_modules/chokidar/node_modules/anymatch": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "micromatch": "^3.1.4",
+        "normalize-path": "^2.1.1"
+      }
+    },
+    "node_modules/chokidar/node_modules/anymatch/node_modules/normalize-path": {
+      "version": "2.1.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "remove-trailing-separator": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/chownr": {
+      "version": "1.1.4",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/chrome-trace-event": {
+      "version": "1.0.3",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.0"
+      }
+    },
+    "node_modules/ci-info": {
+      "version": "1.6.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/cipher-base": {
+      "version": "1.0.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "node_modules/circular-json": {
+      "version": "0.3.3",
+      "dev": true,
+      "license": "MIT",
+      "optional": true
+    },
+    "node_modules/class-utils": {
+      "version": "0.3.6",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "arr-union": "^3.1.0",
+        "define-property": "^0.2.5",
+        "isobject": "^3.0.0",
+        "static-extend": "^0.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/class-utils/node_modules/define-property": {
+      "version": "0.2.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-descriptor": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/class-utils/node_modules/is-accessor-descriptor": {
+      "version": "0.1.6",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": {
+      "version": "3.2.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/class-utils/node_modules/is-buffer": {
+      "version": "1.1.6",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/class-utils/node_modules/is-data-descriptor": {
+      "version": "0.1.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": {
+      "version": "3.2.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/class-utils/node_modules/is-descriptor": {
+      "version": "0.1.6",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-accessor-descriptor": "^0.1.6",
+        "is-data-descriptor": "^0.1.4",
+        "kind-of": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/class-utils/node_modules/kind-of": {
+      "version": "5.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/clean-css": {
+      "version": "4.2.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "source-map": "~0.6.0"
+      },
+      "engines": {
+        "node": ">= 4.0"
+      }
+    },
+    "node_modules/clean-css/node_modules/source-map": {
+      "version": "0.6.1",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/clean-stack": {
+      "version": "2.2.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/cli-highlight": {
+      "version": "2.1.11",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "chalk": "^4.0.0",
+        "highlight.js": "^10.7.1",
+        "mz": "^2.4.0",
+        "parse5": "^5.1.1",
+        "parse5-htmlparser2-tree-adapter": "^6.0.0",
+        "yargs": "^16.0.0"
+      },
+      "bin": {
+        "highlight": "bin/highlight"
+      },
+      "engines": {
+        "node": ">=8.0.0",
+        "npm": ">=5.0.0"
+      }
+    },
+    "node_modules/cli-highlight/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/cli-highlight/node_modules/chalk": {
+      "version": "4.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/cli-highlight/node_modules/color-convert": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/cli-highlight/node_modules/color-name": {
+      "version": "1.1.4",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/cli-highlight/node_modules/has-flag": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/cli-highlight/node_modules/supports-color": {
+      "version": "7.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/cli-spinners": {
+      "version": "2.6.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/cli-width": {
+      "version": "2.2.1",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/clipboardy": {
+      "version": "2.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "arch": "^2.1.1",
+        "execa": "^1.0.0",
+        "is-wsl": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/cliui": {
+      "version": "5.0.0",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "string-width": "^3.1.0",
+        "strip-ansi": "^5.2.0",
+        "wrap-ansi": "^5.1.0"
+      }
+    },
+    "node_modules/cliui/node_modules/ansi-regex": {
+      "version": "4.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/cliui/node_modules/emoji-regex": {
+      "version": "7.0.3",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/cliui/node_modules/is-fullwidth-code-point": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/cliui/node_modules/string-width": {
+      "version": "3.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "emoji-regex": "^7.0.1",
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^5.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/cliui/node_modules/strip-ansi": {
+      "version": "5.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/clone": {
+      "version": "1.0.4",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/clone-response": {
+      "version": "1.0.2",
+      "license": "MIT",
+      "dependencies": {
+        "mimic-response": "^1.0.0"
+      }
+    },
+    "node_modules/co": {
+      "version": "4.6.0",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "engines": {
+        "iojs": ">= 1.0.0",
+        "node": ">= 0.12.0"
+      }
+    },
+    "node_modules/coa": {
+      "version": "2.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/q": "^1.5.1",
+        "chalk": "^2.4.1",
+        "q": "^1.1.2"
+      },
+      "engines": {
+        "node": ">= 4.0"
+      }
+    },
+    "node_modules/codepage": {
+      "version": "1.14.0",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "commander": "~2.14.1",
+        "exit-on-epipe": "~1.0.1"
+      },
+      "bin": {
+        "codepage": "bin/codepage.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/codepage/node_modules/commander": {
+      "version": "2.14.1",
+      "license": "MIT"
+    },
+    "node_modules/collection-visit": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "map-visit": "^1.0.0",
+        "object-visit": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/color": {
+      "version": "3.2.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^1.9.3",
+        "color-string": "^1.6.0"
+      }
+    },
+    "node_modules/color-convert": {
+      "version": "1.9.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/color-name": {
+      "version": "1.1.3",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/color-string": {
+      "version": "1.9.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "^1.0.0",
+        "simple-swizzle": "^0.2.2"
+      }
+    },
+    "node_modules/combined-stream": {
+      "version": "1.0.8",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "delayed-stream": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/commander": {
+      "version": "2.15.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/commondir": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/component-emitter": {
+      "version": "1.3.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/compressible": {
+      "version": "2.0.18",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "mime-db": ">= 1.43.0 < 2"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/compression": {
+      "version": "1.7.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "accepts": "~1.3.5",
+        "bytes": "3.0.0",
+        "compressible": "~2.0.16",
+        "debug": "2.6.9",
+        "on-headers": "~1.0.2",
+        "safe-buffer": "5.1.2",
+        "vary": "~1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/compression-webpack-plugin": {
+      "version": "5.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cacache": "^15.0.5",
+        "find-cache-dir": "^3.3.1",
+        "schema-utils": "^2.7.0",
+        "serialize-javascript": "^4.0.0",
+        "webpack-sources": "^1.4.3"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0 || ^5.0.0"
+      }
+    },
+    "node_modules/compression-webpack-plugin/node_modules/cacache": {
+      "version": "15.3.0",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "@npmcli/fs": "^1.0.0",
+        "@npmcli/move-file": "^1.0.1",
+        "chownr": "^2.0.0",
+        "fs-minipass": "^2.0.0",
+        "glob": "^7.1.4",
+        "infer-owner": "^1.0.4",
+        "lru-cache": "^6.0.0",
+        "minipass": "^3.1.1",
+        "minipass-collect": "^1.0.2",
+        "minipass-flush": "^1.0.5",
+        "minipass-pipeline": "^1.2.2",
+        "mkdirp": "^1.0.3",
+        "p-map": "^4.0.0",
+        "promise-inflight": "^1.0.1",
+        "rimraf": "^3.0.2",
+        "ssri": "^8.0.1",
+        "tar": "^6.0.2",
+        "unique-filename": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/compression-webpack-plugin/node_modules/chownr": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "ISC",
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/compression-webpack-plugin/node_modules/lru-cache": {
+      "version": "6.0.0",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/compression-webpack-plugin/node_modules/mkdirp": {
+      "version": "1.0.4",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "mkdirp": "bin/cmd.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/compression-webpack-plugin/node_modules/p-map": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "aggregate-error": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/compression-webpack-plugin/node_modules/rimraf": {
+      "version": "3.0.2",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/compression-webpack-plugin/node_modules/ssri": {
+      "version": "8.0.1",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "minipass": "^3.1.1"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/compression-webpack-plugin/node_modules/yallist": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/compression/node_modules/bytes": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/compression/node_modules/debug": {
+      "version": "2.6.9",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/compression/node_modules/ms": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/concat-map": {
+      "version": "0.0.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/concat-stream": {
+      "version": "1.6.2",
+      "dev": true,
+      "engines": [
+        "node >= 0.8"
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "buffer-from": "^1.0.0",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.2.2",
+        "typedarray": "^0.0.6"
+      }
+    },
+    "node_modules/connect-history-api-fallback": {
+      "version": "1.6.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/console-browserify": {
+      "version": "1.2.0",
+      "dev": true
+    },
+    "node_modules/consolidate": {
+      "version": "0.15.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "bluebird": "^3.1.1"
+      },
+      "engines": {
+        "node": ">= 0.10.0"
+      }
+    },
+    "node_modules/constants-browserify": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/content-disposition": {
+      "version": "0.5.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "safe-buffer": "5.2.1"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/content-disposition/node_modules/safe-buffer": {
+      "version": "5.2.1",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT"
+    },
+    "node_modules/content-type": {
+      "version": "1.0.4",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/convert-source-map": {
+      "version": "1.8.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "safe-buffer": "~5.1.1"
+      }
+    },
+    "node_modules/cookie": {
+      "version": "0.4.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/cookie-signature": {
+      "version": "1.0.6",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/copy-anything": {
+      "version": "2.0.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-what": "^3.12.0"
+      }
+    },
+    "node_modules/copy-concurrently": {
+      "version": "1.0.5",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "aproba": "^1.1.1",
+        "fs-write-stream-atomic": "^1.0.8",
+        "iferr": "^0.1.5",
+        "mkdirp": "^0.5.1",
+        "rimraf": "^2.5.4",
+        "run-queue": "^1.0.0"
+      }
+    },
+    "node_modules/copy-descriptor": {
+      "version": "0.1.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/copy-webpack-plugin": {
+      "version": "4.6.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cacache": "^10.0.4",
+        "find-cache-dir": "^1.0.0",
+        "globby": "^7.1.1",
+        "is-glob": "^4.0.0",
+        "loader-utils": "^1.1.0",
+        "minimatch": "^3.0.4",
+        "p-limit": "^1.0.0",
+        "serialize-javascript": "^1.4.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/cacache": {
+      "version": "10.0.4",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "bluebird": "^3.5.1",
+        "chownr": "^1.0.1",
+        "glob": "^7.1.2",
+        "graceful-fs": "^4.1.11",
+        "lru-cache": "^4.1.1",
+        "mississippi": "^2.0.0",
+        "mkdirp": "^0.5.1",
+        "move-concurrently": "^1.0.1",
+        "promise-inflight": "^1.0.1",
+        "rimraf": "^2.6.2",
+        "ssri": "^5.2.4",
+        "unique-filename": "^1.1.0",
+        "y18n": "^4.0.0"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/find-cache-dir": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "commondir": "^1.0.1",
+        "make-dir": "^1.0.0",
+        "pkg-dir": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/find-up": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "locate-path": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/globby": {
+      "version": "7.1.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "array-union": "^1.0.1",
+        "dir-glob": "^2.0.0",
+        "glob": "^7.1.2",
+        "ignore": "^3.3.5",
+        "pify": "^3.0.0",
+        "slash": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/ignore": {
+      "version": "3.3.10",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/copy-webpack-plugin/node_modules/locate-path": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-locate": "^2.0.0",
+        "path-exists": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/lru-cache": {
+      "version": "4.1.5",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "pseudomap": "^1.0.2",
+        "yallist": "^2.1.2"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/make-dir": {
+      "version": "1.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "pify": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/mississippi": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "concat-stream": "^1.5.0",
+        "duplexify": "^3.4.2",
+        "end-of-stream": "^1.1.0",
+        "flush-write-stream": "^1.0.0",
+        "from2": "^2.1.0",
+        "parallel-transform": "^1.1.0",
+        "pump": "^2.0.1",
+        "pumpify": "^1.3.3",
+        "stream-each": "^1.1.0",
+        "through2": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/p-limit": {
+      "version": "1.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-try": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/p-locate": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-limit": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/p-try": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/pify": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/pkg-dir": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/pump": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/serialize-javascript": {
+      "version": "1.9.1",
+      "dev": true,
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/copy-webpack-plugin/node_modules/slash": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/ssri": {
+      "version": "5.3.0",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "safe-buffer": "^5.1.1"
+      }
+    },
+    "node_modules/copy-webpack-plugin/node_modules/yallist": {
+      "version": "2.1.2",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/core-js": {
+      "version": "2.6.12",
+      "hasInstallScript": true,
+      "license": "MIT"
+    },
+    "node_modules/core-js-compat": {
+      "version": "3.20.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "browserslist": "^4.19.1",
+        "semver": "7.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/core-js"
+      }
+    },
+    "node_modules/core-js-compat/node_modules/semver": {
+      "version": "7.0.0",
+      "dev": true,
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/core-js-pure": {
+      "version": "3.20.2",
+      "hasInstallScript": true,
+      "license": "MIT",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/core-js"
+      }
+    },
+    "node_modules/core-util-is": {
+      "version": "1.0.3",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/cosmiconfig": {
+      "version": "5.2.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "import-fresh": "^2.0.0",
+        "is-directory": "^0.3.1",
+        "js-yaml": "^3.13.1",
+        "parse-json": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/crc-32": {
+      "version": "1.2.0",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "exit-on-epipe": "~1.0.1",
+        "printj": "~1.1.0"
+      },
+      "bin": {
+        "crc32": "bin/crc32.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/create-ecdh": {
+      "version": "4.0.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "bn.js": "^4.1.0",
+        "elliptic": "^6.5.3"
+      }
+    },
+    "node_modules/create-ecdh/node_modules/bn.js": {
+      "version": "4.12.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/create-hash": {
+      "version": "1.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cipher-base": "^1.0.1",
+        "inherits": "^2.0.1",
+        "md5.js": "^1.3.4",
+        "ripemd160": "^2.0.1",
+        "sha.js": "^2.4.0"
+      }
+    },
+    "node_modules/create-hmac": {
+      "version": "1.1.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cipher-base": "^1.0.3",
+        "create-hash": "^1.1.0",
+        "inherits": "^2.0.1",
+        "ripemd160": "^2.0.0",
+        "safe-buffer": "^5.0.1",
+        "sha.js": "^2.4.8"
+      }
+    },
+    "node_modules/cross-spawn": {
+      "version": "6.0.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "nice-try": "^1.0.4",
+        "path-key": "^2.0.1",
+        "semver": "^5.5.0",
+        "shebang-command": "^1.2.0",
+        "which": "^1.2.9"
+      },
+      "engines": {
+        "node": ">=4.8"
+      }
+    },
+    "node_modules/cross-spawn/node_modules/semver": {
+      "version": "5.7.1",
+      "dev": true,
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/crypto-browserify": {
+      "version": "3.12.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "browserify-cipher": "^1.0.0",
+        "browserify-sign": "^4.0.0",
+        "create-ecdh": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "create-hmac": "^1.1.0",
+        "diffie-hellman": "^5.0.0",
+        "inherits": "^2.0.1",
+        "pbkdf2": "^3.0.3",
+        "public-encrypt": "^4.0.0",
+        "randombytes": "^2.0.0",
+        "randomfill": "^1.0.3"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/css-color-names": {
+      "version": "0.0.4",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/css-declaration-sorter": {
+      "version": "4.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.1",
+        "timsort": "^0.3.0"
+      },
+      "engines": {
+        "node": ">4"
+      }
+    },
+    "node_modules/css-loader": {
+      "version": "3.6.0",
+      "dev": true,
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "camelcase": "^5.3.1",
+        "cssesc": "^3.0.0",
+        "icss-utils": "^4.1.1",
+        "loader-utils": "^1.2.3",
+        "normalize-path": "^3.0.0",
+        "postcss": "^7.0.32",
+        "postcss-modules-extract-imports": "^2.0.0",
+        "postcss-modules-local-by-default": "^3.0.2",
+        "postcss-modules-scope": "^2.2.0",
+        "postcss-modules-values": "^3.0.0",
+        "postcss-value-parser": "^4.1.0",
+        "schema-utils": "^2.7.0",
+        "semver": "^6.3.0"
+      },
+      "engines": {
+        "node": ">= 8.9.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0 || ^5.0.0"
+      }
+    },
+    "node_modules/css-select": {
+      "version": "4.2.1",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "boolbase": "^1.0.0",
+        "css-what": "^5.1.0",
+        "domhandler": "^4.3.0",
+        "domutils": "^2.8.0",
+        "nth-check": "^2.0.1"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/fb55"
+      }
+    },
+    "node_modules/css-select-base-adapter": {
+      "version": "0.1.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/css-selector-tokenizer": {
+      "version": "0.7.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cssesc": "^3.0.0",
+        "fastparse": "^1.1.2"
+      }
+    },
+    "node_modules/css-tree": {
+      "version": "1.0.0-alpha.37",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "mdn-data": "2.0.4",
+        "source-map": "^0.6.1"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/css-tree/node_modules/source-map": {
+      "version": "0.6.1",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/css-what": {
+      "version": "5.1.0",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">= 6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/fb55"
+      }
+    },
+    "node_modules/cssesc": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "cssesc": "bin/cssesc"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/cssnano": {
+      "version": "4.1.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cosmiconfig": "^5.0.0",
+        "cssnano-preset-default": "^4.0.8",
+        "is-resolvable": "^1.0.0",
+        "postcss": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/cssnano-preset-default": {
+      "version": "4.0.8",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "css-declaration-sorter": "^4.0.1",
+        "cssnano-util-raw-cache": "^4.0.1",
+        "postcss": "^7.0.0",
+        "postcss-calc": "^7.0.1",
+        "postcss-colormin": "^4.0.3",
+        "postcss-convert-values": "^4.0.1",
+        "postcss-discard-comments": "^4.0.2",
+        "postcss-discard-duplicates": "^4.0.2",
+        "postcss-discard-empty": "^4.0.1",
+        "postcss-discard-overridden": "^4.0.1",
+        "postcss-merge-longhand": "^4.0.11",
+        "postcss-merge-rules": "^4.0.3",
+        "postcss-minify-font-values": "^4.0.2",
+        "postcss-minify-gradients": "^4.0.2",
+        "postcss-minify-params": "^4.0.2",
+        "postcss-minify-selectors": "^4.0.2",
+        "postcss-normalize-charset": "^4.0.1",
+        "postcss-normalize-display-values": "^4.0.2",
+        "postcss-normalize-positions": "^4.0.2",
+        "postcss-normalize-repeat-style": "^4.0.2",
+        "postcss-normalize-string": "^4.0.2",
+        "postcss-normalize-timing-functions": "^4.0.2",
+        "postcss-normalize-unicode": "^4.0.1",
+        "postcss-normalize-url": "^4.0.1",
+        "postcss-normalize-whitespace": "^4.0.2",
+        "postcss-ordered-values": "^4.1.2",
+        "postcss-reduce-initial": "^4.0.3",
+        "postcss-reduce-transforms": "^4.0.2",
+        "postcss-svgo": "^4.0.3",
+        "postcss-unique-selectors": "^4.0.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/cssnano-util-get-arguments": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/cssnano-util-get-match": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/cssnano-util-raw-cache": {
+      "version": "4.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/cssnano-util-same-parent": {
+      "version": "4.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/csso": {
+      "version": "4.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "css-tree": "^1.1.2"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/csso/node_modules/css-tree": {
+      "version": "1.1.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "mdn-data": "2.0.14",
+        "source-map": "^0.6.1"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/csso/node_modules/mdn-data": {
+      "version": "2.0.14",
+      "dev": true,
+      "license": "CC0-1.0"
+    },
+    "node_modules/csso/node_modules/source-map": {
+      "version": "0.6.1",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/current-script-polyfill": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/cyclist": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/dashdash": {
+      "version": "1.14.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "assert-plus": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/de-indent": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/debug": {
+      "version": "4.3.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/decamelize": {
+      "version": "1.2.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/decode-uri-component": {
+      "version": "0.2.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/decompress-response": {
+      "version": "6.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "mimic-response": "^3.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/decompress-response/node_modules/mimic-response": {
+      "version": "3.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/deep-equal": {
+      "version": "1.1.1",
+      "license": "MIT",
+      "dependencies": {
+        "is-arguments": "^1.0.4",
+        "is-date-object": "^1.0.1",
+        "is-regex": "^1.0.4",
+        "object-is": "^1.0.1",
+        "object-keys": "^1.1.1",
+        "regexp.prototype.flags": "^1.2.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/deep-is": {
+      "version": "0.1.4",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/deepmerge": {
+      "version": "1.5.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/default-gateway": {
+      "version": "5.0.5",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "execa": "^3.3.0"
+      },
+      "engines": {
+        "node": "^8.12.0 || >=9.7.0"
+      }
+    },
+    "node_modules/default-gateway/node_modules/cross-spawn": {
+      "version": "7.0.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "path-key": "^3.1.0",
+        "shebang-command": "^2.0.0",
+        "which": "^2.0.1"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/default-gateway/node_modules/execa": {
+      "version": "3.4.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cross-spawn": "^7.0.0",
+        "get-stream": "^5.0.0",
+        "human-signals": "^1.1.1",
+        "is-stream": "^2.0.0",
+        "merge-stream": "^2.0.0",
+        "npm-run-path": "^4.0.0",
+        "onetime": "^5.1.0",
+        "p-finally": "^2.0.0",
+        "signal-exit": "^3.0.2",
+        "strip-final-newline": "^2.0.0"
+      },
+      "engines": {
+        "node": "^8.12.0 || >=9.7.0"
+      }
+    },
+    "node_modules/default-gateway/node_modules/get-stream": {
+      "version": "5.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "pump": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/default-gateway/node_modules/is-stream": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/default-gateway/node_modules/npm-run-path": {
+      "version": "4.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "path-key": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/default-gateway/node_modules/onetime": {
+      "version": "5.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "mimic-fn": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/default-gateway/node_modules/p-finally": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/default-gateway/node_modules/path-key": {
+      "version": "3.1.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/default-gateway/node_modules/shebang-command": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "shebang-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/default-gateway/node_modules/shebang-regex": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/default-gateway/node_modules/which": {
+      "version": "2.0.2",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "node-which": "bin/node-which"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/defaults": {
+      "version": "1.0.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "clone": "^1.0.2"
+      }
+    },
+    "node_modules/defer-to-connect": {
+      "version": "2.0.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/define-properties": {
+      "version": "1.1.3",
+      "license": "MIT",
+      "dependencies": {
+        "object-keys": "^1.0.12"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/define-property": {
+      "version": "2.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-descriptor": "^1.0.2",
+        "isobject": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/del": {
+      "version": "4.1.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/glob": "^7.1.1",
+        "globby": "^6.1.0",
+        "is-path-cwd": "^2.0.0",
+        "is-path-in-cwd": "^2.0.0",
+        "p-map": "^2.0.0",
+        "pify": "^4.0.1",
+        "rimraf": "^2.6.3"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/del/node_modules/globby": {
+      "version": "6.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "array-union": "^1.0.1",
+        "glob": "^7.0.3",
+        "object-assign": "^4.0.1",
+        "pify": "^2.0.0",
+        "pinkie-promise": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/del/node_modules/globby/node_modules/pify": {
+      "version": "2.3.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/del/node_modules/p-map": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/del/node_modules/pify": {
+      "version": "4.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/delayed-stream": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/depd": {
+      "version": "1.1.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/des.js": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "node_modules/destroy": {
+      "version": "1.0.4",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/detect-node": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/diffie-hellman": {
+      "version": "5.0.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "bn.js": "^4.1.0",
+        "miller-rabin": "^4.0.0",
+        "randombytes": "^2.0.0"
+      }
+    },
+    "node_modules/diffie-hellman/node_modules/bn.js": {
+      "version": "4.12.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/dir-glob": {
+      "version": "2.2.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "path-type": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/dns-equal": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/dns-packet": {
+      "version": "1.3.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ip": "^1.1.0",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "node_modules/dns-txt": {
+      "version": "2.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "buffer-indexof": "^1.0.0"
+      }
+    },
+    "node_modules/doctrine": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "esutils": "^2.0.2"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/dom-converter": {
+      "version": "0.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "utila": "~0.4"
+      }
+    },
+    "node_modules/dom-serializer": {
+      "version": "1.3.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "domelementtype": "^2.0.1",
+        "domhandler": "^4.2.0",
+        "entities": "^2.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+      }
+    },
+    "node_modules/domain-browser": {
+      "version": "1.2.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.4",
+        "npm": ">=1.2"
+      }
+    },
+    "node_modules/domelementtype": {
+      "version": "2.2.0",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/fb55"
+        }
+      ],
+      "license": "BSD-2-Clause"
+    },
+    "node_modules/domhandler": {
+      "version": "4.3.0",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "domelementtype": "^2.2.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/domhandler?sponsor=1"
+      }
+    },
+    "node_modules/domutils": {
+      "version": "2.8.0",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "dom-serializer": "^1.0.1",
+        "domelementtype": "^2.2.0",
+        "domhandler": "^4.2.0"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/domutils?sponsor=1"
+      }
+    },
+    "node_modules/dot-prop": {
+      "version": "5.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-obj": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/dotenv": {
+      "version": "7.0.0",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/dotenv-expand": {
+      "version": "5.1.0",
+      "dev": true,
+      "license": "BSD-2-Clause"
+    },
+    "node_modules/duplexer": {
+      "version": "0.1.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/duplexify": {
+      "version": "3.7.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "end-of-stream": "^1.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0",
+        "stream-shift": "^1.0.0"
+      }
+    },
+    "node_modules/easy-stack": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/ecc-jsbn": {
+      "version": "0.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "jsbn": "~0.1.0",
+        "safer-buffer": "^2.1.0"
+      }
+    },
+    "node_modules/echarts": {
+      "version": "4.9.0",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "zrender": "4.3.2"
+      }
+    },
+    "node_modules/ee-first": {
+      "version": "1.1.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/ejs": {
+      "version": "2.7.4",
+      "dev": true,
+      "hasInstallScript": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/electron-to-chromium": {
+      "version": "1.4.36",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/element-resize-detector": {
+      "version": "1.2.4",
+      "license": "MIT",
+      "dependencies": {
+        "batch-processor": "1.0.0"
+      }
+    },
+    "node_modules/element-ui": {
+      "version": "2.15.6",
+      "resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.15.6.tgz",
+      "integrity": "sha512-rcYXEKd/j2G0AgficAOk1Zd1AsnHRkhmrK4yLHmNOiimU2JfsywgfKUjMoFuT6pQx0luhovj8lFjpE4Fnt58Iw==",
+      "dependencies": {
+        "async-validator": "~1.8.1",
+        "babel-helper-vue-jsx-merge-props": "^2.0.0",
+        "deepmerge": "^1.2.0",
+        "normalize-wheel": "^1.0.1",
+        "resize-observer-polyfill": "^1.5.0",
+        "throttle-debounce": "^1.0.1"
+      },
+      "peerDependencies": {
+        "vue": "^2.5.17"
+      }
+    },
+    "node_modules/elliptic": {
+      "version": "6.5.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "bn.js": "^4.11.9",
+        "brorand": "^1.1.0",
+        "hash.js": "^1.0.0",
+        "hmac-drbg": "^1.0.1",
+        "inherits": "^2.0.4",
+        "minimalistic-assert": "^1.0.1",
+        "minimalistic-crypto-utils": "^1.0.1"
+      }
+    },
+    "node_modules/elliptic/node_modules/bn.js": {
+      "version": "4.12.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/emojis-list": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/encodeurl": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/end-of-stream": {
+      "version": "1.4.4",
+      "license": "MIT",
+      "dependencies": {
+        "once": "^1.4.0"
+      }
+    },
+    "node_modules/enhanced-resolve": {
+      "version": "4.5.0",
+      "dev": true,
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "memory-fs": "^0.5.0",
+        "tapable": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/enhanced-resolve/node_modules/memory-fs": {
+      "version": "0.5.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "errno": "^0.1.3",
+        "readable-stream": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=4.3.0 <5.0.0 || >=5.10"
+      }
+    },
+    "node_modules/entities": {
+      "version": "2.2.0",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "funding": {
+        "url": "https://github.com/fb55/entities?sponsor=1"
+      }
+    },
+    "node_modules/errno": {
+      "version": "0.1.8",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "prr": "~1.0.1"
+      },
+      "bin": {
+        "errno": "cli.js"
+      }
+    },
+    "node_modules/error-ex": {
+      "version": "1.3.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-arrayish": "^0.2.1"
+      }
+    },
+    "node_modules/error-stack-parser": {
+      "version": "2.0.6",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "stackframe": "^1.1.1"
+      }
+    },
+    "node_modules/es-abstract": {
+      "version": "1.19.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "es-to-primitive": "^1.2.1",
+        "function-bind": "^1.1.1",
+        "get-intrinsic": "^1.1.1",
+        "get-symbol-description": "^1.0.0",
+        "has": "^1.0.3",
+        "has-symbols": "^1.0.2",
+        "internal-slot": "^1.0.3",
+        "is-callable": "^1.2.4",
+        "is-negative-zero": "^2.0.1",
+        "is-regex": "^1.1.4",
+        "is-shared-array-buffer": "^1.0.1",
+        "is-string": "^1.0.7",
+        "is-weakref": "^1.0.1",
+        "object-inspect": "^1.11.0",
+        "object-keys": "^1.1.1",
+        "object.assign": "^4.1.2",
+        "string.prototype.trimend": "^1.0.4",
+        "string.prototype.trimstart": "^1.0.4",
+        "unbox-primitive": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/es-to-primitive": {
+      "version": "1.2.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-callable": "^1.1.4",
+        "is-date-object": "^1.0.1",
+        "is-symbol": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/es6-promise": {
+      "version": "4.2.8",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/escalade": {
+      "version": "3.1.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/escape-html": {
+      "version": "1.0.3",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/escape-string-regexp": {
+      "version": "1.0.5",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/eslint": {
+      "version": "5.16.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.0.0",
+        "ajv": "^6.9.1",
+        "chalk": "^2.1.0",
+        "cross-spawn": "^6.0.5",
+        "debug": "^4.0.1",
+        "doctrine": "^3.0.0",
+        "eslint-scope": "^4.0.3",
+        "eslint-utils": "^1.3.1",
+        "eslint-visitor-keys": "^1.0.0",
+        "espree": "^5.0.1",
+        "esquery": "^1.0.1",
+        "esutils": "^2.0.2",
+        "file-entry-cache": "^5.0.1",
+        "functional-red-black-tree": "^1.0.1",
+        "glob": "^7.1.2",
+        "globals": "^11.7.0",
+        "ignore": "^4.0.6",
+        "import-fresh": "^3.0.0",
+        "imurmurhash": "^0.1.4",
+        "inquirer": "^6.2.2",
+        "js-yaml": "^3.13.0",
+        "json-stable-stringify-without-jsonify": "^1.0.1",
+        "levn": "^0.3.0",
+        "lodash": "^4.17.11",
+        "minimatch": "^3.0.4",
+        "mkdirp": "^0.5.1",
+        "natural-compare": "^1.4.0",
+        "optionator": "^0.8.2",
+        "path-is-inside": "^1.0.2",
+        "progress": "^2.0.0",
+        "regexpp": "^2.0.1",
+        "semver": "^5.5.1",
+        "strip-ansi": "^4.0.0",
+        "strip-json-comments": "^2.0.1",
+        "table": "^5.2.3",
+        "text-table": "^0.2.0"
+      },
+      "bin": {
+        "eslint": "bin/eslint.js"
+      },
+      "engines": {
+        "node": "^6.14.0 || ^8.10.0 || >=9.10.0"
+      }
+    },
+    "node_modules/eslint-loader": {
+      "version": "2.2.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "loader-fs-cache": "^1.0.0",
+        "loader-utils": "^1.0.2",
+        "object-assign": "^4.0.1",
+        "object-hash": "^1.1.4",
+        "rimraf": "^2.6.1"
+      },
+      "peerDependencies": {
+        "eslint": ">=1.6.0 <7.0.0",
+        "webpack": ">=2.0.0 <5.0.0"
+      }
+    },
+    "node_modules/eslint-plugin-vue": {
+      "version": "5.2.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "vue-eslint-parser": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=6.5"
+      },
+      "peerDependencies": {
+        "eslint": "^5.0.0"
+      }
+    },
+    "node_modules/eslint-scope": {
+      "version": "4.0.3",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "esrecurse": "^4.1.0",
+        "estraverse": "^4.1.1"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/eslint-utils": {
+      "version": "1.4.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "eslint-visitor-keys": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/eslint-visitor-keys": {
+      "version": "1.3.0",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint/node_modules/ansi-regex": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint/node_modules/import-fresh": {
+      "version": "3.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "parent-module": "^1.0.0",
+        "resolve-from": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/eslint/node_modules/resolve-from": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint/node_modules/semver": {
+      "version": "5.7.1",
+      "dev": true,
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/eslint/node_modules/strip-ansi": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/espree": {
+      "version": "5.0.1",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "acorn": "^6.0.7",
+        "acorn-jsx": "^5.0.0",
+        "eslint-visitor-keys": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/espree/node_modules/acorn": {
+      "version": "6.4.2",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/esprima": {
+      "version": "4.0.1",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "bin": {
+        "esparse": "bin/esparse.js",
+        "esvalidate": "bin/esvalidate.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/esquery": {
+      "version": "1.4.0",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "estraverse": "^5.1.0"
+      },
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/esquery/node_modules/estraverse": {
+      "version": "5.3.0",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/esrecurse": {
+      "version": "4.3.0",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "estraverse": "^5.2.0"
+      },
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/esrecurse/node_modules/estraverse": {
+      "version": "5.3.0",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/estraverse": {
+      "version": "4.3.0",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/esutils": {
+      "version": "2.0.3",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/etag": {
+      "version": "1.8.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/event-pubsub": {
+      "version": "4.3.0",
+      "dev": true,
+      "license": "Unlicense",
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/eventemitter3": {
+      "version": "4.0.7",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/events": {
+      "version": "3.3.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8.x"
+      }
+    },
+    "node_modules/eventsource": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "original": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/evp_bytestokey": {
+      "version": "1.0.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "md5.js": "^1.3.4",
+        "safe-buffer": "^5.1.1"
+      }
+    },
+    "node_modules/execa": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cross-spawn": "^6.0.0",
+        "get-stream": "^4.0.0",
+        "is-stream": "^1.1.0",
+        "npm-run-path": "^2.0.0",
+        "p-finally": "^1.0.0",
+        "signal-exit": "^3.0.0",
+        "strip-eof": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/exit-on-epipe": {
+      "version": "1.0.1",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/expand-brackets": {
+      "version": "2.1.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "debug": "^2.3.3",
+        "define-property": "^0.2.5",
+        "extend-shallow": "^2.0.1",
+        "posix-character-classes": "^0.1.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/debug": {
+      "version": "2.6.9",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/define-property": {
+      "version": "0.2.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-descriptor": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/is-accessor-descriptor": {
+      "version": "0.1.6",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": {
+      "version": "3.2.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/is-buffer": {
+      "version": "1.1.6",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/expand-brackets/node_modules/is-data-descriptor": {
+      "version": "0.1.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": {
+      "version": "3.2.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/is-descriptor": {
+      "version": "0.1.6",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-accessor-descriptor": "^0.1.6",
+        "is-data-descriptor": "^0.1.4",
+        "kind-of": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/is-extendable": {
+      "version": "0.1.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/kind-of": {
+      "version": "5.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/ms": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/express": {
+      "version": "4.17.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "accepts": "~1.3.7",
+        "array-flatten": "1.1.1",
+        "body-parser": "1.19.1",
+        "content-disposition": "0.5.4",
+        "content-type": "~1.0.4",
+        "cookie": "0.4.1",
+        "cookie-signature": "1.0.6",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "finalhandler": "~1.1.2",
+        "fresh": "0.5.2",
+        "merge-descriptors": "1.0.1",
+        "methods": "~1.1.2",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.3",
+        "path-to-regexp": "0.1.7",
+        "proxy-addr": "~2.0.7",
+        "qs": "6.9.6",
+        "range-parser": "~1.2.1",
+        "safe-buffer": "5.2.1",
+        "send": "0.17.2",
+        "serve-static": "1.14.2",
+        "setprototypeof": "1.2.0",
+        "statuses": "~1.5.0",
+        "type-is": "~1.6.18",
+        "utils-merge": "1.0.1",
+        "vary": "~1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.10.0"
+      }
+    },
+    "node_modules/express/node_modules/debug": {
+      "version": "2.6.9",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/express/node_modules/ms": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/express/node_modules/qs": {
+      "version": "6.9.6",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/express/node_modules/safe-buffer": {
+      "version": "5.2.1",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT"
+    },
+    "node_modules/extend": {
+      "version": "3.0.2",
+      "license": "MIT"
+    },
+    "node_modules/extend-shallow": {
+      "version": "3.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "assign-symbols": "^1.0.0",
+        "is-extendable": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/external-editor": {
+      "version": "3.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "chardet": "^0.7.0",
+        "iconv-lite": "^0.4.24",
+        "tmp": "^0.0.33"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/external-editor/node_modules/tmp": {
+      "version": "0.0.33",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "os-tmpdir": "~1.0.2"
+      },
+      "engines": {
+        "node": ">=0.6.0"
+      }
+    },
+    "node_modules/extglob": {
+      "version": "2.0.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "array-unique": "^0.3.2",
+        "define-property": "^1.0.0",
+        "expand-brackets": "^2.1.4",
+        "extend-shallow": "^2.0.1",
+        "fragment-cache": "^0.2.1",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/extglob/node_modules/define-property": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-descriptor": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/extglob/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/extglob/node_modules/is-extendable": {
+      "version": "0.1.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/extsprintf": {
+      "version": "1.3.0",
+      "dev": true,
+      "engines": [
+        "node >=0.6.0"
+      ],
+      "license": "MIT"
+    },
+    "node_modules/fast-deep-equal": {
+      "version": "3.1.3",
+      "license": "MIT"
+    },
+    "node_modules/fast-glob": {
+      "version": "2.2.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@mrmlnc/readdir-enhanced": "^2.2.1",
+        "@nodelib/fs.stat": "^1.1.2",
+        "glob-parent": "^3.1.0",
+        "is-glob": "^4.0.0",
+        "merge2": "^1.2.3",
+        "micromatch": "^3.1.10"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/fast-json-stable-stringify": {
+      "version": "2.1.0",
+      "license": "MIT"
+    },
+    "node_modules/fast-levenshtein": {
+      "version": "2.0.6",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/fastparse": {
+      "version": "1.1.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/faye-websocket": {
+      "version": "0.11.4",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "websocket-driver": ">=0.5.1"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/fflate": {
+      "version": "0.3.11",
+      "license": "MIT"
+    },
+    "node_modules/figgy-pudding": {
+      "version": "3.5.2",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/file-entry-cache": {
+      "version": "5.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "flat-cache": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/file-loader": {
+      "version": "3.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "loader-utils": "^1.0.2",
+        "schema-utils": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 6.9.0"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0"
+      }
+    },
+    "node_modules/file-loader/node_modules/schema-utils": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ajv": "^6.1.0",
+        "ajv-errors": "^1.0.0",
+        "ajv-keywords": "^3.1.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/filesize": {
+      "version": "3.6.1",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/fill-range": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "extend-shallow": "^2.0.1",
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1",
+        "to-regex-range": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fill-range/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fill-range/node_modules/is-extendable": {
+      "version": "0.1.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/finalhandler": {
+      "version": "1.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "debug": "2.6.9",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.3",
+        "statuses": "~1.5.0",
+        "unpipe": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/finalhandler/node_modules/debug": {
+      "version": "2.6.9",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/finalhandler/node_modules/ms": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/find-babel-config": {
+      "version": "1.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "json5": "^0.5.1",
+        "path-exists": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/find-babel-config/node_modules/json5": {
+      "version": "0.5.1",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "json5": "lib/cli.js"
+      }
+    },
+    "node_modules/find-cache-dir": {
+      "version": "3.3.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "commondir": "^1.0.1",
+        "make-dir": "^3.0.2",
+        "pkg-dir": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/avajs/find-cache-dir?sponsor=1"
+      }
+    },
+    "node_modules/find-up": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "locate-path": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/flat-cache": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "flatted": "^2.0.0",
+        "rimraf": "2.6.3",
+        "write": "1.0.3"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/flat-cache/node_modules/rimraf": {
+      "version": "2.6.3",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      }
+    },
+    "node_modules/flatted": {
+      "version": "2.0.2",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/flush-write-stream": {
+      "version": "1.1.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.3.6"
+      }
+    },
+    "node_modules/follow-redirects": {
+      "version": "1.14.6",
+      "dev": true,
+      "funding": [
+        {
+          "type": "individual",
+          "url": "https://github.com/sponsors/RubenVerborgh"
+        }
+      ],
+      "license": "MIT",
+      "engines": {
+        "node": ">=4.0"
+      },
+      "peerDependenciesMeta": {
+        "debug": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/font-awesome": {
+      "version": "4.7.0",
+      "license": "(OFL-1.1 AND MIT)",
+      "engines": {
+        "node": ">=0.10.3"
+      }
+    },
+    "node_modules/for-in": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/forever-agent": {
+      "version": "0.6.1",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/form-data": {
+      "version": "2.3.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.6",
+        "mime-types": "^2.1.12"
+      },
+      "engines": {
+        "node": ">= 0.12"
+      }
+    },
+    "node_modules/forwarded": {
+      "version": "0.2.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/frac": {
+      "version": "1.1.2",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/fragment-cache": {
+      "version": "0.2.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "map-cache": "^0.2.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fresh": {
+      "version": "0.5.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/from2": {
+      "version": "2.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0"
+      }
+    },
+    "node_modules/fs-extra": {
+      "version": "7.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "jsonfile": "^4.0.0",
+        "universalify": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=6 <7 || >=8"
+      }
+    },
+    "node_modules/fs-minipass": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "minipass": "^3.0.0"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/fs-write-stream-atomic": {
+      "version": "1.0.10",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "iferr": "^0.1.5",
+        "imurmurhash": "^0.1.4",
+        "readable-stream": "1 || 2"
+      }
+    },
+    "node_modules/fs.realpath": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/fullcalendar": {
+      "version": "3.10.1",
+      "license": "MIT",
+      "peerDependencies": {
+        "jquery": "2 - 3",
+        "moment": "^2.20.1"
+      }
+    },
+    "node_modules/function-bind": {
+      "version": "1.1.1",
+      "license": "MIT"
+    },
+    "node_modules/functional-red-black-tree": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/gensync": {
+      "version": "1.0.0-beta.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/get-caller-file": {
+      "version": "2.0.5",
+      "dev": true,
+      "license": "ISC",
+      "engines": {
+        "node": "6.* || 8.* || >= 10.*"
+      }
+    },
+    "node_modules/get-intrinsic": {
+      "version": "1.1.1",
+      "license": "MIT",
+      "dependencies": {
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3",
+        "has-symbols": "^1.0.1"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/get-stream": {
+      "version": "4.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "pump": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/get-symbol-description": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "get-intrinsic": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/get-value": {
+      "version": "2.0.6",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/getpass": {
+      "version": "0.1.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "assert-plus": "^1.0.0"
+      }
+    },
+    "node_modules/glob": {
+      "version": "7.2.0",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.0.4",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      },
+      "engines": {
+        "node": "*"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/glob-parent": {
+      "version": "3.1.0",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "is-glob": "^3.1.0",
+        "path-dirname": "^1.0.0"
+      }
+    },
+    "node_modules/glob-parent/node_modules/is-glob": {
+      "version": "3.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-extglob": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/glob-to-regexp": {
+      "version": "0.3.0",
+      "dev": true,
+      "license": "BSD"
+    },
+    "node_modules/globals": {
+      "version": "11.12.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/globby": {
+      "version": "9.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/glob": "^7.1.1",
+        "array-union": "^1.0.2",
+        "dir-glob": "^2.2.2",
+        "fast-glob": "^2.2.6",
+        "glob": "^7.1.3",
+        "ignore": "^4.0.3",
+        "pify": "^4.0.1",
+        "slash": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/globby/node_modules/pify": {
+      "version": "4.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/got": {
+      "version": "11.8.3",
+      "license": "MIT",
+      "dependencies": {
+        "@sindresorhus/is": "^4.0.0",
+        "@szmarczak/http-timer": "^4.0.5",
+        "@types/cacheable-request": "^6.0.1",
+        "@types/responselike": "^1.0.0",
+        "cacheable-lookup": "^5.0.3",
+        "cacheable-request": "^7.0.2",
+        "decompress-response": "^6.0.0",
+        "http2-wrapper": "^1.0.0-beta.5.2",
+        "lowercase-keys": "^2.0.0",
+        "p-cancelable": "^2.0.0",
+        "responselike": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=10.19.0"
+      },
+      "funding": {
+        "url": "https://github.com/sindresorhus/got?sponsor=1"
+      }
+    },
+    "node_modules/graceful-fs": {
+      "version": "4.2.9",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/gzip-size": {
+      "version": "6.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "duplexer": "^0.1.2"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/handle-thing": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/har-schema": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "ISC",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/har-validator": {
+      "version": "5.1.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ajv": "^6.12.3",
+        "har-schema": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/has": {
+      "version": "1.0.3",
+      "license": "MIT",
+      "dependencies": {
+        "function-bind": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/has-ansi": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/has-ansi/node_modules/ansi-regex": {
+      "version": "2.1.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/has-bigints": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT",
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-flag": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/has-symbols": {
+      "version": "1.0.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-tostringtag": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "has-symbols": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-value": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "get-value": "^2.0.6",
+        "has-values": "^1.0.0",
+        "isobject": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/has-values": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-number": "^3.0.0",
+        "kind-of": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/has-values/node_modules/is-buffer": {
+      "version": "1.1.6",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/has-values/node_modules/kind-of": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/hash-base": {
+      "version": "3.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.4",
+        "readable-stream": "^3.6.0",
+        "safe-buffer": "^5.2.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/hash-base/node_modules/readable-stream": {
+      "version": "3.6.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "string_decoder": "^1.1.1",
+        "util-deprecate": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/hash-base/node_modules/safe-buffer": {
+      "version": "5.2.1",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT"
+    },
+    "node_modules/hash-sum": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/hash.js": {
+      "version": "1.1.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "minimalistic-assert": "^1.0.1"
+      }
+    },
+    "node_modules/he": {
+      "version": "1.2.0",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "he": "bin/he"
+      }
+    },
+    "node_modules/hex-color-regex": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/highlight.js": {
+      "version": "10.7.3",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/hmac-drbg": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "hash.js": "^1.0.3",
+        "minimalistic-assert": "^1.0.0",
+        "minimalistic-crypto-utils": "^1.0.1"
+      }
+    },
+    "node_modules/hoopy": {
+      "version": "0.1.4",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 6.0.0"
+      }
+    },
+    "node_modules/hosted-git-info": {
+      "version": "2.8.9",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/hpack.js": {
+      "version": "2.1.6",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.1",
+        "obuf": "^1.0.0",
+        "readable-stream": "^2.0.1",
+        "wbuf": "^1.1.0"
+      }
+    },
+    "node_modules/hsl-regex": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/hsla-regex": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/html-entities": {
+      "version": "1.4.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/html-minifier": {
+      "version": "3.5.21",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "camel-case": "3.0.x",
+        "clean-css": "4.2.x",
+        "commander": "2.17.x",
+        "he": "1.2.x",
+        "param-case": "2.1.x",
+        "relateurl": "0.2.x",
+        "uglify-js": "3.4.x"
+      },
+      "bin": {
+        "html-minifier": "cli.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/html-minifier/node_modules/commander": {
+      "version": "2.17.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/html-tags": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/html-webpack-plugin": {
+      "version": "3.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "html-minifier": "^3.2.3",
+        "loader-utils": "^0.2.16",
+        "lodash": "^4.17.3",
+        "pretty-error": "^2.0.2",
+        "tapable": "^1.0.0",
+        "toposort": "^1.0.0",
+        "util.promisify": "1.0.0"
+      },
+      "engines": {
+        "node": ">=6.9"
+      },
+      "peerDependencies": {
+        "webpack": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0"
+      }
+    },
+    "node_modules/html-webpack-plugin/node_modules/big.js": {
+      "version": "3.2.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/html-webpack-plugin/node_modules/emojis-list": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/html-webpack-plugin/node_modules/json5": {
+      "version": "0.5.1",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "json5": "lib/cli.js"
+      }
+    },
+    "node_modules/html-webpack-plugin/node_modules/loader-utils": {
+      "version": "0.2.17",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "big.js": "^3.1.3",
+        "emojis-list": "^2.0.0",
+        "json5": "^0.5.0",
+        "object-assign": "^4.0.1"
+      }
+    },
+    "node_modules/htmlparser2": {
+      "version": "6.1.0",
+      "dev": true,
+      "funding": [
+        "https://github.com/fb55/htmlparser2?sponsor=1",
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/fb55"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "domelementtype": "^2.0.1",
+        "domhandler": "^4.0.0",
+        "domutils": "^2.5.2",
+        "entities": "^2.0.0"
+      }
+    },
+    "node_modules/http-cache-semantics": {
+      "version": "4.1.0",
+      "license": "BSD-2-Clause"
+    },
+    "node_modules/http-deceiver": {
+      "version": "1.2.7",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/http-errors": {
+      "version": "1.8.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "depd": "~1.1.2",
+        "inherits": "2.0.4",
+        "setprototypeof": "1.2.0",
+        "statuses": ">= 1.5.0 < 2",
+        "toidentifier": "1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/http-parser-js": {
+      "version": "0.5.5",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/http-proxy": {
+      "version": "1.18.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "eventemitter3": "^4.0.0",
+        "follow-redirects": "^1.0.0",
+        "requires-port": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/http-signature": {
+      "version": "1.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "assert-plus": "^1.0.0",
+        "jsprim": "^1.2.2",
+        "sshpk": "^1.7.0"
+      },
+      "engines": {
+        "node": ">=0.8",
+        "npm": ">=1.3.7"
+      }
+    },
+    "node_modules/http2-wrapper": {
+      "version": "1.0.3",
+      "license": "MIT",
+      "dependencies": {
+        "quick-lru": "^5.1.1",
+        "resolve-alpn": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=10.19.0"
+      }
+    },
+    "node_modules/https-browserify": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/human-signals": {
+      "version": "1.1.1",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=8.12.0"
+      }
+    },
+    "node_modules/iconv-lite": {
+      "version": "0.4.24",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/icss-replace-symbols": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/icss-utils": {
+      "version": "4.1.1",
+      "dev": true,
+      "license": "ISC",
+      "peer": true,
+      "dependencies": {
+        "postcss": "^7.0.14"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/ieee754": {
+      "version": "1.2.1",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/iferr": {
+      "version": "0.1.5",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/ignore": {
+      "version": "4.0.6",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/image-size": {
+      "version": "0.5.5",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "bin": {
+        "image-size": "bin/image-size.js"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/import-cwd": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "import-from": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/import-fresh": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "caller-path": "^2.0.0",
+        "resolve-from": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/import-from": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "resolve-from": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/import-local": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "pkg-dir": "^3.0.0",
+        "resolve-cwd": "^2.0.0"
+      },
+      "bin": {
+        "import-local-fixture": "fixtures/cli.js"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/import-local/node_modules/pkg-dir": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/imurmurhash": {
+      "version": "0.1.4",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8.19"
+      }
+    },
+    "node_modules/indexes-of": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/infer-owner": {
+      "version": "1.0.4",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/inflight": {
+      "version": "1.0.6",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "node_modules/inherits": {
+      "version": "2.0.4",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/inquirer": {
+      "version": "6.5.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-escapes": "^3.2.0",
+        "chalk": "^2.4.2",
+        "cli-cursor": "^2.1.0",
+        "cli-width": "^2.0.0",
+        "external-editor": "^3.0.3",
+        "figures": "^2.0.0",
+        "lodash": "^4.17.12",
+        "mute-stream": "0.0.7",
+        "run-async": "^2.2.0",
+        "rxjs": "^6.4.0",
+        "string-width": "^2.1.0",
+        "strip-ansi": "^5.1.0",
+        "through": "^2.3.6"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/inquirer/node_modules/ansi-regex": {
+      "version": "4.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/inquirer/node_modules/cli-cursor": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "restore-cursor": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/inquirer/node_modules/figures": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "escape-string-regexp": "^1.0.5"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/inquirer/node_modules/is-fullwidth-code-point": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/inquirer/node_modules/mimic-fn": {
+      "version": "1.2.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/inquirer/node_modules/onetime": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "mimic-fn": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/inquirer/node_modules/restore-cursor": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "onetime": "^2.0.0",
+        "signal-exit": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/inquirer/node_modules/string-width": {
+      "version": "2.1.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/inquirer/node_modules/string-width/node_modules/ansi-regex": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/inquirer/node_modules/string-width/node_modules/strip-ansi": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/inquirer/node_modules/strip-ansi": {
+      "version": "5.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/internal-ip": {
+      "version": "4.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "default-gateway": "^4.2.0",
+        "ipaddr.js": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/internal-ip/node_modules/default-gateway": {
+      "version": "4.2.0",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "execa": "^1.0.0",
+        "ip-regex": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/internal-slot": {
+      "version": "1.0.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "get-intrinsic": "^1.1.0",
+        "has": "^1.0.3",
+        "side-channel": "^1.0.4"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/invariant": {
+      "version": "2.2.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "loose-envify": "^1.0.0"
+      }
+    },
+    "node_modules/ip": {
+      "version": "1.1.5",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/ip-regex": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/ipaddr.js": {
+      "version": "1.9.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/is-absolute-url": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-accessor-descriptor": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-arguments": {
+      "version": "1.1.1",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-arrayish": {
+      "version": "0.2.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/is-bigint": {
+      "version": "1.0.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "has-bigints": "^1.0.1"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-binary-path": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "binary-extensions": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-boolean-object": {
+      "version": "1.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-callable": {
+      "version": "1.2.4",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-ci": {
+      "version": "1.2.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ci-info": "^1.5.0"
+      },
+      "bin": {
+        "is-ci": "bin.js"
+      }
+    },
+    "node_modules/is-color-stop": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "css-color-names": "^0.0.4",
+        "hex-color-regex": "^1.1.0",
+        "hsl-regex": "^1.0.0",
+        "hsla-regex": "^1.0.0",
+        "rgb-regex": "^1.0.1",
+        "rgba-regex": "^1.0.0"
+      }
+    },
+    "node_modules/is-core-module": {
+      "version": "2.8.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "has": "^1.0.3"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-data-descriptor": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-date-object": {
+      "version": "1.0.5",
+      "license": "MIT",
+      "dependencies": {
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-descriptor": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-accessor-descriptor": "^1.0.0",
+        "is-data-descriptor": "^1.0.0",
+        "kind-of": "^6.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-directory": {
+      "version": "0.3.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-docker": {
+      "version": "2.2.1",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "is-docker": "cli.js"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/is-extendable": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-plain-object": "^2.0.4"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-extglob": {
+      "version": "2.1.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-glob": {
+      "version": "4.0.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-extglob": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-negative-zero": {
+      "version": "2.0.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-number": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-number-object": {
+      "version": "1.0.6",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-number/node_modules/is-buffer": {
+      "version": "1.1.6",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/is-number/node_modules/kind-of": {
+      "version": "3.2.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-obj": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-path-cwd": {
+      "version": "2.2.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/is-path-in-cwd": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-path-inside": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/is-path-in-cwd/node_modules/is-path-inside": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "path-is-inside": "^1.0.2"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/is-plain-obj": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-plain-object": {
+      "version": "2.0.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "isobject": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-regex": {
+      "version": "1.1.4",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-resolvable": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/is-shared-array-buffer": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT",
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-stream": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-string": {
+      "version": "1.0.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-symbol": {
+      "version": "1.0.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "has-symbols": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-typedarray": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/is-weakref": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-what": {
+      "version": "3.14.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/is-windows": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-wsl": {
+      "version": "2.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-docker": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/isarray": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/isexe": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/isobject": {
+      "version": "3.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/isstream": {
+      "version": "0.1.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/javascript-stringify": {
+      "version": "1.6.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/jquery": {
+      "version": "3.6.0",
+      "license": "MIT"
+    },
+    "node_modules/js-file-download": {
+      "version": "0.4.12",
+      "license": "MIT"
+    },
+    "node_modules/js-levenshtein": {
+      "version": "1.1.6",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/js-message": {
+      "version": "1.0.7",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.6.0"
+      }
+    },
+    "node_modules/js-queue": {
+      "version": "2.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "easy-stack": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=1.0.0"
+      }
+    },
+    "node_modules/js-tokens": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/js-yaml": {
+      "version": "3.14.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "argparse": "^1.0.7",
+        "esprima": "^4.0.0"
+      },
+      "bin": {
+        "js-yaml": "bin/js-yaml.js"
+      }
+    },
+    "node_modules/jsbn": {
+      "version": "0.1.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/jsesc": {
+      "version": "2.5.2",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "jsesc": "bin/jsesc"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/json-buffer": {
+      "version": "3.0.1",
+      "license": "MIT"
+    },
+    "node_modules/json-parse-better-errors": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/json-parse-even-better-errors": {
+      "version": "2.3.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/json-schema": {
+      "version": "0.4.0",
+      "dev": true,
+      "license": "(AFL-2.1 OR BSD-3-Clause)"
+    },
+    "node_modules/json-schema-traverse": {
+      "version": "0.4.1",
+      "license": "MIT"
+    },
+    "node_modules/json-stable-stringify-without-jsonify": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/json-stringify-safe": {
+      "version": "5.0.1",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/json3": {
+      "version": "3.3.3",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/json5": {
+      "version": "2.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "minimist": "^1.2.5"
+      },
+      "bin": {
+        "json5": "lib/cli.js"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/jsonfile": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "optionalDependencies": {
+        "graceful-fs": "^4.1.6"
+      }
+    },
+    "node_modules/jsprim": {
+      "version": "1.4.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "assert-plus": "1.0.0",
+        "extsprintf": "1.3.0",
+        "json-schema": "0.4.0",
+        "verror": "1.10.0"
+      },
+      "engines": {
+        "node": ">=0.6.0"
+      }
+    },
+    "node_modules/keyv": {
+      "version": "4.0.4",
+      "license": "MIT",
+      "dependencies": {
+        "json-buffer": "3.0.1"
+      }
+    },
+    "node_modules/killable": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/kind-of": {
+      "version": "6.0.3",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/launch-editor": {
+      "version": "2.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "picocolors": "^1.0.0",
+        "shell-quote": "^1.6.1"
+      }
+    },
+    "node_modules/launch-editor-middleware": {
+      "version": "2.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "launch-editor": "^2.3.0"
+      }
+    },
+    "node_modules/launch-editor/node_modules/picocolors": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/less": {
+      "version": "3.13.1",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "copy-anything": "^2.0.1",
+        "tslib": "^1.10.0"
+      },
+      "bin": {
+        "lessc": "bin/lessc"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "optionalDependencies": {
+        "errno": "^0.1.1",
+        "graceful-fs": "^4.1.2",
+        "image-size": "~0.5.0",
+        "make-dir": "^2.1.0",
+        "mime": "^1.4.1",
+        "native-request": "^1.0.5",
+        "source-map": "~0.6.0"
+      }
+    },
+    "node_modules/less-loader": {
+      "version": "5.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "clone": "^2.1.1",
+        "loader-utils": "^1.1.0",
+        "pify": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 4.8.0"
+      },
+      "peerDependencies": {
+        "less": "^2.3.1 || ^3.0.0",
+        "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0"
+      }
+    },
+    "node_modules/less-loader/node_modules/clone": {
+      "version": "2.1.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/less-loader/node_modules/pify": {
+      "version": "4.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/less/node_modules/make-dir": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "pify": "^4.0.1",
+        "semver": "^5.6.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/less/node_modules/mime": {
+      "version": "1.6.0",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "bin": {
+        "mime": "cli.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/less/node_modules/pify": {
+      "version": "4.0.1",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/less/node_modules/semver": {
+      "version": "5.7.1",
+      "dev": true,
+      "license": "ISC",
+      "optional": true,
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/less/node_modules/source-map": {
+      "version": "0.6.1",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "optional": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/levn": {
+      "version": "0.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/lines-and-columns": {
+      "version": "1.2.4",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/loader-fs-cache": {
+      "version": "1.0.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "find-cache-dir": "^0.1.1",
+        "mkdirp": "^0.5.1"
+      }
+    },
+    "node_modules/loader-fs-cache/node_modules/find-cache-dir": {
+      "version": "0.1.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "commondir": "^1.0.1",
+        "mkdirp": "^0.5.1",
+        "pkg-dir": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/loader-fs-cache/node_modules/find-up": {
+      "version": "1.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "path-exists": "^2.0.0",
+        "pinkie-promise": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/loader-fs-cache/node_modules/path-exists": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "pinkie-promise": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/loader-fs-cache/node_modules/pkg-dir": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/loader-runner": {
+      "version": "2.4.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4.3.0 <5.0.0 || >=5.10"
+      }
+    },
+    "node_modules/loader-utils": {
+      "version": "1.4.0",
+      "license": "MIT",
+      "dependencies": {
+        "big.js": "^5.2.2",
+        "emojis-list": "^3.0.0",
+        "json5": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/loader-utils/node_modules/json5": {
+      "version": "1.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "minimist": "^1.2.0"
+      },
+      "bin": {
+        "json5": "lib/cli.js"
+      }
+    },
+    "node_modules/locate-path": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-locate": "^3.0.0",
+        "path-exists": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/lodash": {
+      "version": "4.17.15",
+      "license": "MIT"
+    },
+    "node_modules/lodash.debounce": {
+      "version": "4.0.8",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/lodash.defaultsdeep": {
+      "version": "4.6.1",
+      "license": "MIT"
+    },
+    "node_modules/lodash.kebabcase": {
+      "version": "4.1.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/lodash.mapvalues": {
+      "version": "4.6.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/lodash.memoize": {
+      "version": "4.1.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/lodash.transform": {
+      "version": "4.6.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/lodash.uniq": {
+      "version": "4.5.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/log-symbols": {
+      "version": "2.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "chalk": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/loglevel": {
+      "version": "1.8.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6.0"
+      },
+      "funding": {
+        "type": "tidelift",
+        "url": "https://tidelift.com/funding/github/npm/loglevel"
+      }
+    },
+    "node_modules/loose-envify": {
+      "version": "1.4.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "js-tokens": "^3.0.0 || ^4.0.0"
+      },
+      "bin": {
+        "loose-envify": "cli.js"
+      }
+    },
+    "node_modules/lower-case": {
+      "version": "1.1.4",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/lowercase-keys": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lru-cache": {
+      "version": "5.1.1",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "yallist": "^3.0.2"
+      }
+    },
+    "node_modules/make-dir": {
+      "version": "3.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "semver": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/map-cache": {
+      "version": "0.2.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/map-visit": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "object-visit": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/md5.js": {
+      "version": "1.3.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      }
+    },
+    "node_modules/mdn-data": {
+      "version": "2.0.4",
+      "dev": true,
+      "license": "CC0-1.0"
+    },
+    "node_modules/media-typer": {
+      "version": "0.3.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/memory-fs": {
+      "version": "0.4.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "errno": "^0.1.3",
+        "readable-stream": "^2.0.1"
+      }
+    },
+    "node_modules/merge-descriptors": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/merge-source-map": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "source-map": "^0.6.1"
+      }
+    },
+    "node_modules/merge-source-map/node_modules/source-map": {
+      "version": "0.6.1",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/merge-stream": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/merge2": {
+      "version": "1.4.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/methods": {
+      "version": "1.1.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/micromatch": {
+      "version": "3.1.10",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "arr-diff": "^4.0.0",
+        "array-unique": "^0.3.2",
+        "braces": "^2.3.1",
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "extglob": "^2.0.4",
+        "fragment-cache": "^0.2.1",
+        "kind-of": "^6.0.2",
+        "nanomatch": "^1.2.9",
+        "object.pick": "^1.3.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/miller-rabin": {
+      "version": "4.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "bn.js": "^4.0.0",
+        "brorand": "^1.0.1"
+      },
+      "bin": {
+        "miller-rabin": "bin/miller-rabin"
+      }
+    },
+    "node_modules/miller-rabin/node_modules/bn.js": {
+      "version": "4.12.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/mime": {
+      "version": "2.6.0",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "mime": "cli.js"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/mime-db": {
+      "version": "1.51.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mime-types": {
+      "version": "2.1.34",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "mime-db": "1.51.0"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mimic-fn": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/mimic-response": {
+      "version": "1.0.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/mini-css-extract-plugin": {
+      "version": "0.8.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "loader-utils": "^1.1.0",
+        "normalize-url": "1.9.1",
+        "schema-utils": "^1.0.0",
+        "webpack-sources": "^1.1.0"
+      },
+      "engines": {
+        "node": ">= 6.9.0"
+      },
+      "peerDependencies": {
+        "webpack": "^4.4.0"
+      }
+    },
+    "node_modules/mini-css-extract-plugin/node_modules/schema-utils": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ajv": "^6.1.0",
+        "ajv-errors": "^1.0.0",
+        "ajv-keywords": "^3.1.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/minimalistic-assert": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/minimalistic-crypto-utils": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/minimatch": {
+      "version": "3.0.4",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/minimist": {
+      "version": "1.2.5",
+      "license": "MIT"
+    },
+    "node_modules/minipass": {
+      "version": "3.1.6",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/minipass-collect": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "minipass": "^3.0.0"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/minipass-flush": {
+      "version": "1.0.5",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "minipass": "^3.0.0"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/minipass-pipeline": {
+      "version": "1.2.4",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "minipass": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/minipass/node_modules/yallist": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/minizlib": {
+      "version": "2.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "minipass": "^3.0.0",
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/minizlib/node_modules/yallist": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/mississippi": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "concat-stream": "^1.5.0",
+        "duplexify": "^3.4.2",
+        "end-of-stream": "^1.1.0",
+        "flush-write-stream": "^1.0.0",
+        "from2": "^2.1.0",
+        "parallel-transform": "^1.1.0",
+        "pump": "^3.0.0",
+        "pumpify": "^1.3.3",
+        "stream-each": "^1.1.0",
+        "through2": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/mixin-deep": {
+      "version": "1.3.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "for-in": "^1.0.2",
+        "is-extendable": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/mkdirp": {
+      "version": "0.5.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "minimist": "^1.2.5"
+      },
+      "bin": {
+        "mkdirp": "bin/cmd.js"
+      }
+    },
+    "node_modules/mockjs": {
+      "version": "1.1.0",
+      "dev": true,
+      "dependencies": {
+        "commander": "*"
+      },
+      "bin": {
+        "random": "bin/random"
+      }
+    },
+    "node_modules/moment": {
+      "version": "2.24.0",
+      "license": "MIT",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/move-concurrently": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "aproba": "^1.1.1",
+        "copy-concurrently": "^1.0.0",
+        "fs-write-stream-atomic": "^1.0.8",
+        "mkdirp": "^0.5.1",
+        "rimraf": "^2.5.4",
+        "run-queue": "^1.0.3"
+      }
+    },
+    "node_modules/mrmime": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/ms": {
+      "version": "2.1.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/multicast-dns": {
+      "version": "6.2.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "dns-packet": "^1.3.1",
+        "thunky": "^1.0.2"
+      },
+      "bin": {
+        "multicast-dns": "cli.js"
+      }
+    },
+    "node_modules/multicast-dns-service-types": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/mute-stream": {
+      "version": "0.0.7",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/mz": {
+      "version": "2.7.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "any-promise": "^1.0.0",
+        "object-assign": "^4.0.1",
+        "thenify-all": "^1.0.0"
+      }
+    },
+    "node_modules/nanomatch": {
+      "version": "1.2.13",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "arr-diff": "^4.0.0",
+        "array-unique": "^0.3.2",
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "fragment-cache": "^0.2.1",
+        "is-windows": "^1.0.2",
+        "kind-of": "^6.0.2",
+        "object.pick": "^1.3.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/native-request": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT",
+      "optional": true
+    },
+    "node_modules/natural-compare": {
+      "version": "1.4.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/negotiator": {
+      "version": "0.6.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/neo-async": {
+      "version": "2.6.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/nice-try": {
+      "version": "1.0.5",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/no-case": {
+      "version": "2.3.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "lower-case": "^1.1.1"
+      }
+    },
+    "node_modules/node-forge": {
+      "version": "0.10.0",
+      "dev": true,
+      "license": "(BSD-3-Clause OR GPL-2.0)",
+      "engines": {
+        "node": ">= 6.0.0"
+      }
+    },
+    "node_modules/node-ipc": {
+      "version": "9.2.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "event-pubsub": "4.3.0",
+        "js-message": "1.0.7",
+        "js-queue": "2.0.2"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/node-libs-browser": {
+      "version": "2.2.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "assert": "^1.1.1",
+        "browserify-zlib": "^0.2.0",
+        "buffer": "^4.3.0",
+        "console-browserify": "^1.1.0",
+        "constants-browserify": "^1.0.0",
+        "crypto-browserify": "^3.11.0",
+        "domain-browser": "^1.1.1",
+        "events": "^3.0.0",
+        "https-browserify": "^1.0.0",
+        "os-browserify": "^0.3.0",
+        "path-browserify": "0.0.1",
+        "process": "^0.11.10",
+        "punycode": "^1.2.4",
+        "querystring-es3": "^0.2.0",
+        "readable-stream": "^2.3.3",
+        "stream-browserify": "^2.0.1",
+        "stream-http": "^2.7.2",
+        "string_decoder": "^1.0.0",
+        "timers-browserify": "^2.0.4",
+        "tty-browserify": "0.0.0",
+        "url": "^0.11.0",
+        "util": "^0.11.0",
+        "vm-browserify": "^1.0.1"
+      }
+    },
+    "node_modules/node-libs-browser/node_modules/punycode": {
+      "version": "1.4.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/node-releases": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/normalize-package-data": {
+      "version": "2.5.0",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "hosted-git-info": "^2.1.4",
+        "resolve": "^1.10.0",
+        "semver": "2 || 3 || 4 || 5",
+        "validate-npm-package-license": "^3.0.1"
+      }
+    },
+    "node_modules/normalize-package-data/node_modules/semver": {
+      "version": "5.7.1",
+      "dev": true,
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/normalize-path": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/normalize-range": {
+      "version": "0.1.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/normalize-url": {
+      "version": "1.9.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "object-assign": "^4.0.1",
+        "prepend-http": "^1.0.0",
+        "query-string": "^4.1.0",
+        "sort-keys": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/normalize-wheel": {
+      "version": "1.0.1",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/npm-run-path": {
+      "version": "2.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "path-key": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/nth-check": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "boolbase": "^1.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/nth-check?sponsor=1"
+      }
+    },
+    "node_modules/num2fraction": {
+      "version": "1.2.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/oauth-sign": {
+      "version": "0.9.0",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/object-assign": {
+      "version": "4.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-copy": {
+      "version": "0.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "copy-descriptor": "^0.1.0",
+        "define-property": "^0.2.5",
+        "kind-of": "^3.0.3"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-copy/node_modules/define-property": {
+      "version": "0.2.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-descriptor": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-copy/node_modules/is-accessor-descriptor": {
+      "version": "0.1.6",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-copy/node_modules/is-buffer": {
+      "version": "1.1.6",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/object-copy/node_modules/is-data-descriptor": {
+      "version": "0.1.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-copy/node_modules/is-descriptor": {
+      "version": "0.1.6",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-accessor-descriptor": "^0.1.6",
+        "is-data-descriptor": "^0.1.4",
+        "kind-of": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": {
+      "version": "5.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-copy/node_modules/kind-of": {
+      "version": "3.2.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-hash": {
+      "version": "1.3.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.10.0"
+      }
+    },
+    "node_modules/object-inspect": {
+      "version": "1.12.0",
+      "dev": true,
+      "license": "MIT",
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/object-is": {
+      "version": "1.1.5",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/object-keys": {
+      "version": "1.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/object-visit": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "isobject": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object.assign": {
+      "version": "4.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.0",
+        "define-properties": "^1.1.3",
+        "has-symbols": "^1.0.1",
+        "object-keys": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/object.getownpropertydescriptors": {
+      "version": "2.1.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.19.1"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/object.pick": {
+      "version": "1.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "isobject": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object.values": {
+      "version": "1.1.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.19.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/obuf": {
+      "version": "1.1.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/on-finished": {
+      "version": "2.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ee-first": "1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/on-headers": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/once": {
+      "version": "1.4.0",
+      "license": "ISC",
+      "dependencies": {
+        "wrappy": "1"
+      }
+    },
+    "node_modules/open": {
+      "version": "6.4.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-wsl": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/open/node_modules/is-wsl": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/opener": {
+      "version": "1.5.2",
+      "dev": true,
+      "license": "(WTFPL OR MIT)",
+      "bin": {
+        "opener": "bin/opener-bin.js"
+      }
+    },
+    "node_modules/opn": {
+      "version": "5.5.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-wsl": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/opn/node_modules/is-wsl": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/optionator": {
+      "version": "0.8.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "deep-is": "~0.1.3",
+        "fast-levenshtein": "~2.0.6",
+        "levn": "~0.3.0",
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2",
+        "word-wrap": "~1.2.3"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/ora": {
+      "version": "3.4.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "chalk": "^2.4.2",
+        "cli-cursor": "^2.1.0",
+        "cli-spinners": "^2.0.0",
+        "log-symbols": "^2.2.0",
+        "strip-ansi": "^5.2.0",
+        "wcwidth": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/ora/node_modules/ansi-regex": {
+      "version": "4.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/ora/node_modules/cli-cursor": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "restore-cursor": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/ora/node_modules/mimic-fn": {
+      "version": "1.2.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/ora/node_modules/onetime": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "mimic-fn": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/ora/node_modules/restore-cursor": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "onetime": "^2.0.0",
+        "signal-exit": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/ora/node_modules/strip-ansi": {
+      "version": "5.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/original": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "url-parse": "^1.4.3"
+      }
+    },
+    "node_modules/os-browserify": {
+      "version": "0.3.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/os-tmpdir": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/p-cancelable": {
+      "version": "2.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/p-finally": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/p-limit": {
+      "version": "2.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-try": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/p-locate": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-limit": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/p-retry": {
+      "version": "3.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "retry": "^0.12.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/p-try": {
+      "version": "2.2.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/pako": {
+      "version": "1.0.11",
+      "dev": true,
+      "license": "(MIT AND Zlib)"
+    },
+    "node_modules/parallel-transform": {
+      "version": "1.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cyclist": "^1.0.1",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.1.5"
+      }
+    },
+    "node_modules/param-case": {
+      "version": "2.1.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "no-case": "^2.2.0"
+      }
+    },
+    "node_modules/parchment": {
+      "version": "1.1.4",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/parent-module": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "callsites": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/parent-module/node_modules/callsites": {
+      "version": "3.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/parse-asn1": {
+      "version": "5.1.6",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "asn1.js": "^5.2.0",
+        "browserify-aes": "^1.0.0",
+        "evp_bytestokey": "^1.0.0",
+        "pbkdf2": "^3.0.3",
+        "safe-buffer": "^5.1.1"
+      }
+    },
+    "node_modules/parse-json": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "error-ex": "^1.3.1",
+        "json-parse-better-errors": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/parse5": {
+      "version": "5.1.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/parse5-htmlparser2-tree-adapter": {
+      "version": "6.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "parse5": "^6.0.1"
+      }
+    },
+    "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": {
+      "version": "6.0.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/parseurl": {
+      "version": "1.3.3",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/pascalcase": {
+      "version": "0.1.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/path-browserify": {
+      "version": "0.0.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/path-dirname": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/path-exists": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/path-is-absolute": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/path-is-inside": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "(WTFPL OR MIT)"
+    },
+    "node_modules/path-key": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/path-parse": {
+      "version": "1.0.7",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/path-to-regexp": {
+      "version": "0.1.7",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/path-type": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "pify": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/path-type/node_modules/pify": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pbkdf2": {
+      "version": "3.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "create-hash": "^1.1.2",
+        "create-hmac": "^1.1.4",
+        "ripemd160": "^2.0.1",
+        "safe-buffer": "^5.0.1",
+        "sha.js": "^2.4.8"
+      },
+      "engines": {
+        "node": ">=0.12"
+      }
+    },
+    "node_modules/performance-now": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/picocolors": {
+      "version": "0.2.1",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/picomatch": {
+      "version": "2.3.1",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "engines": {
+        "node": ">=8.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert"
+      }
+    },
+    "node_modules/pinkie": {
+      "version": "2.0.4",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/pinkie-promise": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "pinkie": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/pkg-dir": {
+      "version": "4.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/pkg-dir/node_modules/find-up": {
+      "version": "4.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "locate-path": "^5.0.0",
+        "path-exists": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/pkg-dir/node_modules/locate-path": {
+      "version": "5.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-locate": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/pkg-dir/node_modules/p-locate": {
+      "version": "4.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-limit": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/pkg-dir/node_modules/path-exists": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/pkg-up": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-up/node_modules/find-up": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "locate-path": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-up/node_modules/locate-path": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-locate": "^2.0.0",
+        "path-exists": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-up/node_modules/p-limit": {
+      "version": "1.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-try": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-up/node_modules/p-locate": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-limit": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-up/node_modules/p-try": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pluralize": {
+      "version": "7.0.0",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/popper.js": {
+      "version": "1.16.1",
+      "license": "MIT",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/popperjs"
+      }
+    },
+    "node_modules/portfinder": {
+      "version": "1.0.28",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "async": "^2.6.2",
+        "debug": "^3.1.1",
+        "mkdirp": "^0.5.5"
+      },
+      "engines": {
+        "node": ">= 0.12.0"
+      }
+    },
+    "node_modules/portfinder/node_modules/async": {
+      "version": "2.6.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "lodash": "^4.17.14"
+      }
+    },
+    "node_modules/portfinder/node_modules/debug": {
+      "version": "3.2.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ms": "^2.1.1"
+      }
+    },
+    "node_modules/posix-character-classes": {
+      "version": "0.1.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/postcss": {
+      "version": "7.0.39",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "picocolors": "^0.2.1",
+        "source-map": "^0.6.1"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/postcss/"
+      }
+    },
+    "node_modules/postcss-calc": {
+      "version": "7.0.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.27",
+        "postcss-selector-parser": "^6.0.2",
+        "postcss-value-parser": "^4.0.2"
+      }
+    },
+    "node_modules/postcss-colormin": {
+      "version": "4.0.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "browserslist": "^4.0.0",
+        "color": "^3.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-colormin/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/postcss-convert-values": {
+      "version": "4.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-convert-values/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/postcss-discard-comments": {
+      "version": "4.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-discard-duplicates": {
+      "version": "4.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-discard-empty": {
+      "version": "4.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-discard-overridden": {
+      "version": "4.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-load-config": {
+      "version": "2.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cosmiconfig": "^5.0.0",
+        "import-cwd": "^2.0.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/postcss/"
+      }
+    },
+    "node_modules/postcss-loader": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "loader-utils": "^1.1.0",
+        "postcss": "^7.0.0",
+        "postcss-load-config": "^2.0.0",
+        "schema-utils": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/postcss-loader/node_modules/schema-utils": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ajv": "^6.1.0",
+        "ajv-errors": "^1.0.0",
+        "ajv-keywords": "^3.1.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/postcss-merge-longhand": {
+      "version": "4.0.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "css-color-names": "0.0.4",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0",
+        "stylehacks": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-merge-longhand/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/postcss-merge-rules": {
+      "version": "4.0.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "browserslist": "^4.0.0",
+        "caniuse-api": "^3.0.0",
+        "cssnano-util-same-parent": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-selector-parser": "^3.0.0",
+        "vendors": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": {
+      "version": "3.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "dot-prop": "^5.2.0",
+        "indexes-of": "^1.0.1",
+        "uniq": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/postcss-minify-font-values": {
+      "version": "4.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-minify-font-values/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/postcss-minify-gradients": {
+      "version": "4.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "is-color-stop": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-minify-gradients/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/postcss-minify-params": {
+      "version": "4.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "alphanum-sort": "^1.0.0",
+        "browserslist": "^4.0.0",
+        "cssnano-util-get-arguments": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0",
+        "uniqs": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-minify-params/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/postcss-minify-selectors": {
+      "version": "4.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "alphanum-sort": "^1.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-selector-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": {
+      "version": "3.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "dot-prop": "^5.2.0",
+        "indexes-of": "^1.0.1",
+        "uniq": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/postcss-modules-extract-imports": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "ISC",
+      "peer": true,
+      "dependencies": {
+        "postcss": "^7.0.5"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/postcss-modules-local-by-default": {
+      "version": "3.0.3",
+      "dev": true,
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "icss-utils": "^4.1.1",
+        "postcss": "^7.0.32",
+        "postcss-selector-parser": "^6.0.2",
+        "postcss-value-parser": "^4.1.0"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/postcss-modules-scope": {
+      "version": "2.2.0",
+      "dev": true,
+      "license": "ISC",
+      "peer": true,
+      "dependencies": {
+        "postcss": "^7.0.6",
+        "postcss-selector-parser": "^6.0.0"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/postcss-modules-values": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "ISC",
+      "peer": true,
+      "dependencies": {
+        "icss-utils": "^4.0.0",
+        "postcss": "^7.0.6"
+      }
+    },
+    "node_modules/postcss-normalize-charset": {
+      "version": "4.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-normalize-display-values": {
+      "version": "4.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cssnano-util-get-match": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-normalize-display-values/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/postcss-normalize-positions": {
+      "version": "4.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-normalize-positions/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/postcss-normalize-repeat-style": {
+      "version": "4.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "cssnano-util-get-match": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-normalize-repeat-style/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/postcss-normalize-string": {
+      "version": "4.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-normalize-string/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/postcss-normalize-timing-functions": {
+      "version": "4.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cssnano-util-get-match": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-normalize-timing-functions/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/postcss-normalize-unicode": {
+      "version": "4.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "browserslist": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-normalize-unicode/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/postcss-normalize-url": {
+      "version": "4.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-absolute-url": "^2.0.0",
+        "normalize-url": "^3.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-normalize-url/node_modules/normalize-url": {
+      "version": "3.3.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/postcss-normalize-url/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/postcss-normalize-whitespace": {
+      "version": "4.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-normalize-whitespace/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/postcss-ordered-values": {
+      "version": "4.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-ordered-values/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/postcss-reduce-initial": {
+      "version": "4.0.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "browserslist": "^4.0.0",
+        "caniuse-api": "^3.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-reduce-transforms": {
+      "version": "4.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cssnano-util-get-match": "^4.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-reduce-transforms/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/postcss-selector-parser": {
+      "version": "6.0.8",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cssesc": "^3.0.0",
+        "util-deprecate": "^1.0.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/postcss-svgo": {
+      "version": "4.0.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0",
+        "svgo": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-svgo/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/postcss-unique-selectors": {
+      "version": "4.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "alphanum-sort": "^1.0.0",
+        "postcss": "^7.0.0",
+        "uniqs": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/postcss-value-parser": {
+      "version": "4.2.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/postcss/node_modules/source-map": {
+      "version": "0.6.1",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/prelude-ls": {
+      "version": "1.1.2",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/prepend-http": {
+      "version": "1.0.4",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/prettier": {
+      "version": "2.5.1",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "bin": {
+        "prettier": "bin-prettier.js"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
+    "node_modules/pretty-error": {
+      "version": "2.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "lodash": "^4.17.20",
+        "renderkid": "^2.0.4"
+      }
+    },
+    "node_modules/pretty-error/node_modules/lodash": {
+      "version": "4.17.21",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/printj": {
+      "version": "1.1.2",
+      "license": "Apache-2.0",
+      "bin": {
+        "printj": "bin/printj.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/process": {
+      "version": "0.11.10",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6.0"
+      }
+    },
+    "node_modules/process-nextick-args": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/progress": {
+      "version": "2.0.3",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/promise-inflight": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/proxy-addr": {
+      "version": "2.0.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "forwarded": "0.2.0",
+        "ipaddr.js": "1.9.1"
+      },
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/prr": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/pseudomap": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/psl": {
+      "version": "1.8.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/public-encrypt": {
+      "version": "4.0.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "bn.js": "^4.1.0",
+        "browserify-rsa": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "parse-asn1": "^5.0.0",
+        "randombytes": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      }
+    },
+    "node_modules/public-encrypt/node_modules/bn.js": {
+      "version": "4.12.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/pump": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "node_modules/pumpify": {
+      "version": "1.5.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "duplexify": "^3.6.0",
+        "inherits": "^2.0.3",
+        "pump": "^2.0.0"
+      }
+    },
+    "node_modules/pumpify/node_modules/pump": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "node_modules/punycode": {
+      "version": "2.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/q": {
+      "version": "1.5.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.6.0",
+        "teleport": ">=0.2.0"
+      }
+    },
+    "node_modules/qs": {
+      "version": "6.5.2",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/query-string": {
+      "version": "4.3.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "object-assign": "^4.1.0",
+        "strict-uri-encode": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/querystring": {
+      "version": "0.2.0",
+      "dev": true,
+      "engines": {
+        "node": ">=0.4.x"
+      }
+    },
+    "node_modules/querystring-es3": {
+      "version": "0.2.1",
+      "dev": true,
+      "engines": {
+        "node": ">=0.4.x"
+      }
+    },
+    "node_modules/querystringify": {
+      "version": "2.2.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/quick-lru": {
+      "version": "5.1.1",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/quill": {
+      "version": "1.3.7",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "clone": "^2.1.1",
+        "deep-equal": "^1.0.1",
+        "eventemitter3": "^2.0.3",
+        "extend": "^3.0.2",
+        "parchment": "^1.1.4",
+        "quill-delta": "^3.6.2"
+      }
+    },
+    "node_modules/quill-delta": {
+      "version": "3.6.3",
+      "license": "MIT",
+      "dependencies": {
+        "deep-equal": "^1.0.1",
+        "extend": "^3.0.2",
+        "fast-diff": "1.1.2"
+      },
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/quill-delta/node_modules/fast-diff": {
+      "version": "1.1.2",
+      "license": "Apache-2.0"
+    },
+    "node_modules/quill-image-drop-module": {
+      "version": "1.0.3",
+      "license": "MIT",
+      "dependencies": {
+        "quill": "^1.2.2"
+      }
+    },
+    "node_modules/quill-image-resize-module": {
+      "version": "3.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "lodash": "^4.17.4",
+        "quill": "^1.2.2",
+        "raw-loader": "^0.5.1"
+      }
+    },
+    "node_modules/quill/node_modules/clone": {
+      "version": "2.1.2",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/quill/node_modules/eventemitter3": {
+      "version": "2.0.3",
+      "license": "MIT"
+    },
+    "node_modules/randombytes": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "node_modules/randomfill": {
+      "version": "1.0.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "randombytes": "^2.0.5",
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "node_modules/range-parser": {
+      "version": "1.2.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/raw-body": {
+      "version": "2.4.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "bytes": "3.1.1",
+        "http-errors": "1.8.1",
+        "iconv-lite": "0.4.24",
+        "unpipe": "1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/raw-loader": {
+      "version": "0.5.1"
+    },
+    "node_modules/read-pkg": {
+      "version": "5.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/normalize-package-data": "^2.4.0",
+        "normalize-package-data": "^2.5.0",
+        "parse-json": "^5.0.0",
+        "type-fest": "^0.6.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/read-pkg/node_modules/parse-json": {
+      "version": "5.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.0.0",
+        "error-ex": "^1.3.1",
+        "json-parse-even-better-errors": "^2.3.0",
+        "lines-and-columns": "^1.1.6"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/read-pkg/node_modules/type-fest": {
+      "version": "0.6.0",
+      "dev": true,
+      "license": "(MIT OR CC0-1.0)",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/readable-stream": {
+      "version": "2.3.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.1.1",
+        "util-deprecate": "~1.0.1"
+      }
+    },
+    "node_modules/readdirp": {
+      "version": "2.2.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "graceful-fs": "^4.1.11",
+        "micromatch": "^3.1.10",
+        "readable-stream": "^2.0.2"
+      },
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/regenerate": {
+      "version": "1.4.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/regenerate-unicode-properties": {
+      "version": "9.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "regenerate": "^1.4.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/regenerator-runtime": {
+      "version": "0.13.9",
+      "license": "MIT"
+    },
+    "node_modules/regenerator-transform": {
+      "version": "0.14.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.8.4"
+      }
+    },
+    "node_modules/regex-not": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "extend-shallow": "^3.0.2",
+        "safe-regex": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/regexp.prototype.flags": {
+      "version": "1.3.1",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/regexpp": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.5.0"
+      }
+    },
+    "node_modules/regexpu-core": {
+      "version": "4.8.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "regenerate": "^1.4.2",
+        "regenerate-unicode-properties": "^9.0.0",
+        "regjsgen": "^0.5.2",
+        "regjsparser": "^0.7.0",
+        "unicode-match-property-ecmascript": "^2.0.0",
+        "unicode-match-property-value-ecmascript": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/regjsgen": {
+      "version": "0.5.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/regjsparser": {
+      "version": "0.7.0",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "jsesc": "~0.5.0"
+      },
+      "bin": {
+        "regjsparser": "bin/parser"
+      }
+    },
+    "node_modules/regjsparser/node_modules/jsesc": {
+      "version": "0.5.0",
+      "dev": true,
+      "bin": {
+        "jsesc": "bin/jsesc"
+      }
+    },
+    "node_modules/relateurl": {
+      "version": "0.2.7",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/remove-trailing-separator": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/renderkid": {
+      "version": "2.0.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "css-select": "^4.1.3",
+        "dom-converter": "^0.2.0",
+        "htmlparser2": "^6.1.0",
+        "lodash": "^4.17.21",
+        "strip-ansi": "^3.0.1"
+      }
+    },
+    "node_modules/renderkid/node_modules/ansi-regex": {
+      "version": "2.1.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/renderkid/node_modules/lodash": {
+      "version": "4.17.21",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/renderkid/node_modules/strip-ansi": {
+      "version": "3.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/repeat-element": {
+      "version": "1.1.4",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/repeat-string": {
+      "version": "1.6.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/request": {
+      "version": "2.88.2",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "aws-sign2": "~0.7.0",
+        "aws4": "^1.8.0",
+        "caseless": "~0.12.0",
+        "combined-stream": "~1.0.6",
+        "extend": "~3.0.2",
+        "forever-agent": "~0.6.1",
+        "form-data": "~2.3.2",
+        "har-validator": "~5.1.3",
+        "http-signature": "~1.2.0",
+        "is-typedarray": "~1.0.0",
+        "isstream": "~0.1.2",
+        "json-stringify-safe": "~5.0.1",
+        "mime-types": "~2.1.19",
+        "oauth-sign": "~0.9.0",
+        "performance-now": "^2.1.0",
+        "qs": "~6.5.2",
+        "safe-buffer": "^5.1.2",
+        "tough-cookie": "~2.5.0",
+        "tunnel-agent": "^0.6.0",
+        "uuid": "^3.3.2"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/request-promise-core": {
+      "version": "1.1.4",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "lodash": "^4.17.19"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      },
+      "peerDependencies": {
+        "request": "^2.34"
+      }
+    },
+    "node_modules/request-promise-core/node_modules/lodash": {
+      "version": "4.17.21",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/request-promise-native": {
+      "version": "1.0.9",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "request-promise-core": "1.1.4",
+        "stealthy-require": "^1.1.1",
+        "tough-cookie": "^2.3.3"
+      },
+      "engines": {
+        "node": ">=0.12.0"
+      },
+      "peerDependencies": {
+        "request": "^2.34"
+      }
+    },
+    "node_modules/request-promise-native/node_modules/tough-cookie": {
+      "version": "2.5.0",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "psl": "^1.1.28",
+        "punycode": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/request/node_modules/tough-cookie": {
+      "version": "2.5.0",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "psl": "^1.1.28",
+        "punycode": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/require-directory": {
+      "version": "2.1.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/require-main-filename": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/require-uncached": {
+      "version": "1.0.3",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "caller-path": "^0.1.0",
+        "resolve-from": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/require-uncached/node_modules/caller-path": {
+      "version": "0.1.0",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "callsites": "^0.2.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/require-uncached/node_modules/callsites": {
+      "version": "0.2.0",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/require-uncached/node_modules/resolve-from": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/requires-port": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/reselect": {
+      "version": "3.0.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/resize-observer-polyfill": {
+      "version": "1.5.1",
+      "license": "MIT"
+    },
+    "node_modules/resolve": {
+      "version": "1.21.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-core-module": "^2.8.0",
+        "path-parse": "^1.0.7",
+        "supports-preserve-symlinks-flag": "^1.0.0"
+      },
+      "bin": {
+        "resolve": "bin/resolve"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/resolve-alpn": {
+      "version": "1.2.1",
+      "license": "MIT"
+    },
+    "node_modules/resolve-cwd": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "resolve-from": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/resolve-from": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/resolve-url": {
+      "version": "0.2.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/responselike": {
+      "version": "2.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "lowercase-keys": "^2.0.0"
+      }
+    },
+    "node_modules/ret": {
+      "version": "0.1.15",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.12"
+      }
+    },
+    "node_modules/retry": {
+      "version": "0.12.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/rgb-regex": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/rgba-regex": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/rimraf": {
+      "version": "2.7.1",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      }
+    },
+    "node_modules/ripemd160": {
+      "version": "2.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1"
+      }
+    },
+    "node_modules/run-async": {
+      "version": "2.4.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/run-queue": {
+      "version": "1.0.3",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "aproba": "^1.1.1"
+      }
+    },
+    "node_modules/rx-lite": {
+      "version": "4.0.8",
+      "dev": true,
+      "optional": true
+    },
+    "node_modules/rx-lite-aggregates": {
+      "version": "4.0.8",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "rx-lite": "*"
+      }
+    },
+    "node_modules/rxjs": {
+      "version": "6.6.7",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "tslib": "^1.9.0"
+      },
+      "engines": {
+        "npm": ">=2.0.0"
+      }
+    },
+    "node_modules/safe-buffer": {
+      "version": "5.1.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/safe-regex": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ret": "~0.1.10"
+      }
+    },
+    "node_modules/safer-buffer": {
+      "version": "2.1.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/sax": {
+      "version": "1.2.4",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/schema-utils": {
+      "version": "2.7.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/json-schema": "^7.0.5",
+        "ajv": "^6.12.4",
+        "ajv-keywords": "^3.5.2"
+      },
+      "engines": {
+        "node": ">= 8.9.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      }
+    },
+    "node_modules/select-hose": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/selfsigned": {
+      "version": "1.10.11",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "node-forge": "^0.10.0"
+      }
+    },
+    "node_modules/semver": {
+      "version": "6.3.0",
+      "dev": true,
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/send": {
+      "version": "0.17.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "destroy": "~1.0.4",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "fresh": "0.5.2",
+        "http-errors": "1.8.1",
+        "mime": "1.6.0",
+        "ms": "2.1.3",
+        "on-finished": "~2.3.0",
+        "range-parser": "~1.2.1",
+        "statuses": "~1.5.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/send/node_modules/debug": {
+      "version": "2.6.9",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/send/node_modules/debug/node_modules/ms": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/send/node_modules/mime": {
+      "version": "1.6.0",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "mime": "cli.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/send/node_modules/ms": {
+      "version": "2.1.3",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/serialize-javascript": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "randombytes": "^2.1.0"
+      }
+    },
+    "node_modules/serve-index": {
+      "version": "1.9.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "accepts": "~1.3.4",
+        "batch": "0.6.1",
+        "debug": "2.6.9",
+        "escape-html": "~1.0.3",
+        "http-errors": "~1.6.2",
+        "mime-types": "~2.1.17",
+        "parseurl": "~1.3.2"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/serve-index/node_modules/debug": {
+      "version": "2.6.9",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/serve-index/node_modules/http-errors": {
+      "version": "1.6.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "depd": "~1.1.2",
+        "inherits": "2.0.3",
+        "setprototypeof": "1.1.0",
+        "statuses": ">= 1.4.0 < 2"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/serve-index/node_modules/inherits": {
+      "version": "2.0.3",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/serve-index/node_modules/ms": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/serve-index/node_modules/setprototypeof": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/serve-static": {
+      "version": "1.14.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "parseurl": "~1.3.3",
+        "send": "0.17.2"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/set-blocking": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/set-value": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "extend-shallow": "^2.0.1",
+        "is-extendable": "^0.1.1",
+        "is-plain-object": "^2.0.3",
+        "split-string": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/set-value/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/set-value/node_modules/is-extendable": {
+      "version": "0.1.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/setimmediate": {
+      "version": "1.0.5",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/setprototypeof": {
+      "version": "1.2.0",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/sha.js": {
+      "version": "2.4.11",
+      "dev": true,
+      "license": "(MIT AND BSD-3-Clause)",
+      "dependencies": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      },
+      "bin": {
+        "sha.js": "bin.js"
+      }
+    },
+    "node_modules/shebang-command": {
+      "version": "1.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "shebang-regex": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/shebang-regex": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/shell-quote": {
+      "version": "1.7.3",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/side-channel": {
+      "version": "1.0.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.0",
+        "get-intrinsic": "^1.0.2",
+        "object-inspect": "^1.9.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/signal-exit": {
+      "version": "3.0.6",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/simple-swizzle": {
+      "version": "0.2.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-arrayish": "^0.3.1"
+      }
+    },
+    "node_modules/simple-swizzle/node_modules/is-arrayish": {
+      "version": "0.3.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/sirv": {
+      "version": "1.0.19",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@polka/url": "^1.0.0-next.20",
+        "mrmime": "^1.0.0",
+        "totalist": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/slash": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/snapdragon": {
+      "version": "0.8.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "base": "^0.11.1",
+        "debug": "^2.2.0",
+        "define-property": "^0.2.5",
+        "extend-shallow": "^2.0.1",
+        "map-cache": "^0.2.2",
+        "source-map": "^0.5.6",
+        "source-map-resolve": "^0.5.0",
+        "use": "^3.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon-node": {
+      "version": "2.1.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "define-property": "^1.0.0",
+        "isobject": "^3.0.0",
+        "snapdragon-util": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon-node/node_modules/define-property": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-descriptor": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon-util": {
+      "version": "3.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.2.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon-util/node_modules/is-buffer": {
+      "version": "1.1.6",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/snapdragon-util/node_modules/kind-of": {
+      "version": "3.2.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/debug": {
+      "version": "2.6.9",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/define-property": {
+      "version": "0.2.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-descriptor": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/is-accessor-descriptor": {
+      "version": "0.1.6",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": {
+      "version": "3.2.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/is-buffer": {
+      "version": "1.1.6",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/snapdragon/node_modules/is-data-descriptor": {
+      "version": "0.1.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": {
+      "version": "3.2.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/is-descriptor": {
+      "version": "0.1.6",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-accessor-descriptor": "^0.1.6",
+        "is-data-descriptor": "^0.1.4",
+        "kind-of": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/is-extendable": {
+      "version": "0.1.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/kind-of": {
+      "version": "5.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/ms": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/sockjs": {
+      "version": "0.3.24",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "faye-websocket": "^0.11.3",
+        "uuid": "^8.3.2",
+        "websocket-driver": "^0.7.4"
+      }
+    },
+    "node_modules/sockjs-client": {
+      "version": "1.5.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "debug": "^3.2.6",
+        "eventsource": "^1.0.7",
+        "faye-websocket": "^0.11.3",
+        "inherits": "^2.0.4",
+        "json3": "^3.3.3",
+        "url-parse": "^1.5.3"
+      }
+    },
+    "node_modules/sockjs-client/node_modules/debug": {
+      "version": "3.2.7",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ms": "^2.1.1"
+      }
+    },
+    "node_modules/sockjs/node_modules/uuid": {
+      "version": "8.3.2",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "uuid": "dist/bin/uuid"
+      }
+    },
+    "node_modules/sort-keys": {
+      "version": "1.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-plain-obj": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/source-list-map": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/source-map": {
+      "version": "0.5.7",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/source-map-resolve": {
+      "version": "0.5.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "atob": "^2.1.2",
+        "decode-uri-component": "^0.2.0",
+        "resolve-url": "^0.2.1",
+        "source-map-url": "^0.4.0",
+        "urix": "^0.1.0"
+      }
+    },
+    "node_modules/source-map-support": {
+      "version": "0.5.21",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "buffer-from": "^1.0.0",
+        "source-map": "^0.6.0"
+      }
+    },
+    "node_modules/source-map-support/node_modules/source-map": {
+      "version": "0.6.1",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/source-map-url": {
+      "version": "0.4.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/spark-md5": {
+      "version": "3.0.2",
+      "license": "(WTFPL OR MIT)"
+    },
+    "node_modules/spdx-correct": {
+      "version": "3.1.1",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "spdx-expression-parse": "^3.0.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "node_modules/spdx-exceptions": {
+      "version": "2.3.0",
+      "dev": true,
+      "license": "CC-BY-3.0"
+    },
+    "node_modules/spdx-expression-parse": {
+      "version": "3.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "spdx-exceptions": "^2.1.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "node_modules/spdx-license-ids": {
+      "version": "3.0.11",
+      "dev": true,
+      "license": "CC0-1.0"
+    },
+    "node_modules/spdy": {
+      "version": "4.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "debug": "^4.1.0",
+        "handle-thing": "^2.0.0",
+        "http-deceiver": "^1.2.7",
+        "select-hose": "^2.0.0",
+        "spdy-transport": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/spdy-transport": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "debug": "^4.1.0",
+        "detect-node": "^2.0.4",
+        "hpack.js": "^2.1.6",
+        "obuf": "^1.1.2",
+        "readable-stream": "^3.0.6",
+        "wbuf": "^1.7.3"
+      }
+    },
+    "node_modules/spdy-transport/node_modules/readable-stream": {
+      "version": "3.6.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "string_decoder": "^1.1.1",
+        "util-deprecate": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/split-string": {
+      "version": "3.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "extend-shallow": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/sprintf-js": {
+      "version": "1.0.3",
+      "dev": true,
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/ssf": {
+      "version": "0.11.2",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "frac": "~1.1.2"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/sshpk": {
+      "version": "1.16.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "asn1": "~0.2.3",
+        "assert-plus": "^1.0.0",
+        "bcrypt-pbkdf": "^1.0.0",
+        "dashdash": "^1.12.0",
+        "ecc-jsbn": "~0.1.1",
+        "getpass": "^0.1.1",
+        "jsbn": "~0.1.0",
+        "safer-buffer": "^2.0.2",
+        "tweetnacl": "~0.14.0"
+      },
+      "bin": {
+        "sshpk-conv": "bin/sshpk-conv",
+        "sshpk-sign": "bin/sshpk-sign",
+        "sshpk-verify": "bin/sshpk-verify"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/ssri": {
+      "version": "6.0.2",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "figgy-pudding": "^3.5.1"
+      }
+    },
+    "node_modules/stable": {
+      "version": "0.1.8",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/stackframe": {
+      "version": "1.2.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/static-extend": {
+      "version": "0.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "define-property": "^0.2.5",
+        "object-copy": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/static-extend/node_modules/define-property": {
+      "version": "0.2.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-descriptor": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/static-extend/node_modules/is-accessor-descriptor": {
+      "version": "0.1.6",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": {
+      "version": "3.2.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/static-extend/node_modules/is-buffer": {
+      "version": "1.1.6",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/static-extend/node_modules/is-data-descriptor": {
+      "version": "0.1.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": {
+      "version": "3.2.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/static-extend/node_modules/is-descriptor": {
+      "version": "0.1.6",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-accessor-descriptor": "^0.1.6",
+        "is-data-descriptor": "^0.1.4",
+        "kind-of": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/static-extend/node_modules/kind-of": {
+      "version": "5.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/statuses": {
+      "version": "1.5.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/stealthy-require": {
+      "version": "1.1.1",
+      "dev": true,
+      "license": "ISC",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/stream-browserify": {
+      "version": "2.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "~2.0.1",
+        "readable-stream": "^2.0.2"
+      }
+    },
+    "node_modules/stream-each": {
+      "version": "1.2.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "end-of-stream": "^1.1.0",
+        "stream-shift": "^1.0.0"
+      }
+    },
+    "node_modules/stream-http": {
+      "version": "2.8.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "builtin-status-codes": "^3.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.3.6",
+        "to-arraybuffer": "^1.0.0",
+        "xtend": "^4.0.0"
+      }
+    },
+    "node_modules/stream-shift": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/strict-uri-encode": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/string_decoder": {
+      "version": "1.1.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
+    "node_modules/string-width": {
+      "version": "4.2.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/string.prototype.padend": {
+      "version": "3.1.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.19.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/string.prototype.padstart": {
+      "version": "3.1.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.19.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/string.prototype.trimend": {
+      "version": "1.0.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/string.prototype.trimstart": {
+      "version": "1.0.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/strip-ansi": {
+      "version": "6.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-eof": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/strip-final-newline": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/strip-indent": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/strip-json-comments": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/style-loader": {
+      "version": "0.23.1",
+      "license": "MIT",
+      "dependencies": {
+        "loader-utils": "^1.1.0",
+        "schema-utils": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.12.0"
+      }
+    },
+    "node_modules/style-loader/node_modules/schema-utils": {
+      "version": "1.0.0",
+      "license": "MIT",
+      "dependencies": {
+        "ajv": "^6.1.0",
+        "ajv-errors": "^1.0.0",
+        "ajv-keywords": "^3.1.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/style-resources-loader": {
+      "version": "1.5.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "glob": "^7.2.0",
+        "loader-utils": "^2.0.0",
+        "schema-utils": "^2.7.0",
+        "tslib": "^2.3.1"
+      },
+      "engines": {
+        "node": ">=8.9"
+      },
+      "peerDependencies": {
+        "webpack": "^3.0.0 || ^4.0.0 || ^5.0.0"
+      }
+    },
+    "node_modules/style-resources-loader/node_modules/loader-utils": {
+      "version": "2.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "big.js": "^5.2.2",
+        "emojis-list": "^3.0.0",
+        "json5": "^2.1.2"
+      },
+      "engines": {
+        "node": ">=8.9.0"
+      }
+    },
+    "node_modules/style-resources-loader/node_modules/tslib": {
+      "version": "2.3.1",
+      "dev": true,
+      "license": "0BSD"
+    },
+    "node_modules/stylehacks": {
+      "version": "4.0.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "browserslist": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-selector-parser": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/stylehacks/node_modules/postcss-selector-parser": {
+      "version": "3.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "dot-prop": "^5.2.0",
+        "indexes-of": "^1.0.1",
+        "uniq": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/supports-color": {
+      "version": "5.5.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/supports-preserve-symlinks-flag": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/svg-tags": {
+      "version": "1.0.0",
+      "dev": true
+    },
+    "node_modules/svgo": {
+      "version": "1.3.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "chalk": "^2.4.1",
+        "coa": "^2.0.2",
+        "css-select": "^2.0.0",
+        "css-select-base-adapter": "^0.1.1",
+        "css-tree": "1.0.0-alpha.37",
+        "csso": "^4.0.2",
+        "js-yaml": "^3.13.1",
+        "mkdirp": "~0.5.1",
+        "object.values": "^1.1.0",
+        "sax": "~1.2.4",
+        "stable": "^0.1.8",
+        "unquote": "~1.1.1",
+        "util.promisify": "~1.0.0"
+      },
+      "bin": {
+        "svgo": "bin/svgo"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/svgo/node_modules/css-select": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "boolbase": "^1.0.0",
+        "css-what": "^3.2.1",
+        "domutils": "^1.7.0",
+        "nth-check": "^1.0.2"
+      }
+    },
+    "node_modules/svgo/node_modules/css-what": {
+      "version": "3.4.2",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">= 6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/fb55"
+      }
+    },
+    "node_modules/svgo/node_modules/dom-serializer": {
+      "version": "0.2.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "domelementtype": "^2.0.1",
+        "entities": "^2.0.0"
+      }
+    },
+    "node_modules/svgo/node_modules/domutils": {
+      "version": "1.7.0",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "dom-serializer": "0",
+        "domelementtype": "1"
+      }
+    },
+    "node_modules/svgo/node_modules/domutils/node_modules/domelementtype": {
+      "version": "1.3.1",
+      "dev": true,
+      "license": "BSD-2-Clause"
+    },
+    "node_modules/svgo/node_modules/nth-check": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "boolbase": "~1.0.0"
+      }
+    },
+    "node_modules/table": {
+      "version": "5.4.6",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "ajv": "^6.10.2",
+        "lodash": "^4.17.14",
+        "slice-ansi": "^2.1.0",
+        "string-width": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/table/node_modules/ansi-regex": {
+      "version": "4.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/table/node_modules/emoji-regex": {
+      "version": "7.0.3",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/table/node_modules/is-fullwidth-code-point": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/table/node_modules/slice-ansi": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^3.2.0",
+        "astral-regex": "^1.0.0",
+        "is-fullwidth-code-point": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/table/node_modules/string-width": {
+      "version": "3.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "emoji-regex": "^7.0.1",
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^5.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/table/node_modules/strip-ansi": {
+      "version": "5.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/tapable": {
+      "version": "1.1.3",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/tar": {
+      "version": "6.1.11",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "chownr": "^2.0.0",
+        "fs-minipass": "^2.0.0",
+        "minipass": "^3.0.0",
+        "minizlib": "^2.1.1",
+        "mkdirp": "^1.0.3",
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/tar/node_modules/chownr": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "ISC",
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/tar/node_modules/mkdirp": {
+      "version": "1.0.4",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "mkdirp": "bin/cmd.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/tar/node_modules/yallist": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/terser": {
+      "version": "4.8.0",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "commander": "^2.20.0",
+        "source-map": "~0.6.1",
+        "source-map-support": "~0.5.12"
+      },
+      "bin": {
+        "terser": "bin/terser"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/terser-webpack-plugin": {
+      "version": "1.4.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cacache": "^12.0.2",
+        "find-cache-dir": "^2.1.0",
+        "is-wsl": "^1.1.0",
+        "schema-utils": "^1.0.0",
+        "serialize-javascript": "^4.0.0",
+        "source-map": "^0.6.1",
+        "terser": "^4.1.2",
+        "webpack-sources": "^1.4.0",
+        "worker-farm": "^1.7.0"
+      },
+      "engines": {
+        "node": ">= 6.9.0"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0"
+      }
+    },
+    "node_modules/terser-webpack-plugin/node_modules/find-cache-dir": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "commondir": "^1.0.1",
+        "make-dir": "^2.0.0",
+        "pkg-dir": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/terser-webpack-plugin/node_modules/is-wsl": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/terser-webpack-plugin/node_modules/make-dir": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "pify": "^4.0.1",
+        "semver": "^5.6.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/terser-webpack-plugin/node_modules/pify": {
+      "version": "4.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/terser-webpack-plugin/node_modules/pkg-dir": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "find-up": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/terser-webpack-plugin/node_modules/schema-utils": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ajv": "^6.1.0",
+        "ajv-errors": "^1.0.0",
+        "ajv-keywords": "^3.1.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/terser-webpack-plugin/node_modules/semver": {
+      "version": "5.7.1",
+      "dev": true,
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/terser-webpack-plugin/node_modules/source-map": {
+      "version": "0.6.1",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/terser/node_modules/commander": {
+      "version": "2.20.3",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/terser/node_modules/source-map": {
+      "version": "0.6.1",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/text-table": {
+      "version": "0.2.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/thenify": {
+      "version": "3.3.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "any-promise": "^1.0.0"
+      }
+    },
+    "node_modules/thenify-all": {
+      "version": "1.6.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "thenify": ">= 3.1.0 < 4"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/thread-loader": {
+      "version": "2.1.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "loader-runner": "^2.3.1",
+        "loader-utils": "^1.1.0",
+        "neo-async": "^2.6.0"
+      },
+      "engines": {
+        "node": ">= 6.9.0 <7.0.0 || >= 8.9.0"
+      },
+      "peerDependencies": {
+        "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0"
+      }
+    },
+    "node_modules/throttle-debounce": {
+      "version": "1.1.0",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/through": {
+      "version": "2.3.8",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/through2": {
+      "version": "2.0.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "readable-stream": "~2.3.6",
+        "xtend": "~4.0.1"
+      }
+    },
+    "node_modules/thunky": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/timers-browserify": {
+      "version": "2.0.12",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "setimmediate": "^1.0.4"
+      },
+      "engines": {
+        "node": ">=0.6.0"
+      }
+    },
+    "node_modules/timsort": {
+      "version": "0.3.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/tinymce": {
+      "version": "5.10.2",
+      "license": "LGPL-2.1"
+    },
+    "node_modules/to-arraybuffer": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/to-fast-properties": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/to-object-path": {
+      "version": "0.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/to-object-path/node_modules/is-buffer": {
+      "version": "1.1.6",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/to-object-path/node_modules/kind-of": {
+      "version": "3.2.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/to-regex": {
+      "version": "3.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "regex-not": "^1.0.2",
+        "safe-regex": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/to-regex-range": {
+      "version": "2.1.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/toidentifier": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/toposort": {
+      "version": "1.0.7",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/totalist": {
+      "version": "1.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/tryer": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/tslib": {
+      "version": "1.14.1",
+      "dev": true,
+      "license": "0BSD"
+    },
+    "node_modules/tty-browserify": {
+      "version": "0.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/tunnel-agent": {
+      "version": "0.6.0",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "safe-buffer": "^5.0.1"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/tweetnacl": {
+      "version": "0.14.5",
+      "dev": true,
+      "license": "Unlicense"
+    },
+    "node_modules/type-check": {
+      "version": "0.3.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "prelude-ls": "~1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/type-is": {
+      "version": "1.6.18",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "media-typer": "0.3.0",
+        "mime-types": "~2.1.24"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/typedarray": {
+      "version": "0.0.6",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/uglify-js": {
+      "version": "3.4.10",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "commander": "~2.19.0",
+        "source-map": "~0.6.1"
+      },
+      "bin": {
+        "uglifyjs": "bin/uglifyjs"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/uglify-js/node_modules/commander": {
+      "version": "2.19.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/uglify-js/node_modules/source-map": {
+      "version": "0.6.1",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/unbox-primitive": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "function-bind": "^1.1.1",
+        "has-bigints": "^1.0.1",
+        "has-symbols": "^1.0.2",
+        "which-boxed-primitive": "^1.0.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/unicode-canonical-property-names-ecmascript": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/unicode-match-property-ecmascript": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "unicode-canonical-property-names-ecmascript": "^2.0.0",
+        "unicode-property-aliases-ecmascript": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/unicode-match-property-value-ecmascript": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/unicode-property-aliases-ecmascript": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/union-value": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "arr-union": "^3.1.0",
+        "get-value": "^2.0.6",
+        "is-extendable": "^0.1.1",
+        "set-value": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/union-value/node_modules/is-extendable": {
+      "version": "0.1.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/uniq": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/uniqs": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/unique-filename": {
+      "version": "1.1.1",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "unique-slug": "^2.0.0"
+      }
+    },
+    "node_modules/unique-slug": {
+      "version": "2.0.2",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "imurmurhash": "^0.1.4"
+      }
+    },
+    "node_modules/universalify": {
+      "version": "0.1.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 4.0.0"
+      }
+    },
+    "node_modules/unpipe": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/unquote": {
+      "version": "1.1.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/unset-value": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "has-value": "^0.3.1",
+        "isobject": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/unset-value/node_modules/has-value": {
+      "version": "0.3.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "get-value": "^2.0.3",
+        "has-values": "^0.1.4",
+        "isobject": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/unset-value/node_modules/has-value/node_modules/isobject": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "isarray": "1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/unset-value/node_modules/has-values": {
+      "version": "0.1.4",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/upath": {
+      "version": "1.2.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4",
+        "yarn": "*"
+      }
+    },
+    "node_modules/upper-case": {
+      "version": "1.1.3",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/uri-js": {
+      "version": "4.4.1",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "node_modules/urix": {
+      "version": "0.1.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/url": {
+      "version": "0.11.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "punycode": "1.3.2",
+        "querystring": "0.2.0"
+      }
+    },
+    "node_modules/url-loader": {
+      "version": "1.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "loader-utils": "^1.1.0",
+        "mime": "^2.0.3",
+        "schema-utils": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 6.9.0"
+      },
+      "peerDependencies": {
+        "webpack": "^3.0.0 || ^4.0.0"
+      }
+    },
+    "node_modules/url-loader/node_modules/schema-utils": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ajv": "^6.1.0",
+        "ajv-errors": "^1.0.0",
+        "ajv-keywords": "^3.1.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/url-parse": {
+      "version": "1.5.4",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "querystringify": "^2.1.1",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "node_modules/url/node_modules/punycode": {
+      "version": "1.3.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/use": {
+      "version": "3.1.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/util": {
+      "version": "0.11.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "2.0.3"
+      }
+    },
+    "node_modules/util-deprecate": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/util.promisify": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "define-properties": "^1.1.2",
+        "object.getownpropertydescriptors": "^2.0.3"
+      }
+    },
+    "node_modules/util/node_modules/inherits": {
+      "version": "2.0.3",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/utila": {
+      "version": "0.4.0",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/utils-merge": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/uuid": {
+      "version": "3.4.0",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "uuid": "bin/uuid"
+      }
+    },
+    "node_modules/validate-npm-package-license": {
+      "version": "3.0.4",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "spdx-correct": "^3.0.0",
+        "spdx-expression-parse": "^3.0.0"
+      }
+    },
+    "node_modules/vary": {
+      "version": "1.1.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/vendors": {
+      "version": "1.0.4",
+      "dev": true,
+      "license": "MIT",
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wooorm"
+      }
+    },
+    "node_modules/verror": {
+      "version": "1.10.0",
+      "dev": true,
+      "engines": [
+        "node >=0.6.0"
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "assert-plus": "^1.0.0",
+        "core-util-is": "1.0.2",
+        "extsprintf": "^1.2.0"
+      }
+    },
+    "node_modules/verror/node_modules/core-util-is": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/vm-browserify": {
+      "version": "1.1.2",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/vue": {
+      "version": "2.6.14",
+      "license": "MIT"
+    },
+    "node_modules/vue-axios": {
+      "version": "2.1.5",
+      "license": "MIT",
+      "peerDependencies": {
+        "vue": ">= 1.0.0"
+      }
+    },
+    "node_modules/vue-cli-plugin-style-resources-loader": {
+      "version": "0.1.5",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/vue-cropper": {
+      "version": "0.4.9",
+      "license": "ISC"
+    },
+    "node_modules/vue-eslint-parser": {
+      "version": "5.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "debug": "^4.1.0",
+        "eslint-scope": "^4.0.0",
+        "eslint-visitor-keys": "^1.0.0",
+        "espree": "^4.1.0",
+        "esquery": "^1.0.1",
+        "lodash": "^4.17.11"
+      },
+      "engines": {
+        "node": ">=6.5"
+      },
+      "peerDependencies": {
+        "eslint": "^5.0.0"
+      }
+    },
+    "node_modules/vue-eslint-parser/node_modules/acorn": {
+      "version": "6.4.2",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/vue-eslint-parser/node_modules/espree": {
+      "version": "4.1.0",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "acorn": "^6.0.2",
+        "acorn-jsx": "^5.0.0",
+        "eslint-visitor-keys": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/vue-full-calendar": {
+      "version": "2.8.0",
+      "license": "ISC",
+      "dependencies": {
+        "babel-plugin-transform-runtime": "^6.23.0",
+        "fullcalendar": "3.10.1",
+        "lodash.defaultsdeep": "^4.6.0"
+      }
+    },
+    "node_modules/vue-hot-reload-api": {
+      "version": "2.3.4",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/vue-loader": {
+      "version": "15.9.8",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@vue/component-compiler-utils": "^3.1.0",
+        "hash-sum": "^1.0.2",
+        "loader-utils": "^1.1.0",
+        "vue-hot-reload-api": "^2.3.0",
+        "vue-style-loader": "^4.1.0"
+      },
+      "peerDependencies": {
+        "css-loader": "*",
+        "webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0"
+      },
+      "peerDependenciesMeta": {
+        "cache-loader": {
+          "optional": true
+        },
+        "vue-template-compiler": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vue-quill-editor": {
+      "version": "3.0.6",
+      "license": "MIT",
+      "dependencies": {
+        "object-assign": "^4.1.1",
+        "quill": "^1.3.4"
+      },
+      "engines": {
+        "node": ">= 4.0.0",
+        "npm": ">= 3.0.0"
+      }
+    },
+    "node_modules/vue-resource": {
+      "version": "1.5.3",
+      "license": "MIT",
+      "dependencies": {
+        "got": ">=8.0 <12.0"
+      }
+    },
+    "node_modules/vue-router": {
+      "version": "3.5.3",
+      "license": "MIT"
+    },
+    "node_modules/vue-style-loader": {
+      "version": "4.1.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "hash-sum": "^1.0.2",
+        "loader-utils": "^1.0.2"
+      }
+    },
+    "node_modules/vue-template-compiler": {
+      "version": "2.6.14",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "de-indent": "^1.0.2",
+        "he": "^1.1.0"
+      }
+    },
+    "node_modules/vue-template-es2015-compiler": {
+      "version": "1.9.1",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/vuex": {
+      "version": "3.6.2",
+      "license": "MIT",
+      "peerDependencies": {
+        "vue": "^2.0.0"
+      }
+    },
+    "node_modules/wangeditor": {
+      "version": "4.7.11",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.11.2",
+        "@babel/runtime-corejs3": "^7.11.2",
+        "tslib": "^2.1.0"
+      }
+    },
+    "node_modules/wangeditor/node_modules/tslib": {
+      "version": "2.3.1",
+      "license": "0BSD"
+    },
+    "node_modules/watchpack": {
+      "version": "1.7.5",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "neo-async": "^2.5.0"
+      },
+      "optionalDependencies": {
+        "chokidar": "^3.4.1",
+        "watchpack-chokidar2": "^2.0.1"
+      }
+    },
+    "node_modules/watchpack-chokidar2": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "chokidar": "^2.1.8"
+      }
+    },
+    "node_modules/watchpack/node_modules/binary-extensions": {
+      "version": "2.2.0",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/watchpack/node_modules/braces": {
+      "version": "3.0.2",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "fill-range": "^7.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/watchpack/node_modules/chokidar": {
+      "version": "3.5.2",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "anymatch": "~3.1.2",
+        "braces": "~3.0.2",
+        "glob-parent": "~5.1.2",
+        "is-binary-path": "~2.1.0",
+        "is-glob": "~4.0.1",
+        "normalize-path": "~3.0.0",
+        "readdirp": "~3.6.0"
+      },
+      "engines": {
+        "node": ">= 8.10.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/watchpack/node_modules/fill-range": {
+      "version": "7.0.1",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "to-regex-range": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/watchpack/node_modules/glob-parent": {
+      "version": "5.1.2",
+      "dev": true,
+      "license": "ISC",
+      "optional": true,
+      "dependencies": {
+        "is-glob": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/watchpack/node_modules/is-binary-path": {
+      "version": "2.1.0",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "binary-extensions": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/watchpack/node_modules/is-number": {
+      "version": "7.0.0",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/watchpack/node_modules/readdirp": {
+      "version": "3.6.0",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "picomatch": "^2.2.1"
+      },
+      "engines": {
+        "node": ">=8.10.0"
+      }
+    },
+    "node_modules/watchpack/node_modules/to-regex-range": {
+      "version": "5.0.1",
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "is-number": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8.0"
+      }
+    },
+    "node_modules/wbuf": {
+      "version": "1.7.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "node_modules/wcwidth": {
+      "version": "1.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "defaults": "^1.0.3"
+      }
+    },
+    "node_modules/webpack": {
+      "version": "4.46.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-module-context": "1.9.0",
+        "@webassemblyjs/wasm-edit": "1.9.0",
+        "@webassemblyjs/wasm-parser": "1.9.0",
+        "acorn": "^6.4.1",
+        "ajv": "^6.10.2",
+        "ajv-keywords": "^3.4.1",
+        "chrome-trace-event": "^1.0.2",
+        "enhanced-resolve": "^4.5.0",
+        "eslint-scope": "^4.0.3",
+        "json-parse-better-errors": "^1.0.2",
+        "loader-runner": "^2.4.0",
+        "loader-utils": "^1.2.3",
+        "memory-fs": "^0.4.1",
+        "micromatch": "^3.1.10",
+        "mkdirp": "^0.5.3",
+        "neo-async": "^2.6.1",
+        "node-libs-browser": "^2.2.1",
+        "schema-utils": "^1.0.0",
+        "tapable": "^1.1.3",
+        "terser-webpack-plugin": "^1.4.3",
+        "watchpack": "^1.7.4",
+        "webpack-sources": "^1.4.1"
+      },
+      "bin": {
+        "webpack": "bin/webpack.js"
+      },
+      "engines": {
+        "node": ">=6.11.5"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      },
+      "peerDependenciesMeta": {
+        "webpack-cli": {
+          "optional": true
+        },
+        "webpack-command": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/webpack-bundle-analyzer": {
+      "version": "4.5.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "acorn": "^8.0.4",
+        "acorn-walk": "^8.0.0",
+        "chalk": "^4.1.0",
+        "commander": "^7.2.0",
+        "gzip-size": "^6.0.0",
+        "lodash": "^4.17.20",
+        "opener": "^1.5.2",
+        "sirv": "^1.0.7",
+        "ws": "^7.3.1"
+      },
+      "bin": {
+        "webpack-bundle-analyzer": "lib/bin/analyzer.js"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      }
+    },
+    "node_modules/webpack-bundle-analyzer/node_modules/acorn": {
+      "version": "8.7.0",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/webpack-bundle-analyzer/node_modules/acorn-walk": {
+      "version": "8.2.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/webpack-bundle-analyzer/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/webpack-bundle-analyzer/node_modules/chalk": {
+      "version": "4.1.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/webpack-bundle-analyzer/node_modules/color-convert": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/webpack-bundle-analyzer/node_modules/color-name": {
+      "version": "1.1.4",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/webpack-bundle-analyzer/node_modules/commander": {
+      "version": "7.2.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/webpack-bundle-analyzer/node_modules/has-flag": {
+      "version": "4.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/webpack-bundle-analyzer/node_modules/lodash": {
+      "version": "4.17.21",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/webpack-bundle-analyzer/node_modules/supports-color": {
+      "version": "7.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/webpack-chain": {
+      "version": "4.12.1",
+      "dev": true,
+      "license": "MPL-2.0",
+      "dependencies": {
+        "deepmerge": "^1.5.2",
+        "javascript-stringify": "^1.6.0"
+      }
+    },
+    "node_modules/webpack-dev-middleware": {
+      "version": "3.7.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "memory-fs": "^0.4.1",
+        "mime": "^2.4.4",
+        "mkdirp": "^0.5.1",
+        "range-parser": "^1.2.1",
+        "webpack-log": "^2.0.0"
+      },
+      "engines": {
+        "node": ">= 6"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0 || ^5.0.0"
+      }
+    },
+    "node_modules/webpack-dev-server": {
+      "version": "3.11.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-html-community": "0.0.8",
+        "bonjour": "^3.5.0",
+        "chokidar": "^2.1.8",
+        "compression": "^1.7.4",
+        "connect-history-api-fallback": "^1.6.0",
+        "debug": "^4.1.1",
+        "del": "^4.1.1",
+        "express": "^4.17.1",
+        "html-entities": "^1.3.1",
+        "http-proxy-middleware": "0.19.1",
+        "import-local": "^2.0.0",
+        "internal-ip": "^4.3.0",
+        "ip": "^1.1.5",
+        "is-absolute-url": "^3.0.3",
+        "killable": "^1.0.1",
+        "loglevel": "^1.6.8",
+        "opn": "^5.5.0",
+        "p-retry": "^3.0.1",
+        "portfinder": "^1.0.26",
+        "schema-utils": "^1.0.0",
+        "selfsigned": "^1.10.8",
+        "semver": "^6.3.0",
+        "serve-index": "^1.9.1",
+        "sockjs": "^0.3.21",
+        "sockjs-client": "^1.5.0",
+        "spdy": "^4.0.2",
+        "strip-ansi": "^3.0.1",
+        "supports-color": "^6.1.0",
+        "url": "^0.11.0",
+        "webpack-dev-middleware": "^3.7.2",
+        "webpack-log": "^2.0.0",
+        "ws": "^6.2.1",
+        "yargs": "^13.3.2"
+      },
+      "bin": {
+        "webpack-dev-server": "bin/webpack-dev-server.js"
+      },
+      "engines": {
+        "node": ">= 6.11.5"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0 || ^5.0.0"
+      },
+      "peerDependenciesMeta": {
+        "webpack-cli": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/ansi-regex": {
+      "version": "2.1.1",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/emoji-regex": {
+      "version": "7.0.3",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/webpack-dev-server/node_modules/http-proxy-middleware": {
+      "version": "0.19.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "http-proxy": "^1.17.0",
+        "is-glob": "^4.0.0",
+        "lodash": "^4.17.11",
+        "micromatch": "^3.1.10"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/is-absolute-url": {
+      "version": "3.0.3",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/is-fullwidth-code-point": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/schema-utils": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ajv": "^6.1.0",
+        "ajv-errors": "^1.0.0",
+        "ajv-keywords": "^3.1.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/string-width": {
+      "version": "3.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "emoji-regex": "^7.0.1",
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^5.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/string-width/node_modules/ansi-regex": {
+      "version": "4.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/string-width/node_modules/strip-ansi": {
+      "version": "5.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/strip-ansi": {
+      "version": "3.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/supports-color": {
+      "version": "6.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/ws": {
+      "version": "6.2.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "async-limiter": "~1.0.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/yargs": {
+      "version": "13.3.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cliui": "^5.0.0",
+        "find-up": "^3.0.0",
+        "get-caller-file": "^2.0.1",
+        "require-directory": "^2.1.1",
+        "require-main-filename": "^2.0.0",
+        "set-blocking": "^2.0.0",
+        "string-width": "^3.0.0",
+        "which-module": "^2.0.0",
+        "y18n": "^4.0.0",
+        "yargs-parser": "^13.1.2"
+      }
+    },
+    "node_modules/webpack-log": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-colors": "^3.0.0",
+        "uuid": "^3.3.2"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/webpack-merge": {
+      "version": "4.2.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "lodash": "^4.17.15"
+      }
+    },
+    "node_modules/webpack-sources": {
+      "version": "1.4.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "source-list-map": "^2.0.0",
+        "source-map": "~0.6.1"
+      }
+    },
+    "node_modules/webpack-sources/node_modules/source-map": {
+      "version": "0.6.1",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack/node_modules/acorn": {
+      "version": "6.4.2",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/webpack/node_modules/schema-utils": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ajv": "^6.1.0",
+        "ajv-errors": "^1.0.0",
+        "ajv-keywords": "^3.1.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/websocket-driver": {
+      "version": "0.7.4",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "http-parser-js": ">=0.5.1",
+        "safe-buffer": ">=5.1.0",
+        "websocket-extensions": ">=0.1.1"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/websocket-extensions": {
+      "version": "0.1.4",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/which": {
+      "version": "1.3.1",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "which": "bin/which"
+      }
+    },
+    "node_modules/which-boxed-primitive": {
+      "version": "1.0.2",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-bigint": "^1.0.1",
+        "is-boolean-object": "^1.1.0",
+        "is-number-object": "^1.0.4",
+        "is-string": "^1.0.5",
+        "is-symbol": "^1.0.3"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/which-module": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/wmf": {
+      "version": "1.0.2",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/word": {
+      "version": "0.3.0",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/word-wrap": {
+      "version": "1.2.3",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/worker-farm": {
+      "version": "1.7.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "errno": "~0.1.7"
+      }
+    },
+    "node_modules/wrap-ansi": {
+      "version": "5.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^3.2.0",
+        "string-width": "^3.0.0",
+        "strip-ansi": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/wrap-ansi/node_modules/ansi-regex": {
+      "version": "4.1.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/wrap-ansi/node_modules/emoji-regex": {
+      "version": "7.0.3",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": {
+      "version": "2.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/wrap-ansi/node_modules/string-width": {
+      "version": "3.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "emoji-regex": "^7.0.1",
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^5.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/wrap-ansi/node_modules/strip-ansi": {
+      "version": "5.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/wrappy": {
+      "version": "1.0.2",
+      "license": "ISC"
+    },
+    "node_modules/write": {
+      "version": "1.0.3",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "mkdirp": "^0.5.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/ws": {
+      "version": "7.5.6",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8.3.0"
+      },
+      "peerDependencies": {
+        "bufferutil": "^4.0.1",
+        "utf-8-validate": "^5.0.2"
+      },
+      "peerDependenciesMeta": {
+        "bufferutil": {
+          "optional": true
+        },
+        "utf-8-validate": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/xlsx": {
+      "version": "0.16.9",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "adler-32": "~1.2.0",
+        "cfb": "^1.1.4",
+        "codepage": "~1.14.0",
+        "commander": "~2.17.1",
+        "crc-32": "~1.2.0",
+        "exit-on-epipe": "~1.0.1",
+        "fflate": "^0.3.8",
+        "ssf": "~0.11.2",
+        "wmf": "~1.0.1",
+        "word": "~0.3.0"
+      },
+      "bin": {
+        "xlsx": "bin/xlsx.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/xlsx/node_modules/commander": {
+      "version": "2.17.1",
+      "license": "MIT"
+    },
+    "node_modules/xtend": {
+      "version": "4.0.2",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.4"
+      }
+    },
+    "node_modules/y18n": {
+      "version": "4.0.3",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/yallist": {
+      "version": "3.1.1",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/yargs": {
+      "version": "16.2.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cliui": "^7.0.2",
+        "escalade": "^3.1.1",
+        "get-caller-file": "^2.0.5",
+        "require-directory": "^2.1.1",
+        "string-width": "^4.2.0",
+        "y18n": "^5.0.5",
+        "yargs-parser": "^20.2.2"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/yargs-parser": {
+      "version": "13.1.2",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "camelcase": "^5.0.0",
+        "decamelize": "^1.2.0"
+      }
+    },
+    "node_modules/yargs/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/yargs/node_modules/cliui": {
+      "version": "7.0.4",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.0",
+        "wrap-ansi": "^7.0.0"
+      }
+    },
+    "node_modules/yargs/node_modules/color-convert": {
+      "version": "2.0.1",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/yargs/node_modules/color-name": {
+      "version": "1.1.4",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/yargs/node_modules/wrap-ansi": {
+      "version": "7.0.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+      }
+    },
+    "node_modules/yargs/node_modules/y18n": {
+      "version": "5.0.8",
+      "dev": true,
+      "license": "ISC",
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/yargs/node_modules/yargs-parser": {
+      "version": "20.2.9",
+      "dev": true,
+      "license": "ISC",
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/yorkie": {
+      "version": "2.0.0",
+      "dev": true,
+      "hasInstallScript": true,
+      "license": "MIT",
+      "dependencies": {
+        "execa": "^0.8.0",
+        "is-ci": "^1.0.10",
+        "normalize-path": "^1.0.0",
+        "strip-indent": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/yorkie/node_modules/cross-spawn": {
+      "version": "5.1.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "lru-cache": "^4.0.1",
+        "shebang-command": "^1.2.0",
+        "which": "^1.2.9"
+      }
+    },
+    "node_modules/yorkie/node_modules/execa": {
+      "version": "0.8.0",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "cross-spawn": "^5.0.1",
+        "get-stream": "^3.0.0",
+        "is-stream": "^1.1.0",
+        "npm-run-path": "^2.0.0",
+        "p-finally": "^1.0.0",
+        "signal-exit": "^3.0.0",
+        "strip-eof": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/yorkie/node_modules/get-stream": {
+      "version": "3.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/yorkie/node_modules/lru-cache": {
+      "version": "4.1.5",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "pseudomap": "^1.0.2",
+        "yallist": "^2.1.2"
+      }
+    },
+    "node_modules/yorkie/node_modules/normalize-path": {
+      "version": "1.0.0",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/yorkie/node_modules/yallist": {
+      "version": "2.1.2",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/zrender": {
+      "version": "4.3.2",
+      "license": "BSD-3-Clause"
+    }
+  },
+  "dependencies": {
+    "@babel/code-frame": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/highlight": "^7.16.7"
+      }
+    },
+    "@babel/compat-data": {
+      "version": "7.16.4",
+      "dev": true
+    },
+    "@babel/core": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.16.7",
+        "@babel/generator": "^7.16.7",
+        "@babel/helper-compilation-targets": "^7.16.7",
+        "@babel/helper-module-transforms": "^7.16.7",
+        "@babel/helpers": "^7.16.7",
+        "@babel/parser": "^7.16.7",
+        "@babel/template": "^7.16.7",
+        "@babel/traverse": "^7.16.7",
+        "@babel/types": "^7.16.7",
+        "convert-source-map": "^1.7.0",
+        "debug": "^4.1.0",
+        "gensync": "^1.0.0-beta.2",
+        "json5": "^2.1.2",
+        "semver": "^6.3.0",
+        "source-map": "^0.5.0"
+      }
+    },
+    "@babel/generator": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.16.7",
+        "jsesc": "^2.5.1",
+        "source-map": "^0.5.0"
+      }
+    },
+    "@babel/helper-annotate-as-pure": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "@babel/helper-builder-binary-assignment-operator-visitor": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-explode-assignable-expression": "^7.16.7",
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "@babel/helper-compilation-targets": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/compat-data": "^7.16.4",
+        "@babel/helper-validator-option": "^7.16.7",
+        "browserslist": "^4.17.5",
+        "semver": "^6.3.0"
+      }
+    },
+    "@babel/helper-create-class-features-plugin": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.16.7",
+        "@babel/helper-environment-visitor": "^7.16.7",
+        "@babel/helper-function-name": "^7.16.7",
+        "@babel/helper-member-expression-to-functions": "^7.16.7",
+        "@babel/helper-optimise-call-expression": "^7.16.7",
+        "@babel/helper-replace-supers": "^7.16.7",
+        "@babel/helper-split-export-declaration": "^7.16.7"
+      }
+    },
+    "@babel/helper-create-regexp-features-plugin": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.16.7",
+        "regexpu-core": "^4.7.1"
+      }
+    },
+    "@babel/helper-define-polyfill-provider": {
+      "version": "0.3.0",
+      "dev": true,
+      "requires": {
+        "@babel/helper-compilation-targets": "^7.13.0",
+        "@babel/helper-module-imports": "^7.12.13",
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/traverse": "^7.13.0",
+        "debug": "^4.1.1",
+        "lodash.debounce": "^4.0.8",
+        "resolve": "^1.14.2",
+        "semver": "^6.1.2"
+      }
+    },
+    "@babel/helper-environment-visitor": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "@babel/helper-explode-assignable-expression": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "@babel/helper-function-name": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-get-function-arity": "^7.16.7",
+        "@babel/template": "^7.16.7",
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "@babel/helper-get-function-arity": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "@babel/helper-hoist-variables": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "@babel/helper-member-expression-to-functions": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "@babel/helper-module-imports": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "@babel/helper-module-transforms": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-environment-visitor": "^7.16.7",
+        "@babel/helper-module-imports": "^7.16.7",
+        "@babel/helper-simple-access": "^7.16.7",
+        "@babel/helper-split-export-declaration": "^7.16.7",
+        "@babel/helper-validator-identifier": "^7.16.7",
+        "@babel/template": "^7.16.7",
+        "@babel/traverse": "^7.16.7",
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "@babel/helper-optimise-call-expression": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "@babel/helper-plugin-utils": {
+      "version": "7.16.7",
+      "dev": true
+    },
+    "@babel/helper-remap-async-to-generator": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.16.7",
+        "@babel/helper-wrap-function": "^7.16.7",
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "@babel/helper-replace-supers": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-environment-visitor": "^7.16.7",
+        "@babel/helper-member-expression-to-functions": "^7.16.7",
+        "@babel/helper-optimise-call-expression": "^7.16.7",
+        "@babel/traverse": "^7.16.7",
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "@babel/helper-simple-access": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "@babel/helper-skip-transparent-expression-wrappers": {
+      "version": "7.16.0",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.16.0"
+      }
+    },
+    "@babel/helper-split-export-declaration": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "@babel/helper-validator-identifier": {
+      "version": "7.16.7",
+      "dev": true
+    },
+    "@babel/helper-validator-option": {
+      "version": "7.16.7",
+      "dev": true
+    },
+    "@babel/helper-wrap-function": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-function-name": "^7.16.7",
+        "@babel/template": "^7.16.7",
+        "@babel/traverse": "^7.16.7",
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "@babel/helpers": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/template": "^7.16.7",
+        "@babel/traverse": "^7.16.7",
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "@babel/highlight": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-validator-identifier": "^7.16.7",
+        "chalk": "^2.0.0",
+        "js-tokens": "^4.0.0"
+      }
+    },
+    "@babel/parser": {
+      "version": "7.16.7",
+      "dev": true
+    },
+    "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0",
+        "@babel/plugin-proposal-optional-chaining": "^7.16.7"
+      }
+    },
+    "@babel/plugin-proposal-async-generator-functions": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-remap-async-to-generator": "^7.16.7",
+        "@babel/plugin-syntax-async-generators": "^7.8.4"
+      }
+    },
+    "@babel/plugin-proposal-class-properties": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-class-features-plugin": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/plugin-proposal-class-static-block": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-class-features-plugin": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/plugin-syntax-class-static-block": "^7.14.5"
+      }
+    },
+    "@babel/plugin-proposal-decorators": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-class-features-plugin": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/plugin-syntax-decorators": "^7.16.7"
+      }
+    },
+    "@babel/plugin-proposal-dynamic-import": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-export-namespace-from": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-json-strings": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/plugin-syntax-json-strings": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-logical-assignment-operators": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+      }
+    },
+    "@babel/plugin-proposal-nullish-coalescing-operator": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-numeric-separator": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+      }
+    },
+    "@babel/plugin-proposal-object-rest-spread": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/compat-data": "^7.16.4",
+        "@babel/helper-compilation-targets": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-transform-parameters": "^7.16.7"
+      }
+    },
+    "@babel/plugin-proposal-optional-catch-binding": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-optional-chaining": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-private-methods": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-class-features-plugin": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/plugin-proposal-private-property-in-object": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.16.7",
+        "@babel/helper-create-class-features-plugin": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+      }
+    },
+    "@babel/plugin-proposal-unicode-property-regex": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-regexp-features-plugin": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/plugin-syntax-async-generators": {
+      "version": "7.8.4",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-class-properties": {
+      "version": "7.12.13",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
+    "@babel/plugin-syntax-class-static-block": {
+      "version": "7.14.5",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-syntax-decorators": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/plugin-syntax-dynamic-import": {
+      "version": "7.8.3",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-export-namespace-from": {
+      "version": "7.8.3",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.3"
+      }
+    },
+    "@babel/plugin-syntax-json-strings": {
+      "version": "7.8.3",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-jsx": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/plugin-syntax-logical-assignment-operators": {
+      "version": "7.10.4",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      }
+    },
+    "@babel/plugin-syntax-nullish-coalescing-operator": {
+      "version": "7.8.3",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-numeric-separator": {
+      "version": "7.10.4",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      }
+    },
+    "@babel/plugin-syntax-object-rest-spread": {
+      "version": "7.8.3",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-optional-catch-binding": {
+      "version": "7.8.3",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-optional-chaining": {
+      "version": "7.8.3",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-private-property-in-object": {
+      "version": "7.14.5",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-syntax-top-level-await": {
+      "version": "7.14.5",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-arrow-functions": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/plugin-transform-async-to-generator": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-imports": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-remap-async-to-generator": "^7.16.7"
+      }
+    },
+    "@babel/plugin-transform-block-scoped-functions": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/plugin-transform-block-scoping": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/plugin-transform-classes": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.16.7",
+        "@babel/helper-environment-visitor": "^7.16.7",
+        "@babel/helper-function-name": "^7.16.7",
+        "@babel/helper-optimise-call-expression": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-replace-supers": "^7.16.7",
+        "@babel/helper-split-export-declaration": "^7.16.7",
+        "globals": "^11.1.0"
+      }
+    },
+    "@babel/plugin-transform-computed-properties": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/plugin-transform-destructuring": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/plugin-transform-dotall-regex": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-regexp-features-plugin": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/plugin-transform-duplicate-keys": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/plugin-transform-exponentiation-operator": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/plugin-transform-for-of": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/plugin-transform-function-name": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-compilation-targets": "^7.16.7",
+        "@babel/helper-function-name": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/plugin-transform-literals": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/plugin-transform-member-expression-literals": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/plugin-transform-modules-amd": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-transforms": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "babel-plugin-dynamic-import-node": "^2.3.3"
+      }
+    },
+    "@babel/plugin-transform-modules-commonjs": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-transforms": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-simple-access": "^7.16.7",
+        "babel-plugin-dynamic-import-node": "^2.3.3"
+      }
+    },
+    "@babel/plugin-transform-modules-systemjs": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-hoist-variables": "^7.16.7",
+        "@babel/helper-module-transforms": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-validator-identifier": "^7.16.7",
+        "babel-plugin-dynamic-import-node": "^2.3.3"
+      }
+    },
+    "@babel/plugin-transform-modules-umd": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-transforms": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/plugin-transform-named-capturing-groups-regex": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-regexp-features-plugin": "^7.16.7"
+      }
+    },
+    "@babel/plugin-transform-new-target": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/plugin-transform-object-super": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-replace-supers": "^7.16.7"
+      }
+    },
+    "@babel/plugin-transform-parameters": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/plugin-transform-property-literals": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/plugin-transform-regenerator": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "regenerator-transform": "^0.14.2"
+      }
+    },
+    "@babel/plugin-transform-reserved-words": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/plugin-transform-runtime": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-imports": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "babel-plugin-polyfill-corejs2": "^0.3.0",
+        "babel-plugin-polyfill-corejs3": "^0.4.0",
+        "babel-plugin-polyfill-regenerator": "^0.3.0",
+        "semver": "^6.3.0"
+      }
+    },
+    "@babel/plugin-transform-shorthand-properties": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/plugin-transform-spread": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0"
+      }
+    },
+    "@babel/plugin-transform-sticky-regex": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/plugin-transform-template-literals": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/plugin-transform-typeof-symbol": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/plugin-transform-unicode-escapes": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/plugin-transform-unicode-regex": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-regexp-features-plugin": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7"
+      }
+    },
+    "@babel/preset-env": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/compat-data": "^7.16.4",
+        "@babel/helper-compilation-targets": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-validator-option": "^7.16.7",
+        "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7",
+        "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7",
+        "@babel/plugin-proposal-async-generator-functions": "^7.16.7",
+        "@babel/plugin-proposal-class-properties": "^7.16.7",
+        "@babel/plugin-proposal-class-static-block": "^7.16.7",
+        "@babel/plugin-proposal-dynamic-import": "^7.16.7",
+        "@babel/plugin-proposal-export-namespace-from": "^7.16.7",
+        "@babel/plugin-proposal-json-strings": "^7.16.7",
+        "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7",
+        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7",
+        "@babel/plugin-proposal-numeric-separator": "^7.16.7",
+        "@babel/plugin-proposal-object-rest-spread": "^7.16.7",
+        "@babel/plugin-proposal-optional-catch-binding": "^7.16.7",
+        "@babel/plugin-proposal-optional-chaining": "^7.16.7",
+        "@babel/plugin-proposal-private-methods": "^7.16.7",
+        "@babel/plugin-proposal-private-property-in-object": "^7.16.7",
+        "@babel/plugin-proposal-unicode-property-regex": "^7.16.7",
+        "@babel/plugin-syntax-async-generators": "^7.8.4",
+        "@babel/plugin-syntax-class-properties": "^7.12.13",
+        "@babel/plugin-syntax-class-static-block": "^7.14.5",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+        "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+        "@babel/plugin-syntax-json-strings": "^7.8.3",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+        "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+        "@babel/plugin-syntax-top-level-await": "^7.14.5",
+        "@babel/plugin-transform-arrow-functions": "^7.16.7",
+        "@babel/plugin-transform-async-to-generator": "^7.16.7",
+        "@babel/plugin-transform-block-scoped-functions": "^7.16.7",
+        "@babel/plugin-transform-block-scoping": "^7.16.7",
+        "@babel/plugin-transform-classes": "^7.16.7",
+        "@babel/plugin-transform-computed-properties": "^7.16.7",
+        "@babel/plugin-transform-destructuring": "^7.16.7",
+        "@babel/plugin-transform-dotall-regex": "^7.16.7",
+        "@babel/plugin-transform-duplicate-keys": "^7.16.7",
+        "@babel/plugin-transform-exponentiation-operator": "^7.16.7",
+        "@babel/plugin-transform-for-of": "^7.16.7",
+        "@babel/plugin-transform-function-name": "^7.16.7",
+        "@babel/plugin-transform-literals": "^7.16.7",
+        "@babel/plugin-transform-member-expression-literals": "^7.16.7",
+        "@babel/plugin-transform-modules-amd": "^7.16.7",
+        "@babel/plugin-transform-modules-commonjs": "^7.16.7",
+        "@babel/plugin-transform-modules-systemjs": "^7.16.7",
+        "@babel/plugin-transform-modules-umd": "^7.16.7",
+        "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.7",
+        "@babel/plugin-transform-new-target": "^7.16.7",
+        "@babel/plugin-transform-object-super": "^7.16.7",
+        "@babel/plugin-transform-parameters": "^7.16.7",
+        "@babel/plugin-transform-property-literals": "^7.16.7",
+        "@babel/plugin-transform-regenerator": "^7.16.7",
+        "@babel/plugin-transform-reserved-words": "^7.16.7",
+        "@babel/plugin-transform-shorthand-properties": "^7.16.7",
+        "@babel/plugin-transform-spread": "^7.16.7",
+        "@babel/plugin-transform-sticky-regex": "^7.16.7",
+        "@babel/plugin-transform-template-literals": "^7.16.7",
+        "@babel/plugin-transform-typeof-symbol": "^7.16.7",
+        "@babel/plugin-transform-unicode-escapes": "^7.16.7",
+        "@babel/plugin-transform-unicode-regex": "^7.16.7",
+        "@babel/preset-modules": "^0.1.5",
+        "@babel/types": "^7.16.7",
+        "babel-plugin-polyfill-corejs2": "^0.3.0",
+        "babel-plugin-polyfill-corejs3": "^0.4.0",
+        "babel-plugin-polyfill-regenerator": "^0.3.0",
+        "core-js-compat": "^3.19.1",
+        "semver": "^6.3.0"
+      }
+    },
+    "@babel/preset-modules": {
+      "version": "0.1.5",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
+        "@babel/plugin-transform-dotall-regex": "^7.4.4",
+        "@babel/types": "^7.4.4",
+        "esutils": "^2.0.2"
+      }
+    },
+    "@babel/runtime": {
+      "version": "7.16.7",
+      "requires": {
+        "regenerator-runtime": "^0.13.4"
+      }
+    },
+    "@babel/runtime-corejs2": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "core-js": "^2.6.5",
+        "regenerator-runtime": "^0.13.4"
+      }
+    },
+    "@babel/runtime-corejs3": {
+      "version": "7.16.7",
+      "requires": {
+        "core-js-pure": "^3.19.0",
+        "regenerator-runtime": "^0.13.4"
+      }
+    },
+    "@babel/template": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.16.7",
+        "@babel/parser": "^7.16.7",
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "@babel/traverse": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.16.7",
+        "@babel/generator": "^7.16.7",
+        "@babel/helper-environment-visitor": "^7.16.7",
+        "@babel/helper-function-name": "^7.16.7",
+        "@babel/helper-hoist-variables": "^7.16.7",
+        "@babel/helper-split-export-declaration": "^7.16.7",
+        "@babel/parser": "^7.16.7",
+        "@babel/types": "^7.16.7",
+        "debug": "^4.1.0",
+        "globals": "^11.1.0"
+      }
+    },
+    "@babel/types": {
+      "version": "7.16.7",
+      "dev": true,
+      "requires": {
+        "@babel/helper-validator-identifier": "^7.16.7",
+        "to-fast-properties": "^2.0.0"
+      }
+    },
+    "@gar/promisify": {
+      "version": "1.1.2",
+      "dev": true
+    },
+    "@hapi/address": {
+      "version": "2.1.4",
+      "dev": true
+    },
+    "@hapi/bourne": {
+      "version": "1.3.2",
+      "dev": true
+    },
+    "@hapi/hoek": {
+      "version": "8.5.1",
+      "dev": true
+    },
+    "@hapi/joi": {
+      "version": "15.1.1",
+      "dev": true,
+      "requires": {
+        "@hapi/address": "2.x.x",
+        "@hapi/bourne": "1.x.x",
+        "@hapi/hoek": "8.x.x",
+        "@hapi/topo": "3.x.x"
+      }
+    },
+    "@hapi/topo": {
+      "version": "3.1.6",
+      "dev": true,
+      "requires": {
+        "@hapi/hoek": "^8.3.0"
+      }
+    },
+    "@intervolga/optimize-cssnano-plugin": {
+      "version": "1.0.6",
+      "dev": true,
+      "requires": {
+        "cssnano": "^4.0.0",
+        "cssnano-preset-default": "^4.0.0",
+        "postcss": "^7.0.0"
+      }
+    },
+    "@mrmlnc/readdir-enhanced": {
+      "version": "2.2.1",
+      "dev": true,
+      "requires": {
+        "call-me-maybe": "^1.0.1",
+        "glob-to-regexp": "^0.3.0"
+      }
+    },
+    "@nodelib/fs.stat": {
+      "version": "1.1.3",
+      "dev": true
+    },
+    "@npmcli/fs": {
+      "version": "1.1.0",
+      "dev": true,
+      "requires": {
+        "@gar/promisify": "^1.0.1",
+        "semver": "^7.3.5"
+      },
+      "dependencies": {
+        "lru-cache": {
+          "version": "6.0.0",
+          "dev": true,
+          "requires": {
+            "yallist": "^4.0.0"
+          }
+        },
+        "semver": {
+          "version": "7.3.5",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
+        },
+        "yallist": {
+          "version": "4.0.0",
+          "dev": true
+        }
+      }
+    },
+    "@npmcli/move-file": {
+      "version": "1.1.2",
+      "dev": true,
+      "requires": {
+        "mkdirp": "^1.0.4",
+        "rimraf": "^3.0.2"
+      },
+      "dependencies": {
+        "mkdirp": {
+          "version": "1.0.4",
+          "dev": true
+        },
+        "rimraf": {
+          "version": "3.0.2",
+          "dev": true,
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        }
+      }
+    },
+    "@polka/url": {
+      "version": "1.0.0-next.21",
+      "dev": true
+    },
+    "@sindresorhus/is": {
+      "version": "4.2.0"
+    },
+    "@soda/friendly-errors-webpack-plugin": {
+      "version": "1.8.1",
+      "dev": true,
+      "requires": {
+        "chalk": "^3.0.0",
+        "error-stack-parser": "^2.0.6",
+        "string-width": "^4.2.3",
+        "strip-ansi": "^6.0.1"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "3.0.0",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "dev": true
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "dev": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        }
+      }
+    },
+    "@szmarczak/http-timer": {
+      "version": "4.0.6",
+      "requires": {
+        "defer-to-connect": "^2.0.0"
+      }
+    },
+    "@types/cacheable-request": {
+      "version": "6.0.2",
+      "requires": {
+        "@types/http-cache-semantics": "*",
+        "@types/keyv": "*",
+        "@types/node": "*",
+        "@types/responselike": "*"
+      }
+    },
+    "@types/glob": {
+      "version": "7.2.0",
+      "dev": true,
+      "requires": {
+        "@types/minimatch": "*",
+        "@types/node": "*"
+      }
+    },
+    "@types/http-cache-semantics": {
+      "version": "4.0.1"
+    },
+    "@types/json-schema": {
+      "version": "7.0.9",
+      "dev": true
+    },
+    "@types/keyv": {
+      "version": "3.1.3",
+      "requires": {
+        "@types/node": "*"
+      }
+    },
+    "@types/minimatch": {
+      "version": "3.0.5",
+      "dev": true
+    },
+    "@types/node": {
+      "version": "17.0.8"
+    },
+    "@types/normalize-package-data": {
+      "version": "2.4.1",
+      "dev": true
+    },
+    "@types/q": {
+      "version": "1.5.5",
+      "dev": true
+    },
+    "@types/responselike": {
+      "version": "1.0.0",
+      "requires": {
+        "@types/node": "*"
+      }
+    },
+    "@vue/babel-helper-vue-jsx-merge-props": {
+      "version": "1.2.1",
+      "dev": true
+    },
+    "@vue/babel-plugin-transform-vue-jsx": {
+      "version": "1.2.1",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-imports": "^7.0.0",
+        "@babel/plugin-syntax-jsx": "^7.2.0",
+        "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1",
+        "html-tags": "^2.0.0",
+        "lodash.kebabcase": "^4.1.1",
+        "svg-tags": "^1.0.0"
+      }
+    },
+    "@vue/babel-preset-app": {
+      "version": "3.12.1",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-imports": "^7.0.0",
+        "@babel/plugin-proposal-class-properties": "^7.0.0",
+        "@babel/plugin-proposal-decorators": "^7.1.0",
+        "@babel/plugin-syntax-dynamic-import": "^7.0.0",
+        "@babel/plugin-syntax-jsx": "^7.0.0",
+        "@babel/plugin-transform-runtime": "^7.4.0",
+        "@babel/preset-env": "^7.0.0 < 7.4.0",
+        "@babel/runtime": "^7.0.0",
+        "@babel/runtime-corejs2": "^7.2.0",
+        "@vue/babel-preset-jsx": "^1.0.0",
+        "babel-plugin-dynamic-import-node": "^2.2.0",
+        "babel-plugin-module-resolver": "3.2.0",
+        "core-js": "^2.6.5"
+      },
+      "dependencies": {
+        "@babel/preset-env": {
+          "version": "7.3.4",
+          "dev": true,
+          "requires": {
+            "@babel/helper-module-imports": "^7.0.0",
+            "@babel/helper-plugin-utils": "^7.0.0",
+            "@babel/plugin-proposal-async-generator-functions": "^7.2.0",
+            "@babel/plugin-proposal-json-strings": "^7.2.0",
+            "@babel/plugin-proposal-object-rest-spread": "^7.3.4",
+            "@babel/plugin-proposal-optional-catch-binding": "^7.2.0",
+            "@babel/plugin-proposal-unicode-property-regex": "^7.2.0",
+            "@babel/plugin-syntax-async-generators": "^7.2.0",
+            "@babel/plugin-syntax-json-strings": "^7.2.0",
+            "@babel/plugin-syntax-object-rest-spread": "^7.2.0",
+            "@babel/plugin-syntax-optional-catch-binding": "^7.2.0",
+            "@babel/plugin-transform-arrow-functions": "^7.2.0",
+            "@babel/plugin-transform-async-to-generator": "^7.3.4",
+            "@babel/plugin-transform-block-scoped-functions": "^7.2.0",
+            "@babel/plugin-transform-block-scoping": "^7.3.4",
+            "@babel/plugin-transform-classes": "^7.3.4",
+            "@babel/plugin-transform-computed-properties": "^7.2.0",
+            "@babel/plugin-transform-destructuring": "^7.2.0",
+            "@babel/plugin-transform-dotall-regex": "^7.2.0",
+            "@babel/plugin-transform-duplicate-keys": "^7.2.0",
+            "@babel/plugin-transform-exponentiation-operator": "^7.2.0",
+            "@babel/plugin-transform-for-of": "^7.2.0",
+            "@babel/plugin-transform-function-name": "^7.2.0",
+            "@babel/plugin-transform-literals": "^7.2.0",
+            "@babel/plugin-transform-modules-amd": "^7.2.0",
+            "@babel/plugin-transform-modules-commonjs": "^7.2.0",
+            "@babel/plugin-transform-modules-systemjs": "^7.3.4",
+            "@babel/plugin-transform-modules-umd": "^7.2.0",
+            "@babel/plugin-transform-named-capturing-groups-regex": "^7.3.0",
+            "@babel/plugin-transform-new-target": "^7.0.0",
+            "@babel/plugin-transform-object-super": "^7.2.0",
+            "@babel/plugin-transform-parameters": "^7.2.0",
+            "@babel/plugin-transform-regenerator": "^7.3.4",
+            "@babel/plugin-transform-shorthand-properties": "^7.2.0",
+            "@babel/plugin-transform-spread": "^7.2.0",
+            "@babel/plugin-transform-sticky-regex": "^7.2.0",
+            "@babel/plugin-transform-template-literals": "^7.2.0",
+            "@babel/plugin-transform-typeof-symbol": "^7.2.0",
+            "@babel/plugin-transform-unicode-regex": "^7.2.0",
+            "browserslist": "^4.3.4",
+            "invariant": "^2.2.2",
+            "js-levenshtein": "^1.1.3",
+            "semver": "^5.3.0"
+          }
+        },
+        "semver": {
+          "version": "5.7.1",
+          "dev": true
+        }
+      }
+    },
+    "@vue/babel-preset-jsx": {
+      "version": "1.2.4",
+      "dev": true,
+      "requires": {
+        "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1",
+        "@vue/babel-plugin-transform-vue-jsx": "^1.2.1",
+        "@vue/babel-sugar-composition-api-inject-h": "^1.2.1",
+        "@vue/babel-sugar-composition-api-render-instance": "^1.2.4",
+        "@vue/babel-sugar-functional-vue": "^1.2.2",
+        "@vue/babel-sugar-inject-h": "^1.2.2",
+        "@vue/babel-sugar-v-model": "^1.2.3",
+        "@vue/babel-sugar-v-on": "^1.2.3"
+      }
+    },
+    "@vue/babel-sugar-composition-api-inject-h": {
+      "version": "1.2.1",
+      "dev": true,
+      "requires": {
+        "@babel/plugin-syntax-jsx": "^7.2.0"
+      }
+    },
+    "@vue/babel-sugar-composition-api-render-instance": {
+      "version": "1.2.4",
+      "dev": true,
+      "requires": {
+        "@babel/plugin-syntax-jsx": "^7.2.0"
+      }
+    },
+    "@vue/babel-sugar-functional-vue": {
+      "version": "1.2.2",
+      "dev": true,
+      "requires": {
+        "@babel/plugin-syntax-jsx": "^7.2.0"
+      }
+    },
+    "@vue/babel-sugar-inject-h": {
+      "version": "1.2.2",
+      "dev": true,
+      "requires": {
+        "@babel/plugin-syntax-jsx": "^7.2.0"
+      }
+    },
+    "@vue/babel-sugar-v-model": {
+      "version": "1.2.3",
+      "dev": true,
+      "requires": {
+        "@babel/plugin-syntax-jsx": "^7.2.0",
+        "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1",
+        "@vue/babel-plugin-transform-vue-jsx": "^1.2.1",
+        "camelcase": "^5.0.0",
+        "html-tags": "^2.0.0",
+        "svg-tags": "^1.0.0"
+      }
+    },
+    "@vue/babel-sugar-v-on": {
+      "version": "1.2.3",
+      "dev": true,
+      "requires": {
+        "@babel/plugin-syntax-jsx": "^7.2.0",
+        "@vue/babel-plugin-transform-vue-jsx": "^1.2.1",
+        "camelcase": "^5.0.0"
+      }
+    },
+    "@vue/cli-overlay": {
+      "version": "3.12.1",
+      "dev": true
+    },
+    "@vue/cli-plugin-babel": {
+      "version": "3.12.1",
+      "dev": true,
+      "requires": {
+        "@babel/core": "^7.0.0",
+        "@vue/babel-preset-app": "^3.12.1",
+        "@vue/cli-shared-utils": "^3.12.1",
+        "babel-loader": "^8.0.5",
+        "webpack": "^4.0.0"
+      },
+      "dependencies": {
+        "@vue/cli-shared-utils": {
+          "version": "3.12.1",
+          "dev": true,
+          "requires": {
+            "@hapi/joi": "^15.0.1",
+            "chalk": "^2.4.1",
+            "execa": "^1.0.0",
+            "launch-editor": "^2.2.1",
+            "lru-cache": "^5.1.1",
+            "node-ipc": "^9.1.1",
+            "open": "^6.3.0",
+            "ora": "^3.4.0",
+            "request": "^2.87.0",
+            "request-promise-native": "^1.0.7",
+            "semver": "^6.0.0",
+            "string.prototype.padstart": "^3.0.0"
+          }
+        }
+      }
+    },
+    "@vue/cli-plugin-eslint": {
+      "version": "3.12.1",
+      "dev": true,
+      "requires": {
+        "@vue/cli-shared-utils": "^3.12.1",
+        "babel-eslint": "^10.0.1",
+        "eslint": "^4.19.1",
+        "eslint-loader": "^2.1.2",
+        "eslint-plugin-vue": "^4.7.1",
+        "globby": "^9.2.0",
+        "webpack": "^4.0.0",
+        "yorkie": "^2.0.0"
+      },
+      "dependencies": {
+        "@vue/cli-shared-utils": {
+          "version": "3.12.1",
+          "dev": true,
+          "requires": {
+            "@hapi/joi": "^15.0.1",
+            "chalk": "^2.4.1",
+            "execa": "^1.0.0",
+            "launch-editor": "^2.2.1",
+            "lru-cache": "^5.1.1",
+            "node-ipc": "^9.1.1",
+            "open": "^6.3.0",
+            "ora": "^3.4.0",
+            "request": "^2.87.0",
+            "request-promise-native": "^1.0.7",
+            "semver": "^6.0.0",
+            "string.prototype.padstart": "^3.0.0"
+          }
+        },
+        "acorn": {
+          "version": "5.7.4",
+          "dev": true,
+          "optional": true
+        },
+        "acorn-jsx": {
+          "version": "3.0.1",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "acorn": "^3.0.4"
+          },
+          "dependencies": {
+            "acorn": {
+              "version": "3.3.0",
+              "dev": true,
+              "optional": true
+            }
+          }
+        },
+        "ajv": {
+          "version": "5.5.2",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "co": "^4.6.0",
+            "fast-deep-equal": "^1.0.0",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.3.0"
+          }
+        },
+        "ajv-keywords": {
+          "version": "2.1.1",
+          "dev": true,
+          "optional": true,
+          "requires": {}
+        },
+        "ansi-regex": {
+          "version": "3.0.0",
+          "dev": true,
+          "optional": true
+        },
+        "chardet": {
+          "version": "0.4.2",
+          "dev": true,
+          "optional": true
+        },
+        "cli-cursor": {
+          "version": "2.1.0",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "restore-cursor": "^2.0.0"
+          }
+        },
+        "cross-spawn": {
+          "version": "5.1.0",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "lru-cache": "^4.0.1",
+            "shebang-command": "^1.2.0",
+            "which": "^1.2.9"
+          },
+          "dependencies": {
+            "lru-cache": {
+              "version": "4.1.5",
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "pseudomap": "^1.0.2",
+                "yallist": "^2.1.2"
+              }
+            }
+          }
+        },
+        "debug": {
+          "version": "3.2.7",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "doctrine": {
+          "version": "2.1.0",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "esutils": "^2.0.2"
+          }
+        },
+        "eslint": {
+          "version": "4.19.1",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ajv": "^5.3.0",
+            "babel-code-frame": "^6.22.0",
+            "chalk": "^2.1.0",
+            "concat-stream": "^1.6.0",
+            "cross-spawn": "^5.1.0",
+            "debug": "^3.1.0",
+            "doctrine": "^2.1.0",
+            "eslint-scope": "^3.7.1",
+            "eslint-visitor-keys": "^1.0.0",
+            "espree": "^3.5.4",
+            "esquery": "^1.0.0",
+            "esutils": "^2.0.2",
+            "file-entry-cache": "^2.0.0",
+            "functional-red-black-tree": "^1.0.1",
+            "glob": "^7.1.2",
+            "globals": "^11.0.1",
+            "ignore": "^3.3.3",
+            "imurmurhash": "^0.1.4",
+            "inquirer": "^3.0.6",
+            "is-resolvable": "^1.0.0",
+            "js-yaml": "^3.9.1",
+            "json-stable-stringify-without-jsonify": "^1.0.1",
+            "levn": "^0.3.0",
+            "lodash": "^4.17.4",
+            "minimatch": "^3.0.2",
+            "mkdirp": "^0.5.1",
+            "natural-compare": "^1.4.0",
+            "optionator": "^0.8.2",
+            "path-is-inside": "^1.0.2",
+            "pluralize": "^7.0.0",
+            "progress": "^2.0.0",
+            "regexpp": "^1.0.1",
+            "require-uncached": "^1.0.3",
+            "semver": "^5.3.0",
+            "strip-ansi": "^4.0.0",
+            "strip-json-comments": "~2.0.1",
+            "table": "4.0.2",
+            "text-table": "~0.2.0"
+          },
+          "dependencies": {
+            "semver": {
+              "version": "5.7.1",
+              "dev": true,
+              "optional": true
+            }
+          }
+        },
+        "eslint-plugin-vue": {
+          "version": "4.7.1",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "vue-eslint-parser": "^2.0.3"
+          }
+        },
+        "eslint-scope": {
+          "version": "3.7.3",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "esrecurse": "^4.1.0",
+            "estraverse": "^4.1.1"
+          }
+        },
+        "espree": {
+          "version": "3.5.4",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "acorn": "^5.5.0",
+            "acorn-jsx": "^3.0.0"
+          }
+        },
+        "external-editor": {
+          "version": "2.2.0",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "chardet": "^0.4.0",
+            "iconv-lite": "^0.4.17",
+            "tmp": "^0.0.33"
+          }
+        },
+        "fast-deep-equal": {
+          "version": "1.1.0",
+          "dev": true,
+          "optional": true
+        },
+        "figures": {
+          "version": "2.0.0",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "escape-string-regexp": "^1.0.5"
+          }
+        },
+        "file-entry-cache": {
+          "version": "2.0.0",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "flat-cache": "^1.2.1",
+            "object-assign": "^4.0.1"
+          }
+        },
+        "flat-cache": {
+          "version": "1.3.4",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "circular-json": "^0.3.1",
+            "graceful-fs": "^4.1.2",
+            "rimraf": "~2.6.2",
+            "write": "^0.2.1"
+          }
+        },
+        "ignore": {
+          "version": "3.3.10",
+          "dev": true,
+          "optional": true
+        },
+        "inquirer": {
+          "version": "3.3.0",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ansi-escapes": "^3.0.0",
+            "chalk": "^2.0.0",
+            "cli-cursor": "^2.1.0",
+            "cli-width": "^2.0.0",
+            "external-editor": "^2.0.4",
+            "figures": "^2.0.0",
+            "lodash": "^4.3.0",
+            "mute-stream": "0.0.7",
+            "run-async": "^2.2.0",
+            "rx-lite": "^4.0.8",
+            "rx-lite-aggregates": "^4.0.8",
+            "string-width": "^2.1.0",
+            "strip-ansi": "^4.0.0",
+            "through": "^2.3.6"
+          }
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "dev": true,
+          "optional": true
+        },
+        "json-schema-traverse": {
+          "version": "0.3.1",
+          "dev": true,
+          "optional": true
+        },
+        "mimic-fn": {
+          "version": "1.2.0",
+          "dev": true,
+          "optional": true
+        },
+        "onetime": {
+          "version": "2.0.1",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "mimic-fn": "^1.0.0"
+          }
+        },
+        "regexpp": {
+          "version": "1.1.0",
+          "dev": true,
+          "optional": true
+        },
+        "restore-cursor": {
+          "version": "2.0.0",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "onetime": "^2.0.0",
+            "signal-exit": "^3.0.2"
+          }
+        },
+        "rimraf": {
+          "version": "2.6.3",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        },
+        "slice-ansi": {
+          "version": "1.0.0",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "is-fullwidth-code-point": "^2.0.0"
+          }
+        },
+        "string-width": {
+          "version": "2.1.1",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^4.0.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "4.0.0",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ansi-regex": "^3.0.0"
+          }
+        },
+        "table": {
+          "version": "4.0.2",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ajv": "^5.2.3",
+            "ajv-keywords": "^2.1.0",
+            "chalk": "^2.1.0",
+            "lodash": "^4.17.4",
+            "slice-ansi": "1.0.0",
+            "string-width": "^2.1.1"
+          }
+        },
+        "tmp": {
+          "version": "0.0.33",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "os-tmpdir": "~1.0.2"
+          }
+        },
+        "vue-eslint-parser": {
+          "version": "2.0.3",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "debug": "^3.1.0",
+            "eslint-scope": "^3.7.1",
+            "eslint-visitor-keys": "^1.0.0",
+            "espree": "^3.5.2",
+            "esquery": "^1.0.0",
+            "lodash": "^4.17.4"
+          }
+        },
+        "write": {
+          "version": "0.2.1",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "mkdirp": "^0.5.1"
+          }
+        },
+        "yallist": {
+          "version": "2.1.2",
+          "dev": true,
+          "optional": true
+        }
+      }
+    },
+    "@vue/cli-service": {
+      "version": "3.12.1",
+      "dev": true,
+      "requires": {
+        "@intervolga/optimize-cssnano-plugin": "^1.0.5",
+        "@soda/friendly-errors-webpack-plugin": "^1.7.1",
+        "@vue/cli-overlay": "^3.12.1",
+        "@vue/cli-shared-utils": "^3.12.1",
+        "@vue/component-compiler-utils": "^3.0.0",
+        "@vue/preload-webpack-plugin": "^1.1.0",
+        "@vue/web-component-wrapper": "^1.2.0",
+        "acorn": "^6.1.1",
+        "acorn-walk": "^6.1.1",
+        "address": "^1.0.3",
+        "autoprefixer": "^9.5.1",
+        "browserslist": "^4.5.4",
+        "cache-loader": "^2.0.1",
+        "case-sensitive-paths-webpack-plugin": "^2.2.0",
+        "chalk": "^2.4.2",
+        "cli-highlight": "^2.1.0",
+        "clipboardy": "^2.0.0",
+        "cliui": "^5.0.0",
+        "copy-webpack-plugin": "^4.6.0",
+        "css-loader": "^1.0.1",
+        "cssnano": "^4.1.10",
+        "current-script-polyfill": "^1.0.0",
+        "debug": "^4.1.1",
+        "default-gateway": "^5.0.2",
+        "dotenv": "^7.0.0",
+        "dotenv-expand": "^5.1.0",
+        "escape-string-regexp": "^1.0.5",
+        "file-loader": "^3.0.1",
+        "fs-extra": "^7.0.1",
+        "globby": "^9.2.0",
+        "hash-sum": "^1.0.2",
+        "html-webpack-plugin": "^3.2.0",
+        "launch-editor-middleware": "^2.2.1",
+        "lodash.defaultsdeep": "^4.6.1",
+        "lodash.mapvalues": "^4.6.0",
+        "lodash.transform": "^4.6.0",
+        "mini-css-extract-plugin": "^0.8.0",
+        "minimist": "^1.2.0",
+        "ora": "^3.4.0",
+        "portfinder": "^1.0.20",
+        "postcss-loader": "^3.0.0",
+        "read-pkg": "^5.0.0",
+        "semver": "^6.0.0",
+        "slash": "^2.0.0",
+        "source-map-url": "^0.4.0",
+        "ssri": "^6.0.1",
+        "string.prototype.padend": "^3.0.0",
+        "terser-webpack-plugin": "^1.2.3",
+        "thread-loader": "^2.1.2",
+        "url-loader": "^1.1.2",
+        "vue-loader": "^15.7.0",
+        "webpack": "^4.0.0",
+        "webpack-bundle-analyzer": "^3.3.0",
+        "webpack-chain": "^4.11.0",
+        "webpack-dev-server": "^3.4.1",
+        "webpack-merge": "^4.2.1"
+      },
+      "dependencies": {
+        "@vue/cli-shared-utils": {
+          "version": "3.12.1",
+          "dev": true,
+          "requires": {
+            "@hapi/joi": "^15.0.1",
+            "chalk": "^2.4.1",
+            "execa": "^1.0.0",
+            "launch-editor": "^2.2.1",
+            "lru-cache": "^5.1.1",
+            "node-ipc": "^9.1.1",
+            "open": "^6.3.0",
+            "ora": "^3.4.0",
+            "request": "^2.87.0",
+            "request-promise-native": "^1.0.7",
+            "semver": "^6.0.0",
+            "string.prototype.padstart": "^3.0.0"
+          }
+        },
+        "acorn": {
+          "version": "6.4.2",
+          "dev": true
+        },
+        "commander": {
+          "version": "2.20.3",
+          "dev": true
+        },
+        "css-loader": {
+          "version": "1.0.1",
+          "dev": true,
+          "requires": {
+            "babel-code-frame": "^6.26.0",
+            "css-selector-tokenizer": "^0.7.0",
+            "icss-utils": "^2.1.0",
+            "loader-utils": "^1.0.2",
+            "lodash": "^4.17.11",
+            "postcss": "^6.0.23",
+            "postcss-modules-extract-imports": "^1.2.0",
+            "postcss-modules-local-by-default": "^1.2.0",
+            "postcss-modules-scope": "^1.1.0",
+            "postcss-modules-values": "^1.3.0",
+            "postcss-value-parser": "^3.3.0",
+            "source-list-map": "^2.0.0"
+          }
+        },
+        "gzip-size": {
+          "version": "5.1.1",
+          "dev": true,
+          "requires": {
+            "duplexer": "^0.1.1",
+            "pify": "^4.0.1"
+          }
+        },
+        "icss-utils": {
+          "version": "2.1.0",
+          "dev": true,
+          "requires": {
+            "postcss": "^6.0.1"
+          }
+        },
+        "lodash": {
+          "version": "4.17.21",
+          "dev": true
+        },
+        "pify": {
+          "version": "4.0.1",
+          "dev": true
+        },
+        "postcss": {
+          "version": "6.0.23",
+          "dev": true,
+          "requires": {
+            "chalk": "^2.4.1",
+            "source-map": "^0.6.1",
+            "supports-color": "^5.4.0"
+          }
+        },
+        "postcss-modules-extract-imports": {
+          "version": "1.2.1",
+          "dev": true,
+          "requires": {
+            "postcss": "^6.0.1"
+          }
+        },
+        "postcss-modules-local-by-default": {
+          "version": "1.2.0",
+          "dev": true,
+          "requires": {
+            "css-selector-tokenizer": "^0.7.0",
+            "postcss": "^6.0.1"
+          }
+        },
+        "postcss-modules-scope": {
+          "version": "1.1.0",
+          "dev": true,
+          "requires": {
+            "css-selector-tokenizer": "^0.7.0",
+            "postcss": "^6.0.1"
+          }
+        },
+        "postcss-modules-values": {
+          "version": "1.3.0",
+          "dev": true,
+          "requires": {
+            "icss-replace-symbols": "^1.1.0",
+            "postcss": "^6.0.1"
+          }
+        },
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "dev": true
+        },
+        "webpack-bundle-analyzer": {
+          "version": "3.9.0",
+          "dev": true,
+          "requires": {
+            "acorn": "^7.1.1",
+            "acorn-walk": "^7.1.1",
+            "bfj": "^6.1.1",
+            "chalk": "^2.4.1",
+            "commander": "^2.18.0",
+            "ejs": "^2.6.1",
+            "express": "^4.16.3",
+            "filesize": "^3.6.1",
+            "gzip-size": "^5.0.0",
+            "lodash": "^4.17.19",
+            "mkdirp": "^0.5.1",
+            "opener": "^1.5.1",
+            "ws": "^6.0.0"
+          },
+          "dependencies": {
+            "acorn": {
+              "version": "7.4.1",
+              "dev": true
+            },
+            "acorn-walk": {
+              "version": "7.2.0",
+              "dev": true
+            }
+          }
+        },
+        "ws": {
+          "version": "6.2.2",
+          "dev": true,
+          "requires": {
+            "async-limiter": "~1.0.0"
+          }
+        }
+      }
+    },
+    "@vue/component-compiler-utils": {
+      "version": "3.3.0",
+      "dev": true,
+      "requires": {
+        "consolidate": "^0.15.1",
+        "hash-sum": "^1.0.2",
+        "lru-cache": "^4.1.2",
+        "merge-source-map": "^1.1.0",
+        "postcss": "^7.0.36",
+        "postcss-selector-parser": "^6.0.2",
+        "prettier": "^1.18.2 || ^2.0.0",
+        "source-map": "~0.6.1",
+        "vue-template-es2015-compiler": "^1.9.0"
+      },
+      "dependencies": {
+        "lru-cache": {
+          "version": "4.1.5",
+          "dev": true,
+          "requires": {
+            "pseudomap": "^1.0.2",
+            "yallist": "^2.1.2"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "dev": true
+        },
+        "yallist": {
+          "version": "2.1.2",
+          "dev": true
+        }
+      }
+    },
+    "@vue/preload-webpack-plugin": {
+      "version": "1.1.2",
+      "dev": true,
+      "requires": {}
+    },
+    "@vue/web-component-wrapper": {
+      "version": "1.3.0",
+      "dev": true
+    },
+    "@webassemblyjs/ast": {
+      "version": "1.9.0",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/helper-module-context": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/wast-parser": "1.9.0"
+      }
+    },
+    "@webassemblyjs/floating-point-hex-parser": {
+      "version": "1.9.0",
+      "dev": true
+    },
+    "@webassemblyjs/helper-api-error": {
+      "version": "1.9.0",
+      "dev": true
+    },
+    "@webassemblyjs/helper-buffer": {
+      "version": "1.9.0",
+      "dev": true
+    },
+    "@webassemblyjs/helper-code-frame": {
+      "version": "1.9.0",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/wast-printer": "1.9.0"
+      }
+    },
+    "@webassemblyjs/helper-fsm": {
+      "version": "1.9.0",
+      "dev": true
+    },
+    "@webassemblyjs/helper-module-context": {
+      "version": "1.9.0",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0"
+      }
+    },
+    "@webassemblyjs/helper-wasm-bytecode": {
+      "version": "1.9.0",
+      "dev": true
+    },
+    "@webassemblyjs/helper-wasm-section": {
+      "version": "1.9.0",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-buffer": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/wasm-gen": "1.9.0"
+      }
+    },
+    "@webassemblyjs/ieee754": {
+      "version": "1.9.0",
+      "dev": true,
+      "requires": {
+        "@xtuc/ieee754": "^1.2.0"
+      }
+    },
+    "@webassemblyjs/leb128": {
+      "version": "1.9.0",
+      "dev": true,
+      "requires": {
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "@webassemblyjs/utf8": {
+      "version": "1.9.0",
+      "dev": true
+    },
+    "@webassemblyjs/wasm-edit": {
+      "version": "1.9.0",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-buffer": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/helper-wasm-section": "1.9.0",
+        "@webassemblyjs/wasm-gen": "1.9.0",
+        "@webassemblyjs/wasm-opt": "1.9.0",
+        "@webassemblyjs/wasm-parser": "1.9.0",
+        "@webassemblyjs/wast-printer": "1.9.0"
+      }
+    },
+    "@webassemblyjs/wasm-gen": {
+      "version": "1.9.0",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/ieee754": "1.9.0",
+        "@webassemblyjs/leb128": "1.9.0",
+        "@webassemblyjs/utf8": "1.9.0"
+      }
+    },
+    "@webassemblyjs/wasm-opt": {
+      "version": "1.9.0",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-buffer": "1.9.0",
+        "@webassemblyjs/wasm-gen": "1.9.0",
+        "@webassemblyjs/wasm-parser": "1.9.0"
+      }
+    },
+    "@webassemblyjs/wasm-parser": {
+      "version": "1.9.0",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-api-error": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/ieee754": "1.9.0",
+        "@webassemblyjs/leb128": "1.9.0",
+        "@webassemblyjs/utf8": "1.9.0"
+      }
+    },
+    "@webassemblyjs/wast-parser": {
+      "version": "1.9.0",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/floating-point-hex-parser": "1.9.0",
+        "@webassemblyjs/helper-api-error": "1.9.0",
+        "@webassemblyjs/helper-code-frame": "1.9.0",
+        "@webassemblyjs/helper-fsm": "1.9.0",
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "@webassemblyjs/wast-printer": {
+      "version": "1.9.0",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/wast-parser": "1.9.0",
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "@xtuc/ieee754": {
+      "version": "1.2.0",
+      "dev": true
+    },
+    "@xtuc/long": {
+      "version": "4.2.2",
+      "dev": true
+    },
+    "accepts": {
+      "version": "1.3.7",
+      "dev": true,
+      "requires": {
+        "mime-types": "~2.1.24",
+        "negotiator": "0.6.2"
+      }
+    },
+    "acorn": {
+      "version": "7.4.1",
+      "dev": true,
+      "peer": true
+    },
+    "acorn-jsx": {
+      "version": "5.3.2",
+      "dev": true,
+      "requires": {}
+    },
+    "acorn-walk": {
+      "version": "6.2.0",
+      "dev": true
+    },
+    "address": {
+      "version": "1.1.2",
+      "dev": true
+    },
+    "adler-32": {
+      "version": "1.2.0",
+      "requires": {
+        "exit-on-epipe": "~1.0.1",
+        "printj": "~1.1.0"
+      }
+    },
+    "aggregate-error": {
+      "version": "3.1.0",
+      "dev": true,
+      "requires": {
+        "clean-stack": "^2.0.0",
+        "indent-string": "^4.0.0"
+      },
+      "dependencies": {
+        "indent-string": {
+          "version": "4.0.0",
+          "dev": true
+        }
+      }
+    },
+    "ajv": {
+      "version": "6.12.6",
+      "requires": {
+        "fast-deep-equal": "^3.1.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      }
+    },
+    "ajv-errors": {
+      "version": "1.0.1",
+      "requires": {}
+    },
+    "ajv-keywords": {
+      "version": "3.5.2",
+      "requires": {}
+    },
+    "alphanum-sort": {
+      "version": "1.0.2",
+      "dev": true
+    },
+    "ansi-colors": {
+      "version": "3.2.3",
+      "dev": true
+    },
+    "ansi-escapes": {
+      "version": "3.2.0",
+      "dev": true
+    },
+    "ansi-html-community": {
+      "version": "0.0.8",
+      "dev": true
+    },
+    "ansi-regex": {
+      "version": "5.0.1",
+      "dev": true
+    },
+    "ansi-styles": {
+      "version": "3.2.1",
+      "dev": true,
+      "requires": {
+        "color-convert": "^1.9.0"
+      }
+    },
+    "any-promise": {
+      "version": "1.3.0",
+      "dev": true
+    },
+    "anymatch": {
+      "version": "3.1.2",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
+      }
+    },
+    "aproba": {
+      "version": "1.2.0",
+      "dev": true
+    },
+    "arch": {
+      "version": "2.2.0",
+      "dev": true
+    },
+    "argparse": {
+      "version": "1.0.10",
+      "dev": true,
+      "requires": {
+        "sprintf-js": "~1.0.2"
+      }
+    },
+    "arr-diff": {
+      "version": "4.0.0",
+      "dev": true
+    },
+    "arr-flatten": {
+      "version": "1.1.0",
+      "dev": true
+    },
+    "arr-union": {
+      "version": "3.1.0",
+      "dev": true
+    },
+    "array-flatten": {
+      "version": "1.1.1",
+      "dev": true
+    },
+    "array-union": {
+      "version": "1.0.2",
+      "dev": true,
+      "requires": {
+        "array-uniq": "^1.0.1"
+      }
+    },
+    "array-uniq": {
+      "version": "1.0.3",
+      "dev": true
+    },
+    "array-unique": {
+      "version": "0.3.2",
+      "dev": true
+    },
+    "asn1": {
+      "version": "0.2.6",
+      "dev": true,
+      "requires": {
+        "safer-buffer": "~2.1.0"
+      }
+    },
+    "asn1.js": {
+      "version": "5.4.1",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.0.0",
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0",
+        "safer-buffer": "^2.1.0"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0",
+          "dev": true
+        }
+      }
+    },
+    "assert": {
+      "version": "1.5.0",
+      "dev": true,
+      "requires": {
+        "object-assign": "^4.1.1",
+        "util": "0.10.3"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.1",
+          "dev": true
+        },
+        "util": {
+          "version": "0.10.3",
+          "dev": true,
+          "requires": {
+            "inherits": "2.0.1"
+          }
+        }
+      }
+    },
+    "assert-plus": {
+      "version": "1.0.0",
+      "dev": true
+    },
+    "assign-symbols": {
+      "version": "1.0.0",
+      "dev": true
+    },
+    "astral-regex": {
+      "version": "1.0.0",
+      "dev": true
+    },
+    "async-each": {
+      "version": "1.0.3",
+      "dev": true
+    },
+    "async-limiter": {
+      "version": "1.0.1",
+      "dev": true
+    },
+    "async-validator": {
+      "version": "1.8.5",
+      "requires": {
+        "babel-runtime": "6.x"
+      }
+    },
+    "asynckit": {
+      "version": "0.4.0",
+      "dev": true
+    },
+    "atob": {
+      "version": "2.1.2",
+      "dev": true
+    },
+    "autoprefixer": {
+      "version": "9.8.8",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.12.0",
+        "caniuse-lite": "^1.0.30001109",
+        "normalize-range": "^0.1.2",
+        "num2fraction": "^1.2.2",
+        "picocolors": "^0.2.1",
+        "postcss": "^7.0.32",
+        "postcss-value-parser": "^4.1.0"
+      }
+    },
+    "aws-sign2": {
+      "version": "0.7.0",
+      "dev": true
+    },
+    "aws4": {
+      "version": "1.11.0",
+      "dev": true
+    },
+    "axios": {
+      "version": "0.19.2",
+      "requires": {
+        "follow-redirects": "1.5.10"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.1.0",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "follow-redirects": {
+          "version": "1.5.10",
+          "requires": {
+            "debug": "=3.1.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0"
+        }
+      }
+    },
+    "babel-code-frame": {
+      "version": "6.26.0",
+      "dev": true,
+      "requires": {
+        "chalk": "^1.1.3",
+        "esutils": "^2.0.2",
+        "js-tokens": "^3.0.2"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "2.1.1",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "2.2.1",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "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"
+          }
+        },
+        "js-tokens": {
+          "version": "3.0.2",
+          "dev": true
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        },
+        "supports-color": {
+          "version": "2.0.0",
+          "dev": true
+        }
+      }
+    },
+    "babel-eslint": {
+      "version": "10.1.0",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.0.0",
+        "@babel/parser": "^7.7.0",
+        "@babel/traverse": "^7.7.0",
+        "@babel/types": "^7.7.0",
+        "eslint-visitor-keys": "^1.0.0",
+        "resolve": "^1.12.0"
+      }
+    },
+    "babel-helper-vue-jsx-merge-props": {
+      "version": "2.0.3"
+    },
+    "babel-loader": {
+      "version": "8.2.3",
+      "dev": true,
+      "requires": {
+        "find-cache-dir": "^3.3.1",
+        "loader-utils": "^1.4.0",
+        "make-dir": "^3.1.0",
+        "schema-utils": "^2.6.5"
+      }
+    },
+    "babel-plugin-dynamic-import-node": {
+      "version": "2.3.3",
+      "dev": true,
+      "requires": {
+        "object.assign": "^4.1.0"
+      }
+    },
+    "babel-plugin-module-resolver": {
+      "version": "3.2.0",
+      "dev": true,
+      "requires": {
+        "find-babel-config": "^1.1.0",
+        "glob": "^7.1.2",
+        "pkg-up": "^2.0.0",
+        "reselect": "^3.0.1",
+        "resolve": "^1.4.0"
+      }
+    },
+    "babel-plugin-polyfill-corejs2": {
+      "version": "0.3.0",
+      "dev": true,
+      "requires": {
+        "@babel/compat-data": "^7.13.11",
+        "@babel/helper-define-polyfill-provider": "^0.3.0",
+        "semver": "^6.1.1"
+      }
+    },
+    "babel-plugin-polyfill-corejs3": {
+      "version": "0.4.0",
+      "dev": true,
+      "requires": {
+        "@babel/helper-define-polyfill-provider": "^0.3.0",
+        "core-js-compat": "^3.18.0"
+      }
+    },
+    "babel-plugin-polyfill-regenerator": {
+      "version": "0.3.0",
+      "dev": true,
+      "requires": {
+        "@babel/helper-define-polyfill-provider": "^0.3.0"
+      }
+    },
+    "babel-plugin-transform-remove-console": {
+      "version": "6.9.4",
+      "dev": true
+    },
+    "babel-plugin-transform-runtime": {
+      "version": "6.23.0",
+      "requires": {
+        "babel-runtime": "^6.22.0"
+      }
+    },
+    "babel-polyfill": {
+      "version": "6.26.0",
+      "dev": true,
+      "requires": {
+        "babel-runtime": "^6.26.0",
+        "core-js": "^2.5.0",
+        "regenerator-runtime": "^0.10.5"
+      },
+      "dependencies": {
+        "regenerator-runtime": {
+          "version": "0.10.5",
+          "dev": true
+        }
+      }
+    },
+    "babel-runtime": {
+      "version": "6.26.0",
+      "requires": {
+        "core-js": "^2.4.0",
+        "regenerator-runtime": "^0.11.0"
+      },
+      "dependencies": {
+        "regenerator-runtime": {
+          "version": "0.11.1"
+        }
+      }
+    },
+    "balanced-match": {
+      "version": "1.0.2",
+      "dev": true
+    },
+    "base": {
+      "version": "0.11.2",
+      "dev": true,
+      "requires": {
+        "cache-base": "^1.0.1",
+        "class-utils": "^0.3.5",
+        "component-emitter": "^1.2.1",
+        "define-property": "^1.0.0",
+        "isobject": "^3.0.1",
+        "mixin-deep": "^1.2.0",
+        "pascalcase": "^0.1.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "1.0.0",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        }
+      }
+    },
+    "base64-js": {
+      "version": "1.5.1",
+      "dev": true
+    },
+    "batch": {
+      "version": "0.6.1",
+      "dev": true
+    },
+    "batch-processor": {
+      "version": "1.0.0"
+    },
+    "bcrypt-pbkdf": {
+      "version": "1.0.2",
+      "dev": true,
+      "requires": {
+        "tweetnacl": "^0.14.3"
+      }
+    },
+    "bfj": {
+      "version": "6.1.2",
+      "dev": true,
+      "requires": {
+        "bluebird": "^3.5.5",
+        "check-types": "^8.0.3",
+        "hoopy": "^0.1.4",
+        "tryer": "^1.0.1"
+      }
+    },
+    "big.js": {
+      "version": "5.2.2"
+    },
+    "binary-extensions": {
+      "version": "1.13.1",
+      "dev": true
+    },
+    "bluebird": {
+      "version": "3.7.2",
+      "dev": true
+    },
+    "bn.js": {
+      "version": "5.2.0",
+      "dev": true
+    },
+    "body-parser": {
+      "version": "1.19.1",
+      "dev": true,
+      "requires": {
+        "bytes": "3.1.1",
+        "content-type": "~1.0.4",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "http-errors": "1.8.1",
+        "iconv-lite": "0.4.24",
+        "on-finished": "~2.3.0",
+        "qs": "6.9.6",
+        "raw-body": "2.4.2",
+        "type-is": "~1.6.18"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "dev": true
+        },
+        "qs": {
+          "version": "6.9.6",
+          "dev": true
+        }
+      }
+    },
+    "bonjour": {
+      "version": "3.5.0",
+      "dev": true,
+      "requires": {
+        "array-flatten": "^2.1.0",
+        "deep-equal": "^1.0.1",
+        "dns-equal": "^1.0.0",
+        "dns-txt": "^2.0.2",
+        "multicast-dns": "^6.0.1",
+        "multicast-dns-service-types": "^1.1.0"
+      },
+      "dependencies": {
+        "array-flatten": {
+          "version": "2.1.2",
+          "dev": true
+        }
+      }
+    },
+    "boolbase": {
+      "version": "1.0.0",
+      "dev": true
+    },
+    "bootstrap": {
+      "version": "4.6.1",
+      "requires": {}
+    },
+    "brace-expansion": {
+      "version": "1.1.11",
+      "dev": true,
+      "requires": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "braces": {
+      "version": "2.3.2",
+      "dev": true,
+      "requires": {
+        "arr-flatten": "^1.1.0",
+        "array-unique": "^0.3.2",
+        "extend-shallow": "^2.0.1",
+        "fill-range": "^4.0.0",
+        "isobject": "^3.0.1",
+        "repeat-element": "^1.1.2",
+        "snapdragon": "^0.8.1",
+        "snapdragon-node": "^2.0.1",
+        "split-string": "^3.0.2",
+        "to-regex": "^3.0.1"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "is-extendable": {
+          "version": "0.1.1",
+          "dev": true
+        }
+      }
+    },
+    "brorand": {
+      "version": "1.1.0",
+      "dev": true
+    },
+    "browserify-aes": {
+      "version": "1.2.0",
+      "dev": true,
+      "requires": {
+        "buffer-xor": "^1.0.3",
+        "cipher-base": "^1.0.0",
+        "create-hash": "^1.1.0",
+        "evp_bytestokey": "^1.0.3",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "browserify-cipher": {
+      "version": "1.0.1",
+      "dev": true,
+      "requires": {
+        "browserify-aes": "^1.0.4",
+        "browserify-des": "^1.0.0",
+        "evp_bytestokey": "^1.0.0"
+      }
+    },
+    "browserify-des": {
+      "version": "1.0.2",
+      "dev": true,
+      "requires": {
+        "cipher-base": "^1.0.1",
+        "des.js": "^1.0.0",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      }
+    },
+    "browserify-rsa": {
+      "version": "4.1.0",
+      "dev": true,
+      "requires": {
+        "bn.js": "^5.0.0",
+        "randombytes": "^2.0.1"
+      }
+    },
+    "browserify-sign": {
+      "version": "4.2.1",
+      "dev": true,
+      "requires": {
+        "bn.js": "^5.1.1",
+        "browserify-rsa": "^4.0.1",
+        "create-hash": "^1.2.0",
+        "create-hmac": "^1.1.7",
+        "elliptic": "^6.5.3",
+        "inherits": "^2.0.4",
+        "parse-asn1": "^5.1.5",
+        "readable-stream": "^3.6.0",
+        "safe-buffer": "^5.2.0"
+      },
+      "dependencies": {
+        "readable-stream": {
+          "version": "3.6.0",
+          "dev": true,
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        },
+        "safe-buffer": {
+          "version": "5.2.1",
+          "dev": true
+        }
+      }
+    },
+    "browserify-zlib": {
+      "version": "0.2.0",
+      "dev": true,
+      "requires": {
+        "pako": "~1.0.5"
+      }
+    },
+    "browserslist": {
+      "version": "4.19.1",
+      "dev": true,
+      "requires": {
+        "caniuse-lite": "^1.0.30001286",
+        "electron-to-chromium": "^1.4.17",
+        "escalade": "^3.1.1",
+        "node-releases": "^2.0.1",
+        "picocolors": "^1.0.0"
+      },
+      "dependencies": {
+        "picocolors": {
+          "version": "1.0.0",
+          "dev": true
+        }
+      }
+    },
+    "buffer": {
+      "version": "4.9.2",
+      "dev": true,
+      "requires": {
+        "base64-js": "^1.0.2",
+        "ieee754": "^1.1.4",
+        "isarray": "^1.0.0"
+      }
+    },
+    "buffer-from": {
+      "version": "1.1.2",
+      "dev": true
+    },
+    "buffer-indexof": {
+      "version": "1.1.1",
+      "dev": true
+    },
+    "buffer-xor": {
+      "version": "1.0.3",
+      "dev": true
+    },
+    "builtin-status-codes": {
+      "version": "3.0.0",
+      "dev": true
+    },
+    "bytes": {
+      "version": "3.1.1",
+      "dev": true
+    },
+    "cacache": {
+      "version": "12.0.4",
+      "dev": true,
+      "requires": {
+        "bluebird": "^3.5.5",
+        "chownr": "^1.1.1",
+        "figgy-pudding": "^3.5.1",
+        "glob": "^7.1.4",
+        "graceful-fs": "^4.1.15",
+        "infer-owner": "^1.0.3",
+        "lru-cache": "^5.1.1",
+        "mississippi": "^3.0.0",
+        "mkdirp": "^0.5.1",
+        "move-concurrently": "^1.0.1",
+        "promise-inflight": "^1.0.1",
+        "rimraf": "^2.6.3",
+        "ssri": "^6.0.1",
+        "unique-filename": "^1.1.1",
+        "y18n": "^4.0.0"
+      }
+    },
+    "cache-base": {
+      "version": "1.0.1",
+      "dev": true,
+      "requires": {
+        "collection-visit": "^1.0.0",
+        "component-emitter": "^1.2.1",
+        "get-value": "^2.0.6",
+        "has-value": "^1.0.0",
+        "isobject": "^3.0.1",
+        "set-value": "^2.0.0",
+        "to-object-path": "^0.3.0",
+        "union-value": "^1.0.0",
+        "unset-value": "^1.0.0"
+      }
+    },
+    "cache-loader": {
+      "version": "2.0.1",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.1.0",
+        "mkdirp": "^0.5.1",
+        "neo-async": "^2.6.0",
+        "normalize-path": "^3.0.0",
+        "schema-utils": "^1.0.0"
+      },
+      "dependencies": {
+        "schema-utils": {
+          "version": "1.0.0",
+          "dev": true,
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        }
+      }
+    },
+    "cacheable-lookup": {
+      "version": "5.0.4"
+    },
+    "cacheable-request": {
+      "version": "7.0.2",
+      "requires": {
+        "clone-response": "^1.0.2",
+        "get-stream": "^5.1.0",
+        "http-cache-semantics": "^4.0.0",
+        "keyv": "^4.0.0",
+        "lowercase-keys": "^2.0.0",
+        "normalize-url": "^6.0.1",
+        "responselike": "^2.0.0"
+      },
+      "dependencies": {
+        "get-stream": {
+          "version": "5.2.0",
+          "requires": {
+            "pump": "^3.0.0"
+          }
+        },
+        "normalize-url": {
+          "version": "6.1.0"
+        }
+      }
+    },
+    "call-bind": {
+      "version": "1.0.2",
+      "requires": {
+        "function-bind": "^1.1.1",
+        "get-intrinsic": "^1.0.2"
+      }
+    },
+    "call-me-maybe": {
+      "version": "1.0.1",
+      "dev": true
+    },
+    "caller-callsite": {
+      "version": "2.0.0",
+      "dev": true,
+      "requires": {
+        "callsites": "^2.0.0"
+      }
+    },
+    "caller-path": {
+      "version": "2.0.0",
+      "dev": true,
+      "requires": {
+        "caller-callsite": "^2.0.0"
+      }
+    },
+    "callsites": {
+      "version": "2.0.0",
+      "dev": true
+    },
+    "camel-case": {
+      "version": "3.0.0",
+      "dev": true,
+      "requires": {
+        "no-case": "^2.2.0",
+        "upper-case": "^1.1.1"
+      }
+    },
+    "camelcase": {
+      "version": "5.3.1",
+      "dev": true
+    },
+    "caniuse-api": {
+      "version": "3.0.0",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.0.0",
+        "caniuse-lite": "^1.0.0",
+        "lodash.memoize": "^4.1.2",
+        "lodash.uniq": "^4.5.0"
+      }
+    },
+    "caniuse-lite": {
+      "version": "1.0.30001296",
+      "dev": true
+    },
+    "case-sensitive-paths-webpack-plugin": {
+      "version": "2.4.0",
+      "dev": true
+    },
+    "caseless": {
+      "version": "0.12.0",
+      "dev": true
+    },
+    "cfb": {
+      "version": "1.2.1",
+      "requires": {
+        "adler-32": "~1.3.0",
+        "crc-32": "~1.2.0",
+        "printj": "~1.3.0"
+      },
+      "dependencies": {
+        "adler-32": {
+          "version": "1.3.0",
+          "requires": {
+            "printj": "~1.2.2"
+          },
+          "dependencies": {
+            "printj": {
+              "version": "1.2.3"
+            }
+          }
+        },
+        "printj": {
+          "version": "1.3.0"
+        }
+      }
+    },
+    "chalk": {
+      "version": "2.4.2",
+      "dev": true,
+      "requires": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      }
+    },
+    "chardet": {
+      "version": "0.7.0",
+      "dev": true
+    },
+    "check-types": {
+      "version": "8.0.3",
+      "dev": true
+    },
+    "chokidar": {
+      "version": "2.1.8",
+      "dev": true,
+      "requires": {
+        "anymatch": "^2.0.0",
+        "async-each": "^1.0.1",
+        "braces": "^2.3.2",
+        "fsevents": "^1.2.7",
+        "glob-parent": "^3.1.0",
+        "inherits": "^2.0.3",
+        "is-binary-path": "^1.0.0",
+        "is-glob": "^4.0.0",
+        "normalize-path": "^3.0.0",
+        "path-is-absolute": "^1.0.0",
+        "readdirp": "^2.2.1",
+        "upath": "^1.1.1"
+      },
+      "dependencies": {
+        "anymatch": {
+          "version": "2.0.0",
+          "dev": true,
+          "requires": {
+            "micromatch": "^3.1.4",
+            "normalize-path": "^2.1.1"
+          },
+          "dependencies": {
+            "normalize-path": {
+              "version": "2.1.1",
+              "dev": true,
+              "requires": {
+                "remove-trailing-separator": "^1.0.1"
+              }
+            }
+          }
+        }
+      }
+    },
+    "chownr": {
+      "version": "1.1.4",
+      "dev": true
+    },
+    "chrome-trace-event": {
+      "version": "1.0.3",
+      "dev": true
+    },
+    "ci-info": {
+      "version": "1.6.0",
+      "dev": true
+    },
+    "cipher-base": {
+      "version": "1.0.4",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "circular-json": {
+      "version": "0.3.3",
+      "dev": true,
+      "optional": true
+    },
+    "class-utils": {
+      "version": "0.3.6",
+      "dev": true,
+      "requires": {
+        "arr-union": "^3.1.0",
+        "define-property": "^0.2.5",
+        "isobject": "^3.0.0",
+        "static-extend": "^0.1.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "0.1.6",
+          "dev": true,
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "dev": true,
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "is-buffer": {
+          "version": "1.1.6",
+          "dev": true
+        },
+        "is-data-descriptor": {
+          "version": "0.1.4",
+          "dev": true,
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "dev": true,
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "is-descriptor": {
+          "version": "0.1.6",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^0.1.6",
+            "is-data-descriptor": "^0.1.4",
+            "kind-of": "^5.0.0"
+          }
+        },
+        "kind-of": {
+          "version": "5.1.0",
+          "dev": true
+        }
+      }
+    },
+    "clean-css": {
+      "version": "4.2.4",
+      "dev": true,
+      "requires": {
+        "source-map": "~0.6.0"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "dev": true
+        }
+      }
+    },
+    "clean-stack": {
+      "version": "2.2.0",
+      "dev": true
+    },
+    "cli-highlight": {
+      "version": "2.1.11",
+      "dev": true,
+      "requires": {
+        "chalk": "^4.0.0",
+        "highlight.js": "^10.7.1",
+        "mz": "^2.4.0",
+        "parse5": "^5.1.1",
+        "parse5-htmlparser2-tree-adapter": "^6.0.0",
+        "yargs": "^16.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "4.1.2",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "dev": true
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "dev": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        }
+      }
+    },
+    "cli-spinners": {
+      "version": "2.6.1",
+      "dev": true
+    },
+    "cli-width": {
+      "version": "2.2.1",
+      "dev": true
+    },
+    "clipboardy": {
+      "version": "2.3.0",
+      "dev": true,
+      "requires": {
+        "arch": "^2.1.1",
+        "execa": "^1.0.0",
+        "is-wsl": "^2.1.1"
+      }
+    },
+    "cliui": {
+      "version": "5.0.0",
+      "dev": true,
+      "requires": {
+        "string-width": "^3.1.0",
+        "strip-ansi": "^5.2.0",
+        "wrap-ansi": "^5.1.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "4.1.0",
+          "dev": true
+        },
+        "emoji-regex": {
+          "version": "7.0.3",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "dev": true
+        },
+        "string-width": {
+          "version": "3.1.0",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^7.0.1",
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^5.1.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "5.2.0",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^4.1.0"
+          }
+        }
+      }
+    },
+    "clone": {
+      "version": "1.0.4",
+      "dev": true
+    },
+    "clone-response": {
+      "version": "1.0.2",
+      "requires": {
+        "mimic-response": "^1.0.0"
+      }
+    },
+    "co": {
+      "version": "4.6.0",
+      "dev": true,
+      "optional": true
+    },
+    "coa": {
+      "version": "2.0.2",
+      "dev": true,
+      "requires": {
+        "@types/q": "^1.5.1",
+        "chalk": "^2.4.1",
+        "q": "^1.1.2"
+      }
+    },
+    "codepage": {
+      "version": "1.14.0",
+      "requires": {
+        "commander": "~2.14.1",
+        "exit-on-epipe": "~1.0.1"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.14.1"
+        }
+      }
+    },
+    "collection-visit": {
+      "version": "1.0.0",
+      "dev": true,
+      "requires": {
+        "map-visit": "^1.0.0",
+        "object-visit": "^1.0.0"
+      }
+    },
+    "color": {
+      "version": "3.2.1",
+      "dev": true,
+      "requires": {
+        "color-convert": "^1.9.3",
+        "color-string": "^1.6.0"
+      }
+    },
+    "color-convert": {
+      "version": "1.9.3",
+      "dev": true,
+      "requires": {
+        "color-name": "1.1.3"
+      }
+    },
+    "color-name": {
+      "version": "1.1.3",
+      "dev": true
+    },
+    "color-string": {
+      "version": "1.9.0",
+      "dev": true,
+      "requires": {
+        "color-name": "^1.0.0",
+        "simple-swizzle": "^0.2.2"
+      }
+    },
+    "combined-stream": {
+      "version": "1.0.8",
+      "dev": true,
+      "requires": {
+        "delayed-stream": "~1.0.0"
+      }
+    },
+    "commander": {
+      "version": "2.15.1",
+      "dev": true
+    },
+    "commondir": {
+      "version": "1.0.1",
+      "dev": true
+    },
+    "component-emitter": {
+      "version": "1.3.0",
+      "dev": true
+    },
+    "compressible": {
+      "version": "2.0.18",
+      "dev": true,
+      "requires": {
+        "mime-db": ">= 1.43.0 < 2"
+      }
+    },
+    "compression": {
+      "version": "1.7.4",
+      "dev": true,
+      "requires": {
+        "accepts": "~1.3.5",
+        "bytes": "3.0.0",
+        "compressible": "~2.0.16",
+        "debug": "2.6.9",
+        "on-headers": "~1.0.2",
+        "safe-buffer": "5.1.2",
+        "vary": "~1.1.2"
+      },
+      "dependencies": {
+        "bytes": {
+          "version": "3.0.0",
+          "dev": true
+        },
+        "debug": {
+          "version": "2.6.9",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "dev": true
+        }
+      }
+    },
+    "compression-webpack-plugin": {
+      "version": "5.0.2",
+      "dev": true,
+      "requires": {
+        "cacache": "^15.0.5",
+        "find-cache-dir": "^3.3.1",
+        "schema-utils": "^2.7.0",
+        "serialize-javascript": "^4.0.0",
+        "webpack-sources": "^1.4.3"
+      },
+      "dependencies": {
+        "cacache": {
+          "version": "15.3.0",
+          "dev": true,
+          "requires": {
+            "@npmcli/fs": "^1.0.0",
+            "@npmcli/move-file": "^1.0.1",
+            "chownr": "^2.0.0",
+            "fs-minipass": "^2.0.0",
+            "glob": "^7.1.4",
+            "infer-owner": "^1.0.4",
+            "lru-cache": "^6.0.0",
+            "minipass": "^3.1.1",
+            "minipass-collect": "^1.0.2",
+            "minipass-flush": "^1.0.5",
+            "minipass-pipeline": "^1.2.2",
+            "mkdirp": "^1.0.3",
+            "p-map": "^4.0.0",
+            "promise-inflight": "^1.0.1",
+            "rimraf": "^3.0.2",
+            "ssri": "^8.0.1",
+            "tar": "^6.0.2",
+            "unique-filename": "^1.1.1"
+          }
+        },
+        "chownr": {
+          "version": "2.0.0",
+          "dev": true
+        },
+        "lru-cache": {
+          "version": "6.0.0",
+          "dev": true,
+          "requires": {
+            "yallist": "^4.0.0"
+          }
+        },
+        "mkdirp": {
+          "version": "1.0.4",
+          "dev": true
+        },
+        "p-map": {
+          "version": "4.0.0",
+          "dev": true,
+          "requires": {
+            "aggregate-error": "^3.0.0"
+          }
+        },
+        "rimraf": {
+          "version": "3.0.2",
+          "dev": true,
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        },
+        "ssri": {
+          "version": "8.0.1",
+          "dev": true,
+          "requires": {
+            "minipass": "^3.1.1"
+          }
+        },
+        "yallist": {
+          "version": "4.0.0",
+          "dev": true
+        }
+      }
+    },
+    "concat-map": {
+      "version": "0.0.1",
+      "dev": true
+    },
+    "concat-stream": {
+      "version": "1.6.2",
+      "dev": true,
+      "requires": {
+        "buffer-from": "^1.0.0",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.2.2",
+        "typedarray": "^0.0.6"
+      }
+    },
+    "connect-history-api-fallback": {
+      "version": "1.6.0",
+      "dev": true
+    },
+    "console-browserify": {
+      "version": "1.2.0",
+      "dev": true
+    },
+    "consolidate": {
+      "version": "0.15.1",
+      "dev": true,
+      "requires": {
+        "bluebird": "^3.1.1"
+      }
+    },
+    "constants-browserify": {
+      "version": "1.0.0",
+      "dev": true
+    },
+    "content-disposition": {
+      "version": "0.5.4",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "5.2.1"
+      },
+      "dependencies": {
+        "safe-buffer": {
+          "version": "5.2.1",
+          "dev": true
+        }
+      }
+    },
+    "content-type": {
+      "version": "1.0.4",
+      "dev": true
+    },
+    "convert-source-map": {
+      "version": "1.8.0",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "~5.1.1"
+      }
+    },
+    "cookie": {
+      "version": "0.4.1",
+      "dev": true
+    },
+    "cookie-signature": {
+      "version": "1.0.6",
+      "dev": true
+    },
+    "copy-anything": {
+      "version": "2.0.3",
+      "dev": true,
+      "requires": {
+        "is-what": "^3.12.0"
+      }
+    },
+    "copy-concurrently": {
+      "version": "1.0.5",
+      "dev": true,
+      "requires": {
+        "aproba": "^1.1.1",
+        "fs-write-stream-atomic": "^1.0.8",
+        "iferr": "^0.1.5",
+        "mkdirp": "^0.5.1",
+        "rimraf": "^2.5.4",
+        "run-queue": "^1.0.0"
+      }
+    },
+    "copy-descriptor": {
+      "version": "0.1.1",
+      "dev": true
+    },
+    "copy-webpack-plugin": {
+      "version": "4.6.0",
+      "dev": true,
+      "requires": {
+        "cacache": "^10.0.4",
+        "find-cache-dir": "^1.0.0",
+        "globby": "^7.1.1",
+        "is-glob": "^4.0.0",
+        "loader-utils": "^1.1.0",
+        "minimatch": "^3.0.4",
+        "p-limit": "^1.0.0",
+        "serialize-javascript": "^1.4.0"
+      },
+      "dependencies": {
+        "cacache": {
+          "version": "10.0.4",
+          "dev": true,
+          "requires": {
+            "bluebird": "^3.5.1",
+            "chownr": "^1.0.1",
+            "glob": "^7.1.2",
+            "graceful-fs": "^4.1.11",
+            "lru-cache": "^4.1.1",
+            "mississippi": "^2.0.0",
+            "mkdirp": "^0.5.1",
+            "move-concurrently": "^1.0.1",
+            "promise-inflight": "^1.0.1",
+            "rimraf": "^2.6.2",
+            "ssri": "^5.2.4",
+            "unique-filename": "^1.1.0",
+            "y18n": "^4.0.0"
+          }
+        },
+        "find-cache-dir": {
+          "version": "1.0.0",
+          "dev": true,
+          "requires": {
+            "commondir": "^1.0.1",
+            "make-dir": "^1.0.0",
+            "pkg-dir": "^2.0.0"
+          }
+        },
+        "find-up": {
+          "version": "2.1.0",
+          "dev": true,
+          "requires": {
+            "locate-path": "^2.0.0"
+          }
+        },
+        "globby": {
+          "version": "7.1.1",
+          "dev": true,
+          "requires": {
+            "array-union": "^1.0.1",
+            "dir-glob": "^2.0.0",
+            "glob": "^7.1.2",
+            "ignore": "^3.3.5",
+            "pify": "^3.0.0",
+            "slash": "^1.0.0"
+          }
+        },
+        "ignore": {
+          "version": "3.3.10",
+          "dev": true
+        },
+        "locate-path": {
+          "version": "2.0.0",
+          "dev": true,
+          "requires": {
+            "p-locate": "^2.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "lru-cache": {
+          "version": "4.1.5",
+          "dev": true,
+          "requires": {
+            "pseudomap": "^1.0.2",
+            "yallist": "^2.1.2"
+          }
+        },
+        "make-dir": {
+          "version": "1.3.0",
+          "dev": true,
+          "requires": {
+            "pify": "^3.0.0"
+          }
+        },
+        "mississippi": {
+          "version": "2.0.0",
+          "dev": true,
+          "requires": {
+            "concat-stream": "^1.5.0",
+            "duplexify": "^3.4.2",
+            "end-of-stream": "^1.1.0",
+            "flush-write-stream": "^1.0.0",
+            "from2": "^2.1.0",
+            "parallel-transform": "^1.1.0",
+            "pump": "^2.0.1",
+            "pumpify": "^1.3.3",
+            "stream-each": "^1.1.0",
+            "through2": "^2.0.0"
+          }
+        },
+        "p-limit": {
+          "version": "1.3.0",
+          "dev": true,
+          "requires": {
+            "p-try": "^1.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "2.0.0",
+          "dev": true,
+          "requires": {
+            "p-limit": "^1.1.0"
+          }
+        },
+        "p-try": {
+          "version": "1.0.0",
+          "dev": true
+        },
+        "pify": {
+          "version": "3.0.0",
+          "dev": true
+        },
+        "pkg-dir": {
+          "version": "2.0.0",
+          "dev": true,
+          "requires": {
+            "find-up": "^2.1.0"
+          }
+        },
+        "pump": {
+          "version": "2.0.1",
+          "dev": true,
+          "requires": {
+            "end-of-stream": "^1.1.0",
+            "once": "^1.3.1"
+          }
+        },
+        "serialize-javascript": {
+          "version": "1.9.1",
+          "dev": true
+        },
+        "slash": {
+          "version": "1.0.0",
+          "dev": true
+        },
+        "ssri": {
+          "version": "5.3.0",
+          "dev": true,
+          "requires": {
+            "safe-buffer": "^5.1.1"
+          }
+        },
+        "yallist": {
+          "version": "2.1.2",
+          "dev": true
+        }
+      }
+    },
+    "core-js": {
+      "version": "2.6.12"
+    },
+    "core-js-compat": {
+      "version": "3.20.2",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.19.1",
+        "semver": "7.0.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "7.0.0",
+          "dev": true
+        }
+      }
+    },
+    "core-js-pure": {
+      "version": "3.20.2"
+    },
+    "core-util-is": {
+      "version": "1.0.3",
+      "dev": true
+    },
+    "cosmiconfig": {
+      "version": "5.2.1",
+      "dev": true,
+      "requires": {
+        "import-fresh": "^2.0.0",
+        "is-directory": "^0.3.1",
+        "js-yaml": "^3.13.1",
+        "parse-json": "^4.0.0"
+      }
+    },
+    "crc-32": {
+      "version": "1.2.0",
+      "requires": {
+        "exit-on-epipe": "~1.0.1",
+        "printj": "~1.1.0"
+      }
+    },
+    "create-ecdh": {
+      "version": "4.0.4",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.0",
+        "elliptic": "^6.5.3"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0",
+          "dev": true
+        }
+      }
+    },
+    "create-hash": {
+      "version": "1.2.0",
+      "dev": true,
+      "requires": {
+        "cipher-base": "^1.0.1",
+        "inherits": "^2.0.1",
+        "md5.js": "^1.3.4",
+        "ripemd160": "^2.0.1",
+        "sha.js": "^2.4.0"
+      }
+    },
+    "create-hmac": {
+      "version": "1.1.7",
+      "dev": true,
+      "requires": {
+        "cipher-base": "^1.0.3",
+        "create-hash": "^1.1.0",
+        "inherits": "^2.0.1",
+        "ripemd160": "^2.0.0",
+        "safe-buffer": "^5.0.1",
+        "sha.js": "^2.4.8"
+      }
+    },
+    "cross-spawn": {
+      "version": "6.0.5",
+      "dev": true,
+      "requires": {
+        "nice-try": "^1.0.4",
+        "path-key": "^2.0.1",
+        "semver": "^5.5.0",
+        "shebang-command": "^1.2.0",
+        "which": "^1.2.9"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "5.7.1",
+          "dev": true
+        }
+      }
+    },
+    "crypto-browserify": {
+      "version": "3.12.0",
+      "dev": true,
+      "requires": {
+        "browserify-cipher": "^1.0.0",
+        "browserify-sign": "^4.0.0",
+        "create-ecdh": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "create-hmac": "^1.1.0",
+        "diffie-hellman": "^5.0.0",
+        "inherits": "^2.0.1",
+        "pbkdf2": "^3.0.3",
+        "public-encrypt": "^4.0.0",
+        "randombytes": "^2.0.0",
+        "randomfill": "^1.0.3"
+      }
+    },
+    "css-color-names": {
+      "version": "0.0.4",
+      "dev": true
+    },
+    "css-declaration-sorter": {
+      "version": "4.0.1",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.1",
+        "timsort": "^0.3.0"
+      }
+    },
+    "css-loader": {
+      "version": "3.6.0",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "camelcase": "^5.3.1",
+        "cssesc": "^3.0.0",
+        "icss-utils": "^4.1.1",
+        "loader-utils": "^1.2.3",
+        "normalize-path": "^3.0.0",
+        "postcss": "^7.0.32",
+        "postcss-modules-extract-imports": "^2.0.0",
+        "postcss-modules-local-by-default": "^3.0.2",
+        "postcss-modules-scope": "^2.2.0",
+        "postcss-modules-values": "^3.0.0",
+        "postcss-value-parser": "^4.1.0",
+        "schema-utils": "^2.7.0",
+        "semver": "^6.3.0"
+      }
+    },
+    "css-select": {
+      "version": "4.2.1",
+      "dev": true,
+      "requires": {
+        "boolbase": "^1.0.0",
+        "css-what": "^5.1.0",
+        "domhandler": "^4.3.0",
+        "domutils": "^2.8.0",
+        "nth-check": "^2.0.1"
+      }
+    },
+    "css-select-base-adapter": {
+      "version": "0.1.1",
+      "dev": true
+    },
+    "css-selector-tokenizer": {
+      "version": "0.7.3",
+      "dev": true,
+      "requires": {
+        "cssesc": "^3.0.0",
+        "fastparse": "^1.1.2"
+      }
+    },
+    "css-tree": {
+      "version": "1.0.0-alpha.37",
+      "dev": true,
+      "requires": {
+        "mdn-data": "2.0.4",
+        "source-map": "^0.6.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "dev": true
+        }
+      }
+    },
+    "css-what": {
+      "version": "5.1.0",
+      "dev": true
+    },
+    "cssesc": {
+      "version": "3.0.0",
+      "dev": true
+    },
+    "cssnano": {
+      "version": "4.1.11",
+      "dev": true,
+      "requires": {
+        "cosmiconfig": "^5.0.0",
+        "cssnano-preset-default": "^4.0.8",
+        "is-resolvable": "^1.0.0",
+        "postcss": "^7.0.0"
+      }
+    },
+    "cssnano-preset-default": {
+      "version": "4.0.8",
+      "dev": true,
+      "requires": {
+        "css-declaration-sorter": "^4.0.1",
+        "cssnano-util-raw-cache": "^4.0.1",
+        "postcss": "^7.0.0",
+        "postcss-calc": "^7.0.1",
+        "postcss-colormin": "^4.0.3",
+        "postcss-convert-values": "^4.0.1",
+        "postcss-discard-comments": "^4.0.2",
+        "postcss-discard-duplicates": "^4.0.2",
+        "postcss-discard-empty": "^4.0.1",
+        "postcss-discard-overridden": "^4.0.1",
+        "postcss-merge-longhand": "^4.0.11",
+        "postcss-merge-rules": "^4.0.3",
+        "postcss-minify-font-values": "^4.0.2",
+        "postcss-minify-gradients": "^4.0.2",
+        "postcss-minify-params": "^4.0.2",
+        "postcss-minify-selectors": "^4.0.2",
+        "postcss-normalize-charset": "^4.0.1",
+        "postcss-normalize-display-values": "^4.0.2",
+        "postcss-normalize-positions": "^4.0.2",
+        "postcss-normalize-repeat-style": "^4.0.2",
+        "postcss-normalize-string": "^4.0.2",
+        "postcss-normalize-timing-functions": "^4.0.2",
+        "postcss-normalize-unicode": "^4.0.1",
+        "postcss-normalize-url": "^4.0.1",
+        "postcss-normalize-whitespace": "^4.0.2",
+        "postcss-ordered-values": "^4.1.2",
+        "postcss-reduce-initial": "^4.0.3",
+        "postcss-reduce-transforms": "^4.0.2",
+        "postcss-svgo": "^4.0.3",
+        "postcss-unique-selectors": "^4.0.1"
+      }
+    },
+    "cssnano-util-get-arguments": {
+      "version": "4.0.0",
+      "dev": true
+    },
+    "cssnano-util-get-match": {
+      "version": "4.0.0",
+      "dev": true
+    },
+    "cssnano-util-raw-cache": {
+      "version": "4.0.1",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "cssnano-util-same-parent": {
+      "version": "4.0.1",
+      "dev": true
+    },
+    "csso": {
+      "version": "4.2.0",
+      "dev": true,
+      "requires": {
+        "css-tree": "^1.1.2"
+      },
+      "dependencies": {
+        "css-tree": {
+          "version": "1.1.3",
+          "dev": true,
+          "requires": {
+            "mdn-data": "2.0.14",
+            "source-map": "^0.6.1"
+          }
+        },
+        "mdn-data": {
+          "version": "2.0.14",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "dev": true
+        }
+      }
+    },
+    "current-script-polyfill": {
+      "version": "1.0.0",
+      "dev": true
+    },
+    "cyclist": {
+      "version": "1.0.1",
+      "dev": true
+    },
+    "dashdash": {
+      "version": "1.14.1",
+      "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0"
+      }
+    },
+    "de-indent": {
+      "version": "1.0.2",
+      "dev": true
+    },
+    "debug": {
+      "version": "4.3.3",
+      "dev": true,
+      "requires": {
+        "ms": "2.1.2"
+      }
+    },
+    "decamelize": {
+      "version": "1.2.0",
+      "dev": true
+    },
+    "decode-uri-component": {
+      "version": "0.2.0",
+      "dev": true
+    },
+    "decompress-response": {
+      "version": "6.0.0",
+      "requires": {
+        "mimic-response": "^3.1.0"
+      },
+      "dependencies": {
+        "mimic-response": {
+          "version": "3.1.0"
+        }
+      }
+    },
+    "deep-equal": {
+      "version": "1.1.1",
+      "requires": {
+        "is-arguments": "^1.0.4",
+        "is-date-object": "^1.0.1",
+        "is-regex": "^1.0.4",
+        "object-is": "^1.0.1",
+        "object-keys": "^1.1.1",
+        "regexp.prototype.flags": "^1.2.0"
+      }
+    },
+    "deep-is": {
+      "version": "0.1.4",
+      "dev": true
+    },
+    "deepmerge": {
+      "version": "1.5.2"
+    },
+    "default-gateway": {
+      "version": "5.0.5",
+      "dev": true,
+      "requires": {
+        "execa": "^3.3.0"
+      },
+      "dependencies": {
+        "cross-spawn": {
+          "version": "7.0.3",
+          "dev": true,
+          "requires": {
+            "path-key": "^3.1.0",
+            "shebang-command": "^2.0.0",
+            "which": "^2.0.1"
+          }
+        },
+        "execa": {
+          "version": "3.4.0",
+          "dev": true,
+          "requires": {
+            "cross-spawn": "^7.0.0",
+            "get-stream": "^5.0.0",
+            "human-signals": "^1.1.1",
+            "is-stream": "^2.0.0",
+            "merge-stream": "^2.0.0",
+            "npm-run-path": "^4.0.0",
+            "onetime": "^5.1.0",
+            "p-finally": "^2.0.0",
+            "signal-exit": "^3.0.2",
+            "strip-final-newline": "^2.0.0"
+          }
+        },
+        "get-stream": {
+          "version": "5.2.0",
+          "dev": true,
+          "requires": {
+            "pump": "^3.0.0"
+          }
+        },
+        "is-stream": {
+          "version": "2.0.1",
+          "dev": true
+        },
+        "npm-run-path": {
+          "version": "4.0.1",
+          "dev": true,
+          "requires": {
+            "path-key": "^3.0.0"
+          }
+        },
+        "onetime": {
+          "version": "5.1.2",
+          "dev": true,
+          "requires": {
+            "mimic-fn": "^2.1.0"
+          }
+        },
+        "p-finally": {
+          "version": "2.0.1",
+          "dev": true
+        },
+        "path-key": {
+          "version": "3.1.1",
+          "dev": true
+        },
+        "shebang-command": {
+          "version": "2.0.0",
+          "dev": true,
+          "requires": {
+            "shebang-regex": "^3.0.0"
+          }
+        },
+        "shebang-regex": {
+          "version": "3.0.0",
+          "dev": true
+        },
+        "which": {
+          "version": "2.0.2",
+          "dev": true,
+          "requires": {
+            "isexe": "^2.0.0"
+          }
+        }
+      }
+    },
+    "defaults": {
+      "version": "1.0.3",
+      "dev": true,
+      "requires": {
+        "clone": "^1.0.2"
+      }
+    },
+    "defer-to-connect": {
+      "version": "2.0.1"
+    },
+    "define-properties": {
+      "version": "1.1.3",
+      "requires": {
+        "object-keys": "^1.0.12"
+      }
+    },
+    "define-property": {
+      "version": "2.0.2",
+      "dev": true,
+      "requires": {
+        "is-descriptor": "^1.0.2",
+        "isobject": "^3.0.1"
+      }
+    },
+    "del": {
+      "version": "4.1.1",
+      "dev": true,
+      "requires": {
+        "@types/glob": "^7.1.1",
+        "globby": "^6.1.0",
+        "is-path-cwd": "^2.0.0",
+        "is-path-in-cwd": "^2.0.0",
+        "p-map": "^2.0.0",
+        "pify": "^4.0.1",
+        "rimraf": "^2.6.3"
+      },
+      "dependencies": {
+        "globby": {
+          "version": "6.1.0",
+          "dev": true,
+          "requires": {
+            "array-union": "^1.0.1",
+            "glob": "^7.0.3",
+            "object-assign": "^4.0.1",
+            "pify": "^2.0.0",
+            "pinkie-promise": "^2.0.0"
+          },
+          "dependencies": {
+            "pify": {
+              "version": "2.3.0",
+              "dev": true
+            }
+          }
+        },
+        "p-map": {
+          "version": "2.1.0",
+          "dev": true
+        },
+        "pify": {
+          "version": "4.0.1",
+          "dev": true
+        }
+      }
+    },
+    "delayed-stream": {
+      "version": "1.0.0",
+      "dev": true
+    },
+    "depd": {
+      "version": "1.1.2",
+      "dev": true
+    },
+    "des.js": {
+      "version": "1.0.1",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "destroy": {
+      "version": "1.0.4",
+      "dev": true
+    },
+    "detect-node": {
+      "version": "2.1.0",
+      "dev": true
+    },
+    "diffie-hellman": {
+      "version": "5.0.3",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.0",
+        "miller-rabin": "^4.0.0",
+        "randombytes": "^2.0.0"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0",
+          "dev": true
+        }
+      }
+    },
+    "dir-glob": {
+      "version": "2.2.2",
+      "dev": true,
+      "requires": {
+        "path-type": "^3.0.0"
+      }
+    },
+    "dns-equal": {
+      "version": "1.0.0",
+      "dev": true
+    },
+    "dns-packet": {
+      "version": "1.3.4",
+      "dev": true,
+      "requires": {
+        "ip": "^1.1.0",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "dns-txt": {
+      "version": "2.0.2",
+      "dev": true,
+      "requires": {
+        "buffer-indexof": "^1.0.0"
+      }
+    },
+    "doctrine": {
+      "version": "3.0.0",
+      "dev": true,
+      "requires": {
+        "esutils": "^2.0.2"
+      }
+    },
+    "dom-converter": {
+      "version": "0.2.0",
+      "dev": true,
+      "requires": {
+        "utila": "~0.4"
+      }
+    },
+    "dom-serializer": {
+      "version": "1.3.2",
+      "dev": true,
+      "requires": {
+        "domelementtype": "^2.0.1",
+        "domhandler": "^4.2.0",
+        "entities": "^2.0.0"
+      }
+    },
+    "domain-browser": {
+      "version": "1.2.0",
+      "dev": true
+    },
+    "domelementtype": {
+      "version": "2.2.0",
+      "dev": true
+    },
+    "domhandler": {
+      "version": "4.3.0",
+      "dev": true,
+      "requires": {
+        "domelementtype": "^2.2.0"
+      }
+    },
+    "domutils": {
+      "version": "2.8.0",
+      "dev": true,
+      "requires": {
+        "dom-serializer": "^1.0.1",
+        "domelementtype": "^2.2.0",
+        "domhandler": "^4.2.0"
+      }
+    },
+    "dot-prop": {
+      "version": "5.3.0",
+      "dev": true,
+      "requires": {
+        "is-obj": "^2.0.0"
+      }
+    },
+    "dotenv": {
+      "version": "7.0.0",
+      "dev": true
+    },
+    "dotenv-expand": {
+      "version": "5.1.0",
+      "dev": true
+    },
+    "duplexer": {
+      "version": "0.1.2",
+      "dev": true
+    },
+    "duplexify": {
+      "version": "3.7.1",
+      "dev": true,
+      "requires": {
+        "end-of-stream": "^1.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0",
+        "stream-shift": "^1.0.0"
+      }
+    },
+    "easy-stack": {
+      "version": "1.0.1",
+      "dev": true
+    },
+    "ecc-jsbn": {
+      "version": "0.1.2",
+      "dev": true,
+      "requires": {
+        "jsbn": "~0.1.0",
+        "safer-buffer": "^2.1.0"
+      }
+    },
+    "echarts": {
+      "version": "4.9.0",
+      "requires": {
+        "zrender": "4.3.2"
+      }
+    },
+    "ee-first": {
+      "version": "1.1.1",
+      "dev": true
+    },
+    "ejs": {
+      "version": "2.7.4",
+      "dev": true
+    },
+    "electron-to-chromium": {
+      "version": "1.4.36",
+      "dev": true
+    },
+    "element-resize-detector": {
+      "version": "1.2.4",
+      "requires": {
+        "batch-processor": "1.0.0"
+      }
+    },
+    "element-ui": {
+      "version": "2.15.6",
+      "resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.15.6.tgz",
+      "integrity": "sha512-rcYXEKd/j2G0AgficAOk1Zd1AsnHRkhmrK4yLHmNOiimU2JfsywgfKUjMoFuT6pQx0luhovj8lFjpE4Fnt58Iw==",
+      "requires": {
+        "async-validator": "~1.8.1",
+        "babel-helper-vue-jsx-merge-props": "^2.0.0",
+        "deepmerge": "^1.2.0",
+        "normalize-wheel": "^1.0.1",
+        "resize-observer-polyfill": "^1.5.0",
+        "throttle-debounce": "^1.0.1"
+      }
+    },
+    "elliptic": {
+      "version": "6.5.4",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.11.9",
+        "brorand": "^1.1.0",
+        "hash.js": "^1.0.0",
+        "hmac-drbg": "^1.0.1",
+        "inherits": "^2.0.4",
+        "minimalistic-assert": "^1.0.1",
+        "minimalistic-crypto-utils": "^1.0.1"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0",
+          "dev": true
+        }
+      }
+    },
+    "emoji-regex": {
+      "version": "8.0.0",
+      "dev": true
+    },
+    "emojis-list": {
+      "version": "3.0.0"
+    },
+    "encodeurl": {
+      "version": "1.0.2",
+      "dev": true
+    },
+    "end-of-stream": {
+      "version": "1.4.4",
+      "requires": {
+        "once": "^1.4.0"
+      }
+    },
+    "enhanced-resolve": {
+      "version": "4.5.0",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "memory-fs": "^0.5.0",
+        "tapable": "^1.0.0"
+      },
+      "dependencies": {
+        "memory-fs": {
+          "version": "0.5.0",
+          "dev": true,
+          "requires": {
+            "errno": "^0.1.3",
+            "readable-stream": "^2.0.1"
+          }
+        }
+      }
+    },
+    "entities": {
+      "version": "2.2.0",
+      "dev": true
+    },
+    "errno": {
+      "version": "0.1.8",
+      "dev": true,
+      "requires": {
+        "prr": "~1.0.1"
+      }
+    },
+    "error-ex": {
+      "version": "1.3.2",
+      "dev": true,
+      "requires": {
+        "is-arrayish": "^0.2.1"
+      }
+    },
+    "error-stack-parser": {
+      "version": "2.0.6",
+      "dev": true,
+      "requires": {
+        "stackframe": "^1.1.1"
+      }
+    },
+    "es-abstract": {
+      "version": "1.19.1",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "es-to-primitive": "^1.2.1",
+        "function-bind": "^1.1.1",
+        "get-intrinsic": "^1.1.1",
+        "get-symbol-description": "^1.0.0",
+        "has": "^1.0.3",
+        "has-symbols": "^1.0.2",
+        "internal-slot": "^1.0.3",
+        "is-callable": "^1.2.4",
+        "is-negative-zero": "^2.0.1",
+        "is-regex": "^1.1.4",
+        "is-shared-array-buffer": "^1.0.1",
+        "is-string": "^1.0.7",
+        "is-weakref": "^1.0.1",
+        "object-inspect": "^1.11.0",
+        "object-keys": "^1.1.1",
+        "object.assign": "^4.1.2",
+        "string.prototype.trimend": "^1.0.4",
+        "string.prototype.trimstart": "^1.0.4",
+        "unbox-primitive": "^1.0.1"
+      }
+    },
+    "es-to-primitive": {
+      "version": "1.2.1",
+      "dev": true,
+      "requires": {
+        "is-callable": "^1.1.4",
+        "is-date-object": "^1.0.1",
+        "is-symbol": "^1.0.2"
+      }
+    },
+    "es6-promise": {
+      "version": "4.2.8",
+      "dev": true
+    },
+    "escalade": {
+      "version": "3.1.1",
+      "dev": true
+    },
+    "escape-html": {
+      "version": "1.0.3",
+      "dev": true
+    },
+    "escape-string-regexp": {
+      "version": "1.0.5",
+      "dev": true
+    },
+    "eslint": {
+      "version": "5.16.0",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.0.0",
+        "ajv": "^6.9.1",
+        "chalk": "^2.1.0",
+        "cross-spawn": "^6.0.5",
+        "debug": "^4.0.1",
+        "doctrine": "^3.0.0",
+        "eslint-scope": "^4.0.3",
+        "eslint-utils": "^1.3.1",
+        "eslint-visitor-keys": "^1.0.0",
+        "espree": "^5.0.1",
+        "esquery": "^1.0.1",
+        "esutils": "^2.0.2",
+        "file-entry-cache": "^5.0.1",
+        "functional-red-black-tree": "^1.0.1",
+        "glob": "^7.1.2",
+        "globals": "^11.7.0",
+        "ignore": "^4.0.6",
+        "import-fresh": "^3.0.0",
+        "imurmurhash": "^0.1.4",
+        "inquirer": "^6.2.2",
+        "js-yaml": "^3.13.0",
+        "json-stable-stringify-without-jsonify": "^1.0.1",
+        "levn": "^0.3.0",
+        "lodash": "^4.17.11",
+        "minimatch": "^3.0.4",
+        "mkdirp": "^0.5.1",
+        "natural-compare": "^1.4.0",
+        "optionator": "^0.8.2",
+        "path-is-inside": "^1.0.2",
+        "progress": "^2.0.0",
+        "regexpp": "^2.0.1",
+        "semver": "^5.5.1",
+        "strip-ansi": "^4.0.0",
+        "strip-json-comments": "^2.0.1",
+        "table": "^5.2.3",
+        "text-table": "^0.2.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "3.0.0",
+          "dev": true
+        },
+        "import-fresh": {
+          "version": "3.3.0",
+          "dev": true,
+          "requires": {
+            "parent-module": "^1.0.0",
+            "resolve-from": "^4.0.0"
+          }
+        },
+        "resolve-from": {
+          "version": "4.0.0",
+          "dev": true
+        },
+        "semver": {
+          "version": "5.7.1",
+          "dev": true
+        },
+        "strip-ansi": {
+          "version": "4.0.0",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^3.0.0"
+          }
+        }
+      }
+    },
+    "eslint-loader": {
+      "version": "2.2.1",
+      "dev": true,
+      "requires": {
+        "loader-fs-cache": "^1.0.0",
+        "loader-utils": "^1.0.2",
+        "object-assign": "^4.0.1",
+        "object-hash": "^1.1.4",
+        "rimraf": "^2.6.1"
+      }
+    },
+    "eslint-plugin-vue": {
+      "version": "5.2.3",
+      "dev": true,
+      "requires": {
+        "vue-eslint-parser": "^5.0.0"
+      }
+    },
+    "eslint-scope": {
+      "version": "4.0.3",
+      "dev": true,
+      "requires": {
+        "esrecurse": "^4.1.0",
+        "estraverse": "^4.1.1"
+      }
+    },
+    "eslint-utils": {
+      "version": "1.4.3",
+      "dev": true,
+      "requires": {
+        "eslint-visitor-keys": "^1.1.0"
+      }
+    },
+    "eslint-visitor-keys": {
+      "version": "1.3.0",
+      "dev": true
+    },
+    "espree": {
+      "version": "5.0.1",
+      "dev": true,
+      "requires": {
+        "acorn": "^6.0.7",
+        "acorn-jsx": "^5.0.0",
+        "eslint-visitor-keys": "^1.0.0"
+      },
+      "dependencies": {
+        "acorn": {
+          "version": "6.4.2",
+          "dev": true
+        }
+      }
+    },
+    "esprima": {
+      "version": "4.0.1",
+      "dev": true
+    },
+    "esquery": {
+      "version": "1.4.0",
+      "dev": true,
+      "requires": {
+        "estraverse": "^5.1.0"
+      },
+      "dependencies": {
+        "estraverse": {
+          "version": "5.3.0",
+          "dev": true
+        }
+      }
+    },
+    "esrecurse": {
+      "version": "4.3.0",
+      "dev": true,
+      "requires": {
+        "estraverse": "^5.2.0"
+      },
+      "dependencies": {
+        "estraverse": {
+          "version": "5.3.0",
+          "dev": true
+        }
+      }
+    },
+    "estraverse": {
+      "version": "4.3.0",
+      "dev": true
+    },
+    "esutils": {
+      "version": "2.0.3",
+      "dev": true
+    },
+    "etag": {
+      "version": "1.8.1",
+      "dev": true
+    },
+    "event-pubsub": {
+      "version": "4.3.0",
+      "dev": true
+    },
+    "eventemitter3": {
+      "version": "4.0.7",
+      "dev": true
+    },
+    "events": {
+      "version": "3.3.0",
+      "dev": true
+    },
+    "eventsource": {
+      "version": "1.1.0",
+      "dev": true,
+      "requires": {
+        "original": "^1.0.0"
+      }
+    },
+    "evp_bytestokey": {
+      "version": "1.0.3",
+      "dev": true,
+      "requires": {
+        "md5.js": "^1.3.4",
+        "safe-buffer": "^5.1.1"
+      }
+    },
+    "execa": {
+      "version": "1.0.0",
+      "dev": true,
+      "requires": {
+        "cross-spawn": "^6.0.0",
+        "get-stream": "^4.0.0",
+        "is-stream": "^1.1.0",
+        "npm-run-path": "^2.0.0",
+        "p-finally": "^1.0.0",
+        "signal-exit": "^3.0.0",
+        "strip-eof": "^1.0.0"
+      }
+    },
+    "exit-on-epipe": {
+      "version": "1.0.1"
+    },
+    "expand-brackets": {
+      "version": "2.1.4",
+      "dev": true,
+      "requires": {
+        "debug": "^2.3.3",
+        "define-property": "^0.2.5",
+        "extend-shallow": "^2.0.1",
+        "posix-character-classes": "^0.1.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "define-property": {
+          "version": "0.2.5",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "0.1.6",
+          "dev": true,
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "dev": true,
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "is-buffer": {
+          "version": "1.1.6",
+          "dev": true
+        },
+        "is-data-descriptor": {
+          "version": "0.1.4",
+          "dev": true,
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "dev": true,
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "is-descriptor": {
+          "version": "0.1.6",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^0.1.6",
+            "is-data-descriptor": "^0.1.4",
+            "kind-of": "^5.0.0"
+          }
+        },
+        "is-extendable": {
+          "version": "0.1.1",
+          "dev": true
+        },
+        "kind-of": {
+          "version": "5.1.0",
+          "dev": true
+        },
+        "ms": {
+          "version": "2.0.0",
+          "dev": true
+        }
+      }
+    },
+    "express": {
+      "version": "4.17.2",
+      "dev": true,
+      "requires": {
+        "accepts": "~1.3.7",
+        "array-flatten": "1.1.1",
+        "body-parser": "1.19.1",
+        "content-disposition": "0.5.4",
+        "content-type": "~1.0.4",
+        "cookie": "0.4.1",
+        "cookie-signature": "1.0.6",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "finalhandler": "~1.1.2",
+        "fresh": "0.5.2",
+        "merge-descriptors": "1.0.1",
+        "methods": "~1.1.2",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.3",
+        "path-to-regexp": "0.1.7",
+        "proxy-addr": "~2.0.7",
+        "qs": "6.9.6",
+        "range-parser": "~1.2.1",
+        "safe-buffer": "5.2.1",
+        "send": "0.17.2",
+        "serve-static": "1.14.2",
+        "setprototypeof": "1.2.0",
+        "statuses": "~1.5.0",
+        "type-is": "~1.6.18",
+        "utils-merge": "1.0.1",
+        "vary": "~1.1.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "dev": true
+        },
+        "qs": {
+          "version": "6.9.6",
+          "dev": true
+        },
+        "safe-buffer": {
+          "version": "5.2.1",
+          "dev": true
+        }
+      }
+    },
+    "extend": {
+      "version": "3.0.2"
+    },
+    "extend-shallow": {
+      "version": "3.0.2",
+      "dev": true,
+      "requires": {
+        "assign-symbols": "^1.0.0",
+        "is-extendable": "^1.0.1"
+      }
+    },
+    "external-editor": {
+      "version": "3.1.0",
+      "dev": true,
+      "requires": {
+        "chardet": "^0.7.0",
+        "iconv-lite": "^0.4.24",
+        "tmp": "^0.0.33"
+      },
+      "dependencies": {
+        "tmp": {
+          "version": "0.0.33",
+          "dev": true,
+          "requires": {
+            "os-tmpdir": "~1.0.2"
+          }
+        }
+      }
+    },
+    "extglob": {
+      "version": "2.0.4",
+      "dev": true,
+      "requires": {
+        "array-unique": "^0.3.2",
+        "define-property": "^1.0.0",
+        "expand-brackets": "^2.1.4",
+        "extend-shallow": "^2.0.1",
+        "fragment-cache": "^0.2.1",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "1.0.0",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "is-extendable": {
+          "version": "0.1.1",
+          "dev": true
+        }
+      }
+    },
+    "extsprintf": {
+      "version": "1.3.0",
+      "dev": true
+    },
+    "fast-deep-equal": {
+      "version": "3.1.3"
+    },
+    "fast-glob": {
+      "version": "2.2.7",
+      "dev": true,
+      "requires": {
+        "@mrmlnc/readdir-enhanced": "^2.2.1",
+        "@nodelib/fs.stat": "^1.1.2",
+        "glob-parent": "^3.1.0",
+        "is-glob": "^4.0.0",
+        "merge2": "^1.2.3",
+        "micromatch": "^3.1.10"
+      }
+    },
+    "fast-json-stable-stringify": {
+      "version": "2.1.0"
+    },
+    "fast-levenshtein": {
+      "version": "2.0.6",
+      "dev": true
+    },
+    "fastparse": {
+      "version": "1.1.2",
+      "dev": true
+    },
+    "faye-websocket": {
+      "version": "0.11.4",
+      "dev": true,
+      "requires": {
+        "websocket-driver": ">=0.5.1"
+      }
+    },
+    "fflate": {
+      "version": "0.3.11"
+    },
+    "figgy-pudding": {
+      "version": "3.5.2",
+      "dev": true
+    },
+    "file-entry-cache": {
+      "version": "5.0.1",
+      "dev": true,
+      "requires": {
+        "flat-cache": "^2.0.1"
+      }
+    },
+    "file-loader": {
+      "version": "3.0.1",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.0.2",
+        "schema-utils": "^1.0.0"
+      },
+      "dependencies": {
+        "schema-utils": {
+          "version": "1.0.0",
+          "dev": true,
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        }
+      }
+    },
+    "filesize": {
+      "version": "3.6.1",
+      "dev": true
+    },
+    "fill-range": {
+      "version": "4.0.0",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^2.0.1",
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1",
+        "to-regex-range": "^2.1.0"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "is-extendable": {
+          "version": "0.1.1",
+          "dev": true
+        }
+      }
+    },
+    "finalhandler": {
+      "version": "1.1.2",
+      "dev": true,
+      "requires": {
+        "debug": "2.6.9",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.3",
+        "statuses": "~1.5.0",
+        "unpipe": "~1.0.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "dev": true
+        }
+      }
+    },
+    "find-babel-config": {
+      "version": "1.2.0",
+      "dev": true,
+      "requires": {
+        "json5": "^0.5.1",
+        "path-exists": "^3.0.0"
+      },
+      "dependencies": {
+        "json5": {
+          "version": "0.5.1",
+          "dev": true
+        }
+      }
+    },
+    "find-cache-dir": {
+      "version": "3.3.2",
+      "dev": true,
+      "requires": {
+        "commondir": "^1.0.1",
+        "make-dir": "^3.0.2",
+        "pkg-dir": "^4.1.0"
+      }
+    },
+    "find-up": {
+      "version": "3.0.0",
+      "dev": true,
+      "requires": {
+        "locate-path": "^3.0.0"
+      }
+    },
+    "flat-cache": {
+      "version": "2.0.1",
+      "dev": true,
+      "requires": {
+        "flatted": "^2.0.0",
+        "rimraf": "2.6.3",
+        "write": "1.0.3"
+      },
+      "dependencies": {
+        "rimraf": {
+          "version": "2.6.3",
+          "dev": true,
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        }
+      }
+    },
+    "flatted": {
+      "version": "2.0.2",
+      "dev": true
+    },
+    "flush-write-stream": {
+      "version": "1.1.1",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.3.6"
+      }
+    },
+    "follow-redirects": {
+      "version": "1.14.6",
+      "dev": true
+    },
+    "font-awesome": {
+      "version": "4.7.0"
+    },
+    "for-in": {
+      "version": "1.0.2",
+      "dev": true
+    },
+    "forever-agent": {
+      "version": "0.6.1",
+      "dev": true
+    },
+    "form-data": {
+      "version": "2.3.3",
+      "dev": true,
+      "requires": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.6",
+        "mime-types": "^2.1.12"
+      }
+    },
+    "forwarded": {
+      "version": "0.2.0",
+      "dev": true
+    },
+    "frac": {
+      "version": "1.1.2"
+    },
+    "fragment-cache": {
+      "version": "0.2.1",
+      "dev": true,
+      "requires": {
+        "map-cache": "^0.2.2"
+      }
+    },
+    "fresh": {
+      "version": "0.5.2",
+      "dev": true
+    },
+    "from2": {
+      "version": "2.3.0",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0"
+      }
+    },
+    "fs-extra": {
+      "version": "7.0.1",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "jsonfile": "^4.0.0",
+        "universalify": "^0.1.0"
+      }
+    },
+    "fs-minipass": {
+      "version": "2.1.0",
+      "dev": true,
+      "requires": {
+        "minipass": "^3.0.0"
+      }
+    },
+    "fs-write-stream-atomic": {
+      "version": "1.0.10",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "iferr": "^0.1.5",
+        "imurmurhash": "^0.1.4",
+        "readable-stream": "1 || 2"
+      }
+    },
+    "fs.realpath": {
+      "version": "1.0.0",
+      "dev": true
+    },
+    "fullcalendar": {
+      "version": "3.10.1",
+      "requires": {}
+    },
+    "function-bind": {
+      "version": "1.1.1"
+    },
+    "functional-red-black-tree": {
+      "version": "1.0.1",
+      "dev": true
+    },
+    "gensync": {
+      "version": "1.0.0-beta.2",
+      "dev": true
+    },
+    "get-caller-file": {
+      "version": "2.0.5",
+      "dev": true
+    },
+    "get-intrinsic": {
+      "version": "1.1.1",
+      "requires": {
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3",
+        "has-symbols": "^1.0.1"
+      }
+    },
+    "get-stream": {
+      "version": "4.1.0",
+      "dev": true,
+      "requires": {
+        "pump": "^3.0.0"
+      }
+    },
+    "get-symbol-description": {
+      "version": "1.0.0",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "get-intrinsic": "^1.1.1"
+      }
+    },
+    "get-value": {
+      "version": "2.0.6",
+      "dev": true
+    },
+    "getpass": {
+      "version": "0.1.7",
+      "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0"
+      }
+    },
+    "glob": {
+      "version": "7.2.0",
+      "dev": true,
+      "requires": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.0.4",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      }
+    },
+    "glob-parent": {
+      "version": "3.1.0",
+      "dev": true,
+      "requires": {
+        "is-glob": "^3.1.0",
+        "path-dirname": "^1.0.0"
+      },
+      "dependencies": {
+        "is-glob": {
+          "version": "3.1.0",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^2.1.0"
+          }
+        }
+      }
+    },
+    "glob-to-regexp": {
+      "version": "0.3.0",
+      "dev": true
+    },
+    "globals": {
+      "version": "11.12.0",
+      "dev": true
+    },
+    "globby": {
+      "version": "9.2.0",
+      "dev": true,
+      "requires": {
+        "@types/glob": "^7.1.1",
+        "array-union": "^1.0.2",
+        "dir-glob": "^2.2.2",
+        "fast-glob": "^2.2.6",
+        "glob": "^7.1.3",
+        "ignore": "^4.0.3",
+        "pify": "^4.0.1",
+        "slash": "^2.0.0"
+      },
+      "dependencies": {
+        "pify": {
+          "version": "4.0.1",
+          "dev": true
+        }
+      }
+    },
+    "got": {
+      "version": "11.8.3",
+      "requires": {
+        "@sindresorhus/is": "^4.0.0",
+        "@szmarczak/http-timer": "^4.0.5",
+        "@types/cacheable-request": "^6.0.1",
+        "@types/responselike": "^1.0.0",
+        "cacheable-lookup": "^5.0.3",
+        "cacheable-request": "^7.0.2",
+        "decompress-response": "^6.0.0",
+        "http2-wrapper": "^1.0.0-beta.5.2",
+        "lowercase-keys": "^2.0.0",
+        "p-cancelable": "^2.0.0",
+        "responselike": "^2.0.0"
+      }
+    },
+    "graceful-fs": {
+      "version": "4.2.9",
+      "dev": true
+    },
+    "gzip-size": {
+      "version": "6.0.0",
+      "dev": true,
+      "requires": {
+        "duplexer": "^0.1.2"
+      }
+    },
+    "handle-thing": {
+      "version": "2.0.1",
+      "dev": true
+    },
+    "har-schema": {
+      "version": "2.0.0",
+      "dev": true
+    },
+    "har-validator": {
+      "version": "5.1.5",
+      "dev": true,
+      "requires": {
+        "ajv": "^6.12.3",
+        "har-schema": "^2.0.0"
+      }
+    },
+    "has": {
+      "version": "1.0.3",
+      "requires": {
+        "function-bind": "^1.1.1"
+      }
+    },
+    "has-ansi": {
+      "version": "2.0.0",
+      "dev": true,
+      "requires": {
+        "ansi-regex": "^2.0.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "2.1.1",
+          "dev": true
+        }
+      }
+    },
+    "has-bigints": {
+      "version": "1.0.1",
+      "dev": true
+    },
+    "has-flag": {
+      "version": "3.0.0",
+      "dev": true
+    },
+    "has-symbols": {
+      "version": "1.0.2"
+    },
+    "has-tostringtag": {
+      "version": "1.0.0",
+      "requires": {
+        "has-symbols": "^1.0.2"
+      }
+    },
+    "has-value": {
+      "version": "1.0.0",
+      "dev": true,
+      "requires": {
+        "get-value": "^2.0.6",
+        "has-values": "^1.0.0",
+        "isobject": "^3.0.0"
+      }
+    },
+    "has-values": {
+      "version": "1.0.0",
+      "dev": true,
+      "requires": {
+        "is-number": "^3.0.0",
+        "kind-of": "^4.0.0"
+      },
+      "dependencies": {
+        "is-buffer": {
+          "version": "1.1.6",
+          "dev": true
+        },
+        "kind-of": {
+          "version": "4.0.0",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "hash-base": {
+      "version": "3.1.0",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.4",
+        "readable-stream": "^3.6.0",
+        "safe-buffer": "^5.2.0"
+      },
+      "dependencies": {
+        "readable-stream": {
+          "version": "3.6.0",
+          "dev": true,
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        },
+        "safe-buffer": {
+          "version": "5.2.1",
+          "dev": true
+        }
+      }
+    },
+    "hash-sum": {
+      "version": "1.0.2",
+      "dev": true
+    },
+    "hash.js": {
+      "version": "1.1.7",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.3",
+        "minimalistic-assert": "^1.0.1"
+      }
+    },
+    "he": {
+      "version": "1.2.0",
+      "dev": true
+    },
+    "hex-color-regex": {
+      "version": "1.1.0",
+      "dev": true
+    },
+    "highlight.js": {
+      "version": "10.7.3",
+      "dev": true
+    },
+    "hmac-drbg": {
+      "version": "1.0.1",
+      "dev": true,
+      "requires": {
+        "hash.js": "^1.0.3",
+        "minimalistic-assert": "^1.0.0",
+        "minimalistic-crypto-utils": "^1.0.1"
+      }
+    },
+    "hoopy": {
+      "version": "0.1.4",
+      "dev": true
+    },
+    "hosted-git-info": {
+      "version": "2.8.9",
+      "dev": true
+    },
+    "hpack.js": {
+      "version": "2.1.6",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "obuf": "^1.0.0",
+        "readable-stream": "^2.0.1",
+        "wbuf": "^1.1.0"
+      }
+    },
+    "hsl-regex": {
+      "version": "1.0.0",
+      "dev": true
+    },
+    "hsla-regex": {
+      "version": "1.0.0",
+      "dev": true
+    },
+    "html-entities": {
+      "version": "1.4.0",
+      "dev": true
+    },
+    "html-minifier": {
+      "version": "3.5.21",
+      "dev": true,
+      "requires": {
+        "camel-case": "3.0.x",
+        "clean-css": "4.2.x",
+        "commander": "2.17.x",
+        "he": "1.2.x",
+        "param-case": "2.1.x",
+        "relateurl": "0.2.x",
+        "uglify-js": "3.4.x"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.17.1",
+          "dev": true
+        }
+      }
+    },
+    "html-tags": {
+      "version": "2.0.0",
+      "dev": true
+    },
+    "html-webpack-plugin": {
+      "version": "3.2.0",
+      "dev": true,
+      "requires": {
+        "html-minifier": "^3.2.3",
+        "loader-utils": "^0.2.16",
+        "lodash": "^4.17.3",
+        "pretty-error": "^2.0.2",
+        "tapable": "^1.0.0",
+        "toposort": "^1.0.0",
+        "util.promisify": "1.0.0"
+      },
+      "dependencies": {
+        "big.js": {
+          "version": "3.2.0",
+          "dev": true
+        },
+        "emojis-list": {
+          "version": "2.1.0",
+          "dev": true
+        },
+        "json5": {
+          "version": "0.5.1",
+          "dev": true
+        },
+        "loader-utils": {
+          "version": "0.2.17",
+          "dev": true,
+          "requires": {
+            "big.js": "^3.1.3",
+            "emojis-list": "^2.0.0",
+            "json5": "^0.5.0",
+            "object-assign": "^4.0.1"
+          }
+        }
+      }
+    },
+    "htmlparser2": {
+      "version": "6.1.0",
+      "dev": true,
+      "requires": {
+        "domelementtype": "^2.0.1",
+        "domhandler": "^4.0.0",
+        "domutils": "^2.5.2",
+        "entities": "^2.0.0"
+      }
+    },
+    "http-cache-semantics": {
+      "version": "4.1.0"
+    },
+    "http-deceiver": {
+      "version": "1.2.7",
+      "dev": true
+    },
+    "http-errors": {
+      "version": "1.8.1",
+      "dev": true,
+      "requires": {
+        "depd": "~1.1.2",
+        "inherits": "2.0.4",
+        "setprototypeof": "1.2.0",
+        "statuses": ">= 1.5.0 < 2",
+        "toidentifier": "1.0.1"
+      }
+    },
+    "http-parser-js": {
+      "version": "0.5.5",
+      "dev": true
+    },
+    "http-proxy": {
+      "version": "1.18.1",
+      "dev": true,
+      "requires": {
+        "eventemitter3": "^4.0.0",
+        "follow-redirects": "^1.0.0",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "http-signature": {
+      "version": "1.2.0",
+      "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0",
+        "jsprim": "^1.2.2",
+        "sshpk": "^1.7.0"
+      }
+    },
+    "http2-wrapper": {
+      "version": "1.0.3",
+      "requires": {
+        "quick-lru": "^5.1.1",
+        "resolve-alpn": "^1.0.0"
+      }
+    },
+    "https-browserify": {
+      "version": "1.0.0",
+      "dev": true
+    },
+    "human-signals": {
+      "version": "1.1.1",
+      "dev": true
+    },
+    "iconv-lite": {
+      "version": "0.4.24",
+      "dev": true,
+      "requires": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      }
+    },
+    "icss-replace-symbols": {
+      "version": "1.1.0",
+      "dev": true
+    },
+    "icss-utils": {
+      "version": "4.1.1",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "postcss": "^7.0.14"
+      }
+    },
+    "ieee754": {
+      "version": "1.2.1",
+      "dev": true
+    },
+    "iferr": {
+      "version": "0.1.5",
+      "dev": true
+    },
+    "ignore": {
+      "version": "4.0.6",
+      "dev": true
+    },
+    "image-size": {
+      "version": "0.5.5",
+      "dev": true,
+      "optional": true
+    },
+    "import-cwd": {
+      "version": "2.1.0",
+      "dev": true,
+      "requires": {
+        "import-from": "^2.1.0"
+      }
+    },
+    "import-fresh": {
+      "version": "2.0.0",
+      "dev": true,
+      "requires": {
+        "caller-path": "^2.0.0",
+        "resolve-from": "^3.0.0"
+      }
+    },
+    "import-from": {
+      "version": "2.1.0",
+      "dev": true,
+      "requires": {
+        "resolve-from": "^3.0.0"
+      }
+    },
+    "import-local": {
+      "version": "2.0.0",
+      "dev": true,
+      "requires": {
+        "pkg-dir": "^3.0.0",
+        "resolve-cwd": "^2.0.0"
+      },
+      "dependencies": {
+        "pkg-dir": {
+          "version": "3.0.0",
+          "dev": true,
+          "requires": {
+            "find-up": "^3.0.0"
+          }
+        }
+      }
+    },
+    "imurmurhash": {
+      "version": "0.1.4",
+      "dev": true
+    },
+    "indexes-of": {
+      "version": "1.0.1",
+      "dev": true
+    },
+    "infer-owner": {
+      "version": "1.0.4",
+      "dev": true
+    },
+    "inflight": {
+      "version": "1.0.6",
+      "dev": true,
+      "requires": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "inherits": {
+      "version": "2.0.4",
+      "dev": true
+    },
+    "inquirer": {
+      "version": "6.5.2",
+      "dev": true,
+      "requires": {
+        "ansi-escapes": "^3.2.0",
+        "chalk": "^2.4.2",
+        "cli-cursor": "^2.1.0",
+        "cli-width": "^2.0.0",
+        "external-editor": "^3.0.3",
+        "figures": "^2.0.0",
+        "lodash": "^4.17.12",
+        "mute-stream": "0.0.7",
+        "run-async": "^2.2.0",
+        "rxjs": "^6.4.0",
+        "string-width": "^2.1.0",
+        "strip-ansi": "^5.1.0",
+        "through": "^2.3.6"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "4.1.0",
+          "dev": true
+        },
+        "cli-cursor": {
+          "version": "2.1.0",
+          "dev": true,
+          "requires": {
+            "restore-cursor": "^2.0.0"
+          }
+        },
+        "figures": {
+          "version": "2.0.0",
+          "dev": true,
+          "requires": {
+            "escape-string-regexp": "^1.0.5"
+          }
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "dev": true
+        },
+        "mimic-fn": {
+          "version": "1.2.0",
+          "dev": true
+        },
+        "onetime": {
+          "version": "2.0.1",
+          "dev": true,
+          "requires": {
+            "mimic-fn": "^1.0.0"
+          }
+        },
+        "restore-cursor": {
+          "version": "2.0.0",
+          "dev": true,
+          "requires": {
+            "onetime": "^2.0.0",
+            "signal-exit": "^3.0.2"
+          }
+        },
+        "string-width": {
+          "version": "2.1.1",
+          "dev": true,
+          "requires": {
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^4.0.0"
+          },
+          "dependencies": {
+            "ansi-regex": {
+              "version": "3.0.0",
+              "dev": true
+            },
+            "strip-ansi": {
+              "version": "4.0.0",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^3.0.0"
+              }
+            }
+          }
+        },
+        "strip-ansi": {
+          "version": "5.2.0",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^4.1.0"
+          }
+        }
+      }
+    },
+    "internal-ip": {
+      "version": "4.3.0",
+      "dev": true,
+      "requires": {
+        "default-gateway": "^4.2.0",
+        "ipaddr.js": "^1.9.0"
+      },
+      "dependencies": {
+        "default-gateway": {
+          "version": "4.2.0",
+          "dev": true,
+          "requires": {
+            "execa": "^1.0.0",
+            "ip-regex": "^2.1.0"
+          }
+        }
+      }
+    },
+    "internal-slot": {
+      "version": "1.0.3",
+      "dev": true,
+      "requires": {
+        "get-intrinsic": "^1.1.0",
+        "has": "^1.0.3",
+        "side-channel": "^1.0.4"
+      }
+    },
+    "invariant": {
+      "version": "2.2.4",
+      "dev": true,
+      "requires": {
+        "loose-envify": "^1.0.0"
+      }
+    },
+    "ip": {
+      "version": "1.1.5",
+      "dev": true
+    },
+    "ip-regex": {
+      "version": "2.1.0",
+      "dev": true
+    },
+    "ipaddr.js": {
+      "version": "1.9.1",
+      "dev": true
+    },
+    "is-absolute-url": {
+      "version": "2.1.0",
+      "dev": true
+    },
+    "is-accessor-descriptor": {
+      "version": "1.0.0",
+      "dev": true,
+      "requires": {
+        "kind-of": "^6.0.0"
+      }
+    },
+    "is-arguments": {
+      "version": "1.1.1",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
+      }
+    },
+    "is-arrayish": {
+      "version": "0.2.1",
+      "dev": true
+    },
+    "is-bigint": {
+      "version": "1.0.4",
+      "dev": true,
+      "requires": {
+        "has-bigints": "^1.0.1"
+      }
+    },
+    "is-binary-path": {
+      "version": "1.0.1",
+      "dev": true,
+      "requires": {
+        "binary-extensions": "^1.0.0"
+      }
+    },
+    "is-boolean-object": {
+      "version": "1.1.2",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
+      }
+    },
+    "is-callable": {
+      "version": "1.2.4",
+      "dev": true
+    },
+    "is-ci": {
+      "version": "1.2.1",
+      "dev": true,
+      "requires": {
+        "ci-info": "^1.5.0"
+      }
+    },
+    "is-color-stop": {
+      "version": "1.1.0",
+      "dev": true,
+      "requires": {
+        "css-color-names": "^0.0.4",
+        "hex-color-regex": "^1.1.0",
+        "hsl-regex": "^1.0.0",
+        "hsla-regex": "^1.0.0",
+        "rgb-regex": "^1.0.1",
+        "rgba-regex": "^1.0.0"
+      }
+    },
+    "is-core-module": {
+      "version": "2.8.1",
+      "dev": true,
+      "requires": {
+        "has": "^1.0.3"
+      }
+    },
+    "is-data-descriptor": {
+      "version": "1.0.0",
+      "dev": true,
+      "requires": {
+        "kind-of": "^6.0.0"
+      }
+    },
+    "is-date-object": {
+      "version": "1.0.5",
+      "requires": {
+        "has-tostringtag": "^1.0.0"
+      }
+    },
+    "is-descriptor": {
+      "version": "1.0.2",
+      "dev": true,
+      "requires": {
+        "is-accessor-descriptor": "^1.0.0",
+        "is-data-descriptor": "^1.0.0",
+        "kind-of": "^6.0.2"
+      }
+    },
+    "is-directory": {
+      "version": "0.3.1",
+      "dev": true
+    },
+    "is-docker": {
+      "version": "2.2.1",
+      "dev": true
+    },
+    "is-extendable": {
+      "version": "1.0.1",
+      "dev": true,
+      "requires": {
+        "is-plain-object": "^2.0.4"
+      }
+    },
+    "is-extglob": {
+      "version": "2.1.1",
+      "dev": true
+    },
+    "is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "dev": true
+    },
+    "is-glob": {
+      "version": "4.0.3",
+      "dev": true,
+      "requires": {
+        "is-extglob": "^2.1.1"
+      }
+    },
+    "is-negative-zero": {
+      "version": "2.0.2",
+      "dev": true
+    },
+    "is-number": {
+      "version": "3.0.0",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "is-buffer": {
+          "version": "1.1.6",
+          "dev": true
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "is-number-object": {
+      "version": "1.0.6",
+      "dev": true,
+      "requires": {
+        "has-tostringtag": "^1.0.0"
+      }
+    },
+    "is-obj": {
+      "version": "2.0.0",
+      "dev": true
+    },
+    "is-path-cwd": {
+      "version": "2.2.0",
+      "dev": true
+    },
+    "is-path-in-cwd": {
+      "version": "2.1.0",
+      "dev": true,
+      "requires": {
+        "is-path-inside": "^2.1.0"
+      },
+      "dependencies": {
+        "is-path-inside": {
+          "version": "2.1.0",
+          "dev": true,
+          "requires": {
+            "path-is-inside": "^1.0.2"
+          }
+        }
+      }
+    },
+    "is-plain-obj": {
+      "version": "1.1.0",
+      "dev": true
+    },
+    "is-plain-object": {
+      "version": "2.0.4",
+      "dev": true,
+      "requires": {
+        "isobject": "^3.0.1"
+      }
+    },
+    "is-regex": {
+      "version": "1.1.4",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
+      }
+    },
+    "is-resolvable": {
+      "version": "1.1.0",
+      "dev": true
+    },
+    "is-shared-array-buffer": {
+      "version": "1.0.1",
+      "dev": true
+    },
+    "is-stream": {
+      "version": "1.1.0",
+      "dev": true
+    },
+    "is-string": {
+      "version": "1.0.7",
+      "dev": true,
+      "requires": {
+        "has-tostringtag": "^1.0.0"
+      }
+    },
+    "is-symbol": {
+      "version": "1.0.4",
+      "dev": true,
+      "requires": {
+        "has-symbols": "^1.0.2"
+      }
+    },
+    "is-typedarray": {
+      "version": "1.0.0",
+      "dev": true
+    },
+    "is-weakref": {
+      "version": "1.0.2",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2"
+      }
+    },
+    "is-what": {
+      "version": "3.14.1",
+      "dev": true
+    },
+    "is-windows": {
+      "version": "1.0.2",
+      "dev": true
+    },
+    "is-wsl": {
+      "version": "2.2.0",
+      "dev": true,
+      "requires": {
+        "is-docker": "^2.0.0"
+      }
+    },
+    "isarray": {
+      "version": "1.0.0",
+      "dev": true
+    },
+    "isexe": {
+      "version": "2.0.0",
+      "dev": true
+    },
+    "isobject": {
+      "version": "3.0.1",
+      "dev": true
+    },
+    "isstream": {
+      "version": "0.1.2",
+      "dev": true
+    },
+    "javascript-stringify": {
+      "version": "1.6.0",
+      "dev": true
+    },
+    "jquery": {
+      "version": "3.6.0"
+    },
+    "js-file-download": {
+      "version": "0.4.12"
+    },
+    "js-levenshtein": {
+      "version": "1.1.6",
+      "dev": true
+    },
+    "js-message": {
+      "version": "1.0.7",
+      "dev": true
+    },
+    "js-queue": {
+      "version": "2.0.2",
+      "dev": true,
+      "requires": {
+        "easy-stack": "^1.0.1"
+      }
+    },
+    "js-tokens": {
+      "version": "4.0.0",
+      "dev": true
+    },
+    "js-yaml": {
+      "version": "3.14.1",
+      "dev": true,
+      "requires": {
+        "argparse": "^1.0.7",
+        "esprima": "^4.0.0"
+      }
+    },
+    "jsbn": {
+      "version": "0.1.1",
+      "dev": true
+    },
+    "jsesc": {
+      "version": "2.5.2",
+      "dev": true
+    },
+    "json-buffer": {
+      "version": "3.0.1"
+    },
+    "json-parse-better-errors": {
+      "version": "1.0.2",
+      "dev": true
+    },
+    "json-parse-even-better-errors": {
+      "version": "2.3.1",
+      "dev": true
+    },
+    "json-schema": {
+      "version": "0.4.0",
+      "dev": true
+    },
+    "json-schema-traverse": {
+      "version": "0.4.1"
+    },
+    "json-stable-stringify-without-jsonify": {
+      "version": "1.0.1",
+      "dev": true
+    },
+    "json-stringify-safe": {
+      "version": "5.0.1",
+      "dev": true
+    },
+    "json3": {
+      "version": "3.3.3",
+      "dev": true
+    },
+    "json5": {
+      "version": "2.2.0",
+      "dev": true,
+      "requires": {
+        "minimist": "^1.2.5"
+      }
+    },
+    "jsonfile": {
+      "version": "4.0.0",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.6"
+      }
+    },
+    "jsprim": {
+      "version": "1.4.2",
+      "dev": true,
+      "requires": {
+        "assert-plus": "1.0.0",
+        "extsprintf": "1.3.0",
+        "json-schema": "0.4.0",
+        "verror": "1.10.0"
+      }
+    },
+    "keyv": {
+      "version": "4.0.4",
+      "requires": {
+        "json-buffer": "3.0.1"
+      }
+    },
+    "killable": {
+      "version": "1.0.1",
+      "dev": true
+    },
+    "kind-of": {
+      "version": "6.0.3",
+      "dev": true
+    },
+    "launch-editor": {
+      "version": "2.3.0",
+      "dev": true,
+      "requires": {
+        "picocolors": "^1.0.0",
+        "shell-quote": "^1.6.1"
+      },
+      "dependencies": {
+        "picocolors": {
+          "version": "1.0.0",
+          "dev": true
+        }
+      }
+    },
+    "launch-editor-middleware": {
+      "version": "2.3.0",
+      "dev": true,
+      "requires": {
+        "launch-editor": "^2.3.0"
+      }
+    },
+    "less": {
+      "version": "3.13.1",
+      "dev": true,
+      "requires": {
+        "copy-anything": "^2.0.1",
+        "errno": "^0.1.1",
+        "graceful-fs": "^4.1.2",
+        "image-size": "~0.5.0",
+        "make-dir": "^2.1.0",
+        "mime": "^1.4.1",
+        "native-request": "^1.0.5",
+        "source-map": "~0.6.0",
+        "tslib": "^1.10.0"
+      },
+      "dependencies": {
+        "make-dir": {
+          "version": "2.1.0",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "pify": "^4.0.1",
+            "semver": "^5.6.0"
+          }
+        },
+        "mime": {
+          "version": "1.6.0",
+          "dev": true,
+          "optional": true
+        },
+        "pify": {
+          "version": "4.0.1",
+          "dev": true,
+          "optional": true
+        },
+        "semver": {
+          "version": "5.7.1",
+          "dev": true,
+          "optional": true
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "dev": true,
+          "optional": true
+        }
+      }
+    },
+    "less-loader": {
+      "version": "5.0.0",
+      "dev": true,
+      "requires": {
+        "clone": "^2.1.1",
+        "loader-utils": "^1.1.0",
+        "pify": "^4.0.1"
+      },
+      "dependencies": {
+        "clone": {
+          "version": "2.1.2",
+          "dev": true
+        },
+        "pify": {
+          "version": "4.0.1",
+          "dev": true
+        }
+      }
+    },
+    "levn": {
+      "version": "0.3.0",
+      "dev": true,
+      "requires": {
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2"
+      }
+    },
+    "lines-and-columns": {
+      "version": "1.2.4",
+      "dev": true
+    },
+    "loader-fs-cache": {
+      "version": "1.0.3",
+      "dev": true,
+      "requires": {
+        "find-cache-dir": "^0.1.1",
+        "mkdirp": "^0.5.1"
+      },
+      "dependencies": {
+        "find-cache-dir": {
+          "version": "0.1.1",
+          "dev": true,
+          "requires": {
+            "commondir": "^1.0.1",
+            "mkdirp": "^0.5.1",
+            "pkg-dir": "^1.0.0"
+          }
+        },
+        "find-up": {
+          "version": "1.1.2",
+          "dev": true,
+          "requires": {
+            "path-exists": "^2.0.0",
+            "pinkie-promise": "^2.0.0"
+          }
+        },
+        "path-exists": {
+          "version": "2.1.0",
+          "dev": true,
+          "requires": {
+            "pinkie-promise": "^2.0.0"
+          }
+        },
+        "pkg-dir": {
+          "version": "1.0.0",
+          "dev": true,
+          "requires": {
+            "find-up": "^1.0.0"
+          }
+        }
+      }
+    },
+    "loader-runner": {
+      "version": "2.4.0",
+      "dev": true
+    },
+    "loader-utils": {
+      "version": "1.4.0",
+      "requires": {
+        "big.js": "^5.2.2",
+        "emojis-list": "^3.0.0",
+        "json5": "^1.0.1"
+      },
+      "dependencies": {
+        "json5": {
+          "version": "1.0.1",
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        }
+      }
+    },
+    "locate-path": {
+      "version": "3.0.0",
+      "dev": true,
+      "requires": {
+        "p-locate": "^3.0.0",
+        "path-exists": "^3.0.0"
+      }
+    },
+    "lodash": {
+      "version": "4.17.15"
+    },
+    "lodash.debounce": {
+      "version": "4.0.8",
+      "dev": true
+    },
+    "lodash.defaultsdeep": {
+      "version": "4.6.1"
+    },
+    "lodash.kebabcase": {
+      "version": "4.1.1",
+      "dev": true
+    },
+    "lodash.mapvalues": {
+      "version": "4.6.0",
+      "dev": true
+    },
+    "lodash.memoize": {
+      "version": "4.1.2",
+      "dev": true
+    },
+    "lodash.transform": {
+      "version": "4.6.0",
+      "dev": true
+    },
+    "lodash.uniq": {
+      "version": "4.5.0",
+      "dev": true
+    },
+    "log-symbols": {
+      "version": "2.2.0",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.0.1"
+      }
+    },
+    "loglevel": {
+      "version": "1.8.0",
+      "dev": true
+    },
+    "loose-envify": {
+      "version": "1.4.0",
+      "dev": true,
+      "requires": {
+        "js-tokens": "^3.0.0 || ^4.0.0"
+      }
+    },
+    "lower-case": {
+      "version": "1.1.4",
+      "dev": true
+    },
+    "lowercase-keys": {
+      "version": "2.0.0"
+    },
+    "lru-cache": {
+      "version": "5.1.1",
+      "dev": true,
+      "requires": {
+        "yallist": "^3.0.2"
+      }
+    },
+    "make-dir": {
+      "version": "3.1.0",
+      "dev": true,
+      "requires": {
+        "semver": "^6.0.0"
+      }
+    },
+    "map-cache": {
+      "version": "0.2.2",
+      "dev": true
+    },
+    "map-visit": {
+      "version": "1.0.0",
+      "dev": true,
+      "requires": {
+        "object-visit": "^1.0.0"
+      }
+    },
+    "md5.js": {
+      "version": "1.3.5",
+      "dev": true,
+      "requires": {
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      }
+    },
+    "mdn-data": {
+      "version": "2.0.4",
+      "dev": true
+    },
+    "media-typer": {
+      "version": "0.3.0",
+      "dev": true
+    },
+    "memory-fs": {
+      "version": "0.4.1",
+      "dev": true,
+      "requires": {
+        "errno": "^0.1.3",
+        "readable-stream": "^2.0.1"
+      }
+    },
+    "merge-descriptors": {
+      "version": "1.0.1",
+      "dev": true
+    },
+    "merge-source-map": {
+      "version": "1.1.0",
+      "dev": true,
+      "requires": {
+        "source-map": "^0.6.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "dev": true
+        }
+      }
+    },
+    "merge-stream": {
+      "version": "2.0.0",
+      "dev": true
+    },
+    "merge2": {
+      "version": "1.4.1",
+      "dev": true
+    },
+    "methods": {
+      "version": "1.1.2",
+      "dev": true
+    },
+    "micromatch": {
+      "version": "3.1.10",
+      "dev": true,
+      "requires": {
+        "arr-diff": "^4.0.0",
+        "array-unique": "^0.3.2",
+        "braces": "^2.3.1",
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "extglob": "^2.0.4",
+        "fragment-cache": "^0.2.1",
+        "kind-of": "^6.0.2",
+        "nanomatch": "^1.2.9",
+        "object.pick": "^1.3.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.2"
+      }
+    },
+    "miller-rabin": {
+      "version": "4.0.1",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.0.0",
+        "brorand": "^1.0.1"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0",
+          "dev": true
+        }
+      }
+    },
+    "mime": {
+      "version": "2.6.0",
+      "dev": true
+    },
+    "mime-db": {
+      "version": "1.51.0",
+      "dev": true
+    },
+    "mime-types": {
+      "version": "2.1.34",
+      "dev": true,
+      "requires": {
+        "mime-db": "1.51.0"
+      }
+    },
+    "mimic-fn": {
+      "version": "2.1.0",
+      "dev": true
+    },
+    "mimic-response": {
+      "version": "1.0.1"
+    },
+    "mini-css-extract-plugin": {
+      "version": "0.8.2",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.1.0",
+        "normalize-url": "1.9.1",
+        "schema-utils": "^1.0.0",
+        "webpack-sources": "^1.1.0"
+      },
+      "dependencies": {
+        "schema-utils": {
+          "version": "1.0.0",
+          "dev": true,
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        }
+      }
+    },
+    "minimalistic-assert": {
+      "version": "1.0.1",
+      "dev": true
+    },
+    "minimalistic-crypto-utils": {
+      "version": "1.0.1",
+      "dev": true
+    },
+    "minimatch": {
+      "version": "3.0.4",
+      "dev": true,
+      "requires": {
+        "brace-expansion": "^1.1.7"
+      }
+    },
+    "minimist": {
+      "version": "1.2.5"
+    },
+    "minipass": {
+      "version": "3.1.6",
+      "dev": true,
+      "requires": {
+        "yallist": "^4.0.0"
+      },
+      "dependencies": {
+        "yallist": {
+          "version": "4.0.0",
+          "dev": true
+        }
+      }
+    },
+    "minipass-collect": {
+      "version": "1.0.2",
+      "dev": true,
+      "requires": {
+        "minipass": "^3.0.0"
+      }
+    },
+    "minipass-flush": {
+      "version": "1.0.5",
+      "dev": true,
+      "requires": {
+        "minipass": "^3.0.0"
+      }
+    },
+    "minipass-pipeline": {
+      "version": "1.2.4",
+      "dev": true,
+      "requires": {
+        "minipass": "^3.0.0"
+      }
+    },
+    "minizlib": {
+      "version": "2.1.2",
+      "dev": true,
+      "requires": {
+        "minipass": "^3.0.0",
+        "yallist": "^4.0.0"
+      },
+      "dependencies": {
+        "yallist": {
+          "version": "4.0.0",
+          "dev": true
+        }
+      }
+    },
+    "mississippi": {
+      "version": "3.0.0",
+      "dev": true,
+      "requires": {
+        "concat-stream": "^1.5.0",
+        "duplexify": "^3.4.2",
+        "end-of-stream": "^1.1.0",
+        "flush-write-stream": "^1.0.0",
+        "from2": "^2.1.0",
+        "parallel-transform": "^1.1.0",
+        "pump": "^3.0.0",
+        "pumpify": "^1.3.3",
+        "stream-each": "^1.1.0",
+        "through2": "^2.0.0"
+      }
+    },
+    "mixin-deep": {
+      "version": "1.3.2",
+      "dev": true,
+      "requires": {
+        "for-in": "^1.0.2",
+        "is-extendable": "^1.0.1"
+      }
+    },
+    "mkdirp": {
+      "version": "0.5.5",
+      "dev": true,
+      "requires": {
+        "minimist": "^1.2.5"
+      }
+    },
+    "mockjs": {
+      "version": "1.1.0",
+      "dev": true,
+      "requires": {
+        "commander": "*"
+      }
+    },
+    "moment": {
+      "version": "2.24.0"
+    },
+    "move-concurrently": {
+      "version": "1.0.1",
+      "dev": true,
+      "requires": {
+        "aproba": "^1.1.1",
+        "copy-concurrently": "^1.0.0",
+        "fs-write-stream-atomic": "^1.0.8",
+        "mkdirp": "^0.5.1",
+        "rimraf": "^2.5.4",
+        "run-queue": "^1.0.3"
+      }
+    },
+    "mrmime": {
+      "version": "1.0.0",
+      "dev": true
+    },
+    "ms": {
+      "version": "2.1.2",
+      "dev": true
+    },
+    "multicast-dns": {
+      "version": "6.2.3",
+      "dev": true,
+      "requires": {
+        "dns-packet": "^1.3.1",
+        "thunky": "^1.0.2"
+      }
+    },
+    "multicast-dns-service-types": {
+      "version": "1.1.0",
+      "dev": true
+    },
+    "mute-stream": {
+      "version": "0.0.7",
+      "dev": true
+    },
+    "mz": {
+      "version": "2.7.0",
+      "dev": true,
+      "requires": {
+        "any-promise": "^1.0.0",
+        "object-assign": "^4.0.1",
+        "thenify-all": "^1.0.0"
+      }
+    },
+    "nanomatch": {
+      "version": "1.2.13",
+      "dev": true,
+      "requires": {
+        "arr-diff": "^4.0.0",
+        "array-unique": "^0.3.2",
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "fragment-cache": "^0.2.1",
+        "is-windows": "^1.0.2",
+        "kind-of": "^6.0.2",
+        "object.pick": "^1.3.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      }
+    },
+    "native-request": {
+      "version": "1.1.0",
+      "dev": true,
+      "optional": true
+    },
+    "natural-compare": {
+      "version": "1.4.0",
+      "dev": true
+    },
+    "negotiator": {
+      "version": "0.6.2",
+      "dev": true
+    },
+    "neo-async": {
+      "version": "2.6.2",
+      "dev": true
+    },
+    "nice-try": {
+      "version": "1.0.5",
+      "dev": true
+    },
+    "no-case": {
+      "version": "2.3.2",
+      "dev": true,
+      "requires": {
+        "lower-case": "^1.1.1"
+      }
+    },
+    "node-forge": {
+      "version": "0.10.0",
+      "dev": true
+    },
+    "node-ipc": {
+      "version": "9.2.1",
+      "dev": true,
+      "requires": {
+        "event-pubsub": "4.3.0",
+        "js-message": "1.0.7",
+        "js-queue": "2.0.2"
+      }
+    },
+    "node-libs-browser": {
+      "version": "2.2.1",
+      "dev": true,
+      "requires": {
+        "assert": "^1.1.1",
+        "browserify-zlib": "^0.2.0",
+        "buffer": "^4.3.0",
+        "console-browserify": "^1.1.0",
+        "constants-browserify": "^1.0.0",
+        "crypto-browserify": "^3.11.0",
+        "domain-browser": "^1.1.1",
+        "events": "^3.0.0",
+        "https-browserify": "^1.0.0",
+        "os-browserify": "^0.3.0",
+        "path-browserify": "0.0.1",
+        "process": "^0.11.10",
+        "punycode": "^1.2.4",
+        "querystring-es3": "^0.2.0",
+        "readable-stream": "^2.3.3",
+        "stream-browserify": "^2.0.1",
+        "stream-http": "^2.7.2",
+        "string_decoder": "^1.0.0",
+        "timers-browserify": "^2.0.4",
+        "tty-browserify": "0.0.0",
+        "url": "^0.11.0",
+        "util": "^0.11.0",
+        "vm-browserify": "^1.0.1"
+      },
+      "dependencies": {
+        "punycode": {
+          "version": "1.4.1",
+          "dev": true
+        }
+      }
+    },
+    "node-releases": {
+      "version": "2.0.1",
+      "dev": true
+    },
+    "normalize-package-data": {
+      "version": "2.5.0",
+      "dev": true,
+      "requires": {
+        "hosted-git-info": "^2.1.4",
+        "resolve": "^1.10.0",
+        "semver": "2 || 3 || 4 || 5",
+        "validate-npm-package-license": "^3.0.1"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "5.7.1",
+          "dev": true
+        }
+      }
+    },
+    "normalize-path": {
+      "version": "3.0.0",
+      "dev": true
+    },
+    "normalize-range": {
+      "version": "0.1.2",
+      "dev": true
+    },
+    "normalize-url": {
+      "version": "1.9.1",
+      "dev": true,
+      "requires": {
+        "object-assign": "^4.0.1",
+        "prepend-http": "^1.0.0",
+        "query-string": "^4.1.0",
+        "sort-keys": "^1.0.0"
+      }
+    },
+    "normalize-wheel": {
+      "version": "1.0.1"
+    },
+    "npm-run-path": {
+      "version": "2.0.2",
+      "dev": true,
+      "requires": {
+        "path-key": "^2.0.0"
+      }
+    },
+    "nth-check": {
+      "version": "2.0.1",
+      "dev": true,
+      "requires": {
+        "boolbase": "^1.0.0"
+      }
+    },
+    "num2fraction": {
+      "version": "1.2.2",
+      "dev": true
+    },
+    "oauth-sign": {
+      "version": "0.9.0",
+      "dev": true
+    },
+    "object-assign": {
+      "version": "4.1.1"
+    },
+    "object-copy": {
+      "version": "0.1.0",
+      "dev": true,
+      "requires": {
+        "copy-descriptor": "^0.1.0",
+        "define-property": "^0.2.5",
+        "kind-of": "^3.0.3"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "0.1.6",
+          "dev": true,
+          "requires": {
+            "kind-of": "^3.0.2"
+          }
+        },
+        "is-buffer": {
+          "version": "1.1.6",
+          "dev": true
+        },
+        "is-data-descriptor": {
+          "version": "0.1.4",
+          "dev": true,
+          "requires": {
+            "kind-of": "^3.0.2"
+          }
+        },
+        "is-descriptor": {
+          "version": "0.1.6",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^0.1.6",
+            "is-data-descriptor": "^0.1.4",
+            "kind-of": "^5.0.0"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "5.1.0",
+              "dev": true
+            }
+          }
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "object-hash": {
+      "version": "1.3.1",
+      "dev": true
+    },
+    "object-inspect": {
+      "version": "1.12.0",
+      "dev": true
+    },
+    "object-is": {
+      "version": "1.1.5",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      }
+    },
+    "object-keys": {
+      "version": "1.1.1"
+    },
+    "object-visit": {
+      "version": "1.0.1",
+      "dev": true,
+      "requires": {
+        "isobject": "^3.0.0"
+      }
+    },
+    "object.assign": {
+      "version": "4.1.2",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.0",
+        "define-properties": "^1.1.3",
+        "has-symbols": "^1.0.1",
+        "object-keys": "^1.1.1"
+      }
+    },
+    "object.getownpropertydescriptors": {
+      "version": "2.1.3",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.19.1"
+      }
+    },
+    "object.pick": {
+      "version": "1.3.0",
+      "dev": true,
+      "requires": {
+        "isobject": "^3.0.1"
+      }
+    },
+    "object.values": {
+      "version": "1.1.5",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.19.1"
+      }
+    },
+    "obuf": {
+      "version": "1.1.2",
+      "dev": true
+    },
+    "on-finished": {
+      "version": "2.3.0",
+      "dev": true,
+      "requires": {
+        "ee-first": "1.1.1"
+      }
+    },
+    "on-headers": {
+      "version": "1.0.2",
+      "dev": true
+    },
+    "once": {
+      "version": "1.4.0",
+      "requires": {
+        "wrappy": "1"
+      }
+    },
+    "open": {
+      "version": "6.4.0",
+      "dev": true,
+      "requires": {
+        "is-wsl": "^1.1.0"
+      },
+      "dependencies": {
+        "is-wsl": {
+          "version": "1.1.0",
+          "dev": true
+        }
+      }
+    },
+    "opener": {
+      "version": "1.5.2",
+      "dev": true
+    },
+    "opn": {
+      "version": "5.5.0",
+      "dev": true,
+      "requires": {
+        "is-wsl": "^1.1.0"
+      },
+      "dependencies": {
+        "is-wsl": {
+          "version": "1.1.0",
+          "dev": true
+        }
+      }
+    },
+    "optionator": {
+      "version": "0.8.3",
+      "dev": true,
+      "requires": {
+        "deep-is": "~0.1.3",
+        "fast-levenshtein": "~2.0.6",
+        "levn": "~0.3.0",
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2",
+        "word-wrap": "~1.2.3"
+      }
+    },
+    "ora": {
+      "version": "3.4.0",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.4.2",
+        "cli-cursor": "^2.1.0",
+        "cli-spinners": "^2.0.0",
+        "log-symbols": "^2.2.0",
+        "strip-ansi": "^5.2.0",
+        "wcwidth": "^1.0.1"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "4.1.0",
+          "dev": true
+        },
+        "cli-cursor": {
+          "version": "2.1.0",
+          "dev": true,
+          "requires": {
+            "restore-cursor": "^2.0.0"
+          }
+        },
+        "mimic-fn": {
+          "version": "1.2.0",
+          "dev": true
+        },
+        "onetime": {
+          "version": "2.0.1",
+          "dev": true,
+          "requires": {
+            "mimic-fn": "^1.0.0"
+          }
+        },
+        "restore-cursor": {
+          "version": "2.0.0",
+          "dev": true,
+          "requires": {
+            "onetime": "^2.0.0",
+            "signal-exit": "^3.0.2"
+          }
+        },
+        "strip-ansi": {
+          "version": "5.2.0",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^4.1.0"
+          }
+        }
+      }
+    },
+    "original": {
+      "version": "1.0.2",
+      "dev": true,
+      "requires": {
+        "url-parse": "^1.4.3"
+      }
+    },
+    "os-browserify": {
+      "version": "0.3.0",
+      "dev": true
+    },
+    "os-tmpdir": {
+      "version": "1.0.2",
+      "dev": true
+    },
+    "p-cancelable": {
+      "version": "2.1.1"
+    },
+    "p-finally": {
+      "version": "1.0.0",
+      "dev": true
+    },
+    "p-limit": {
+      "version": "2.3.0",
+      "dev": true,
+      "requires": {
+        "p-try": "^2.0.0"
+      }
+    },
+    "p-locate": {
+      "version": "3.0.0",
+      "dev": true,
+      "requires": {
+        "p-limit": "^2.0.0"
+      }
+    },
+    "p-retry": {
+      "version": "3.0.1",
+      "dev": true,
+      "requires": {
+        "retry": "^0.12.0"
+      }
+    },
+    "p-try": {
+      "version": "2.2.0",
+      "dev": true
+    },
+    "pako": {
+      "version": "1.0.11",
+      "dev": true
+    },
+    "parallel-transform": {
+      "version": "1.2.0",
+      "dev": true,
+      "requires": {
+        "cyclist": "^1.0.1",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.1.5"
+      }
+    },
+    "param-case": {
+      "version": "2.1.1",
+      "dev": true,
+      "requires": {
+        "no-case": "^2.2.0"
+      }
+    },
+    "parchment": {
+      "version": "1.1.4"
+    },
+    "parent-module": {
+      "version": "1.0.1",
+      "dev": true,
+      "requires": {
+        "callsites": "^3.0.0"
+      },
+      "dependencies": {
+        "callsites": {
+          "version": "3.1.0",
+          "dev": true
+        }
+      }
+    },
+    "parse-asn1": {
+      "version": "5.1.6",
+      "dev": true,
+      "requires": {
+        "asn1.js": "^5.2.0",
+        "browserify-aes": "^1.0.0",
+        "evp_bytestokey": "^1.0.0",
+        "pbkdf2": "^3.0.3",
+        "safe-buffer": "^5.1.1"
+      }
+    },
+    "parse-json": {
+      "version": "4.0.0",
+      "dev": true,
+      "requires": {
+        "error-ex": "^1.3.1",
+        "json-parse-better-errors": "^1.0.1"
+      }
+    },
+    "parse5": {
+      "version": "5.1.1",
+      "dev": true
+    },
+    "parse5-htmlparser2-tree-adapter": {
+      "version": "6.0.1",
+      "dev": true,
+      "requires": {
+        "parse5": "^6.0.1"
+      },
+      "dependencies": {
+        "parse5": {
+          "version": "6.0.1",
+          "dev": true
+        }
+      }
+    },
+    "parseurl": {
+      "version": "1.3.3",
+      "dev": true
+    },
+    "pascalcase": {
+      "version": "0.1.1",
+      "dev": true
+    },
+    "path-browserify": {
+      "version": "0.0.1",
+      "dev": true
+    },
+    "path-dirname": {
+      "version": "1.0.2",
+      "dev": true
+    },
+    "path-exists": {
+      "version": "3.0.0",
+      "dev": true
+    },
+    "path-is-absolute": {
+      "version": "1.0.1",
+      "dev": true
+    },
+    "path-is-inside": {
+      "version": "1.0.2",
+      "dev": true
+    },
+    "path-key": {
+      "version": "2.0.1",
+      "dev": true
+    },
+    "path-parse": {
+      "version": "1.0.7",
+      "dev": true
+    },
+    "path-to-regexp": {
+      "version": "0.1.7",
+      "dev": true
+    },
+    "path-type": {
+      "version": "3.0.0",
+      "dev": true,
+      "requires": {
+        "pify": "^3.0.0"
+      },
+      "dependencies": {
+        "pify": {
+          "version": "3.0.0",
+          "dev": true
+        }
+      }
+    },
+    "pbkdf2": {
+      "version": "3.1.2",
+      "dev": true,
+      "requires": {
+        "create-hash": "^1.1.2",
+        "create-hmac": "^1.1.4",
+        "ripemd160": "^2.0.1",
+        "safe-buffer": "^5.0.1",
+        "sha.js": "^2.4.8"
+      }
+    },
+    "performance-now": {
+      "version": "2.1.0",
+      "dev": true
+    },
+    "picocolors": {
+      "version": "0.2.1",
+      "dev": true
+    },
+    "picomatch": {
+      "version": "2.3.1",
+      "dev": true,
+      "optional": true
+    },
+    "pinkie": {
+      "version": "2.0.4",
+      "dev": true
+    },
+    "pinkie-promise": {
+      "version": "2.0.1",
+      "dev": true,
+      "requires": {
+        "pinkie": "^2.0.0"
+      }
+    },
+    "pkg-dir": {
+      "version": "4.2.0",
+      "dev": true,
+      "requires": {
+        "find-up": "^4.0.0"
+      },
+      "dependencies": {
+        "find-up": {
+          "version": "4.1.0",
+          "dev": true,
+          "requires": {
+            "locate-path": "^5.0.0",
+            "path-exists": "^4.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "5.0.0",
+          "dev": true,
+          "requires": {
+            "p-locate": "^4.1.0"
+          }
+        },
+        "p-locate": {
+          "version": "4.1.0",
+          "dev": true,
+          "requires": {
+            "p-limit": "^2.2.0"
+          }
+        },
+        "path-exists": {
+          "version": "4.0.0",
+          "dev": true
+        }
+      }
+    },
+    "pkg-up": {
+      "version": "2.0.0",
+      "dev": true,
+      "requires": {
+        "find-up": "^2.1.0"
+      },
+      "dependencies": {
+        "find-up": {
+          "version": "2.1.0",
+          "dev": true,
+          "requires": {
+            "locate-path": "^2.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "2.0.0",
+          "dev": true,
+          "requires": {
+            "p-locate": "^2.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "p-limit": {
+          "version": "1.3.0",
+          "dev": true,
+          "requires": {
+            "p-try": "^1.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "2.0.0",
+          "dev": true,
+          "requires": {
+            "p-limit": "^1.1.0"
+          }
+        },
+        "p-try": {
+          "version": "1.0.0",
+          "dev": true
+        }
+      }
+    },
+    "pluralize": {
+      "version": "7.0.0",
+      "dev": true,
+      "optional": true
+    },
+    "popper.js": {
+      "version": "1.16.1"
+    },
+    "portfinder": {
+      "version": "1.0.28",
+      "dev": true,
+      "requires": {
+        "async": "^2.6.2",
+        "debug": "^3.1.1",
+        "mkdirp": "^0.5.5"
+      },
+      "dependencies": {
+        "async": {
+          "version": "2.6.3",
+          "dev": true,
+          "requires": {
+            "lodash": "^4.17.14"
+          }
+        },
+        "debug": {
+          "version": "3.2.7",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        }
+      }
+    },
+    "posix-character-classes": {
+      "version": "0.1.1",
+      "dev": true
+    },
+    "postcss": {
+      "version": "7.0.39",
+      "dev": true,
+      "requires": {
+        "picocolors": "^0.2.1",
+        "source-map": "^0.6.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "dev": true
+        }
+      }
+    },
+    "postcss-calc": {
+      "version": "7.0.5",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.27",
+        "postcss-selector-parser": "^6.0.2",
+        "postcss-value-parser": "^4.0.2"
+      }
+    },
+    "postcss-colormin": {
+      "version": "4.0.3",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.0.0",
+        "color": "^3.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "dev": true
+        }
+      }
+    },
+    "postcss-convert-values": {
+      "version": "4.0.1",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "dev": true
+        }
+      }
+    },
+    "postcss-discard-comments": {
+      "version": "4.0.2",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-discard-duplicates": {
+      "version": "4.0.2",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-discard-empty": {
+      "version": "4.0.1",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-discard-overridden": {
+      "version": "4.0.1",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-load-config": {
+      "version": "2.1.2",
+      "dev": true,
+      "requires": {
+        "cosmiconfig": "^5.0.0",
+        "import-cwd": "^2.0.0"
+      }
+    },
+    "postcss-loader": {
+      "version": "3.0.0",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.1.0",
+        "postcss": "^7.0.0",
+        "postcss-load-config": "^2.0.0",
+        "schema-utils": "^1.0.0"
+      },
+      "dependencies": {
+        "schema-utils": {
+          "version": "1.0.0",
+          "dev": true,
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        }
+      }
+    },
+    "postcss-merge-longhand": {
+      "version": "4.0.11",
+      "dev": true,
+      "requires": {
+        "css-color-names": "0.0.4",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0",
+        "stylehacks": "^4.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "dev": true
+        }
+      }
+    },
+    "postcss-merge-rules": {
+      "version": "4.0.3",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.0.0",
+        "caniuse-api": "^3.0.0",
+        "cssnano-util-same-parent": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-selector-parser": "^3.0.0",
+        "vendors": "^1.0.0"
+      },
+      "dependencies": {
+        "postcss-selector-parser": {
+          "version": "3.1.2",
+          "dev": true,
+          "requires": {
+            "dot-prop": "^5.2.0",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        }
+      }
+    },
+    "postcss-minify-font-values": {
+      "version": "4.0.2",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "dev": true
+        }
+      }
+    },
+    "postcss-minify-gradients": {
+      "version": "4.0.2",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "is-color-stop": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "dev": true
+        }
+      }
+    },
+    "postcss-minify-params": {
+      "version": "4.0.2",
+      "dev": true,
+      "requires": {
+        "alphanum-sort": "^1.0.0",
+        "browserslist": "^4.0.0",
+        "cssnano-util-get-arguments": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0",
+        "uniqs": "^2.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "dev": true
+        }
+      }
+    },
+    "postcss-minify-selectors": {
+      "version": "4.0.2",
+      "dev": true,
+      "requires": {
+        "alphanum-sort": "^1.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-selector-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-selector-parser": {
+          "version": "3.1.2",
+          "dev": true,
+          "requires": {
+            "dot-prop": "^5.2.0",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        }
+      }
+    },
+    "postcss-modules-extract-imports": {
+      "version": "2.0.0",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "postcss": "^7.0.5"
+      }
+    },
+    "postcss-modules-local-by-default": {
+      "version": "3.0.3",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "icss-utils": "^4.1.1",
+        "postcss": "^7.0.32",
+        "postcss-selector-parser": "^6.0.2",
+        "postcss-value-parser": "^4.1.0"
+      }
+    },
+    "postcss-modules-scope": {
+      "version": "2.2.0",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "postcss": "^7.0.6",
+        "postcss-selector-parser": "^6.0.0"
+      }
+    },
+    "postcss-modules-values": {
+      "version": "3.0.0",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "icss-utils": "^4.0.0",
+        "postcss": "^7.0.6"
+      }
+    },
+    "postcss-normalize-charset": {
+      "version": "4.0.1",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-normalize-display-values": {
+      "version": "4.0.2",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-match": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-positions": {
+      "version": "4.0.2",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-repeat-style": {
+      "version": "4.0.2",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "cssnano-util-get-match": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-string": {
+      "version": "4.0.2",
+      "dev": true,
+      "requires": {
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-timing-functions": {
+      "version": "4.0.2",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-match": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-unicode": {
+      "version": "4.0.1",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-url": {
+      "version": "4.0.1",
+      "dev": true,
+      "requires": {
+        "is-absolute-url": "^2.0.0",
+        "normalize-url": "^3.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "normalize-url": {
+          "version": "3.3.0",
+          "dev": true
+        },
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-whitespace": {
+      "version": "4.0.2",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "dev": true
+        }
+      }
+    },
+    "postcss-ordered-values": {
+      "version": "4.1.2",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "dev": true
+        }
+      }
+    },
+    "postcss-reduce-initial": {
+      "version": "4.0.3",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.0.0",
+        "caniuse-api": "^3.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-reduce-transforms": {
+      "version": "4.0.2",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-match": "^4.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "dev": true
+        }
+      }
+    },
+    "postcss-selector-parser": {
+      "version": "6.0.8",
+      "dev": true,
+      "requires": {
+        "cssesc": "^3.0.0",
+        "util-deprecate": "^1.0.2"
+      }
+    },
+    "postcss-svgo": {
+      "version": "4.0.3",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0",
+        "svgo": "^1.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "dev": true
+        }
+      }
+    },
+    "postcss-unique-selectors": {
+      "version": "4.0.1",
+      "dev": true,
+      "requires": {
+        "alphanum-sort": "^1.0.0",
+        "postcss": "^7.0.0",
+        "uniqs": "^2.0.0"
+      }
+    },
+    "postcss-value-parser": {
+      "version": "4.2.0",
+      "dev": true
+    },
+    "prelude-ls": {
+      "version": "1.1.2",
+      "dev": true
+    },
+    "prepend-http": {
+      "version": "1.0.4",
+      "dev": true
+    },
+    "prettier": {
+      "version": "2.5.1",
+      "dev": true,
+      "optional": true
+    },
+    "pretty-error": {
+      "version": "2.1.2",
+      "dev": true,
+      "requires": {
+        "lodash": "^4.17.20",
+        "renderkid": "^2.0.4"
+      },
+      "dependencies": {
+        "lodash": {
+          "version": "4.17.21",
+          "dev": true
+        }
+      }
+    },
+    "printj": {
+      "version": "1.1.2"
+    },
+    "process": {
+      "version": "0.11.10",
+      "dev": true
+    },
+    "process-nextick-args": {
+      "version": "2.0.1",
+      "dev": true
+    },
+    "progress": {
+      "version": "2.0.3",
+      "dev": true
+    },
+    "promise-inflight": {
+      "version": "1.0.1",
+      "dev": true
+    },
+    "proxy-addr": {
+      "version": "2.0.7",
+      "dev": true,
+      "requires": {
+        "forwarded": "0.2.0",
+        "ipaddr.js": "1.9.1"
+      }
+    },
+    "prr": {
+      "version": "1.0.1",
+      "dev": true
+    },
+    "pseudomap": {
+      "version": "1.0.2",
+      "dev": true
+    },
+    "psl": {
+      "version": "1.8.0",
+      "dev": true
+    },
+    "public-encrypt": {
+      "version": "4.0.3",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.0",
+        "browserify-rsa": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "parse-asn1": "^5.0.0",
+        "randombytes": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0",
+          "dev": true
+        }
+      }
+    },
+    "pump": {
+      "version": "3.0.0",
+      "requires": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "pumpify": {
+      "version": "1.5.1",
+      "dev": true,
+      "requires": {
+        "duplexify": "^3.6.0",
+        "inherits": "^2.0.3",
+        "pump": "^2.0.0"
+      },
+      "dependencies": {
+        "pump": {
+          "version": "2.0.1",
+          "dev": true,
+          "requires": {
+            "end-of-stream": "^1.1.0",
+            "once": "^1.3.1"
+          }
+        }
+      }
+    },
+    "punycode": {
+      "version": "2.1.1"
+    },
+    "q": {
+      "version": "1.5.1",
+      "dev": true
+    },
+    "qs": {
+      "version": "6.5.2",
+      "dev": true
+    },
+    "query-string": {
+      "version": "4.3.4",
+      "dev": true,
+      "requires": {
+        "object-assign": "^4.1.0",
+        "strict-uri-encode": "^1.0.0"
+      }
+    },
+    "querystring": {
+      "version": "0.2.0",
+      "dev": true
+    },
+    "querystring-es3": {
+      "version": "0.2.1",
+      "dev": true
+    },
+    "querystringify": {
+      "version": "2.2.0",
+      "dev": true
+    },
+    "quick-lru": {
+      "version": "5.1.1"
+    },
+    "quill": {
+      "version": "1.3.7",
+      "requires": {
+        "clone": "^2.1.1",
+        "deep-equal": "^1.0.1",
+        "eventemitter3": "^2.0.3",
+        "extend": "^3.0.2",
+        "parchment": "^1.1.4",
+        "quill-delta": "^3.6.2"
+      },
+      "dependencies": {
+        "clone": {
+          "version": "2.1.2"
+        },
+        "eventemitter3": {
+          "version": "2.0.3"
+        }
+      }
+    },
+    "quill-delta": {
+      "version": "3.6.3",
+      "requires": {
+        "deep-equal": "^1.0.1",
+        "extend": "^3.0.2",
+        "fast-diff": "1.1.2"
+      },
+      "dependencies": {
+        "fast-diff": {
+          "version": "1.1.2"
+        }
+      }
+    },
+    "quill-image-drop-module": {
+      "version": "1.0.3",
+      "requires": {
+        "quill": "^1.2.2"
+      }
+    },
+    "quill-image-resize-module": {
+      "version": "3.0.0",
+      "requires": {
+        "lodash": "^4.17.4",
+        "quill": "^1.2.2",
+        "raw-loader": "^0.5.1"
+      }
+    },
+    "randombytes": {
+      "version": "2.1.0",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "randomfill": {
+      "version": "1.0.4",
+      "dev": true,
+      "requires": {
+        "randombytes": "^2.0.5",
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "range-parser": {
+      "version": "1.2.1",
+      "dev": true
+    },
+    "raw-body": {
+      "version": "2.4.2",
+      "dev": true,
+      "requires": {
+        "bytes": "3.1.1",
+        "http-errors": "1.8.1",
+        "iconv-lite": "0.4.24",
+        "unpipe": "1.0.0"
+      }
+    },
+    "raw-loader": {
+      "version": "0.5.1"
+    },
+    "read-pkg": {
+      "version": "5.2.0",
+      "dev": true,
+      "requires": {
+        "@types/normalize-package-data": "^2.4.0",
+        "normalize-package-data": "^2.5.0",
+        "parse-json": "^5.0.0",
+        "type-fest": "^0.6.0"
+      },
+      "dependencies": {
+        "parse-json": {
+          "version": "5.2.0",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.0.0",
+            "error-ex": "^1.3.1",
+            "json-parse-even-better-errors": "^2.3.0",
+            "lines-and-columns": "^1.1.6"
+          }
+        },
+        "type-fest": {
+          "version": "0.6.0",
+          "dev": true
+        }
+      }
+    },
+    "readable-stream": {
+      "version": "2.3.7",
+      "dev": true,
+      "requires": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.1.1",
+        "util-deprecate": "~1.0.1"
+      }
+    },
+    "readdirp": {
+      "version": "2.2.1",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.11",
+        "micromatch": "^3.1.10",
+        "readable-stream": "^2.0.2"
+      }
+    },
+    "regenerate": {
+      "version": "1.4.2",
+      "dev": true
+    },
+    "regenerate-unicode-properties": {
+      "version": "9.0.0",
+      "dev": true,
+      "requires": {
+        "regenerate": "^1.4.2"
+      }
+    },
+    "regenerator-runtime": {
+      "version": "0.13.9"
+    },
+    "regenerator-transform": {
+      "version": "0.14.5",
+      "dev": true,
+      "requires": {
+        "@babel/runtime": "^7.8.4"
+      }
+    },
+    "regex-not": {
+      "version": "1.0.2",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^3.0.2",
+        "safe-regex": "^1.1.0"
+      }
+    },
+    "regexp.prototype.flags": {
+      "version": "1.3.1",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      }
+    },
+    "regexpp": {
+      "version": "2.0.1",
+      "dev": true
+    },
+    "regexpu-core": {
+      "version": "4.8.0",
+      "dev": true,
+      "requires": {
+        "regenerate": "^1.4.2",
+        "regenerate-unicode-properties": "^9.0.0",
+        "regjsgen": "^0.5.2",
+        "regjsparser": "^0.7.0",
+        "unicode-match-property-ecmascript": "^2.0.0",
+        "unicode-match-property-value-ecmascript": "^2.0.0"
+      }
+    },
+    "regjsgen": {
+      "version": "0.5.2",
+      "dev": true
+    },
+    "regjsparser": {
+      "version": "0.7.0",
+      "dev": true,
+      "requires": {
+        "jsesc": "~0.5.0"
+      },
+      "dependencies": {
+        "jsesc": {
+          "version": "0.5.0",
+          "dev": true
+        }
+      }
+    },
+    "relateurl": {
+      "version": "0.2.7",
+      "dev": true
+    },
+    "remove-trailing-separator": {
+      "version": "1.1.0",
+      "dev": true
+    },
+    "renderkid": {
+      "version": "2.0.7",
+      "dev": true,
+      "requires": {
+        "css-select": "^4.1.3",
+        "dom-converter": "^0.2.0",
+        "htmlparser2": "^6.1.0",
+        "lodash": "^4.17.21",
+        "strip-ansi": "^3.0.1"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "2.1.1",
+          "dev": true
+        },
+        "lodash": {
+          "version": "4.17.21",
+          "dev": true
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        }
+      }
+    },
+    "repeat-element": {
+      "version": "1.1.4",
+      "dev": true
+    },
+    "repeat-string": {
+      "version": "1.6.1",
+      "dev": true
+    },
+    "request": {
+      "version": "2.88.2",
+      "dev": true,
+      "requires": {
+        "aws-sign2": "~0.7.0",
+        "aws4": "^1.8.0",
+        "caseless": "~0.12.0",
+        "combined-stream": "~1.0.6",
+        "extend": "~3.0.2",
+        "forever-agent": "~0.6.1",
+        "form-data": "~2.3.2",
+        "har-validator": "~5.1.3",
+        "http-signature": "~1.2.0",
+        "is-typedarray": "~1.0.0",
+        "isstream": "~0.1.2",
+        "json-stringify-safe": "~5.0.1",
+        "mime-types": "~2.1.19",
+        "oauth-sign": "~0.9.0",
+        "performance-now": "^2.1.0",
+        "qs": "~6.5.2",
+        "safe-buffer": "^5.1.2",
+        "tough-cookie": "~2.5.0",
+        "tunnel-agent": "^0.6.0",
+        "uuid": "^3.3.2"
+      },
+      "dependencies": {
+        "tough-cookie": {
+          "version": "2.5.0",
+          "dev": true,
+          "requires": {
+            "psl": "^1.1.28",
+            "punycode": "^2.1.1"
+          }
+        }
+      }
+    },
+    "request-promise-core": {
+      "version": "1.1.4",
+      "dev": true,
+      "requires": {
+        "lodash": "^4.17.19"
+      },
+      "dependencies": {
+        "lodash": {
+          "version": "4.17.21",
+          "dev": true
+        }
+      }
+    },
+    "request-promise-native": {
+      "version": "1.0.9",
+      "dev": true,
+      "requires": {
+        "request-promise-core": "1.1.4",
+        "stealthy-require": "^1.1.1",
+        "tough-cookie": "^2.3.3"
+      },
+      "dependencies": {
+        "tough-cookie": {
+          "version": "2.5.0",
+          "dev": true,
+          "requires": {
+            "psl": "^1.1.28",
+            "punycode": "^2.1.1"
+          }
+        }
+      }
+    },
+    "require-directory": {
+      "version": "2.1.1",
+      "dev": true
+    },
+    "require-main-filename": {
+      "version": "2.0.0",
+      "dev": true
+    },
+    "require-uncached": {
+      "version": "1.0.3",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "caller-path": "^0.1.0",
+        "resolve-from": "^1.0.0"
+      },
+      "dependencies": {
+        "caller-path": {
+          "version": "0.1.0",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "callsites": "^0.2.0"
+          }
+        },
+        "callsites": {
+          "version": "0.2.0",
+          "dev": true,
+          "optional": true
+        },
+        "resolve-from": {
+          "version": "1.0.1",
+          "dev": true,
+          "optional": true
+        }
+      }
+    },
+    "requires-port": {
+      "version": "1.0.0",
+      "dev": true
+    },
+    "reselect": {
+      "version": "3.0.1",
+      "dev": true
+    },
+    "resize-observer-polyfill": {
+      "version": "1.5.1"
+    },
+    "resolve": {
+      "version": "1.21.0",
+      "dev": true,
+      "requires": {
+        "is-core-module": "^2.8.0",
+        "path-parse": "^1.0.7",
+        "supports-preserve-symlinks-flag": "^1.0.0"
+      }
+    },
+    "resolve-alpn": {
+      "version": "1.2.1"
+    },
+    "resolve-cwd": {
+      "version": "2.0.0",
+      "dev": true,
+      "requires": {
+        "resolve-from": "^3.0.0"
+      }
+    },
+    "resolve-from": {
+      "version": "3.0.0",
+      "dev": true
+    },
+    "resolve-url": {
+      "version": "0.2.1",
+      "dev": true
+    },
+    "responselike": {
+      "version": "2.0.0",
+      "requires": {
+        "lowercase-keys": "^2.0.0"
+      }
+    },
+    "ret": {
+      "version": "0.1.15",
+      "dev": true
+    },
+    "retry": {
+      "version": "0.12.0",
+      "dev": true
+    },
+    "rgb-regex": {
+      "version": "1.0.1",
+      "dev": true
+    },
+    "rgba-regex": {
+      "version": "1.0.0",
+      "dev": true
+    },
+    "rimraf": {
+      "version": "2.7.1",
+      "dev": true,
+      "requires": {
+        "glob": "^7.1.3"
+      }
+    },
+    "ripemd160": {
+      "version": "2.0.2",
+      "dev": true,
+      "requires": {
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1"
+      }
+    },
+    "run-async": {
+      "version": "2.4.1",
+      "dev": true
+    },
+    "run-queue": {
+      "version": "1.0.3",
+      "dev": true,
+      "requires": {
+        "aproba": "^1.1.1"
+      }
+    },
+    "rx-lite": {
+      "version": "4.0.8",
+      "dev": true,
+      "optional": true
+    },
+    "rx-lite-aggregates": {
+      "version": "4.0.8",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "rx-lite": "*"
+      }
+    },
+    "rxjs": {
+      "version": "6.6.7",
+      "dev": true,
+      "requires": {
+        "tslib": "^1.9.0"
+      }
+    },
+    "safe-buffer": {
+      "version": "5.1.2",
+      "dev": true
+    },
+    "safe-regex": {
+      "version": "1.1.0",
+      "dev": true,
+      "requires": {
+        "ret": "~0.1.10"
+      }
+    },
+    "safer-buffer": {
+      "version": "2.1.2",
+      "dev": true
+    },
+    "sax": {
+      "version": "1.2.4",
+      "dev": true
+    },
+    "schema-utils": {
+      "version": "2.7.1",
+      "dev": true,
+      "requires": {
+        "@types/json-schema": "^7.0.5",
+        "ajv": "^6.12.4",
+        "ajv-keywords": "^3.5.2"
+      }
+    },
+    "select-hose": {
+      "version": "2.0.0",
+      "dev": true
+    },
+    "selfsigned": {
+      "version": "1.10.11",
+      "dev": true,
+      "requires": {
+        "node-forge": "^0.10.0"
+      }
+    },
+    "semver": {
+      "version": "6.3.0",
+      "dev": true
+    },
+    "send": {
+      "version": "0.17.2",
+      "dev": true,
+      "requires": {
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "destroy": "~1.0.4",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "fresh": "0.5.2",
+        "http-errors": "1.8.1",
+        "mime": "1.6.0",
+        "ms": "2.1.3",
+        "on-finished": "~2.3.0",
+        "range-parser": "~1.2.1",
+        "statuses": "~1.5.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          },
+          "dependencies": {
+            "ms": {
+              "version": "2.0.0",
+              "dev": true
+            }
+          }
+        },
+        "mime": {
+          "version": "1.6.0",
+          "dev": true
+        },
+        "ms": {
+          "version": "2.1.3",
+          "dev": true
+        }
+      }
+    },
+    "serialize-javascript": {
+      "version": "4.0.0",
+      "dev": true,
+      "requires": {
+        "randombytes": "^2.1.0"
+      }
+    },
+    "serve-index": {
+      "version": "1.9.1",
+      "dev": true,
+      "requires": {
+        "accepts": "~1.3.4",
+        "batch": "0.6.1",
+        "debug": "2.6.9",
+        "escape-html": "~1.0.3",
+        "http-errors": "~1.6.2",
+        "mime-types": "~2.1.17",
+        "parseurl": "~1.3.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "http-errors": {
+          "version": "1.6.3",
+          "dev": true,
+          "requires": {
+            "depd": "~1.1.2",
+            "inherits": "2.0.3",
+            "setprototypeof": "1.1.0",
+            "statuses": ">= 1.4.0 < 2"
+          }
+        },
+        "inherits": {
+          "version": "2.0.3",
+          "dev": true
+        },
+        "ms": {
+          "version": "2.0.0",
+          "dev": true
+        },
+        "setprototypeof": {
+          "version": "1.1.0",
+          "dev": true
+        }
+      }
+    },
+    "serve-static": {
+      "version": "1.14.2",
+      "dev": true,
+      "requires": {
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "parseurl": "~1.3.3",
+        "send": "0.17.2"
+      }
+    },
+    "set-blocking": {
+      "version": "2.0.0",
+      "dev": true
+    },
+    "set-value": {
+      "version": "2.0.1",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^2.0.1",
+        "is-extendable": "^0.1.1",
+        "is-plain-object": "^2.0.3",
+        "split-string": "^3.0.1"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "is-extendable": {
+          "version": "0.1.1",
+          "dev": true
+        }
+      }
+    },
+    "setimmediate": {
+      "version": "1.0.5",
+      "dev": true
+    },
+    "setprototypeof": {
+      "version": "1.2.0",
+      "dev": true
+    },
+    "sha.js": {
+      "version": "2.4.11",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "shebang-command": {
+      "version": "1.2.0",
+      "dev": true,
+      "requires": {
+        "shebang-regex": "^1.0.0"
+      }
+    },
+    "shebang-regex": {
+      "version": "1.0.0",
+      "dev": true
+    },
+    "shell-quote": {
+      "version": "1.7.3",
+      "dev": true
+    },
+    "side-channel": {
+      "version": "1.0.4",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.0",
+        "get-intrinsic": "^1.0.2",
+        "object-inspect": "^1.9.0"
+      }
+    },
+    "signal-exit": {
+      "version": "3.0.6",
+      "dev": true
+    },
+    "simple-swizzle": {
+      "version": "0.2.2",
+      "dev": true,
+      "requires": {
+        "is-arrayish": "^0.3.1"
+      },
+      "dependencies": {
+        "is-arrayish": {
+          "version": "0.3.2",
+          "dev": true
+        }
+      }
+    },
+    "sirv": {
+      "version": "1.0.19",
+      "dev": true,
+      "requires": {
+        "@polka/url": "^1.0.0-next.20",
+        "mrmime": "^1.0.0",
+        "totalist": "^1.0.0"
+      }
+    },
+    "slash": {
+      "version": "2.0.0",
+      "dev": true
+    },
+    "snapdragon": {
+      "version": "0.8.2",
+      "dev": true,
+      "requires": {
+        "base": "^0.11.1",
+        "debug": "^2.2.0",
+        "define-property": "^0.2.5",
+        "extend-shallow": "^2.0.1",
+        "map-cache": "^0.2.2",
+        "source-map": "^0.5.6",
+        "source-map-resolve": "^0.5.0",
+        "use": "^3.1.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "define-property": {
+          "version": "0.2.5",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "0.1.6",
+          "dev": true,
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "dev": true,
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "is-buffer": {
+          "version": "1.1.6",
+          "dev": true
+        },
+        "is-data-descriptor": {
+          "version": "0.1.4",
+          "dev": true,
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "dev": true,
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "is-descriptor": {
+          "version": "0.1.6",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^0.1.6",
+            "is-data-descriptor": "^0.1.4",
+            "kind-of": "^5.0.0"
+          }
+        },
+        "is-extendable": {
+          "version": "0.1.1",
+          "dev": true
+        },
+        "kind-of": {
+          "version": "5.1.0",
+          "dev": true
+        },
+        "ms": {
+          "version": "2.0.0",
+          "dev": true
+        }
+      }
+    },
+    "snapdragon-node": {
+      "version": "2.1.1",
+      "dev": true,
+      "requires": {
+        "define-property": "^1.0.0",
+        "isobject": "^3.0.0",
+        "snapdragon-util": "^3.0.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "1.0.0",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        }
+      }
+    },
+    "snapdragon-util": {
+      "version": "3.0.1",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.2.0"
+      },
+      "dependencies": {
+        "is-buffer": {
+          "version": "1.1.6",
+          "dev": true
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "sockjs": {
+      "version": "0.3.24",
+      "dev": true,
+      "requires": {
+        "faye-websocket": "^0.11.3",
+        "uuid": "^8.3.2",
+        "websocket-driver": "^0.7.4"
+      },
+      "dependencies": {
+        "uuid": {
+          "version": "8.3.2",
+          "dev": true
+        }
+      }
+    },
+    "sockjs-client": {
+      "version": "1.5.2",
+      "dev": true,
+      "requires": {
+        "debug": "^3.2.6",
+        "eventsource": "^1.0.7",
+        "faye-websocket": "^0.11.3",
+        "inherits": "^2.0.4",
+        "json3": "^3.3.3",
+        "url-parse": "^1.5.3"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.7",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        }
+      }
+    },
+    "sort-keys": {
+      "version": "1.1.2",
+      "dev": true,
+      "requires": {
+        "is-plain-obj": "^1.0.0"
+      }
+    },
+    "source-list-map": {
+      "version": "2.0.1",
+      "dev": true
+    },
+    "source-map": {
+      "version": "0.5.7",
+      "dev": true
+    },
+    "source-map-resolve": {
+      "version": "0.5.3",
+      "dev": true,
+      "requires": {
+        "atob": "^2.1.2",
+        "decode-uri-component": "^0.2.0",
+        "resolve-url": "^0.2.1",
+        "source-map-url": "^0.4.0",
+        "urix": "^0.1.0"
+      }
+    },
+    "source-map-support": {
+      "version": "0.5.21",
+      "dev": true,
+      "requires": {
+        "buffer-from": "^1.0.0",
+        "source-map": "^0.6.0"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "dev": true
+        }
+      }
+    },
+    "source-map-url": {
+      "version": "0.4.1",
+      "dev": true
+    },
+    "spark-md5": {
+      "version": "3.0.2"
+    },
+    "spdx-correct": {
+      "version": "3.1.1",
+      "dev": true,
+      "requires": {
+        "spdx-expression-parse": "^3.0.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "spdx-exceptions": {
+      "version": "2.3.0",
+      "dev": true
+    },
+    "spdx-expression-parse": {
+      "version": "3.0.1",
+      "dev": true,
+      "requires": {
+        "spdx-exceptions": "^2.1.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "spdx-license-ids": {
+      "version": "3.0.11",
+      "dev": true
+    },
+    "spdy": {
+      "version": "4.0.2",
+      "dev": true,
+      "requires": {
+        "debug": "^4.1.0",
+        "handle-thing": "^2.0.0",
+        "http-deceiver": "^1.2.7",
+        "select-hose": "^2.0.0",
+        "spdy-transport": "^3.0.0"
+      }
+    },
+    "spdy-transport": {
+      "version": "3.0.0",
+      "dev": true,
+      "requires": {
+        "debug": "^4.1.0",
+        "detect-node": "^2.0.4",
+        "hpack.js": "^2.1.6",
+        "obuf": "^1.1.2",
+        "readable-stream": "^3.0.6",
+        "wbuf": "^1.7.3"
+      },
+      "dependencies": {
+        "readable-stream": {
+          "version": "3.6.0",
+          "dev": true,
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        }
+      }
+    },
+    "split-string": {
+      "version": "3.1.0",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^3.0.0"
+      }
+    },
+    "sprintf-js": {
+      "version": "1.0.3",
+      "dev": true
+    },
+    "ssf": {
+      "version": "0.11.2",
+      "requires": {
+        "frac": "~1.1.2"
+      }
+    },
+    "sshpk": {
+      "version": "1.16.1",
+      "dev": true,
+      "requires": {
+        "asn1": "~0.2.3",
+        "assert-plus": "^1.0.0",
+        "bcrypt-pbkdf": "^1.0.0",
+        "dashdash": "^1.12.0",
+        "ecc-jsbn": "~0.1.1",
+        "getpass": "^0.1.1",
+        "jsbn": "~0.1.0",
+        "safer-buffer": "^2.0.2",
+        "tweetnacl": "~0.14.0"
+      }
+    },
+    "ssri": {
+      "version": "6.0.2",
+      "dev": true,
+      "requires": {
+        "figgy-pudding": "^3.5.1"
+      }
+    },
+    "stable": {
+      "version": "0.1.8",
+      "dev": true
+    },
+    "stackframe": {
+      "version": "1.2.0",
+      "dev": true
+    },
+    "static-extend": {
+      "version": "0.1.2",
+      "dev": true,
+      "requires": {
+        "define-property": "^0.2.5",
+        "object-copy": "^0.1.0"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "0.1.6",
+          "dev": true,
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "dev": true,
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "is-buffer": {
+          "version": "1.1.6",
+          "dev": true
+        },
+        "is-data-descriptor": {
+          "version": "0.1.4",
+          "dev": true,
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "dev": true,
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "is-descriptor": {
+          "version": "0.1.6",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^0.1.6",
+            "is-data-descriptor": "^0.1.4",
+            "kind-of": "^5.0.0"
+          }
+        },
+        "kind-of": {
+          "version": "5.1.0",
+          "dev": true
+        }
+      }
+    },
+    "statuses": {
+      "version": "1.5.0",
+      "dev": true
+    },
+    "stealthy-require": {
+      "version": "1.1.1",
+      "dev": true
+    },
+    "stream-browserify": {
+      "version": "2.0.2",
+      "dev": true,
+      "requires": {
+        "inherits": "~2.0.1",
+        "readable-stream": "^2.0.2"
+      }
+    },
+    "stream-each": {
+      "version": "1.2.3",
+      "dev": true,
+      "requires": {
+        "end-of-stream": "^1.1.0",
+        "stream-shift": "^1.0.0"
+      }
+    },
+    "stream-http": {
+      "version": "2.8.3",
+      "dev": true,
+      "requires": {
+        "builtin-status-codes": "^3.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.3.6",
+        "to-arraybuffer": "^1.0.0",
+        "xtend": "^4.0.0"
+      }
+    },
+    "stream-shift": {
+      "version": "1.0.1",
+      "dev": true
+    },
+    "strict-uri-encode": {
+      "version": "1.1.0",
+      "dev": true
+    },
+    "string_decoder": {
+      "version": "1.1.1",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
+    "string-width": {
+      "version": "4.2.3",
+      "dev": true,
+      "requires": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      }
+    },
+    "string.prototype.padend": {
+      "version": "3.1.3",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.19.1"
+      }
+    },
+    "string.prototype.padstart": {
+      "version": "3.1.3",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.19.1"
+      }
+    },
+    "string.prototype.trimend": {
+      "version": "1.0.4",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      }
+    },
+    "string.prototype.trimstart": {
+      "version": "1.0.4",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      }
+    },
+    "strip-ansi": {
+      "version": "6.0.1",
+      "dev": true,
+      "requires": {
+        "ansi-regex": "^5.0.1"
+      }
+    },
+    "strip-eof": {
+      "version": "1.0.0",
+      "dev": true
+    },
+    "strip-final-newline": {
+      "version": "2.0.0",
+      "dev": true
+    },
+    "strip-indent": {
+      "version": "2.0.0",
+      "dev": true
+    },
+    "strip-json-comments": {
+      "version": "2.0.1",
+      "dev": true
+    },
+    "style-loader": {
+      "version": "0.23.1",
+      "requires": {
+        "loader-utils": "^1.1.0",
+        "schema-utils": "^1.0.0"
+      },
+      "dependencies": {
+        "schema-utils": {
+          "version": "1.0.0",
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        }
+      }
+    },
+    "style-resources-loader": {
+      "version": "1.5.0",
+      "dev": true,
+      "requires": {
+        "glob": "^7.2.0",
+        "loader-utils": "^2.0.0",
+        "schema-utils": "^2.7.0",
+        "tslib": "^2.3.1"
+      },
+      "dependencies": {
+        "loader-utils": {
+          "version": "2.0.2",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^2.1.2"
+          }
+        },
+        "tslib": {
+          "version": "2.3.1",
+          "dev": true
+        }
+      }
+    },
+    "stylehacks": {
+      "version": "4.0.3",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-selector-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-selector-parser": {
+          "version": "3.1.2",
+          "dev": true,
+          "requires": {
+            "dot-prop": "^5.2.0",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        }
+      }
+    },
+    "supports-color": {
+      "version": "5.5.0",
+      "dev": true,
+      "requires": {
+        "has-flag": "^3.0.0"
+      }
+    },
+    "supports-preserve-symlinks-flag": {
+      "version": "1.0.0",
+      "dev": true
+    },
+    "svg-tags": {
+      "version": "1.0.0",
+      "dev": true
+    },
+    "svgo": {
+      "version": "1.3.2",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.4.1",
+        "coa": "^2.0.2",
+        "css-select": "^2.0.0",
+        "css-select-base-adapter": "^0.1.1",
+        "css-tree": "1.0.0-alpha.37",
+        "csso": "^4.0.2",
+        "js-yaml": "^3.13.1",
+        "mkdirp": "~0.5.1",
+        "object.values": "^1.1.0",
+        "sax": "~1.2.4",
+        "stable": "^0.1.8",
+        "unquote": "~1.1.1",
+        "util.promisify": "~1.0.0"
+      },
+      "dependencies": {
+        "css-select": {
+          "version": "2.1.0",
+          "dev": true,
+          "requires": {
+            "boolbase": "^1.0.0",
+            "css-what": "^3.2.1",
+            "domutils": "^1.7.0",
+            "nth-check": "^1.0.2"
+          }
+        },
+        "css-what": {
+          "version": "3.4.2",
+          "dev": true
+        },
+        "dom-serializer": {
+          "version": "0.2.2",
+          "dev": true,
+          "requires": {
+            "domelementtype": "^2.0.1",
+            "entities": "^2.0.0"
+          }
+        },
+        "domutils": {
+          "version": "1.7.0",
+          "dev": true,
+          "requires": {
+            "dom-serializer": "0",
+            "domelementtype": "1"
+          },
+          "dependencies": {
+            "domelementtype": {
+              "version": "1.3.1",
+              "dev": true
+            }
+          }
+        },
+        "nth-check": {
+          "version": "1.0.2",
+          "dev": true,
+          "requires": {
+            "boolbase": "~1.0.0"
+          }
+        }
+      }
+    },
+    "table": {
+      "version": "5.4.6",
+      "dev": true,
+      "requires": {
+        "ajv": "^6.10.2",
+        "lodash": "^4.17.14",
+        "slice-ansi": "^2.1.0",
+        "string-width": "^3.0.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "4.1.0",
+          "dev": true
+        },
+        "emoji-regex": {
+          "version": "7.0.3",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "dev": true
+        },
+        "slice-ansi": {
+          "version": "2.1.0",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^3.2.0",
+            "astral-regex": "^1.0.0",
+            "is-fullwidth-code-point": "^2.0.0"
+          }
+        },
+        "string-width": {
+          "version": "3.1.0",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^7.0.1",
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^5.1.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "5.2.0",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^4.1.0"
+          }
+        }
+      }
+    },
+    "tapable": {
+      "version": "1.1.3",
+      "dev": true
+    },
+    "tar": {
+      "version": "6.1.11",
+      "dev": true,
+      "requires": {
+        "chownr": "^2.0.0",
+        "fs-minipass": "^2.0.0",
+        "minipass": "^3.0.0",
+        "minizlib": "^2.1.1",
+        "mkdirp": "^1.0.3",
+        "yallist": "^4.0.0"
+      },
+      "dependencies": {
+        "chownr": {
+          "version": "2.0.0",
+          "dev": true
+        },
+        "mkdirp": {
+          "version": "1.0.4",
+          "dev": true
+        },
+        "yallist": {
+          "version": "4.0.0",
+          "dev": true
+        }
+      }
+    },
+    "terser": {
+      "version": "4.8.0",
+      "dev": true,
+      "requires": {
+        "commander": "^2.20.0",
+        "source-map": "~0.6.1",
+        "source-map-support": "~0.5.12"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.20.3",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "dev": true
+        }
+      }
+    },
+    "terser-webpack-plugin": {
+      "version": "1.4.5",
+      "dev": true,
+      "requires": {
+        "cacache": "^12.0.2",
+        "find-cache-dir": "^2.1.0",
+        "is-wsl": "^1.1.0",
+        "schema-utils": "^1.0.0",
+        "serialize-javascript": "^4.0.0",
+        "source-map": "^0.6.1",
+        "terser": "^4.1.2",
+        "webpack-sources": "^1.4.0",
+        "worker-farm": "^1.7.0"
+      },
+      "dependencies": {
+        "find-cache-dir": {
+          "version": "2.1.0",
+          "dev": true,
+          "requires": {
+            "commondir": "^1.0.1",
+            "make-dir": "^2.0.0",
+            "pkg-dir": "^3.0.0"
+          }
+        },
+        "is-wsl": {
+          "version": "1.1.0",
+          "dev": true
+        },
+        "make-dir": {
+          "version": "2.1.0",
+          "dev": true,
+          "requires": {
+            "pify": "^4.0.1",
+            "semver": "^5.6.0"
+          }
+        },
+        "pify": {
+          "version": "4.0.1",
+          "dev": true
+        },
+        "pkg-dir": {
+          "version": "3.0.0",
+          "dev": true,
+          "requires": {
+            "find-up": "^3.0.0"
+          }
+        },
+        "schema-utils": {
+          "version": "1.0.0",
+          "dev": true,
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        },
+        "semver": {
+          "version": "5.7.1",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "dev": true
+        }
+      }
+    },
+    "text-table": {
+      "version": "0.2.0",
+      "dev": true
+    },
+    "thenify": {
+      "version": "3.3.1",
+      "dev": true,
+      "requires": {
+        "any-promise": "^1.0.0"
+      }
+    },
+    "thenify-all": {
+      "version": "1.6.0",
+      "dev": true,
+      "requires": {
+        "thenify": ">= 3.1.0 < 4"
+      }
+    },
+    "thread-loader": {
+      "version": "2.1.3",
+      "dev": true,
+      "requires": {
+        "loader-runner": "^2.3.1",
+        "loader-utils": "^1.1.0",
+        "neo-async": "^2.6.0"
+      }
+    },
+    "throttle-debounce": {
+      "version": "1.1.0"
+    },
+    "through": {
+      "version": "2.3.8",
+      "dev": true
+    },
+    "through2": {
+      "version": "2.0.5",
+      "dev": true,
+      "requires": {
+        "readable-stream": "~2.3.6",
+        "xtend": "~4.0.1"
+      }
+    },
+    "thunky": {
+      "version": "1.1.0",
+      "dev": true
+    },
+    "timers-browserify": {
+      "version": "2.0.12",
+      "dev": true,
+      "requires": {
+        "setimmediate": "^1.0.4"
+      }
+    },
+    "timsort": {
+      "version": "0.3.0",
+      "dev": true
+    },
+    "tinymce": {
+      "version": "5.10.2"
+    },
+    "to-arraybuffer": {
+      "version": "1.0.1",
+      "dev": true
+    },
+    "to-fast-properties": {
+      "version": "2.0.0",
+      "dev": true
+    },
+    "to-object-path": {
+      "version": "0.3.0",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "is-buffer": {
+          "version": "1.1.6",
+          "dev": true
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "to-regex": {
+      "version": "3.0.2",
+      "dev": true,
+      "requires": {
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "regex-not": "^1.0.2",
+        "safe-regex": "^1.1.0"
+      }
+    },
+    "to-regex-range": {
+      "version": "2.1.1",
+      "dev": true,
+      "requires": {
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1"
+      }
+    },
+    "toidentifier": {
+      "version": "1.0.1",
+      "dev": true
+    },
+    "toposort": {
+      "version": "1.0.7",
+      "dev": true
+    },
+    "totalist": {
+      "version": "1.1.0",
+      "dev": true
+    },
+    "tryer": {
+      "version": "1.0.1",
+      "dev": true
+    },
+    "tslib": {
+      "version": "1.14.1",
+      "dev": true
+    },
+    "tty-browserify": {
+      "version": "0.0.0",
+      "dev": true
+    },
+    "tunnel-agent": {
+      "version": "0.6.0",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "tweetnacl": {
+      "version": "0.14.5",
+      "dev": true
+    },
+    "type-check": {
+      "version": "0.3.2",
+      "dev": true,
+      "requires": {
+        "prelude-ls": "~1.1.2"
+      }
+    },
+    "type-is": {
+      "version": "1.6.18",
+      "dev": true,
+      "requires": {
+        "media-typer": "0.3.0",
+        "mime-types": "~2.1.24"
+      }
+    },
+    "typedarray": {
+      "version": "0.0.6",
+      "dev": true
+    },
+    "uglify-js": {
+      "version": "3.4.10",
+      "dev": true,
+      "requires": {
+        "commander": "~2.19.0",
+        "source-map": "~0.6.1"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.19.0",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "dev": true
+        }
+      }
+    },
+    "unbox-primitive": {
+      "version": "1.0.1",
+      "dev": true,
+      "requires": {
+        "function-bind": "^1.1.1",
+        "has-bigints": "^1.0.1",
+        "has-symbols": "^1.0.2",
+        "which-boxed-primitive": "^1.0.2"
+      }
+    },
+    "unicode-canonical-property-names-ecmascript": {
+      "version": "2.0.0",
+      "dev": true
+    },
+    "unicode-match-property-ecmascript": {
+      "version": "2.0.0",
+      "dev": true,
+      "requires": {
+        "unicode-canonical-property-names-ecmascript": "^2.0.0",
+        "unicode-property-aliases-ecmascript": "^2.0.0"
+      }
+    },
+    "unicode-match-property-value-ecmascript": {
+      "version": "2.0.0",
+      "dev": true
+    },
+    "unicode-property-aliases-ecmascript": {
+      "version": "2.0.0",
+      "dev": true
+    },
+    "union-value": {
+      "version": "1.0.1",
+      "dev": true,
+      "requires": {
+        "arr-union": "^3.1.0",
+        "get-value": "^2.0.6",
+        "is-extendable": "^0.1.1",
+        "set-value": "^2.0.1"
+      },
+      "dependencies": {
+        "is-extendable": {
+          "version": "0.1.1",
+          "dev": true
+        }
+      }
+    },
+    "uniq": {
+      "version": "1.0.1",
+      "dev": true
+    },
+    "uniqs": {
+      "version": "2.0.0",
+      "dev": true
+    },
+    "unique-filename": {
+      "version": "1.1.1",
+      "dev": true,
+      "requires": {
+        "unique-slug": "^2.0.0"
+      }
+    },
+    "unique-slug": {
+      "version": "2.0.2",
+      "dev": true,
+      "requires": {
+        "imurmurhash": "^0.1.4"
+      }
+    },
+    "universalify": {
+      "version": "0.1.2",
+      "dev": true
+    },
+    "unpipe": {
+      "version": "1.0.0",
+      "dev": true
+    },
+    "unquote": {
+      "version": "1.1.1",
+      "dev": true
+    },
+    "unset-value": {
+      "version": "1.0.0",
+      "dev": true,
+      "requires": {
+        "has-value": "^0.3.1",
+        "isobject": "^3.0.0"
+      },
+      "dependencies": {
+        "has-value": {
+          "version": "0.3.1",
+          "dev": true,
+          "requires": {
+            "get-value": "^2.0.3",
+            "has-values": "^0.1.4",
+            "isobject": "^2.0.0"
+          },
+          "dependencies": {
+            "isobject": {
+              "version": "2.1.0",
+              "dev": true,
+              "requires": {
+                "isarray": "1.0.0"
+              }
+            }
+          }
+        },
+        "has-values": {
+          "version": "0.1.4",
+          "dev": true
+        }
+      }
+    },
+    "upath": {
+      "version": "1.2.0",
+      "dev": true
+    },
+    "upper-case": {
+      "version": "1.1.3",
+      "dev": true
+    },
+    "uri-js": {
+      "version": "4.4.1",
+      "requires": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "urix": {
+      "version": "0.1.0",
+      "dev": true
+    },
+    "url": {
+      "version": "0.11.0",
+      "dev": true,
+      "requires": {
+        "punycode": "1.3.2",
+        "querystring": "0.2.0"
+      },
+      "dependencies": {
+        "punycode": {
+          "version": "1.3.2",
+          "dev": true
+        }
+      }
+    },
+    "url-loader": {
+      "version": "1.1.2",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.1.0",
+        "mime": "^2.0.3",
+        "schema-utils": "^1.0.0"
+      },
+      "dependencies": {
+        "schema-utils": {
+          "version": "1.0.0",
+          "dev": true,
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        }
+      }
+    },
+    "url-parse": {
+      "version": "1.5.4",
+      "dev": true,
+      "requires": {
+        "querystringify": "^2.1.1",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "use": {
+      "version": "3.1.1",
+      "dev": true
+    },
+    "util": {
+      "version": "0.11.1",
+      "dev": true,
+      "requires": {
+        "inherits": "2.0.3"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.3",
+          "dev": true
+        }
+      }
+    },
+    "util-deprecate": {
+      "version": "1.0.2",
+      "dev": true
+    },
+    "util.promisify": {
+      "version": "1.0.0",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.2",
+        "object.getownpropertydescriptors": "^2.0.3"
+      }
+    },
+    "utila": {
+      "version": "0.4.0",
+      "dev": true
+    },
+    "utils-merge": {
+      "version": "1.0.1",
+      "dev": true
+    },
+    "uuid": {
+      "version": "3.4.0",
+      "dev": true
+    },
+    "validate-npm-package-license": {
+      "version": "3.0.4",
+      "dev": true,
+      "requires": {
+        "spdx-correct": "^3.0.0",
+        "spdx-expression-parse": "^3.0.0"
+      }
+    },
+    "vary": {
+      "version": "1.1.2",
+      "dev": true
+    },
+    "vendors": {
+      "version": "1.0.4",
+      "dev": true
+    },
+    "verror": {
+      "version": "1.10.0",
+      "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0",
+        "core-util-is": "1.0.2",
+        "extsprintf": "^1.2.0"
+      },
+      "dependencies": {
+        "core-util-is": {
+          "version": "1.0.2",
+          "dev": true
+        }
+      }
+    },
+    "vm-browserify": {
+      "version": "1.1.2",
+      "dev": true
+    },
+    "vue": {
+      "version": "2.6.14"
+    },
+    "vue-axios": {
+      "version": "2.1.5",
+      "requires": {}
+    },
+    "vue-cli-plugin-style-resources-loader": {
+      "version": "0.1.5",
+      "dev": true
+    },
+    "vue-cropper": {
+      "version": "0.4.9"
+    },
+    "vue-eslint-parser": {
+      "version": "5.0.0",
+      "dev": true,
+      "requires": {
+        "debug": "^4.1.0",
+        "eslint-scope": "^4.0.0",
+        "eslint-visitor-keys": "^1.0.0",
+        "espree": "^4.1.0",
+        "esquery": "^1.0.1",
+        "lodash": "^4.17.11"
+      },
+      "dependencies": {
+        "acorn": {
+          "version": "6.4.2",
+          "dev": true
+        },
+        "espree": {
+          "version": "4.1.0",
+          "dev": true,
+          "requires": {
+            "acorn": "^6.0.2",
+            "acorn-jsx": "^5.0.0",
+            "eslint-visitor-keys": "^1.0.0"
+          }
+        }
+      }
+    },
+    "vue-full-calendar": {
+      "version": "2.8.0",
+      "requires": {
+        "babel-plugin-transform-runtime": "^6.23.0",
+        "fullcalendar": "3.10.1",
+        "lodash.defaultsdeep": "^4.6.0"
+      }
+    },
+    "vue-hot-reload-api": {
+      "version": "2.3.4",
+      "dev": true
+    },
+    "vue-loader": {
+      "version": "15.9.8",
+      "dev": true,
+      "requires": {
+        "@vue/component-compiler-utils": "^3.1.0",
+        "hash-sum": "^1.0.2",
+        "loader-utils": "^1.1.0",
+        "vue-hot-reload-api": "^2.3.0",
+        "vue-style-loader": "^4.1.0"
+      }
+    },
+    "vue-quill-editor": {
+      "version": "3.0.6",
+      "requires": {
+        "object-assign": "^4.1.1",
+        "quill": "^1.3.4"
+      }
+    },
+    "vue-resource": {
+      "version": "1.5.3",
+      "requires": {
+        "got": ">=8.0 <12.0"
+      }
+    },
+    "vue-router": {
+      "version": "3.5.3"
+    },
+    "vue-style-loader": {
+      "version": "4.1.3",
+      "dev": true,
+      "requires": {
+        "hash-sum": "^1.0.2",
+        "loader-utils": "^1.0.2"
+      }
+    },
+    "vue-template-compiler": {
+      "version": "2.6.14",
+      "dev": true,
+      "requires": {
+        "de-indent": "^1.0.2",
+        "he": "^1.1.0"
+      }
+    },
+    "vue-template-es2015-compiler": {
+      "version": "1.9.1",
+      "dev": true
+    },
+    "vuex": {
+      "version": "3.6.2",
+      "requires": {}
+    },
+    "wangeditor": {
+      "version": "4.7.11",
+      "requires": {
+        "@babel/runtime": "^7.11.2",
+        "@babel/runtime-corejs3": "^7.11.2",
+        "tslib": "^2.1.0"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.3.1"
+        }
+      }
+    },
+    "watchpack": {
+      "version": "1.7.5",
+      "dev": true,
+      "requires": {
+        "chokidar": "^3.4.1",
+        "graceful-fs": "^4.1.2",
+        "neo-async": "^2.5.0",
+        "watchpack-chokidar2": "^2.0.1"
+      },
+      "dependencies": {
+        "binary-extensions": {
+          "version": "2.2.0",
+          "dev": true,
+          "optional": true
+        },
+        "braces": {
+          "version": "3.0.2",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "fill-range": "^7.0.1"
+          }
+        },
+        "chokidar": {
+          "version": "3.5.2",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "anymatch": "~3.1.2",
+            "braces": "~3.0.2",
+            "fsevents": "~2.3.2",
+            "glob-parent": "~5.1.2",
+            "is-binary-path": "~2.1.0",
+            "is-glob": "~4.0.1",
+            "normalize-path": "~3.0.0",
+            "readdirp": "~3.6.0"
+          }
+        },
+        "fill-range": {
+          "version": "7.0.1",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "to-regex-range": "^5.0.1"
+          }
+        },
+        "glob-parent": {
+          "version": "5.1.2",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "is-glob": "^4.0.1"
+          }
+        },
+        "is-binary-path": {
+          "version": "2.1.0",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "binary-extensions": "^2.0.0"
+          }
+        },
+        "is-number": {
+          "version": "7.0.0",
+          "dev": true,
+          "optional": true
+        },
+        "readdirp": {
+          "version": "3.6.0",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "picomatch": "^2.2.1"
+          }
+        },
+        "to-regex-range": {
+          "version": "5.0.1",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "is-number": "^7.0.0"
+          }
+        }
+      }
+    },
+    "watchpack-chokidar2": {
+      "version": "2.0.1",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "chokidar": "^2.1.8"
+      }
+    },
+    "wbuf": {
+      "version": "1.7.3",
+      "dev": true,
+      "requires": {
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "wcwidth": {
+      "version": "1.0.1",
+      "dev": true,
+      "requires": {
+        "defaults": "^1.0.3"
+      }
+    },
+    "webpack": {
+      "version": "4.46.0",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-module-context": "1.9.0",
+        "@webassemblyjs/wasm-edit": "1.9.0",
+        "@webassemblyjs/wasm-parser": "1.9.0",
+        "acorn": "^6.4.1",
+        "ajv": "^6.10.2",
+        "ajv-keywords": "^3.4.1",
+        "chrome-trace-event": "^1.0.2",
+        "enhanced-resolve": "^4.5.0",
+        "eslint-scope": "^4.0.3",
+        "json-parse-better-errors": "^1.0.2",
+        "loader-runner": "^2.4.0",
+        "loader-utils": "^1.2.3",
+        "memory-fs": "^0.4.1",
+        "micromatch": "^3.1.10",
+        "mkdirp": "^0.5.3",
+        "neo-async": "^2.6.1",
+        "node-libs-browser": "^2.2.1",
+        "schema-utils": "^1.0.0",
+        "tapable": "^1.1.3",
+        "terser-webpack-plugin": "^1.4.3",
+        "watchpack": "^1.7.4",
+        "webpack-sources": "^1.4.1"
+      },
+      "dependencies": {
+        "acorn": {
+          "version": "6.4.2",
+          "dev": true
+        },
+        "schema-utils": {
+          "version": "1.0.0",
+          "dev": true,
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        }
+      }
+    },
+    "webpack-bundle-analyzer": {
+      "version": "4.5.0",
+      "dev": true,
+      "requires": {
+        "acorn": "^8.0.4",
+        "acorn-walk": "^8.0.0",
+        "chalk": "^4.1.0",
+        "commander": "^7.2.0",
+        "gzip-size": "^6.0.0",
+        "lodash": "^4.17.20",
+        "opener": "^1.5.2",
+        "sirv": "^1.0.7",
+        "ws": "^7.3.1"
+      },
+      "dependencies": {
+        "acorn": {
+          "version": "8.7.0",
+          "dev": true
+        },
+        "acorn-walk": {
+          "version": "8.2.0",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "4.3.0",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "4.1.2",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "dev": true
+        },
+        "commander": {
+          "version": "7.2.0",
+          "dev": true
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "dev": true
+        },
+        "lodash": {
+          "version": "4.17.21",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "dev": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        }
+      }
+    },
+    "webpack-chain": {
+      "version": "4.12.1",
+      "dev": true,
+      "requires": {
+        "deepmerge": "^1.5.2",
+        "javascript-stringify": "^1.6.0"
+      }
+    },
+    "webpack-dev-middleware": {
+      "version": "3.7.3",
+      "dev": true,
+      "requires": {
+        "memory-fs": "^0.4.1",
+        "mime": "^2.4.4",
+        "mkdirp": "^0.5.1",
+        "range-parser": "^1.2.1",
+        "webpack-log": "^2.0.0"
+      }
+    },
+    "webpack-dev-server": {
+      "version": "3.11.3",
+      "dev": true,
+      "requires": {
+        "ansi-html-community": "0.0.8",
+        "bonjour": "^3.5.0",
+        "chokidar": "^2.1.8",
+        "compression": "^1.7.4",
+        "connect-history-api-fallback": "^1.6.0",
+        "debug": "^4.1.1",
+        "del": "^4.1.1",
+        "express": "^4.17.1",
+        "html-entities": "^1.3.1",
+        "http-proxy-middleware": "0.19.1",
+        "import-local": "^2.0.0",
+        "internal-ip": "^4.3.0",
+        "ip": "^1.1.5",
+        "is-absolute-url": "^3.0.3",
+        "killable": "^1.0.1",
+        "loglevel": "^1.6.8",
+        "opn": "^5.5.0",
+        "p-retry": "^3.0.1",
+        "portfinder": "^1.0.26",
+        "schema-utils": "^1.0.0",
+        "selfsigned": "^1.10.8",
+        "semver": "^6.3.0",
+        "serve-index": "^1.9.1",
+        "sockjs": "^0.3.21",
+        "sockjs-client": "^1.5.0",
+        "spdy": "^4.0.2",
+        "strip-ansi": "^3.0.1",
+        "supports-color": "^6.1.0",
+        "url": "^0.11.0",
+        "webpack-dev-middleware": "^3.7.2",
+        "webpack-log": "^2.0.0",
+        "ws": "^6.2.1",
+        "yargs": "^13.3.2"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "2.1.1",
+          "dev": true
+        },
+        "emoji-regex": {
+          "version": "7.0.3",
+          "dev": true
+        },
+        "http-proxy-middleware": {
+          "version": "0.19.1",
+          "dev": true,
+          "requires": {
+            "http-proxy": "^1.17.0",
+            "is-glob": "^4.0.0",
+            "lodash": "^4.17.11",
+            "micromatch": "^3.1.10"
+          }
+        },
+        "is-absolute-url": {
+          "version": "3.0.3",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "dev": true
+        },
+        "schema-utils": {
+          "version": "1.0.0",
+          "dev": true,
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        },
+        "string-width": {
+          "version": "3.1.0",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^7.0.1",
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^5.1.0"
+          },
+          "dependencies": {
+            "ansi-regex": {
+              "version": "4.1.0",
+              "dev": true
+            },
+            "strip-ansi": {
+              "version": "5.2.0",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^4.1.0"
+              }
+            }
+          }
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        },
+        "supports-color": {
+          "version": "6.1.0",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        },
+        "ws": {
+          "version": "6.2.2",
+          "dev": true,
+          "requires": {
+            "async-limiter": "~1.0.0"
+          }
+        },
+        "yargs": {
+          "version": "13.3.2",
+          "dev": true,
+          "requires": {
+            "cliui": "^5.0.0",
+            "find-up": "^3.0.0",
+            "get-caller-file": "^2.0.1",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^2.0.0",
+            "set-blocking": "^2.0.0",
+            "string-width": "^3.0.0",
+            "which-module": "^2.0.0",
+            "y18n": "^4.0.0",
+            "yargs-parser": "^13.1.2"
+          }
+        }
+      }
+    },
+    "webpack-log": {
+      "version": "2.0.0",
+      "dev": true,
+      "requires": {
+        "ansi-colors": "^3.0.0",
+        "uuid": "^3.3.2"
+      }
+    },
+    "webpack-merge": {
+      "version": "4.2.2",
+      "dev": true,
+      "requires": {
+        "lodash": "^4.17.15"
+      }
+    },
+    "webpack-sources": {
+      "version": "1.4.3",
+      "dev": true,
+      "requires": {
+        "source-list-map": "^2.0.0",
+        "source-map": "~0.6.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "dev": true
+        }
+      }
+    },
+    "websocket-driver": {
+      "version": "0.7.4",
+      "dev": true,
+      "requires": {
+        "http-parser-js": ">=0.5.1",
+        "safe-buffer": ">=5.1.0",
+        "websocket-extensions": ">=0.1.1"
+      }
+    },
+    "websocket-extensions": {
+      "version": "0.1.4",
+      "dev": true
+    },
+    "which": {
+      "version": "1.3.1",
+      "dev": true,
+      "requires": {
+        "isexe": "^2.0.0"
+      }
+    },
+    "which-boxed-primitive": {
+      "version": "1.0.2",
+      "dev": true,
+      "requires": {
+        "is-bigint": "^1.0.1",
+        "is-boolean-object": "^1.1.0",
+        "is-number-object": "^1.0.4",
+        "is-string": "^1.0.5",
+        "is-symbol": "^1.0.3"
+      }
+    },
+    "which-module": {
+      "version": "2.0.0",
+      "dev": true
+    },
+    "wmf": {
+      "version": "1.0.2"
+    },
+    "word": {
+      "version": "0.3.0"
+    },
+    "word-wrap": {
+      "version": "1.2.3",
+      "dev": true
+    },
+    "worker-farm": {
+      "version": "1.7.0",
+      "dev": true,
+      "requires": {
+        "errno": "~0.1.7"
+      }
+    },
+    "wrap-ansi": {
+      "version": "5.1.0",
+      "dev": true,
+      "requires": {
+        "ansi-styles": "^3.2.0",
+        "string-width": "^3.0.0",
+        "strip-ansi": "^5.0.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "4.1.0",
+          "dev": true
+        },
+        "emoji-regex": {
+          "version": "7.0.3",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "dev": true
+        },
+        "string-width": {
+          "version": "3.1.0",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^7.0.1",
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^5.1.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "5.2.0",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^4.1.0"
+          }
+        }
+      }
+    },
+    "wrappy": {
+      "version": "1.0.2"
+    },
+    "write": {
+      "version": "1.0.3",
+      "dev": true,
+      "requires": {
+        "mkdirp": "^0.5.1"
+      }
+    },
+    "ws": {
+      "version": "7.5.6",
+      "dev": true,
+      "requires": {}
+    },
+    "xlsx": {
+      "version": "0.16.9",
+      "requires": {
+        "adler-32": "~1.2.0",
+        "cfb": "^1.1.4",
+        "codepage": "~1.14.0",
+        "commander": "~2.17.1",
+        "crc-32": "~1.2.0",
+        "exit-on-epipe": "~1.0.1",
+        "fflate": "^0.3.8",
+        "ssf": "~0.11.2",
+        "wmf": "~1.0.1",
+        "word": "~0.3.0"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.17.1"
+        }
+      }
+    },
+    "xtend": {
+      "version": "4.0.2",
+      "dev": true
+    },
+    "y18n": {
+      "version": "4.0.3",
+      "dev": true
+    },
+    "yallist": {
+      "version": "3.1.1",
+      "dev": true
+    },
+    "yargs": {
+      "version": "16.2.0",
+      "dev": true,
+      "requires": {
+        "cliui": "^7.0.2",
+        "escalade": "^3.1.1",
+        "get-caller-file": "^2.0.5",
+        "require-directory": "^2.1.1",
+        "string-width": "^4.2.0",
+        "y18n": "^5.0.5",
+        "yargs-parser": "^20.2.2"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "cliui": {
+          "version": "7.0.4",
+          "dev": true,
+          "requires": {
+            "string-width": "^4.2.0",
+            "strip-ansi": "^6.0.0",
+            "wrap-ansi": "^7.0.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "dev": true
+        },
+        "wrap-ansi": {
+          "version": "7.0.0",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.0.0",
+            "string-width": "^4.1.0",
+            "strip-ansi": "^6.0.0"
+          }
+        },
+        "y18n": {
+          "version": "5.0.8",
+          "dev": true
+        },
+        "yargs-parser": {
+          "version": "20.2.9",
+          "dev": true
+        }
+      }
+    },
+    "yargs-parser": {
+      "version": "13.1.2",
+      "dev": true,
+      "requires": {
+        "camelcase": "^5.0.0",
+        "decamelize": "^1.2.0"
+      }
+    },
+    "yorkie": {
+      "version": "2.0.0",
+      "dev": true,
+      "requires": {
+        "execa": "^0.8.0",
+        "is-ci": "^1.0.10",
+        "normalize-path": "^1.0.0",
+        "strip-indent": "^2.0.0"
+      },
+      "dependencies": {
+        "cross-spawn": {
+          "version": "5.1.0",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^4.0.1",
+            "shebang-command": "^1.2.0",
+            "which": "^1.2.9"
+          }
+        },
+        "execa": {
+          "version": "0.8.0",
+          "dev": true,
+          "requires": {
+            "cross-spawn": "^5.0.1",
+            "get-stream": "^3.0.0",
+            "is-stream": "^1.1.0",
+            "npm-run-path": "^2.0.0",
+            "p-finally": "^1.0.0",
+            "signal-exit": "^3.0.0",
+            "strip-eof": "^1.0.0"
+          }
+        },
+        "get-stream": {
+          "version": "3.0.0",
+          "dev": true
+        },
+        "lru-cache": {
+          "version": "4.1.5",
+          "dev": true,
+          "requires": {
+            "pseudomap": "^1.0.2",
+            "yallist": "^2.1.2"
+          }
+        },
+        "normalize-path": {
+          "version": "1.0.0",
+          "dev": true
+        },
+        "yallist": {
+          "version": "2.1.2",
+          "dev": true
+        }
+      }
+    },
+    "zrender": {
+      "version": "4.3.2"
+    }
+  }
+}

+ 87 - 0
package.json

@@ -0,0 +1,87 @@
+{
+  "name": "cicv-oa",
+  "version": "0.1.0",
+  "private": true,
+  "scripts": {
+    "serve": "vue-cli-service serve",
+    "build": "vue-cli-service build",
+    "test:unit": "vue-cli-service test:unit",
+    "test:e2e": "vue-cli-service test:e2e",
+    "lint": "vue-cli-service lint"
+  },
+  "dependencies": {
+    "axios": "^0.19.0",
+    "bootstrap": "^4.3.1",
+    "core-js": "^2.6.5",
+    "echarts": "^4.3.0",
+    "element-resize-detector": "^1.1.15",
+    "element-ui": "^2.10.1",
+    "font-awesome": "^4.7.0",
+    "jquery": "^3.4.1",
+    "js-file-download": "^0.4.8",
+    "moment": "^2.24.0",
+    "popper.js": "^1.15.0",
+    "quill-image-drop-module": "^1.0.3",
+    "quill-image-resize-module": "^3.0.0",
+    "spark-md5": "^3.0.1",
+    "style-loader": "^0.23.1",
+    "tinymce": "^5.1.5",
+    "vue": "^2.6.10",
+    "vue-axios": "^2.1.4",
+    "vue-cropper": "^0.4.9",
+    "vue-full-calendar": "^2.7.0",
+    "vue-quill-editor": "^3.0.6",
+    "vue-resource": "^1.5.1",
+    "vue-router": "^3.0.7",
+    "vuex": "^3.1.1",
+    "wangeditor": "^4.6.3",
+    "xlsx": "^0.16.9"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.12.10",
+    "@babel/plugin-transform-runtime": "^7.12.10",
+    "@babel/preset-env": "^7.12.11",
+    "@vue/cli-plugin-babel": "^3.9.0",
+    "@vue/cli-plugin-eslint": "^3.9.0",
+    "@vue/cli-service": "^3.9.0",
+    "babel-eslint": "^10.0.2",
+    "babel-loader": "^8.2.2",
+    "babel-plugin-transform-remove-console": "^6.9.4",
+    "babel-polyfill": "^6.26.0",
+    "compression-webpack-plugin": "^5.0.0",
+    "es6-promise": "^4.2.8",
+    "eslint": "^5.16.0",
+    "eslint-plugin-vue": "^5.0.0",
+    "less": "^3.9.0",
+    "less-loader": "^5.0.0",
+    "mockjs": "^1.0.1-beta3",
+    "style-resources-loader": "^1.2.1",
+    "vue-cli-plugin-style-resources-loader": "^0.1.3",
+    "vue-template-compiler": "^2.6.10",
+    "webpack-bundle-analyzer": "^4.4.0"
+  },
+  "eslintConfig": {
+    "root": true,
+    "env": {
+      "node": true,
+      "jquery": true
+    },
+    "extends": [
+      "plugin:vue/essential",
+      "eslint:recommended"
+    ],
+    "rules": {},
+    "parserOptions": {
+      "parser": "babel-eslint"
+    }
+  },
+  "postcss": {
+    "plugins": {
+      "autoprefixer": {}
+    }
+  },
+  "browserslist": [
+    "> 1%",
+    "last 2 versions"
+  ]
+}

BIN=BIN
public/favicon.ico


+ 18 - 0
public/index.html

@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html lang="">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width,initial-scale=1.0">
+    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
+    <!-- <title><%= htmlWebpackPlugin.options.title %></title> -->
+    <title>仿真云平台</title>
+  </head>
+  <body>
+    <noscript>
+      <strong>We're sorry but 仿真云平台 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
+    </noscript>
+    <div id="app"></div>
+    <!-- built files will be auto injected -->
+  </body>
+</html>

+ 16 - 0
src/App.vue

@@ -0,0 +1,16 @@
+<template>
+    <div id="app">
+        <router-view></router-view>
+    </div>
+</template>
+
+<style lang="less">
+#app {
+    min-width: 1335px;
+    width: 100%;
+    height: 100%;
+    margin: 0;
+    padding: 0;
+    overflow: hidden;
+}
+</style>

+ 8 - 0
src/api/common.js

@@ -0,0 +1,8 @@
+const basePart = '';
+const single = '/simulation/oauth/client/sign/single';
+
+export default {
+    single,
+}
+
+//10.15.12.74:7001/simulation/oauth/client/sign/single?code=1001&ticket=1001

+ 10 - 0
src/api/index.js

@@ -0,0 +1,10 @@
+import Vue from "vue";
+
+import common from './common.js'
+
+const api = {
+    common,
+}
+
+export default api;
+Vue.prototype.$api = api;

BIN=BIN
src/assets/common/css/fonts/element-icons.eot


BIN=BIN
src/assets/common/css/fonts/element-icons.ttf


BIN=BIN
src/assets/common/css/fonts/element-icons.woff


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
src/assets/common/css/index.css


+ 245 - 0
src/assets/common/css/reset.css

@@ -0,0 +1,245 @@
+@charset "utf-8";
+
+/* CSS Document */
+body {
+    background: #fff;
+    height: 100%;
+    font-size: 14px;
+    color: #666666 !important;
+    font-family: Microsoft YaHei;
+}
+
+body,
+div,
+dl,
+dt,
+dd,
+ul,
+ol,
+li,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+pre,
+form,
+fieldset,
+input,
+textarea,
+p,
+blockquote,
+th,
+td {
+    margin: 0;
+    padding: 0;
+}
+
+fieldset,
+img {
+    border: 0 none;
+    /*有些浏览器默认这些标签有边框,所以要清除默认边框*/
+}
+
+address,
+caption,
+cite,
+code,
+dfn,
+em,
+i,
+u,
+b,
+strong,
+th,
+var {
+    /* font-style: normal;
+    font-weight: normal;*/
+    /*清除标签默认文本样式和加粗*/
+    font-family: Microsoft YaHei;
+}
+
+input,
+textarea {
+    outline: 0 none;
+    /*去掉文本框的默认轮廓线*/
+}
+
+li {
+    list-style: none;
+    /*清除列表默认样式*/
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+    font-size: 100%;
+    font-weight: normal;
+    /*清除标题标签的默认样式*/
+}
+
+a {
+    text-decoration: none;
+}
+
+.clearfix:after {
+    height: 0;
+    content: " ";
+    display: block;
+    overflow: hidden;
+    clear: both;
+}
+
+.mainContent div {
+    box-sizing: border-box;
+}
+
+.el-tree>.el-tree-node {
+    min-width: 100%;
+    display: inline-block;
+}
+
+.el-table {
+    overflow-x: auto;
+}
+
+.el-input.is-disabled .el-input__inner {
+    background-color: #ffffff;
+    color: #606266;
+}
+
+.el-message-box__message p {
+    word-break: break-all;
+}
+
+/* .el-dialog__header {
+    box-sizing: border-box;
+    height: 35px;
+    line-height: 35px;
+    padding: 1px 18px 0;
+    font-size: 16px;
+    background-color: #367DE5;
+}
+
+.el-dialog__body {
+    padding: 21px 41px 34px;
+}
+
+.el-dialog__footer {
+    padding: 0 41px 29px;
+    text-align: center;
+}
+
+.el-dialog__footer .el-button+.el-button {
+    margin-left: 38px;
+}
+
+.el-dialog__title {
+    color: #FFFFFF;
+}
+
+.el-dialog__headerbtn {
+    top: 12px;
+    height: 18px;
+    line-height: 18px;
+}
+
+.el-dialog__headerbtn .el-dialog__close {
+    color: #FFFFFF;
+}
+
+.el-dialog__headerbtn:focus .el-dialog__close,
+.el-dialog__headerbtn:hover .el-dialog__close {
+    color: #FFFFFF;
+} */
+
+.el-button--primary.is-plain {
+    background: transparent;
+    border-color: #367DE5;
+}
+
+.tras-icon {
+    transform: rotate(180deg);
+    -ms-transform: rotate(180deg);
+    /* IE 9 */
+    -moz-transform: rotate(180deg);
+    /* Firefox */
+    -webkit-transform: rotate(180deg);
+    /* Safari 和 Chrome */
+    -o-transform: rotate(180deg);
+}
+
+/*列表顶部查询需要的样式*/
+/* .tableTop {
+    margin-bottom: 10px;
+    display: flex;
+} */
+
+/* .searchPart {
+    display: flex;
+    justify-content: flex-end;
+    width: 200px;
+} */
+
+/* .topBtn {
+    margin: 0px 5px;
+} */
+
+/* .searchWrap {
+    display: flex;
+    flex-wrap: wrap;
+    align-items: center;
+    justify-content: space-between;
+    width: 100%;
+} */
+
+
+/* .searchSpan {
+    display: -moz-inline-box;
+    display: inline-block;
+    width: 100px;
+    text-align: right;
+} */
+
+/* .search-name {
+    box-sizing: border-box;
+    width: calc(100% - 100px) !important;
+} */
+
+
+.el-table th,
+.el-table td {
+    text-align: center;
+    color: #4A4A4A;
+    font-family: Microsoft YaHei;
+}
+
+.el-table a,
+.el-table span,
+.el-table th,
+.el-table td {
+    font-size: 12px !important;
+}
+
+.el-table td.is-left {
+    text-align: left;
+}
+
+.el-table td.is-right {
+    text-align: right;
+}
+
+.el-notification {
+    background-color: #f7fafe;
+}
+
+* {
+    box-sizing: border-box;
+    font-family: Microsoft YaHei;
+    -webkit-text-size-adjust: 100%;
+}
+

+ 836 - 0
src/assets/common/css/theme.less

@@ -0,0 +1,836 @@
+//header相关
+// @headerHeight: 65px;
+// @headerBg: #164489;
+// @docColor: #f52323;
+
+// 蓝湖UI规范 颜色、字体大小 less变量设置
+@themeColor: #3397FF; //链接/按钮 #409EFF#DA3947
+@greenA: #67C239;
+@greenBgA: #F0F9EA;
+@orangeA: #CB7C2C;
+@orangeBgA: #FFE9CE;
+@lightBlueA: #2CA8CB;
+@lightBlueBgA: #E8F9FE;
+@purpleA: #7B2CCB;
+@purpleBgA: #F3ECFD;
+// @hoverColor: #b81c24; //链接/按钮悬停
+// @aideYellow: #fbc02d; //辅助色1
+// @aideBlue: #03a9f4; //辅助色2#409EFF
+// @deepBlack: #282828; //最深色
+// @grayColor: #8c8c8c; //灰色
+// @successColor: #00c07c; //成功提示
+// @errorColor: #da3947; //错误提示
+// @textColor1: #282828; //一级文字
+// @textColor2: #595959; //二级文字
+// @textColor3: #8c8c8c; //三级文字
+// @placeholderColor: #bfbfbf; //输入框空状态文字
+// @borderColor: #d9d9d9; //一级背景
+// @borderColor2: #ebeef5; //边框颜色
+// @bgGray: #fafafa; //背景
+// @bgWhite: #fff; //页面背景
+// @bgTransparent: transparent; //透明
+// //胡立国添加fwForm使用颜色begin
+// @fwFormColor: #f52323; //表单主题颜色
+// @inputBorder: #bfbfbf; //input输入框边框
+// @inputFocus: #409eff; //点击input颜色
+// @biaotou: #ccebf8; //表头颜色
+// //胡立国添加fwForm使用颜色end
+// @fontSize30: 30px; //一般是网站最重要的标题,也可以用于阿拉伯数字等
+// @fontSize24: 24px; //一般用于页面标题
+// @fontSize16: 16px; //用于二级页面标题或者阅读文段
+// @fontSize14: 14px; //用于表头,表单列表,导航,输入框
+// @fontSize12: 12px; //用于说明性文字,次要文字信息
+
+// @padding80: 80px; //用于内容区距footer区的距离
+// @padding40: 40px; //用于内容区大间距
+// @padding24: 24px; //用于同区内中间距
+// @padding20: 20px;
+// @padding16: 16px; //用于同区内次间距,也可是12px
+// @padding12: 12px; //用于同区内次间距
+@padding10: 10px; //用于同区内次间距
+// @padding8: 8px; //用于同区内小间距,也可是4px
+// @padding7: 7px;
+// @padding4: 4px; //用于同区内小间距
+
+// .main-wraper {
+//     padding: 0 @padding24;
+// }
+
+// .move-right {
+//     float: right;
+// }
+
+// .page-title {
+//     //页面大标题
+//     padding: 0 0 24px 0;
+//     border-bottom: 1px solid #d8d8d8;
+//     font-size: 30px;
+//     color: #282828;
+//     font-weight: 700;
+// }
+
+// /*tab切换*/
+// .conditionWrapper {
+//     margin-bottom: 0 !important;
+//     border-bottom: 1px solid @borderColor;
+// }
+
+// .conditionBox {
+//     margin-bottom: -1px;
+// }
+
+// .condition {
+//     width: 114px;
+//     float: left;
+//     margin-right: 3px;
+//     line-height: 40px;
+//     border: 1px solid @borderColor;
+//     border-bottom: none;
+//     border-radius: 4px 4px 0 0;
+//     font-size: 14px;
+//     text-align: center;
+//     color: #666666;
+//     cursor: pointer;
+// }
+
+// .condition.active {
+//     color: @themeColor;
+//     background-color: @bgGray;
+// }
+
+// .main-wraper .el-dropdown-link {
+//     cursor: pointer;
+//     color: @themeColor;
+// }
+
+// .a-link {
+//     color: @themeColor;
+//     cursor: pointer;
+// }
+
+// .el-table th {
+//     background-color: @bgGray;
+// }
+
+// // table边框
+// .el-table td,
+// .el-table th.is-leaf {
+//     border-bottom: 1px solid #c9c9c9;
+//     //border-bottom: 1px solid @borderColor;
+// }
+
+// .el-table--border td,
+// .el-table--border th,
+// .el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed {
+//     border-right: 1px solid #c9c9c9;
+// }
+
+// .el-table--border,
+// .el-table--group {
+//     border: 1px solid #c9c9c9;
+//     border-right: none;
+//     border-bottom: none;
+// }
+
+// .el-table--border::after,
+// .el-table--group::after,
+// .el-table::before {
+//     background-color: #c9c9c9;
+// }
+
+// /**  el-form  **/
+// .df-form {
+//     .df-form-title {
+//         font-size: 24px;
+//         letter-spacing: 3px;
+//         color: @textColor1;
+//         padding: 10px 0 5px 50px;
+//         text-align: left;
+//         border-bottom: 2px solid @borderColor;
+//         margin: 0 20px 15px 20px;
+//     }
+
+//     table {
+//         width: 80%;
+//         margin: auto;
+//         border-collapse: collapse;
+//         height: 30px;
+//         line-height: 30px;
+//         border: 1px solid #fff;
+//     }
+
+//     td {
+//         border: 1px solid #fff;
+//         text-align: center;
+//     }
+
+//     .td-bg-color {
+//         background-color: @bgGray;
+//     }
+
+//     .td-bg-color.is-required:before {
+//         content: "*";
+//         color: #f56c6c;
+//         margin-right: 4px;
+//     }
+
+//     .td-w-1 {
+//         width: 10%;
+//     }
+
+//     .td-w-2 {
+//         width: 20%;
+//     }
+
+//     .td-w-3 {
+//         width: 30%;
+//     }
+
+//     .td-w-4 {
+//         width: 40%;
+//     }
+
+//     .td-w-5 {
+//         width: 50%;
+//     }
+
+//     .td-w-6 {
+//         width: 60%;
+//     }
+
+//     .td-w-7 {
+//         width: 70%;
+//     }
+
+//     .td-w-8 {
+//         width: 80%;
+//     }
+
+//     .td-w-9 {
+//         width: 90%;
+//     }
+
+//     .td-w-10 {
+//         width: 100%;
+//     }
+
+//     .el-form-item {
+//         margin-bottom: unset;
+
+//         .el-form-item__content {
+
+//             .el-input,
+//             .inline-input {
+//                 width: 100%;
+//             }
+//         }
+//     }
+
+//     .el-form-item__error {
+//         position: absolute;
+//         left: auto;
+//         right: 0px;
+//         top: 50%;
+//         padding-top: 0px;
+//         transform: translate(-10%, -50%);
+//     }
+// }
+
+// /**时间选择el-time-picker添加禁用提示**/
+// .myTimeTip {
+//     width: 300px;
+// }
+
+// .myTimeTip .el-time-spinner__item.disabled {
+//     position: relative;
+// }
+
+// .myTimeTip .el-time-spinner__item.disabled:after {
+//     position: absolute;
+//     padding-left: 3px;
+//     color: #c0c4cc;
+//     content: "(不可用)";
+//     z-index: 2;
+// }
+
+.padBot60 {
+    padding-bottom: 60px;
+}
+
+.marRt0 {
+    margin-right: 0;
+}
+
+.searchLayoutBox {
+    padding: 22px 36px 0;
+    border: 1px solid #dfdfdf;
+    box-shadow: 0 4px 9px #dcdcdc;
+    border-radius: 3px;
+}
+
+.inputBox {
+    .label {
+        display: inline-block;
+        min-width: 60px;
+        margin-right: 20px;
+        line-height: 32px;
+        text-align: right;
+    }
+}
+
+/deep/ .el-input {
+    width: 230px;
+}
+
+/deep/ .el-pagination__editor.el-input {
+    width: 50px;
+}
+
+.el-table {
+    // .el-table__cell {
+    //     padding: 0;
+    // }
+
+    .elIcon {
+        margin-right: 20px;
+        font-size: 16px;
+        color: @themeColor;
+        cursor: pointer;
+
+        &:last-child {
+            margin-right: 0;
+        }
+    }
+}
+
+.flexBox {
+    display: flex;
+    flex: 1;
+    flex-wrap: wrap;
+}
+
+.cursor {
+    cursor: pointer;
+}
+
+.el-dialog {
+
+    .el-input,
+    .el-select {
+        width: 100%;
+
+        /deep/ .el-input {
+            width: 100%;
+        }
+    }
+}
+
+.titlePanelBor {
+    padding-left: 9px;
+    border-left: 6px solid @themeColor;
+    font-weight: bold;
+    line-height: 1.08;
+    color: @themeColor;
+}
+
+/deep/ .el-checkbox {
+    margin-right: 48px;
+}
+
+[class*=" my-icon-"],
+[class^=my-icon-] {
+    font-family: element-icons !important;
+    font-style: normal;
+    font-weight: 400;
+    font-variant: normal;
+    text-transform: none;
+    line-height: 1;
+    vertical-align: baseline;
+    display: inline-block;
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
+}
+
+
+
+
+
+
+
+
+
+
+
+/**
+* **xx提供的UI优化代码
+*/
+// element 主题色
+@--color-primary: #3397FF;
+// @--font-path: '~element-ui/lib/theme-chalk/fonts';
+// @import "~element-ui/packages/theme-chalk/src/index.scss";
+@grayLine: #e5e5e5;
+@lightColor: #3397FF;
+@tableTitleBg: #f5f6fa;
+@gray: #b2b2b2;
+@color: #666666;
+@grayBg: #cccccc;
+
+
+.el-form-item__content {
+    line-height: 32px;
+}
+
+.el-form-item__label {
+    line-height: 32px;
+    padding: 0 20px 0 0;
+}
+
+// elemen ui 表单 input样式更改
+.el-input__inner {
+    height: 32px;
+    line-height: normal;
+    border: 1px solid @grayLine;
+}
+
+.el-input__icon {
+    line-height: 32px;
+}
+
+// elemen ui 表单 textarea样式更改
+.el-textarea__inner {
+    height: 80px;
+    border: 1px solid @grayLine;
+}
+
+// elemen ui 表单 单选按钮样式更改
+.el-radio__input {
+    line-height: 16px;
+}
+
+.el-radio__inner {
+    width: 16px;
+    height: 16px;
+    border: 1px solid @grayLine;
+}
+
+.el-radio__input.is-checked .el-radio__inner {
+    background: transparent;
+}
+
+.el-radio__inner:after {
+    width: 10px;
+    height: 10px;
+    background-color: @lightColor;
+}
+
+.el-radio__input.is-disabled .el-radio__inner {
+    background-color: @tableTitleBg;
+    border-color: #E5E5E5;
+}
+
+.el-radio__input.is-disabled .el-radio__inner {
+    border-color: #E5E5E5;
+    background-color: #F5F6Fa;
+}
+
+// elemen ui 表单 多选按钮样式更改
+.el-checkbox-group {
+    font-size: 12px;
+}
+
+.el-checkbox__inner {
+    border: 1px solid @gray;
+}
+
+// elemen ui 表格样式更改
+.el-table::before {
+    background-color: @grayLine;
+}
+
+.el-table td {
+    border-bottom: 1px solid @grayLine;
+}
+
+.el-table th {
+    padding: 0;
+    background-color: @tableTitleBg;
+    border-bottom: none !important;
+    color: @color;
+
+    .cell {
+        line-height: 40px;
+        font-size: 12px;
+    }
+}
+
+.el-table td {
+    padding: 8px 0;
+    font-size: 12px;
+    height: 40px;
+}
+
+// .el-table tr:hover td {
+//     background: #fff !important;
+// }
+
+.el-table .cell {
+    overflow: hidden;
+    // text-overflow: ellipsis;
+    // white-space: nowrap;
+}
+
+// table filer
+.el-table-filter__list {
+    max-height: 200px;
+    overflow: auto;
+
+    li {
+        max-width: 200px;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+        word-break: normal;
+        word-wrap: normal;
+        line-height: 30px;
+        font-size: 12px;
+    }
+
+    li:hover,
+    .el-table-filter__list-item.is-active {
+        background-color: @grayBg;
+        color: @lightColor;
+    }
+}
+
+// elemen ui 表单 划过 样式更改
+.el-input__inner:hover,
+.el-radio__inner:hover,
+.el-textarea__inner:hover,
+.el-checkbox__inner:hover,
+.el-select .el-input__inner:hover {
+    border: 1px solid @gray;
+}
+
+.el-select-dropdown__item.hover,
+.el-select-dropdown__item:hover,
+.el-dropdown-menu__item:not(.is-disabled):hover,
+.el-dropdown-menu__item:focus {
+    background: @grayBg;
+}
+
+/*按钮样式更改*/
+//按钮最小宽度更改 默认按钮
+.el-button {
+    padding: 8px 15px;
+    min-width: 88px;
+    color: @color;
+    border-color: @grayLine;
+}
+
+.el-button:focus {
+    color: @color;
+    border-color: @grayLine;
+    background-color: #fff;
+}
+
+.el-button:hover,
+.el-button:active {
+    color: #fff;
+    border-color: @grayLine;
+    background-color: @gray;
+}
+
+// 蓝色朴素按钮
+.el-button--primary.is-plain {
+    background: #fff;
+    border-color: @lightColor;
+    color: @lightColor;
+}
+
+.el-button--primary.is-plain:active {
+    background: @lightColor;
+    border-color: @lightColor;
+    color: #fff;
+}
+
+.el-button--primary.is-plain:focus {
+    background: #fff;
+    border-color: @lightColor;
+    color: @lightColor;
+}
+
+.el-button--primary.is-plain:hover {
+    background: @lightColor;
+    border-color: @lightColor;
+    color: #fff;
+    ;
+}
+
+// 蓝色主要按钮
+.el-button--primary {
+    color: #fff;
+    border-color: @lightColor;
+}
+
+.el-button--primary:hover,
+.el-button--primary:active,
+.el-button--primary:focus {
+    color: #fff;
+    border-color: @lightColor;
+    background-color: @lightColor;
+}
+
+//.el-button--primary:hover, .el-button--primary:focus{background:@lightColor;}
+//灰色按钮
+.el-button--info.is-plain {
+    background: #fff;
+    border-color: @gray;
+    color: #666;
+
+    &:hover {
+        color: #fff;
+        background: @gray;
+    }
+
+    &:active {
+        background: #a2a2a2;
+        color: #fff;
+    }
+}
+
+.el-button--primary.is-disabled.disabledBtn {
+    color: #666;
+    background: #f1f1f1;
+    border: 1px solid #dedede;
+    cursor: default;
+}
+
+// 禁用按钮
+.el-button--info.is-plain.is-disabled,
+.el-button--info.is-plain.is-disabled:hover,
+.el-button--info.is-plain.is-disabled:focus,
+.el-button--info.is-plain.is-disabled:active {
+    color: @gray;
+    background-color: @tableTitleBg;
+    border-color: #e5e5e5;
+}
+
+// 文字按钮
+.el-button--text {
+    border-color: transparent;
+    color: @lightColor;
+    min-width: 0;
+    background: transparent;
+    padding-left: 0;
+    padding-right: 0;
+}
+
+.el-button--text:hover,
+.el-button--text:active,
+.el-button--text:focus {
+    color: @lightColor;
+    background-color: transparent;
+    border-color: transparent;
+}
+
+.el-button--small {
+    padding: 9px 15px;
+}
+
+//修改tab切换 样式
+.el-tabs__item {
+    width: 100px;
+    text-align: center;
+    padding: 0;
+    color: @color;
+}
+
+
+.el-tabs__nav-wrap::after {
+    height: 1px;
+    background-color: @grayLine;
+}
+
+.el-tabs--border-card {
+    box-shadow: 0 0 0 0;
+    -webkit-box-shadow: 0 0 0 0;
+}
+
+.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2) {
+    padding-left: 0 !important;
+}
+
+// 修改表单边框颜色(验证,focus)
+.el-form-item.is-error .el-input__inner,
+.el-form-item.is-error .el-input__inner:focus,
+.el-form-item.is-error .el-textarea__inner,
+.el-form-item.is-error .el-textarea__inner:focus {
+    border-color: @grayLine;
+}
+
+.el-form-item.is-success .el-input__inner,
+.el-form-item.is-success .el-input__inner:focus,
+.el-form-item.is-success .el-textarea__inner,
+.el-form-item.is-success .el-textarea__inner:focus {
+    border-color: @grayLine;
+}
+
+.el-form-item.is-error .el-input__inner:hover,
+.el-form-item.is-error .el-textarea__inner:hover,
+s {
+    border-color: @gray;
+}
+
+.el-form-item.is-success .el-input__inner:hover,
+.el-form-item.is-success .el-textarea__inner:hover {
+    border-color: @gray;
+}
+
+.el-input__inner:focus,
+.el-textarea__inner:focus,
+.el-select .el-input__inner:focus,
+.el-select .el-input.is-focus .el-input__inner {
+    border-color: @grayLine;
+}
+
+//修改复选框字体颜色
+.el-checkbox {
+    color: @color;
+    margin-right: 0;
+}
+
+.el-checkbox__input.is-checked+.el-checkbox__label {
+    color: @color;
+}
+
+.el-message {
+    top: 60px;
+    min-width: 0;
+    padding-right: 20px;
+}
+
+.el-message-box {
+    width: 460px;
+    padding: 5px 5px 20px 5px;
+
+    .el-message-box__content {
+        color: @color;
+        padding: 20px 15px 25px;
+    }
+
+    .el-message-box__header {
+        .el-message-box__title {
+            font-size: 16px;
+            color: @color;
+        }
+
+        .el-message-box__headerbtn {
+            top: 12px;
+        }
+    }
+
+    .el-message-box__message {
+        p {
+            word-break: break-all;
+        }
+    }
+}
+
+.el-message-box__btns button:nth-child(1) {
+    margin-left: 10px;
+    float: right;
+}
+
+.cancel-left {
+    float: right;
+    margin-left: 15px;
+    font-size: 14px;
+}
+
+.size14 {
+    font-size: 14px;
+}
+
+// dialog
+.el-dialog__title {
+    font-size: 16px;
+    color: @color;
+}
+
+.el-dialog__body {
+    padding: 20px 20px;
+}
+
+// 不加粗
+.el-pagination {
+    font-weight: normal;
+}
+
+.el-select-dropdown__item.selected {
+    font-weight: normal;
+}
+
+// loding 颜色
+.el-upload .el-loading-mask {
+    background-color: rgba(255, 255, 255, 0.5);
+}
+
+.el-loading-spinner {
+    .el-loading-text {
+        color: #fff;
+    }
+}
+
+.el-loading-spinner {
+    i {
+        color: #fff;
+    }
+}
+
+.el-upload-list__item-name {
+    margin-right: 110px;
+}
+
+/* tree划过选中样式 */
+.el-tree .el-tree-node .el-tree-node__content {
+    height: 30px;
+    line-height: 30px;
+}
+
+.el-tree .el-tree-node__label {
+    font-size: 12px;
+}
+
+.el-tree .el-tree-node[aria-disabled=true] {
+    color: #ccc;
+}
+
+.el-tree-node__content:hover {
+    background-color: transparent;
+}
+
+.el-tree-node:focus>.el-tree-node__content {
+    background-color: transparent;
+}
+
+.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
+    background-color: transparent;
+    color: @lightColor;
+}
+
+.classify-select {
+    .el-tree-node__content {
+        cursor: default;
+    }
+}
+
+//截图回显隐藏对勾图标
+.el-upload-list__item.is-success .el-upload-list__item-status-label {
+    display: none;
+}
+
+//抽屉弹框的标题样式修改
+.el-drawer__header {
+    font-size: 16px;
+    color: @color;
+}

BIN=BIN
src/assets/common/image/car.png


BIN=BIN
src/assets/common/image/menu/icon.png


BIN=BIN
src/assets/common/image/menu/iconFold.png


BIN=BIN
src/assets/common/image/menu/menuA.png


BIN=BIN
src/assets/common/image/menu/menuB.png


BIN=BIN
src/assets/common/image/menu/menuC.png


BIN=BIN
src/assets/common/image/menu/menuD.png


BIN=BIN
src/assets/common/image/menu/menuE.png


BIN=BIN
src/assets/common/image/menu/menuF.png


BIN=BIN
src/assets/common/image/photoF.png


BIN=BIN
src/assets/common/image/photoH.png


BIN=BIN
src/assets/common/image/photoS.png


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
src/assets/common/image/userIcon.txt


BIN=BIN
src/assets/logo.png


+ 90 - 0
src/axios/filter.js

@@ -0,0 +1,90 @@
+import axios from 'axios'
+import VueAxios from 'vue-axios'
+import Vue from 'vue'
+import ElementUI, {
+    Loading
+} from 'element-ui';
+
+let loading //定义loading变量
+
+function startLoading() { //使用Element loading-start 方法
+    loading = Loading.service({
+        text: '请稍等...',
+        background: 'rgba(0, 0, 0, 0.2)'
+    })
+}
+
+function endLoading() { //使用Element loading-close 方法
+    loading.close()
+}
+
+let needLoadingRequestCount = 0
+export function showFullScreenLoading() {
+    if (needLoadingRequestCount === 0) {
+        startLoading()
+    }
+    needLoadingRequestCount++
+}
+
+export function tryHideFullScreenLoading() {
+    if (needLoadingRequestCount <= 0) return
+    needLoadingRequestCount--
+    if (needLoadingRequestCount === 0) {
+        endLoading()
+    }
+}
+
+
+//axios配置和处理
+Vue.use(VueAxios, axios);
+axios.defaults.baseURL = ''; //项目的的基础url
+axios.defaults.headers.common['Authorization'] = ""; //请求token信息配置
+axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; //请求type设置
+axios.defaults.timeout = 10000; //在超时前,所有请求都会等待10秒
+axios.defaults.withCredentials = true;
+
+// 添加请求拦截器
+axios.interceptors.request.use(function (config) {
+    // 在发送请求之前处理
+    // 判断token在前台session中是否存在
+    config.headers.common['Authorization'] = localStorage.getItem('Authorization');
+    showFullScreenLoading();
+    return config;
+}, function (error) {
+    // 对请求错误做处理
+    return Promise.reject(error);
+});
+// 添加响应拦截器
+axios.interceptors.response.use(function (response) {
+    // 对响应数据处理
+    tryHideFullScreenLoading();
+    if (response && (response.status == 200)) {
+        if (response.data.exceptionMes) {
+            ElementUI.MessageBox({
+                type: 'info',
+                title: response.data.exceptionMes,
+                message: '网络错误,请稍后再试!'
+            });
+        }
+        return response.data;
+
+    }
+    return response;
+}, function (error) {
+    tryHideFullScreenLoading();
+    // 对响应错误处理
+    // if (error.response && error.response.status == 401) {
+    //     //去登陆 执行login
+    //     localStorage.removeItem('Authorization');
+    //     window.location.reload();
+    // }
+    /*if (error.response && error.response.status == 500) {
+        ElementUI.MessageBox({
+            title: '提示',
+            message: '服务器未启动或正在重启,请稍后再试!'
+        });
+    }*/
+    return Promise.reject(error);
+});
+
+Vue.prototype.$axios = axios; //定义调用方式

+ 47 - 0
src/components/HelloWorld.vue

@@ -0,0 +1,47 @@
+<template>
+  <div class="hello">
+    <h1>{{ msg }}</h1>
+    <p>
+      For a guide and recipes on how to configure / customize this project,<br />
+      check out the
+      <a href="https://cli.vuejs.org" target="_blank" rel="noopener"
+        >vue-cli documentation</a
+      >.
+    </p>
+    <h3>Installed CLI Plugins</h3>
+    <ul>
+      <li>
+        <a
+          href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel"
+          target="_blank"
+          rel="noopener">babel</a>
+      </li>
+    </ul>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "HelloWorld",
+  props: {
+    msg: String,
+  },
+};
+</script>
+
+<style scoped lang="less">
+h3 {
+  margin: 40px 0 0;
+}
+ul {
+  list-style-type: none;
+  padding: 0;
+}
+li {
+  display: inline-block;
+  margin: 0 10px;
+}
+a {
+  color: #42b983;
+}
+</style>

+ 915 - 0
src/components/grid/TableList.vue

@@ -0,0 +1,915 @@
+/**
+*  table公共组件
+*  @params
+***
+*  :getDataWay 获取表格数据的方式,1.通过url方式2.通过数据数组方式3.请求方式type:"post"|"get",默认"post"
+*  :columns 表格列
+*  :caption 表名
+*  :tableScale 表格放大倍数
+*  :tableSize  表格字体大小
+*  :pagination  分页:pagination值为空默认分页 ;pagination不为空自定义分页;不传,默认不分页
+*  :needLoading 在表格加载数据时显示,默认不显示
+*  :spanMethod 合并行或列(方法)
+*  :rowClassName 行的 className 的回调方法,也可以使用字符串为所有行设置一个固定的 className。	Function({row, rowIndex})/String
+*  :getCheckedData.sync  选中的数据
+*  getCurPageCheckedData  抛出当前页数据
+*  :tableColumnEmpty 列为空时显示的提示语,默认为'暂无数据'
+*  showOverflowTooltip  当内容过长被隐藏时显示 tooltip,默认false--列的属性
+*  tableData 表格数据
+*  selection 对应列的类型。如果设置了 selection 则显示多选框;如果设置了 index 则显示该行的索引
+*  border 表格边框
+*  @rowClick  当某一行被点击时会触发该事件
+*  @dbRowClick  当某一行被双击时会触发该事件
+*  @rowContextmenu	当某一行被鼠标右键点击时会触发该事件
+*  @cellClick 当某个单元格被点击时会触发该事件
+*  @dbCellClick	当某个单元格被双击击时会触发该事件
+*  @currentRowChange  当表格的当前行发生变化的时候会触发该事件
+*  @handleSelectionChange  当选择项发生变化时会触发该事件
+*  @headerDragend  当拖动表头改变了列的宽度的时候会触发该事件
+*  @sortChange	当表格的排序条件发生变化的时候会触发该事件
+*  @columnChange  列宽改变
+*  this.$refs.table.setTableHeight(300)  手动设置表格高度
+*/
+
+<template>
+    <div>
+        <el-row class="rowStyle">
+            <el-col :span="24" :class="changeTableSize[tableSize]" >
+                <div class="table-outer">
+                    <p v-if="columns.length==0" class="txt-center">{{tableColumnEmpty}}</p>
+                    <el-table
+                            v-if="columns.length>0"
+                            ref="ListTable"
+                            v-loading="loading"
+                            element-loading-text="拼命加载中"
+                            :data="tableData"
+                            @sort-change="sortChange"
+                            @select = "select"
+                            @select-all="selectAll"
+                            @row-click="rowClick"
+                            @row-dblclick="dbRowClick"
+                            @row-contextmenu="rowContextmenu"
+                            @cell-click="cellClick"
+                            @cell-dblclick="dbCellClick"
+                            @header-dragend="headerDragend"
+                            :span-method="getSpanMethodFun"
+                            :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
+                            :default-expand-all="propDefaultExpandAll"
+                            :border="border"
+                            class="list_table"
+                            :stripe="stripe"
+                            :highlight-current-row="highlightCurrentRow"
+                            @current-change="currentRowChange"
+                            @selection-change="selectionChange"
+                            :default-sort="defaultSort"
+                            :row-class-name="tableRowClassName"
+                            :cell-class-name="cellClassName"
+                            :show-summary="showSummary"
+                            :summary-method="summaryMtd"
+                            :empty-text="emptyText"
+                            :height="propHeight"
+                            :header-cell-class-name='propHeaderCellClassName'
+                            :row-key="propRowkey"
+                            @expand-change='propExpandChange'
+                            :lazy='propLazy'
+                            :load='propLoad'
+                            :indent='propIndent'
+                            :max-height="propMaxHeight"
+                            :header-cell-style="{background:'#F5F7FA'}"
+                    >
+
+                        <!--row-key="id"-->
+                        <!--有row-key不能半选-->
+                        <!--checkbox框-->
+                        <template v-if="typeof selection && selection">
+                            <el-table-column
+                                    type="selection"
+                                    :selectable='selectAble'
+                                    width="55">
+                            </el-table-column>
+                        </template>
+                        <!-- 序号-->
+                        <template v-if="typeof index && index">
+                            <el-table-column
+                                    type="index"
+                                    label="序号"
+                                    width="60">
+                            </el-table-column>
+                        </template>
+                        <slot name="customColumn"></slot>
+                        <template v-if="!customColumnFlag">
+                            <template v-for="(column, index) in columns" >
+                                <el-table-column v-if="!column.template"
+                                                 :key="`col_${index}`"
+                                                 :prop="column.prop"
+                                                 :label="column.label"
+                                                 :align="column.align||'center'"
+                                                 :width="column.columnWidth"
+                                                 :sortable="column.sortable"
+                                                 :sort-change="{'sortChange':column.sortable}"
+                                                 :show-overflow-tooltip="column.showOverflowTooltip"
+                                                 :formatter='column.formatter'
+                                >
+                                </el-table-column>
+                                <slot :name="column.prop" v-if="!!column.template"></slot>
+                            </template>
+                        </template>
+
+                    </el-table>
+                </div>
+            </el-col>
+
+        </el-row>
+        <el-row class="rowStyle">
+            <el-col class="table-bottom-page" :span="24" v-if="pagination && pagination.total>0 && columns.length>0"
+                    :style="{textAlign: setPagination.position}">
+                <tablePage :pagination="setPagination" v-on:currentChange="handleCurrentChange"
+                           v-on:sizeChange="handleSizeChange"></tablePage>
+
+            </el-col>
+
+
+        </el-row>
+    </div>
+</template>
+
+<script>
+    import tablePage from './TablePage.vue';
+    var elementResizeDetectorMaker = require("element-resize-detector")
+    export default {
+        name: "TableList",
+        components: {
+            tablePage,
+        },
+        props: {
+            loadErrorMessageFlag:{
+                default: false,
+                type: Boolean
+            },
+            handlePostOriginData:{//处理loadData中post的原始数据,需要return,要返回list和total两个字段
+                type:[Function,Object],
+                default:null
+            },
+            customColumnFlag:{
+                default: false,
+                type: Boolean
+            },
+            showSummary:{
+                default: false,
+                type: Boolean
+            },
+            // 控制是否允许选择
+            selectAble:{
+                type:Function,
+                require:false,
+                default:()=>(()=>{
+                    return true
+                })
+            },
+            /* 发现该组件在使用el-table时定义了一个行点击事件,该事件触发会选择所有的复选框,无论复选框是否允许选择
+            。isUseRowClick为false时禁用点击行时选择复选框这一事件
+            edit by xufujun
+            */
+            isUseRowClick:{
+                type:Boolean,
+                default:true
+            },
+            summaryMtd:Function,
+            tableColumnEmpty:{
+                default: '暂无数据',
+                type: String
+            },
+            emptyText:{
+                default: '暂无数据',
+                type: String
+            },
+            checkedData:{
+                type:Array,
+                default :function () {
+                    return []
+                }
+            },
+            needLoading:{
+                // default: false,
+                type: Boolean
+            },
+            rowCheckboxClick:{
+                default: true,
+                type: Boolean
+            },
+            caption:{
+                type:String
+            },
+            tableScale:{
+                default: 100,
+                type: Number
+            },
+            displayRows: {
+                default: 10,
+                type: Number
+            },
+            dialogTable: {
+                default: false,
+                type: Boolean
+            },
+            selection: { //控制复选框,默认不显示复选框
+                default: false,
+                type: Boolean
+            },
+            singleSelect:{
+                default: false,
+                type: Boolean
+            },
+            index: { //
+                default: false,
+                type: Boolean
+            },
+            getDataWay: Object,//获取table数据的方式
+            highlightCurrentRow: Boolean,//高亮显示选中的行
+
+            columns: Array, //获取table的列
+            pagination: {},
+            defaultSort: Object,
+            // height: Number,
+            stripe: {
+                default: true,
+                type: Boolean
+            },
+            border: {
+                default: false,
+                type: Boolean
+            },
+            tableSize:{
+                default:'中',
+                type: String
+            },
+            spanMethod:{
+                default:function () {
+
+                },
+                type: Function
+            },
+            rowClassName:{
+                default:function () {
+
+                },
+                type: Function
+            },
+            cellClassName:{
+                default:'',
+                type: String
+            },
+            propHeight:Number,
+            propHeaderCellClassName:Function,
+            propDefaultExpandAll:{
+                default:true,
+                type:Boolean
+            },
+            propRowkey:String,
+            propExpandChange:{
+                default:function () {
+
+                },
+                type: Function
+            },
+            propLazy:Boolean,
+            propLoad:{
+                default:function () {
+
+                },
+                type: Function
+            },
+            propIndent:Number,
+            propMaxHeight:Number,
+            //loaddata接口报错时是否清空列表
+            errorClearing: {
+                type: Boolean,
+                default: false
+            }
+        },
+        data: function () {
+            return {
+                loading: false,
+                // border: false,
+                dropCol: this.columns,
+                rowHeight: 48,
+                headerHeight: 48,
+                tableData: [],
+                setPagination: {}, // 真实的分页对象
+                multipleSelection: [],
+                tempTotalData: {}, //临时模拟数据用
+                changeTableSize:{ //设置table字体大小
+                    '大':'list-table-big',
+                    '中':'list-table',
+                    '小':'list-table-small',
+                },
+                applyTableColWidths:[],//接收改变后的列
+                tableWidth:null,
+                isShowDefault:false,
+                tableHeight:null,
+                maxTbHeight:null,
+                parentDivWidth:null
+            }
+        },
+        computed: {
+        // tableHeight() {
+        //     return this.displayRows * this.rowHeight + this.headerHeight + 1
+        // }
+        },
+        created() {
+            if (!this.pagination && this.pagination == '') { //list页面只传过来pagination
+                this.setPagination = {
+                    total: 3,
+                    currentPage: 1,
+                    pageNum:1,
+                    pageSize: 10,
+                    position: 'right',
+                    pageSizes: [10, 30, 50, 100, 200],
+                    layout: 'sizes,total, prev, pager, next'
+                }
+            } else if (typeof this.pagination !='undefined' && this.pagination != '') { //list页面传过来:pagination=pagination
+                this.setPagination = this.pagination
+                this.setPagination.pageNum = this.pagination.currentPage || 1
+            } else { // 不分页
+                this.setPagination = {}
+            }
+            if ((this.getDataWay.dataType).toLowerCase() == 'url') { // 根据url发送请求获取table数据
+                delete this.setPagination.total;
+                this.getDataWay.firstRequest===undefined  && this.loadData()//请求数据
+            } else { // 通过list页面直接传table数据
+                if (this.getDataWay.data.length > 0 && this.pagination !== undefined) {
+                    this.setPagination.total = this.getDataWay.data.length
+                }
+                this.tableData = this.getDataWay.data || []
+                if(JSON.stringify(this.setPagination) !== JSON.stringify({})){
+                    this.handleCurrentChange(1);
+                }
+            }
+
+            //表格是否有默认排序
+            if(!!this.defaultSort){
+                this.isShowDefault=true
+            }
+        },
+        beforeMount(){
+            /**
+             * 接收父页面合并行或列的方法
+             * @param row, column, rowIndex, columnIndex
+             */
+            this.getSpanMethodFun=this.spanMethod
+            this.tableRowClassName=this.rowClassName
+        },
+        mounted() {
+
+            this.setTableHeight() //设置表格高度
+            if(this.tableScale){ // 表格整体宽度=页面宽度*表格显示百分比率
+                this.setTableWidth()
+            }
+            if(this.caption && !!this.$refs.ListTable){ //添加表格标题
+                $(this.$refs.ListTable.$el.querySelector('table')).prepend(`<caption>${this.caption}</caption>`)
+            }
+            this.computedColumn() //获取列宽
+            this.tableWidth=$('.table-outer').width()*this.tableScale/100
+            this.selectData()
+            var _this=this
+            var erd = elementResizeDetectorMaker()
+            // erd.listenTo($(".cp_worktab_content").children(), function (element) { //监听外层是否出现滚动条,如果出现滚动条重新调用设置表格宽度方法
+            //     _this.reduceCall(_this.setTableWidth(), 1000)
+            // })
+            erd.listenTo($(".el-main > div"), _this.reduceCall(function(){
+                _this.reduceCall(_this.setTableWidth(111), 1000)
+            }, 500))
+
+        },
+        updated() {
+            // if (this.$refs.ListTable.$refs.headerWrapper) {
+            //     this.headerHeight = this.$refs.ListTable.$refs.headerWrapper.clientHeight
+            // }
+        },
+        watch: {
+            'getDataWay.data'(){
+                this.loadData();
+             },
+            'tableScale'(newValue, oldValue) {
+                if(this.tableScale){
+                    this.tableWidth=$('.table-outer').width()*this.tableScale/100;
+                    //3.19何明泽修改
+                    // $(".list_table").css({'width':this.tableWidth+'px','max-width':this.tableWidth+'px'})
+                }
+            },
+
+            'caption'(newValue, oldValue) {
+                if(this.caption){ //添加表格标题
+                    if($(this.$refs.ListTable.$el.querySelector('table')).find('caption').length>0){
+                        $(this.$refs.ListTable.$el.querySelector('table')).find('caption').remove()
+                    }
+                    $(this.$refs.ListTable.$el.querySelector('table')).prepend(`<caption>${newValue}</caption>`)
+                }
+            },
+            'columns'(newValue, oldValue) {//列变化
+                this.computedColumn() //获取列宽
+            },
+            '$store.state.screenHeight'(newValue, oldValue) {
+                this.setTableHeight()
+            },
+            '$store.state.screenWidth'(newValue, oldValue) {
+                this.setTableWidth()
+            },
+            '$store.state.leftFold'(newValue, oldValue) { //监听左侧tree_toggle
+                var _this=this
+                setTimeout(function () {
+                    _this.setTableWidth()
+                },300)
+            }
+            // '$store.state.contentHeight'(newValue, oldValue) { //监听内容高度
+            //     let H=this.$el.getElementsByClassName('table-outer')[0].clientHeight //表格实际高度
+            //     if(newValue<H) //判断.cp_worktab_content是否出现滚动条,如果出现滚动条重新计算
+            //     {
+            //         this.setTableWidth()
+            //     }
+            // }
+
+        },
+        methods: {
+            loadData: function (searchParams) { // 获取列表数据
+                // this.loading= this.needLoading
+                this.$emit('update:getCheckedData', []);
+                this.loading= this.needLoading||false
+                let _this = this
+                let dataParams = {}
+                if (searchParams) {
+                    dataParams = Object.assign(_this.getDataWay.param, searchParams) // 获取请求参数数据
+                    /* add by 徐福军
+                    可以从prop中 getDataWay添加resetPageNum来设置刷新页面的时候将展示的页码设置为某一页,没有设置resetPageNum则默认重置为第一页
+                    exp=》
+                    getDataWay:{resetPageNum:false} 不重置页码;
+                    getDataWay:{resetPageNum:2} 重置页码到第二页 */
+                    _this.setPagination.currentPage=dataParams.resetPageNum==undefined?1:(dataParams.resetPageNum||_this.setPagination.currentPage);
+                    //分页之后,条件查询时,重置pageNum 洪良宇添加
+                    _this.setPagination.pageNum=dataParams.resetPageNum==undefined?1:(dataParams.resetPageNum||_this.setPagination.pageNum)
+                    // _this.setPagination.currentPage=1
+                    //  _this.setPagination.pageNum=1
+               } else {
+                    dataParams = _this.getDataWay.param||{}
+                }
+                if(_this.getDataWay.dataType==='data'){ //直接展示数据
+                    _this.setPagination.currentPage=1;
+                    _this.tableData = _this.getDataWay.data;
+                    _this.tablePageIsShow = false;
+                    // if (_this.getDataWay.data.length === 0){
+                    //     _this.setPagination = {};
+                    // }
+                    _this.$nextTick(function () {
+                        _this.$set(_this.setPagination,"total", _this.getDataWay.data.length);
+                        _this.tablePageIsShow = true;
+                        if (_this.pagination){//分页时进行数据切割
+                            _this.handleCurrentChange(1);
+                        }
+                    });
+                    _this.selectData()
+                    return false
+                }
+                if( !!_this.getDataWay.type && _this.getDataWay.type=="get"){
+                    let pageParam = {}
+                    pageParam.currentPage = _this.setPagination.currentPage
+                    pageParam.pageSize = _this.setPagination.pageSize
+                    this.$axios.get(_this.getDataWay.data, {params: Object.assign(dataParams, pageParam)})
+                        .then(function (data) {
+                            if (data && data.result) {
+                                if (typeof (_this.$parent.formatterData) === "function") {
+                                    _this.$emit('formatterData', data.info.list); //暴露方法
+                                }
+                                _this.tableData = data.info.list
+
+                                if (typeof _this.setPagination && _this.setPagination != '') {
+                                    _this.$set(_this.setPagination,"total",data.info.total||data.info.list.length)
+                                    //_this.setPagination.total = res.total || data.info.list.length
+                                }
+                            }
+                            _this.loading=false
+                        }).then(()=>{
+                        _this.selectData()
+                    })
+                }else {
+                    return this.$axios({
+                        method: 'post',
+                        url: _this.getDataWay.data,
+                        data: Object.assign(dataParams, _this.setPagination)
+                    }).then(function (data) {
+                        // if (data && data.result) {
+                        if (data && data.code == 200) {
+                            if(typeof _this.handlePostOriginData == 'function'){
+                                let originData = JSON.parse(JSON.stringify(data))
+                                let result = _this.handlePostOriginData(originData.info);
+                                data.info = result;
+                            }
+
+                            if (data.info && data.info.hasOwnProperty("personIds")) {
+                                _this.$emit("getPersonIds", data.info.personIds);
+                            }
+                            //拆分数据
+                            if (_this.$parent.spiltTableData && typeof (_this.$parent.spiltTableData) === "function") {
+                                _this.tableData = _this.$parent.spiltTableData(data.info)
+                            } else {
+                                if(data.info && data.info.list){
+                                    _this.tableData = data.info.list
+                                }else if(data.info.length >= 0){
+                                    _this.tableData = data.info
+                                }
+                            }
+                            //格式化数据
+                            if(_this.dialogTable){ //弹出层嵌套表格
+                                if (_this.$parent.$parent.$parent.$parent.formatterData && typeof _this.$parent.$parent.$parent.$parent.formatterData === "function") {
+                                    _this.$parent.$parent.$parent.$parent.formatterData(_this.tableData);
+                                }
+                            }else{ //正常表格
+                                if (_this.$parent.formatterData && typeof (_this.$parent.formatterData) === "function") {
+                                    _this.$parent.formatterData(_this.tableData);
+                                }
+                            }
+
+                            if (typeof _this.setPagination && _this.setPagination != '') {
+                                _this.$set(_this.setPagination,"total",data.info.total||data.info.list.length);
+                                //_this.setPagination.total = data.info.total||data.info.list.length
+                            }
+                            _this.loading=false
+                        } else {
+                            if(_this.loadErrorMessageFlag == true){
+                                _this.$message({
+                                    type:'warning',
+                                    message:data.msg
+                                })
+                            }
+                            _this.loading=false;
+                            if (_this.errorClearing) {
+                                _this.tableData = [];
+                                _this.$set(_this.setPagination, "total", 0);
+                            }
+                        }
+                        return data; //grid表格promise参数传递 2020-5-27 add 张朋博
+                    }).then((data)=>{
+                        _this.selectData()
+                        return data; //grid表格promise参数传递 2020-5-27 add 张朋博
+                    }).catch(function (error) {
+                        _this.loading=false
+                    });
+                }
+
+            },
+            select(selection, row) {
+                if (selection.indexOf(row) >= 0) {
+                    if (this.checkedData.indexOf(row) == -1) {
+                        this.checkedData.push(row)
+                    }
+                } else {
+                    this.checkedData.forEach((item, index) => {
+                        if(item.id && row.id){
+                            if (item.id == row.id) {
+                                this.checkedData.splice(index, 1)
+                            }
+                        }else{
+                            if (JSON.stringify(item) == JSON.stringify(row)) {
+                                this.checkedData.splice(index, 1)
+                            }
+                        }
+                    })
+                }
+            },
+            selectAll(selection=[]) {
+                let _this = this
+                if (selection.length > 0) {
+                    selection.forEach(row => {
+                        let item = JSON.stringify(row)
+                        if (JSON.stringify(_this.checkedData).indexOf(item) == -1) {
+                            _this.checkedData.push(row)
+                        }
+                    })
+                } else {
+                    _this.tableData.forEach(row => {
+                        let item = JSON.stringify(row)
+                        _this.checkedData.forEach((item1, index) => {
+                            if (JSON.stringify(item1).indexOf(item) == 0) {
+                                _this.checkedData.splice(index, 1)
+                            }
+                        })
+                    })
+                }
+                if(this.singleSelect){
+                    this.$refs.ListTable.clearSelection()
+                    this.checkedData.length=0
+                }
+            },
+
+            //选中用户默认要选中的数据
+            selectData: function () {
+                let _this = this
+                let temp = []
+                this.checkedData.forEach(item1 => {
+                    _this.tableData.forEach(item2 => {
+                        if (JSON.stringify(item1) == JSON.stringify(item2)) {
+                                temp.push(item2)
+                        }
+                        // 旧版本中因为优先判断了id,所以当改变的是数据中的某一项,如是否发布这类状态。还是会把之前选择的给重新选择上。从合理性上来说只有当跟新
+                        //前后数据完全一致才把更新前选择的给重新选上
+                        // if(item1.id && item2.id){
+                        //     if (item1.id == item2.id) {
+                        //         temp.push(item2)
+                        //     }
+                        // }else{
+                        //     if (JSON.stringify(item1) == JSON.stringify(item2)) {
+                        //         temp.push(item2)
+                        //     }
+                        // }
+                    })
+                })
+                this.checkedData.length=0
+                temp.forEach(row => {
+                    this.checkedData.push(row)
+                    _this.$refs.ListTable.toggleRowSelection(row)
+                });
+            },
+
+            computedColumn:function(){
+                let screenWidth= $('.table-outer').width()
+                let isComputed = true //根据isComputed判断表格列是否需要重新计算,默认是重新计算
+                this.columns && this.columns.forEach(item=>{
+                    if(!!item.width){ //对应列有宽度设置时,需要把列的宽度转换为px
+                        if((/^\d.+%$/).test(item.width)){// 对应列宽度设置为百分比
+                            //item.width= parseFloat(item.width)*screenWidth/100.0
+                            item.columnWidth = parseFloat(item.width)*screenWidth/100.0
+                        }else{ //对应列宽度设置为px
+                            item.columnWidth = item.width
+                        }
+                    }else{
+                        isComputed = false; // 存在没有给定宽度的列,所以不需要重新计算
+                    }
+                })
+                if(isComputed && this.columns){ // 处理所有给定列宽度不足百分百的情况,给每列平分宽度
+                    let total = 0
+                    this.columns.forEach(item=>{
+                        total += item.columnWidth
+                    })
+                    if(typeof this.selection && this.selection){//如果有复选框,减去复选框的宽度
+                        total+=55
+                    }
+                    if(typeof this.index && this.index){//如果有序号哦,减去序号的宽度
+                        total+=60
+                    }
+                    if(total<screenWidth){
+                        let addw =(screenWidth-total)*1.0/this.columns.length
+                        this.columns.forEach(item=>{
+                            item.columnWidth+=Math.floor(addw) //避免出现滚动条,浮点数向下取整
+                        })
+                    }
+                }
+            },
+            selectionChange: function (val) {
+                if(this.singleSelect){
+                    if(this.checkedData.length==2){
+                         this.$refs.ListTable.toggleRowSelection(this.checkedData.shift())
+                    }
+                }
+                this.multipleSelection = val;
+                
+                this.$emit('update:getCheckedData', this.checkedData); //直接抛出选中数据
+                this.$emit('handleSelectionChange', val); //当前页返回数据
+
+            },
+            getCheckedData: function () { //抛出选中数据
+                return this.checkedData;
+            },
+            delCheckedData:function(item){
+                let _this = this
+                item = [].concat(item)
+                item.forEach((delitem)=>{
+                    let delItem =  JSON.stringify(delitem)
+                    _this.checkedData.forEach((item1,index) => {
+                        if (JSON.stringify(item1).indexOf(delItem) ==0) {
+                            _this.checkedData.splice(index,1)
+
+                        }
+                    })
+                })
+
+                item.forEach((delitem)=>{
+                    let delItem =  JSON.stringify(delitem)
+                    _this.multipleSelection.forEach((item1,index) => {
+                        if (JSON.stringify(item1).indexOf(delItem) ==0) {
+                            _this.multipleSelection.splice(index,1)
+
+                        }
+                    })
+                })
+                this.$refs.ListTable.clearSelection()
+                this.selectData()
+
+            },
+            getCurPageCheckedData: function () { //抛出当前页选中数据
+                return this.multipleSelection;
+            },
+
+            handleCurrentChange: function (val) {
+                this.setPagination.currentPage = val
+                this.setPagination.pageNum = val
+                if((this.getDataWay.dataType).toLowerCase()=='url'){ //正式环境放开,发送请求分页
+                    this.loadData();
+                }else {
+                    //对数据进行分页
+                    let tableData = this.getDataWay.data
+                    //let tableData = this.tempTotalData
+                    let currentPage = this.setPagination.currentPage
+                    let pageSize = this.setPagination.pageSize
+                    this.tableData = tableData.slice((currentPage - 1) * pageSize, currentPage * pageSize)
+                }
+                this.$emit('currentChange', val);
+            },
+            handleSizeChange: function (val) {
+                this.setPagination.pageSize = val
+                this.loadData()
+                this.$emit('sizeChange', val);
+            },
+
+
+
+
+
+            currentRowChange: function (row) {
+                this.$emit('currentRowChange', row);
+            },
+            /**
+             * table 排序事件
+             * @param column prop order
+             */
+            sortChange: function (column, prop, order) {
+                // this.$emit("sortChange", column);
+                var _this=this
+                let search={}
+                _this.$parent.$children.forEach(item => {
+                    if (item.$refs.hasOwnProperty('searchForm')) {
+                        let search=item.searchParams // 获取搜索条件
+                    }
+                })
+                search.prop=column.prop||prop
+                search.order=column.order||order
+                let pageParam = {}
+                pageParam.currentPage = _this.setPagination.currentPage
+                pageParam.pageSize = _this.setPagination.pageSize
+                let dataParams = Object.assign(pageParam, search) // 获取请求参数数据
+                _this.loadData(dataParams)
+            },
+            /**
+             * 当某一行被点击时会触发该事件
+             * @param row, event, column
+             */
+            rowClick: function (row, event, column) {
+                let _this = this
+                if(this.selection && this.rowCheckboxClick&&this.isUseRowClick){ //存在复选框,行选中切换复选框选中取消
+                    if(column.currentTarget.getElementsByClassName("el-checkbox__input")[0].className.indexOf('is-checked')<0){
+                        _this.multipleSelection.push(row);
+                    }else {
+                        _this.multipleSelection.forEach((item,index) => {
+                            if(JSON.stringify(item) == JSON.stringify(row)){
+                                this.multipleSelection.splice(index,1)
+                            }
+                        })
+                    }
+                    let arr = JSON.parse(JSON.stringify(this.multipleSelection))
+                    this.$refs.ListTable.clearSelection()
+                    let temp = []
+                    arr.forEach(item1 => {
+                        _this.tableData.forEach(item2 => {
+                            if(JSON.stringify(item1) == JSON.stringify(item2)){
+                                temp.push(item2)
+                            }
+                        })
+                    })
+                    temp.forEach(row => {
+                        _this.$refs.ListTable.toggleRowSelection(row)
+                    });
+                    //this.$refs.ListTable.toggleRowSelection(temp,true);
+                    if (this.checkedData.indexOf(row) == -1) {
+                        this.checkedData.push(row)
+                    } else {
+                        this.checkedData.forEach((item,index) => {
+                            if(JSON.stringify(item) == JSON.stringify(row)){
+                                this.checkedData.splice(index,1)
+                            }
+                        })
+                    }
+                }
+                this.$emit("rowClick", row, event, column);
+            },
+            dbRowClick:function (row, event, column) {
+                this.$emit("dbRowClick", row, event, column);
+            },
+            rowContextmenu:function (row, event, column) {
+                this.$emit("dbRowClick", row, event, column);
+            },
+            cellClick: function (row, column, cell, event) {
+                this.$emit("cellClick", row, event, column);
+            },
+            dbCellClick:function(row, column, cell, event) {
+                this.$emit("dbCellClick", row, event, column);
+            },
+            /**
+             * 当拖动表头改变了列的宽度的时候会触发该事件
+             * @param newWidth, oldWidth, column, event
+             */
+            headerDragend:function(newWidth, oldWidth, column, event){
+                var _this= this
+                // let screenWidth= this.$el.clientWidth
+                let screenWidth= $('.table-outer').width()
+                setTimeout(() => {
+                    _this.applyTableColWidths = []
+                    let applyTable = _this.$refs.ListTable
+                    let applyTableCol =applyTable.columns
+                    for (let i = 0; i < applyTableCol.length; i++) {
+                        //&&applyTableCol[i].type!="selection"&&applyTableCol[i].type!="index"
+                        _this.columns.forEach(item=>{
+                            if(item.label==applyTableCol[i].label){
+                                if(!!applyTableCol[i].width) {
+                                    item.width = (applyTableCol[i].width / _this.tableWidth * 100).toFixed(2) + '%'
+                                }
+                                _this.applyTableColWidths.push(item)
+                            }
+                        })
+                    }
+                    _this.$emit('columnChange', _this.applyTableColWidths);
+                    _this.computedColumn() //获取列宽
+                }, 100)
+            },
+            /**
+             * 表格高度控制
+             */
+            setTableHeight: function () {
+                // this.$el.parentNode.parentElement.style.height
+                if(!!this.$el.getElementsByClassName('table-outer')[0].parentElement.parentElement.parentElement.style.height){
+                    let height=parseInt(this.$el.getElementsByClassName('table-outer')[0].parentElement.parentElement.parentElement.style.height)
+                    if(typeof this.pagination!=="undefined"){ // 分页存在 表格高度=指定高度-分页高度
+                        this.maxTbHeight = height-62
+                    }else { // 分页不存在
+                        this.maxTbHeight = height
+                    }
+                    // $(".list_table").css({'height':this.maxTbHeight+'px'})
+                    this.$el.getElementsByClassName('list_table')[0].style.height=this.maxTbHeight+'px'
+                }
+            },
+            /**
+             * 表格宽度控制
+             */
+            setTableWidth: function () {
+                let width=null
+                if(this.$el.getElementsByClassName('table-outer')[0].parentElement.parentElement.parentElement&&!!this.$el.getElementsByClassName('table-outer')[0].parentElement.parentElement.parentElement.style.width){
+                    width=this.$el.getElementsByClassName('table-outer')[0].parentElement.parentElement.parentElement.style.width
+                }else{
+                    width=this.$el.getElementsByClassName('table-outer')[0].parentElement.parentElement.clientWidth*this.tableScale/100
+                }
+
+                //3.19何明泽修改
+                /*if(this.$el.getElementsByClassName('list_table')[0]){
+                    this.$el.getElementsByClassName('list_table')[0].style.width=width+'px'
+                    this.$el.getElementsByClassName('list_table')[0].style.maxWidth=width+'px'
+                }*/
+            },
+            // 防止连续调用
+            reduceCall:function(fn, wait) {
+                let timeout = null;
+                return function() {
+                    if(timeout !== null){
+                        clearTimeout(timeout)
+                    }
+                    timeout = setTimeout(fn, wait);
+                }
+            },
+            //实习生周帆添加,调用后实现全选或者反选
+            toggleAllSelection(){
+                this.$refs.ListTable.toggleAllSelection();
+            },
+        }
+    }
+</script>
+<style lang="less" scoped>
+    .rowStyle{
+        margin: 0px @padding10;
+    }
+
+    .list-table .el-table{
+        font-size: 14px;
+    }
+    .list-table-big .el-table{
+        font-size: 18px;
+    }
+    .list-table-small .el-table{
+        font-size: 12px;
+    }
+    .table-outer{
+        width: 100%;
+        overflow-x: auto;
+    }
+    .table-outer .el-table {
+        overflow: auto;
+    }
+    .table-outer .txt-center {
+        text-align: center;
+    }
+</style>

+ 52 - 0
src/components/grid/TablePage.vue

@@ -0,0 +1,52 @@
+<template>
+    <el-row>
+        <el-col :span="24" class="bottom-page">
+            <el-pagination
+                    background
+                    @size-change="handleSizeChange"
+                    @current-change="handleCurrentChange"
+                    :current-page="pagination.currentPage"
+                    :page-sizes="pagination.pageSizes"
+                    :page-size="pagination.pageSize"
+                    :layout="pagination.layout"
+                    :total="pagination.total">
+            </el-pagination>
+        </el-col>
+    </el-row>
+</template>
+
+<script>
+    export default {
+        name: "page",
+        props:{
+            pagination:Object
+        },
+        methods: {
+
+            handleCurrentChange:function(val){
+               return this.$emit('currentChange',val);
+            },
+            handleSizeChange:function(val){
+                this.$emit('sizeChange',val);
+            }
+        }
+    }
+</script>
+
+<style scoped>
+    .bottom-page{
+        margin: 10px 0;
+    }
+    .bottom-page /deep/.el-pagination__sizes {
+        float: left;
+    }
+    .bottom-page /deep/.el-pagination {
+        padding: 2px 0;
+    }
+    .bottom-page /deep/.el-pagination .el-select .el-input {
+        margin: 0;
+    }
+    .bottom-page /deep/.el-pagination.is-background .btn-next{
+        margin-right: 0;
+    }
+</style>

+ 172 - 0
src/components/grid/TableSet.vue

@@ -0,0 +1,172 @@
+<template>
+    <div>
+        <el-dialog class="tableSet"
+                   title="列表设置"
+                   :visible="setVisible"
+                   :before-close="beforeClose"
+                   :close-on-click-modal="false"
+                   v-dialogDrag="true"
+                   width="50%">   <!--peiyan 添加:close-on-click-modal&v-dialogDrag   dirlog拖动 -->
+            <tableList ref="table"
+                       :getDataWay="getDataWay"
+                       :columns="columns"
+                       :index="true"
+                       :checkedData="checkedData"
+                       selection
+                       @handleSelectionChange="handleSelectionChange"
+            >
+                <el-table-column  label="默认排序" slot="sort" width="120">
+                    <template v-slot="scope">
+                       <!-- <el-radio v-model="set.defaultSort.prop" :label="scope.row.prop">{{""}}</el-radio>-->
+                        <el-button size="mini" type="text" :disabled="((set.defaultSort.prop === scope.row.prop)&&(set.defaultSort.order === 'asc'))" @click.stop="orderFun(scope.row,'asc')">升序</el-button>
+                        <el-button size="mini" type="text" :disabled="((set.defaultSort.prop === scope.row.prop)&&(set.defaultSort.order === 'desc'))" @click.stop="orderFun(scope.row,'desc')">降序</el-button>
+                    </template>
+                </el-table-column>
+            </tableList>
+            <el-form ref="form" label-width="120px" size="mini" class="form-style">
+                <div class="el-dialog__title padd20">显示设置</div>
+                <el-col :span="12">
+                    <el-form-item label="表格标题">
+                        <el-input v-model="set.caption"></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="表格放大(%)">
+                        <el-input v-model="set.tableScale"></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="字体大小" :span="12">
+                        <el-select v-model="set.tableSize" placeholder="请选择">
+                            <el-option
+                                    v-for="(item, index) in fontSizes"
+                                    :key="index"
+                                    :label="item"
+                                    :value="item">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="默认显示条数">
+                        <el-select v-model="set.pageSize" placeholder="请选择">
+                            <el-option
+                                    v-for="(item, index) in set.pageSizes"
+                                    :key="index"
+                                    :label="item"
+                                    :value="item">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                </el-col>
+            </el-form>
+            <span slot="footer" class="dialog-footer">
+                <el-button @click="cancel">取 消</el-button>
+                <el-button @click="resetForm">恢复默认设置</el-button>
+                <el-button type="primary" @click="confirm">确 定</el-button>
+            </span>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+    import tableList from '../../components/grid/TableList.vue';
+    export default {
+        name: "TableSet",
+        components:{
+            tableList
+        },
+        props:{
+            tableSet:{
+                type: Object,
+                default(){
+                    return {}
+                }
+            },
+            setVisible:{
+                type: Boolean,
+                default: false
+            }
+        },
+        data(){
+            return {
+                test:"",
+                columnsData:[],
+                checkedData:[],
+                set:{},
+                getDataWay:{dataType:"data",data:[{label:"jds梵蒂冈f"},{label:"的说法jdsf"},{label:"电饭锅jdsf"}]},
+                columns :[{
+                    "label": "列名",
+                    "prop": "label"
+                },{
+                    "label": "默认排序",
+                    "prop": "sort",
+                    "template":true
+                }
+                ],
+                fontSizes:['大','中','小'], //表格字体大小设置,
+            }
+        },
+        created(){
+            this.columnsData = this.tableSet.columnsData || [];
+            this.set = JSON.parse(JSON.stringify(this.tableSet.set))
+            this.getDataWay.data = this.columnsData || []
+            this.columnsData.forEach(item=>{
+                if (item.show){
+                    this.checkedData.push(item)
+                }
+            })
+        },
+        methods:{
+            orderFun(obj1,obj2){
+                this.$set(this.set.defaultSort,'prop',obj1.prop)
+                this.$set(this.set.defaultSort,'order',obj2)
+                this.$refs.table.loadData()
+                //this.set.defaultSort.prop=obj1.prop;
+                //this.set.defaultSort.order=obj2
+            },
+            resetForm(){
+                this.$emit("resetDefault")
+            },
+            handleSelectionChange(val) { // 获取选中的列
+                let temp = [];
+                this.columnsData.forEach((item)=>{
+                    if(JSON.stringify(val).indexOf(JSON.stringify(item))>0){
+                        item.show = true
+                        temp.push(item)
+                    }else{
+                        item.show = false
+                    }
+                });
+                this.checkedData = temp;
+            },
+            beforeClose(done){
+                this.$emit('update:setVisible', false);
+                done()
+            },
+            confirm(){
+                let result = {set:this.set,columnsData:this.columnsData};
+                this.$emit("modifySet",result);
+                this.$emit('update:setVisible', false);
+            },
+            cancel(){
+                this.$emit('update:setVisible', false);
+            }
+        }
+    }
+</script>
+
+<style scoped>
+    .tableSet >>> .el-dialog{
+        min-width: 500px;
+    }
+    .tableSet >>> .el-dialog .el-select{
+        width: 100%;
+    }
+    /*.tableSet >>> .el-dialog .el-table__header .el-checkbox::after{*/
+    /*    content: "显示";*/
+    /*}*/
+    .tableSet >>> .el-dialog .el-table-column--selection{
+        text-align: center;
+    }
+</style>

+ 78 - 0
src/components/grid/searchLayout.vue

@@ -0,0 +1,78 @@
+<template>
+    <div v-bind:class="{ searchLayout: true, searchLayoutBox: needBox }">
+        <div class="searchOptions inputBox">
+            <div class="inputBox">
+                <slot name="searchItem1"></slot>
+            </div>
+            <div class="inputBox">
+                <slot name="searchItem2"></slot>
+            </div>
+            <div class="inputBox">
+                <slot name="searchItem3"></slot>
+            </div>
+            <div class="inputBox">
+                <slot name="searchItem4"></slot>
+            </div>
+            <div class="inputBox">
+                <slot name="searchItem5"></slot>
+            </div>
+            <div class="inputBox">
+                <slot name="searchItem6"></slot>
+            </div>
+            <div class="inputBox">
+                <slot name="searchItem7"></slot>
+            </div>
+            <div class="inputBox">
+                <slot name="searchItem8"></slot>
+            </div>
+            <div class="inputBox">
+                <slot name="searchItem9"></slot>
+            </div>
+            <!-- <div class="speBox">
+                <slot name="searchItemSpe1"></slot>
+            </div> -->
+        </div>
+        <div class="btns">
+            <slot name="searchBtn1"></slot>
+            <slot name="searchBtn2"></slot>
+        </div>
+    </div>
+</template>
+
+<script>
+export default {
+    name: "searchLayout",
+    data() {
+        return {};
+    },
+    props: {
+        needBox: {
+            type: Boolean,
+            default: false,
+        },
+    },
+    created() {},
+
+    mounted() {},
+};
+</script>
+<style lang="less" scoped>
+.searchLayout {
+    display: flex;
+    margin: 24px 12px 0;
+
+    .searchOptions {
+        display: flex;
+        flex: 1;
+        flex-wrap: wrap;
+        
+
+        > div {
+            display: flex;
+            margin-right: 20px;
+            margin-bottom: 22px;
+            align-items: center;
+        }
+    }
+}
+</style>

+ 287 - 0
src/components/toolbar/toolbar.vue

@@ -0,0 +1,287 @@
+<template>
+    <div class="toolbar">
+        <div :class="position" class="wrap">
+            <el-button class="leftBtn"  v-if="isShowHBtn" icon="el-icon-arrow-left" @mousedown.native="leftBtnClick" @mouseup.native="clearTimer"></el-button>
+            <el-button class="upBtn"  v-if="isShowVBtn" icon="el-icon-arrow-up" @mousedown.native="upBtnClick" @mouseup.native="clearTimer"></el-button>
+            <template v-for="item of toolbarItem">
+                <el-button v-if="item.icon" :disabled="item.disabled" :type="item.type" :icon="display==='block' ? item.icon + ' el-block': item.icon" @click="click(item,$event)">{{item.title}}</el-button>
+                <el-button v-else   :disabled="item.disabled"  :type="item.type" @click="click(item,$event)">{{item.title}}</el-button>
+            </template>
+            <el-button class="rightBtn"  v-if="isShowHBtn" icon="el-icon-arrow-right" @mousedown.native="rightBtnClick" @mouseup.native="clearTimer"></el-button>
+            <el-button class="downBtn"  v-if="isShowVBtn" icon="el-icon-arrow-down" @mousedown.native="downBtnClick" @mouseup.native="clearTimer"></el-button>
+        </div>
+    </div>
+</template>
+
+<script>
+    export default {
+        name: "toolbar",
+        props:{
+            position:{
+                type: String,
+                default:"top"
+            },
+            display:{
+                type: String,
+                default: "block"
+            },
+            toolbarItem:Array
+        },
+        data(){
+            return {
+                clientWidth: 0,
+                clientHeight: 0,
+                totalWidth:0,
+                totalHeight:0,
+                isShowHBtn:false,
+                isShowVBtn:false,
+                clientMarginLR:0,
+                timer:0
+            }
+        },
+        methods:{
+            rightBtnClick: function(){
+                let step = 10
+                let _this = this;
+                let dis = this.totalWidth - this.$el.offsetWidth + 120
+                let $tt = $(this.$el.querySelector(".wrap"))
+
+                this.timer = setInterval(function () {
+                    let marginLeft = parseInt($tt.css("marginLeft"))
+                    if(marginLeft > -dis){
+                        if(marginLeft-step<= -dis){
+                            $tt.css({marginLeft: -dis+"px"})
+                        }else{
+                            $tt.css({marginLeft: marginLeft-step+"px"})
+                        }
+                    }else{
+                        $tt.css({marginLeft: -dis+"px"})
+                        clearInterval(_this.timer);
+                        _this.timer = null
+                    }
+                },100)
+            },
+            leftBtnClick: function(){
+                let step = 10
+                let _this = this
+                let $tt = $(this.$el.querySelector(".wrap"))
+
+                this.timer = setInterval(function () {
+                    let marginLeft = parseInt($tt.css("margin-left"))
+                    if(marginLeft < 0 ){
+                        if(marginLeft+step>=0){
+                            $tt.css({marginLeft: "0px"})
+                        }else{
+                            $tt.css({marginLeft: marginLeft+step+"px"})
+                        }
+                    }else{
+                        clearInterval(_this.timer);
+                        _this.timer = null;
+                        $tt.css({marginLeft: "0px"})
+                    }
+                },100)
+            },
+            downBtnClick: function(){
+                let step = 10
+                let _this = this;
+                let dis = this.totalHeight - this.$el.offsetHeight + 110
+                let $tt = $(this.$el.querySelector(".wrap"))
+
+                this.timer = setInterval(function () {
+                    let marginTop = parseInt($tt.css("margin-Top"))
+                    if(marginTop > -dis){
+                        if(marginTop-step<= -dis){
+                            $tt.css({marginTop: -dis+"px"})
+                        }else{
+                            $tt.css({marginTop: marginTop-step+"px"})
+                        }
+                    }else{
+                        $tt.css({marginTop: -dis+"px"})
+                        clearInterval(_this.timer);
+                        _this.timer = null
+                    }
+                },100)
+            },
+            upBtnClick: function(){
+                let step = 10
+                let _this = this
+                let $tt = $(this.$el.querySelector(".wrap"))
+
+                this.timer = setInterval(function () {
+                    let marginTop = parseInt($tt.css("margin-Top"))
+                    if(marginTop < 0 ){
+                        if(marginTop+step>=0){
+                            $tt.css({marginTop: "0px"})
+                        }else{
+                            $tt.css({marginTop: marginTop+step+"px"})
+                        }
+                    }else{
+                        clearInterval(_this.timer);
+                        _this.timer = null
+                        $tt.css({marginTop: "0px"})
+                    }
+                },100)
+            },
+            clearTimer:function(){
+                clearInterval(this.timer);
+            },
+            click:function(item,event){
+                this.$emit("toolbarClick",item,event)
+            },
+            getTotalWidth:function(){
+                let totalWidth = 0
+                let items = this.$el.getElementsByTagName('button')
+                for(let i=0;i<items.length;i++){
+                    totalWidth += $(items[i]).outerWidth(true);
+                }
+                this.totalWidth = totalWidth;
+            },
+            getTotalHeight:function(){
+                let totalHeight = 0
+                let items = this.$el.getElementsByTagName('button')
+                for(let i=0;i<items.length;i++){
+                    totalHeight += $(items[i]).outerHeight(true);
+                }
+                this.totalHeight = totalHeight;
+            },
+            adjustFrame:function(){
+                if(this.position=="top"){
+                    this.totalWidth==0 && this.getTotalWidth()
+                    if(this.totalWidth > this.clientWidth){
+                        this.isShowHBtn = true
+                        $(this.$el.getElementsByClassName('top')[0]).addClass('padding60')
+                    }else{
+                        this.isShowHBtn = false
+                        var tt = this.$el.querySelector(".wrap")
+                        var $tt = $(tt).css("marginLeft","0px");
+                        $(this.$el.getElementsByClassName('top')[0]).removeClass('padding60')
+                    }
+                }else if(this.position=="right"){
+                    this.getTotalHeight()
+                    // this.totalHeight==0 && this.getTotalHeight()
+                    if(this.totalHeight > this.clientHeight){
+                        this.isShowVBtn = true
+                        $(this.$el.getElementsByClassName('right')[0]).addClass('padding60_0')
+                    }else{
+                        this.isShowVBtn = false
+                        $(this.$el.querySelector(".wrap")).css("marginTop","0px");
+                        $(this.$el.getElementsByClassName('right')[0]).removeClass('padding60_0')
+                    }
+                }
+            }
+        },
+        watch: {
+            '$store.state.screenWidth'(newValue, oldValue) {
+                this.clientWidth = this.$el.clientWidth
+                this.adjustFrame()
+            },
+            '$store.state.contentHeight'(newValue, oldValue) {
+                this.clientHeight = this.$store.state.contentHeight - this.clientMarginLR
+                if(this.position == 'right') {
+                    this.$el.style.height = this.clientHeight + 'px'
+                }
+                this.adjustFrame()
+            },
+            'toolbarItem'(){
+                this.$nextTick(()=>{
+                    this.adjustFrame()
+                })
+
+            }
+        },
+        mounted(){
+            this.clientWidth = this.$el.clientWidth
+            this.clientHeight = this.$store.state.contentHeight
+            if(this.position == 'right'){
+                this.clientMarginLR = parseInt(this.$el.style.marginTop) + parseInt(this.$el.style.marginBottom)
+                this.$el.style.height = this.clientHeight-this.clientMarginLR+'px'
+                this.$el.className += ' right'
+            }
+            this.adjustFrame()
+        }
+    }
+</script>
+
+<style scoped>
+    .toolbar{
+        overflow: hidden;
+        border-radius: 4px;
+        margin-left: 0px;
+        position: relative;
+    }
+    .toolbar.right{
+        position: fixed;
+        right: 10px;
+        width: 50px;
+    }
+    .toolbar>.top{
+        width: 100%;
+        height: 50px;
+        white-space: nowrap;
+    }
+    .toolbar>.top.padding60{
+        padding: 0px 50px;
+    }
+    .toolbar>.right.padding60_0{
+        padding: 50px 0px;
+    }
+    .toolbar>.top >>> .el-button.leftBtn{
+        position: absolute;
+        left: 0;
+        font-size: 2em;
+    }
+    .toolbar>.top >>> .el-button.rightBtn{
+        position: absolute;
+        right: 0;
+        font-size: 2em;
+    }
+
+    .toolbar>.right >>> .el-button.upBtn{
+        position: absolute;
+        top: 0;
+        margin-top: 0px;
+        font-size: 2em;
+    }
+    .toolbar>.right >>> .el-button.downBtn{
+        position: absolute;
+        bottom: 0;
+        font-size: 2em;
+    }
+
+    .toolbar .top >>> .el-button {
+        width: 50px;
+        height: 50px;
+        padding: 0px;
+        vertical-align: top;
+        font-size: 10px;
+    }
+    .toolbar .top >>> .el-button [class*=el-icon-]+span {
+        margin-left: 0px;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+        display: block;
+    }
+    .toolbar >>> i.el-block{
+        display: block;
+        font-size: 1.5em;
+        margin-bottom: 5px;
+    }
+    .toolbar>.right{
+        display: block;
+    }
+    .toolbar .right >>> .el-button {
+        width: 50px;
+        height: 50px;
+        padding: 0px;
+        margin-top: 10px;
+        display: block;
+        font-size: 10px;
+    }
+    .toolbar>.right >>> .el-button+.el-button {
+        margin-left: 0px;
+    }
+    .toolbar .right >>> .el-button [class*=el-icon-]+span {
+        margin-left: 0px;
+    }
+</style>

+ 377 - 0
src/components/toolbar/toolbarTab.vue

@@ -0,0 +1,377 @@
+<template>
+    <div>
+        <div v-if="isConnect" class="toolbar-connect">
+            <el-tabs
+                :type="tabsType"
+                v-model="activeName"
+                :tab-position="position"
+                :closable="false"
+                @tab-click="tabClick"
+                :before-leave="beforeLeave"
+            >
+                <el-tab-pane
+                    v-for="(item, index) in toolbarItem"
+                    :key="item.key || index.toString()"
+                    :label="item.title"
+                    :lazy="true"
+                    :name="item.fromId.toString()"
+                    :disabled="item.disabled"
+                ></el-tab-pane>
+            </el-tabs>
+        </div>
+        <div v-else id="toolBox" class="toolbar clear">
+            <el-tabs
+                :class="origintoolbarClass"
+                type="tabsType"
+                id="eltabs"
+                :tab-position="position"
+                :closable="false"
+                @tab-click="tabClick"
+            >
+                <el-tab-pane
+                    v-for="(item, index) in toolbarItem"
+                    :key="item.key || index.toString()"
+                    :label="item.title"
+                    :name="index.toString()"
+                    :disabled="item.disabled"
+                >
+                    <el-button
+                        v-if="item.icon"
+                        style="margin-right: 5px"
+                        slot="label"
+                        :plain="item.plain"
+                        :disabled="item.disabled"
+                        :type="item.type"
+                        :size="!!item.size ? item.size : 'medium'"
+                        :icon="
+                            display === 'block'
+                                ? item.icon + ' el-block'
+                                : item.icon
+                        "
+                    >
+                        {{ item.title }}
+                    </el-button>
+                    <el-button
+                        v-else
+                        style="margin-right: 5px"
+                        slot="label"
+                        :plain="item.plain"
+                        :disabled="item.disabled"
+                        :type="item.type"
+                        :size="!!item.size ? item.size : 'medium'"
+                    >
+                        {{ item.title }}
+                    </el-button>
+                </el-tab-pane>
+            </el-tabs>
+        </div>
+    </div>
+</template>
+
+<script>
+export default {
+    name: "toolbar",
+    props: {
+        subPageActiveName: {
+            type: Number,
+            default: -1,
+        },
+        isRight: {
+            type: Boolean,
+            default: false,
+        },
+        isConnect: {
+            type: Boolean,
+            default: false,
+        },
+        position: {
+            type: String,
+            default: "top",
+        },
+		tabsType: {
+            type: String,
+            default: "",
+        },
+        display: {
+            type: String,
+            default: "block",
+        },
+        toolbarItem: Array,
+        isAutoMove: {
+            type: Boolean,
+            default: false,
+        },
+        beforeLeave: {
+            type: Function,
+            default: () => {},
+        },
+    },
+    data() {
+        return {
+            activeName: "-1",
+            clientWidth: 0,
+            clientHeight: 0,
+            totalWidth: 0,
+            totalHeight: 0,
+            isShowHBtn: false,
+            isShowVBtn: false,
+            clientMarginLR: 0,
+            timer: 0,
+            toolbarClass: false,
+        };
+    },
+    methods: {
+        click() {},
+        tabClick(tab, event) {
+            this.$emit(
+                "toolbarClick",
+                this.toolbarItem[parseInt(tab.index)],
+                event
+            );
+        },
+
+        // 当工具条过长时显示能控制其左右移动的按钮。测试了一下
+        controlToolBarMove(v) {
+            let toolBox = document.querySelector("#toolBox");
+            let eltabs = document.querySelector("#eltabs .el-tabs__nav");
+            if (
+                toolBox &&
+                eltabs &&
+                parseInt(window.getComputedStyle(toolBox).width) &&
+                parseInt(window.getComputedStyle(eltabs).width)
+            ) {
+                if (
+                    parseInt(window.getComputedStyle(toolBox).width) <=
+                    parseInt(window.getComputedStyle(eltabs).width) + 10
+                ) {
+                    this.toolbarClass = true;
+                } else {
+                    this.toolbarClass = false;
+                }
+            }
+        },
+    },
+    watch: {
+        subPageActiveName(val) {
+            if (val != -1) {
+                this.activeName = "" + val;
+            }
+        },
+        "$store.state.contentHeight"(newValue, oldValue) {
+            this.clientHeight =
+                this.$store.state.contentHeight - this.clientMarginLR;
+            if (this.position == "right") {
+                this.$el.style.height = this.clientHeight + "px";
+            }
+        },
+        toolbarItem: {
+            handler(newValue) {
+                this.$nextTick(() => {
+                    setTimeout(this.controlToolBarMove, 1);
+                });
+            },
+            deep: true,
+            immediate: true,
+        },
+    },
+    computed: {
+        origintoolbarClass() {
+            if (this.toolbarClass) return "or";
+            return this.isRight ? "fr" : "";
+        },
+    },
+    mounted() {
+        this.clientWidth = this.$el.clientWidth;
+        this.clientHeight = this.$store.state.contentHeight;
+        if (this.position == "right") {
+            this.clientMarginLR =
+                parseInt(this.$el.style.marginTop) +
+                parseInt(this.$el.style.marginBottom);
+            this.$el.style.height =
+                this.clientHeight - this.clientMarginLR + "px";
+            this.$el.className += " right";
+        }
+        window.addEventListener("resize", this.controlToolBarMove);
+    },
+    created() {
+        this.activeName = "" + this.subPageActiveName;
+    },
+
+    destroyed() {
+        window.removeEventListener("resize", this.controlToolBarMove);
+    },
+};
+</script>
+
+<style scoped lang="less">
+.fl {
+    float: left;
+}
+.fr,
+.or {
+    width: 100%;
+}
+
+.fr /deep/ .el-tabs__nav {
+    float: right;
+}
+.clear:before,
+.clear:after {
+    display: table;
+    content: "";
+}
+.clear:after {
+    clear: both;
+}
+.toolbar {
+    font-family: PingFangSC, Microsoft YaHei, Arial, sans-serif;
+    overflow: hidden;
+    border-radius: 4px;
+    margin-left: 0;
+    position: relative;
+
+    /deep/.el-tabs--card > .el-tabs__header .el-tabs__item {
+        border-left: none;
+    }
+
+    /deep/ .el-tabs__header {
+        padding-bottom: 2px;
+        margin-bottom: 0;
+        .el-tabs__nav {
+            border: none;
+        }
+    }
+
+    /deep/.el-tabs__nav-scroll {
+        padding: 0;
+    }
+
+    &.right {
+        position: fixed;
+        right: 10px;
+    }
+    /deep/ .el-tabs__item {
+        padding: 0px;
+    }
+    /deep/
+        .el-tabs--top.el-tabs--card
+        > .el-tabs__header
+        .el-tabs__item:last-child {
+        padding-right: 0px;
+    }
+    /deep/
+        .el-tabs--top.el-tabs--card
+        > .el-tabs__header
+        .el-tabs__item:nth-child(2) {
+        padding-left: 0px;
+    }
+
+    /deep/ .el-tabs--card > .el-tabs__header .el-tabs__item {
+        background-color: transparent;
+    }
+    /deep/
+        .el-tabs--card
+        > .el-tabs__header.is-right
+        .el-tabs__item:not(:first-child) {
+        margin-left: 0px;
+    }
+    /deep/ .el-tabs--right .el-tabs__header.is-right {
+        margin-left: 0px;
+        .el-tabs__item.is-right {
+            margin: 6px 0px;
+        }
+    }
+
+    /deep/ .el-tabs--right .el-tabs__header.is-right i.el-block {
+        display: block;
+        font-size: 1.5em;
+        margin-bottom: 5px;
+    }
+
+    /deep/ .el-tabs--right .el-tabs__header.is-right .el-tabs__item {
+        height: auto;
+    }
+
+    /deep/ .el-tabs--right.el-tabs--card .el-tabs__item.is-right {
+        border-top: 0px solid transparent;
+    }
+
+    /deep/ .el-tabs--right.el-tabs--card .el-button {
+        width: 60px;
+        height: 60px;
+        padding: 0px;
+        margin-top: 10px;
+        display: block;
+        font-size: 14px;
+        span {
+            margin-left: 0px;
+        }
+    }
+
+    /deep/ .el-tabs--card .el-tabs__header {
+        background-color: transparent;
+        border-bottom-color: transparent;
+    }
+    /deep/ .el-tabs__nav-scroll {
+        background-color: transparent;
+    }
+    /deep/ .el-tabs--card > .el-tabs__header {
+        border-bottom: 0px solid transparent;
+    }
+    /deep/ .el-tabs--card > .el-tabs__header .el-tabs__item {
+        border-bottom: 1px solid transparent;
+    }
+    /deep/ .el-tabs--card > .el-tabs__header .el-tabs__item.is-active {
+        border-bottom-color: transparent;
+        background-color: transparent;
+    }
+    /deep/ .el-tabs--card > .el-tabs__header .el-tabs__item {
+        border-radius: 4px;
+    }
+    /deep/ .el-tabs--right {
+        height: 100%;
+    }
+    /deep/ .el-tabs__nav-scroll {
+        height: 100%;
+    }
+    /deep/ .el-tabs__item.is-active {
+        color: inherit;
+    }
+}
+.toolbar-connect {
+    font-family: PingFangSC, Microsoft YaHei, Arial, sans-serif;
+    /deep/.el-tabs__header {
+        padding-left: 20px;
+    }
+    /deep/.el-tabs--card > .el-tabs__header .el-tabs__item {
+        border-top: #e4e7ed 1px solid;
+    }
+    /deep/.el-tabs--card > .el-tabs__header .el-tabs__item:first-child {
+        border-left: #e4e7ed 1px solid;
+    }
+    /deep/.el-tabs--card > .el-tabs__header .el-tabs__item:last-child {
+        border-right: #e4e7ed 1px solid;
+    }
+    /deep/.el-tabs--card > .el-tabs__header .el-tabs__nav {
+        border: none;
+    }
+    /deep/.el-tabs--card > .el-tabs__header {
+        border-bottom: 1px solid @themeColor;
+    }
+    /deep/.el-tabs--card > .el-tabs__header .el-tabs__item.is-active {
+        border-left: 1px solid @themeColor;
+        border-top: 1px solid @themeColor;
+    }
+    /deep/.el-tabs--card
+        > .el-tabs__header
+        .el-tabs__item:last-child.is-active {
+        border-right: 1px solid @themeColor;
+    }
+    /deep/.el-tabs--card
+        > .el-tabs__header
+        .el-tabs__item.is-active
+        + .el-tabs__item {
+        border-left: 1px solid @themeColor;
+    }
+}
+</style>

+ 74 - 0
src/lib/autoTrim.js

@@ -0,0 +1,74 @@
+import Vue from 'vue';
+
+Vue.directive('autoTrim', {
+    bind(el, binding, vnode, oldVnode){
+        if($(el).has('input').length>0){
+            $(el).on('blur','input',function (e){
+                if(!!e.target.value){
+                    if(!!binding.value.obj){
+                        var expression = null;
+                        var expressionCatchArr = [];
+                        for(var i=0;i<vnode.data.directives.length;i++){
+                            if(vnode.data.directives[i].name == "autoTrim"){
+                                expressionCatchArr = vnode.data.directives[i].expression.split(',');
+                                for(var j=0;j<expressionCatchArr.length;j++){
+                                    if(expressionCatchArr[j].includes('obj')){
+                                        expression = expressionCatchArr[j].split(':')[1];
+                                        break;
+                                    }
+                                }
+                                break;
+                            }
+                        }
+                        if(expression.includes('scope')){
+                            binding.value.obj[binding.value.key] = e.target.value.trim();
+                        }else{
+                            var expressionArr = expression.split('.');
+                            var expressionObj = vnode.context;
+                            expressionArr.forEach((item)=>{
+                                expressionObj = expressionObj[item.trim()]
+                            });
+                            expressionObj[binding.value.key] = e.target.value.trim()
+                        }
+                    }else{
+                        vnode.context[binding.value.key] = e.target.value.trim()
+                    }
+                }
+            })
+        }else if($(el).has('textarea').length>0){
+            $(el).on('blur','textarea',function (e){
+                if(!!e.target.value){
+                    if(!!binding.value.obj){
+                        var expression = null;
+                        var expressionCatchArr = [];
+                        for(var i=0;i<vnode.data.directives.length;i++){
+                            if(vnode.data.directives[i].name == "autoTrim"){
+                                expressionCatchArr = vnode.data.directives[i].expression.split(',');
+                                for(var j=0;j<expressionCatchArr.length;j++){
+                                    if(expressionCatchArr[j].includes('obj')){
+                                        expression = expressionCatchArr[j].split(':')[1];
+                                        break;
+                                    }
+                                }
+                                break;
+                            }
+                        }
+                        if(expression.includes('scope')){
+                            binding.value.obj[binding.value.key] = e.target.value.trim();
+                        }else{
+                            var expressionArr = expression.split('.');
+                            var expressionObj = vnode.context
+                            expressionArr.forEach(item => {
+                              expressionObj = expressionObj[item.trim()]
+                            })
+                            expressionObj[binding.value.key] = e.target.value.trim()
+                        }
+                    }else{
+                        vnode.context[binding.value.key] = e.target.value.trim()
+                    }
+                }
+            })
+        }
+
+    }
+})

+ 26 - 0
src/main.js

@@ -0,0 +1,26 @@
+import Vue from "vue";
+import App from "./App.vue";
+import router from "./router";
+import store from "./store";
+import ElementUI from 'element-ui';
+
+import './assets/common/css/index.css'
+import './assets/common/css/reset.css'
+import 'font-awesome/less/font-awesome.less'
+
+import "./router/filter"
+import "./axios/filter"
+
+import '@/api/index.js'
+import '@/lib/autoTrim'
+
+Vue.config.productionTip = false;
+
+
+Vue.use(ElementUI);
+
+new Vue({
+  router,
+  store,
+  render: (h) => h(App),
+}).$mount("#app");

+ 17 - 0
src/router/algorithmsLibrary.js

@@ -0,0 +1,17 @@
+export default [{
+        path: "/algorithmsLibraryList",
+        name: "algorithmsLibraryList",
+        meta: {
+            tabname: "算法库列表"
+        },
+        component: () => import("@/views/algorithmsLibrary/algorithmsLibraryList")
+    },
+    {
+        path: "/addAlgorithms",
+        name: "addAlgorithms",
+        meta: {
+            tabname: "新增算法"
+        },
+        component: () => import("@/views/algorithmsLibrary/addAlgorithms")
+    },
+]

+ 24 - 0
src/router/filter.js

@@ -0,0 +1,24 @@
+import Router from 'vue-router'
+import router from "./index"
+
+// 解决ElementUI导航栏中的vue-router在3.0版本以上重复点菜单报错问题
+const originalPush = Router.prototype.push
+Router.prototype.push = function push(location) {
+    return originalPush.call(this, location).catch(err => err)
+}
+
+// const disabledRoutes = ['modelLibrary'];
+
+
+/* router.beforeEach((to, from, next) => {
+    // console.log(to);
+    // next();
+
+    if (disabledRoutes.includes(to.name)) {
+        next(false);
+    } else {
+        next();
+    }
+
+
+}); */

+ 93 - 0
src/router/index.js

@@ -0,0 +1,93 @@
+import Vue from "vue";
+import VueRouter from "vue-router";
+
+import modelLibrary from "./modelLibrary";
+import algorithmsLibrary from "./algorithmsLibrary";
+import sceneLibrary from "./sceneLibrary";
+import systemManagement from "./systemManagement";
+
+Vue.use(VueRouter);
+
+const routes = [{
+  path: "/",
+  name: "index",
+  meta: {
+    tabname: "首页"
+  },
+  component: () => import('../views/index'),
+  children: [{
+        path: "/about",
+        name: "about",
+        meta: {
+          tabname: "关于"
+        },
+        component: () => import("../views/About.vue")
+      },
+      {
+        path: "/modelLibrary",
+        name: "modelLibrary",
+        meta: {
+          tabname: "模型库"
+        },
+        component: () => import("@/views/modelLibrary/index"),
+        redirect: '/index',
+        children: modelLibrary,
+      },
+      {
+        path: "/algorithmsLibrary",
+        name: "algorithmsLibrary",
+        meta: {
+          tabname: "算法库"
+        },
+        component: () => import("@/views/algorithmsLibrary/index"),
+        redirect: '/index',
+        children: algorithmsLibrary,
+      },
+      {
+        path: "/sceneLibrary",
+        name: "sceneLibrary",
+        meta: {
+          tabname: "场景库"
+        },
+        component: () => import("@/views/sceneLibrary/index"),
+        redirect: '/index',
+        children: sceneLibrary,
+      },
+      {
+        path: "/systemManagement",
+        name: "systemManagement",
+        meta: {
+          tabname: "系统管理"
+        },
+        component: () => import("@/views/systemManagement/index"),
+        redirect: '/index',
+        children: systemManagement,
+      },
+    ]
+    .concat([{
+      path: "*",
+      name: "*",
+      meta: {
+        tabname: "关于"
+      },
+      component: () => import("../views/About.vue")
+    }, ]),
+}];
+// {
+//   path: "/",
+//   name: "About",
+//   // route level code-splitting
+//   // this generates a separate chunk (about.[hash].js) for this route
+//   // which is lazy-loaded when the route is visited.
+//   component: () =>
+//     import( /* webpackChunkName: "about" */ "../views/About.vue"),
+// },
+
+
+const router = new VueRouter({
+  mode: "history",
+  base: process.env.BASE_URL,
+  routes,
+});
+
+export default router;

+ 33 - 0
src/router/modelLibrary.js

@@ -0,0 +1,33 @@
+export default [{
+        path: "/vehicleConfigurationList",
+        name: "vehicleConfigurationList",
+        meta: {
+            tabname: "车辆配置"
+        },
+        component: () => import("@/views/modelLibrary/vehicleConfigurationList")
+    },
+    {
+        path: "/addVehicleConfiguration",
+        name: "addVehicleConfiguration",
+        meta: {
+            tabname: "新增车辆配置"
+        },
+        component: () => import("@/views/modelLibrary/addVehicleConfiguration")
+    },
+    {
+        path: "/sensorModel",
+        name: "sensorModel",
+        meta: {
+            tabname: "传感器模型"
+        },
+        component: () => import("@/views/modelLibrary/sensorModel")
+    },
+    {
+        path: "/vehicleModel",
+        name: "vehicleModel",
+        meta: {
+            tabname: "车辆模型"
+        },
+        component: () => import("@/views/modelLibrary/vehicleModel")
+    },
+]

+ 57 - 0
src/router/sceneLibrary.js

@@ -0,0 +1,57 @@
+export default [{
+        path: "/naturalDrivingScenarioList",
+        name: "naturalDrivingScenarioList",
+        meta: {
+            tabname: "自然驾驶场景"
+        },
+        component: () => import("@/views/sceneLibrary/naturalDrivingScenarioList")
+    },
+    {
+        path: "/standardRegulationSimulationScenarioList",
+        name: "standardRegulationSimulationScenarioList",
+        meta: {
+            tabname: "标准法规仿真场景"
+        },
+        component: () => import("@/views/sceneLibrary/standardRegulationSimulationScenarioList")
+    },
+    {
+        path: "/trafficAccidentSimulationScenarioList",
+        name: "trafficAccidentSimulationScenarioList",
+        meta: {
+            tabname: "交通事故仿真场景"
+        },
+        component: () => import("@/views/sceneLibrary/trafficAccidentSimulationScenarioList")
+    },
+    {
+        path: "/scenarioTestPackageManagementList",
+        name: "scenarioTestPackageManagementList",
+        meta: {
+            tabname: "场景测试包管理"
+        },
+        component: () => import("@/views/sceneLibrary/scenarioTestPackageManagementList")
+    },
+    {
+        path: "/scenePacketList",
+        name: "scenePacketList",
+        meta: {
+            tabname: "场景数据包"
+        },
+        component: () => import("@/views/sceneLibrary/scenePacketList")
+    },
+    {
+        path: "/gradingRulesList",
+        name: "gradingRulesList",
+        meta: {
+            tabname: "打分规则列表"
+        },
+        component: () => import("@/views/sceneLibrary/gradingRulesList")
+    },
+    {
+        path: "/gradingRule",
+        name: "gradingRule",
+        meta: {
+            tabname: "打分规则"
+        },
+        component: () => import("@/views/sceneLibrary/gradingRule")
+    },
+]

+ 17 - 0
src/router/systemManagement.js

@@ -0,0 +1,17 @@
+export default [{
+        path: "/accountManagement",
+        name: "accountManagement",
+        meta: {
+            tabname: "账户管理"
+        },
+        component: () => import("@/views/systemManagement/accountManagement")
+    },
+    {
+        path: "/addAccount",
+        name: "addAccount",
+        meta: {
+            tabname: "创建账户"
+        },
+        component: () => import("@/views/systemManagement/addAccount")
+    },
+]

+ 14 - 0
src/store/index.js

@@ -0,0 +1,14 @@
+import Vue from "vue";
+import Vuex from "vuex";
+
+Vue.use(Vuex);
+
+export default new Vuex.Store({
+  state: {
+    // configTitleList: ['摄像头', '完美传感器', '激光雷达', '毫米波雷达', 'GPS'],
+    configTitleList: ['摄像头', '完美传感器', '激光雷达', 'GPS'],
+  },
+  mutations: {},
+  actions: {},
+  modules: {},
+});

+ 6 - 0
src/views/About.vue

@@ -0,0 +1,6 @@
+<template>
+  <div class="about">
+    <h1>This is an about page</h1>
+    <router-view class="mainBox"></router-view>
+  </div>
+</template>

+ 220 - 0
src/views/algorithmsLibrary/addAlgorithms.vue

@@ -0,0 +1,220 @@
+<template>
+    <div class="addAlgorithmsPanel">
+        <el-row>
+            <el-col :span="16" :offset="4">
+                <el-form
+                    ref="form"
+                    :model="form"
+                    :rules="rules"
+                    label-width="160px"
+                >
+                    
+                        <el-form-item label="算法名称:" prop="name">
+                            <el-input
+                                placeholder="请输入"
+                                maxlength="30"
+                                v-autoTrim="{ obj: form, key: 'name' }"
+                                v-model="form.name"
+                            >
+                            </el-input>
+                        </el-form-item>
+                        <el-form-item label="算法描述:" prop="name">
+                            <el-input
+                                placeholder="请输入"
+                                maxlength="30"
+                                v-autoTrim="{ obj: form, key: 'name' }"
+                                v-model="form.name"
+                            >
+                            </el-input>
+                        </el-form-item>
+                
+
+                    <el-form-item label="上传方式:" prop="type">
+                        <el-radio
+                            v-model="form.type"
+                            label="1"
+                            @change="typeChange"
+                            >文件上传</el-radio
+                        >
+                        <el-radio
+                            v-model="form.type"
+                            label="2"
+                            @change="typeChange"
+                            >仓库地址</el-radio
+                        >
+                    </el-form-item>
+
+                    <el-form-item
+                        label="导入算法:"
+                        prop="sf"
+                        v-show="type === '1'"
+                    >
+                        <el-input
+                            placeholder="请输入"
+                            maxlength="30"
+                            v-autoTrim="{ obj: form, key: 'sf' }"
+                            v-model="form.sf"
+                        >
+                        </el-input>
+                    </el-form-item>
+
+                    <div v-show="type === '2'">
+                        <el-form-item label="地址:" prop="add">
+                            <el-input
+                                placeholder="请输入"
+                                maxlength="30"
+                                v-autoTrim="{ obj: form, key: 'add' }"
+                                v-model="form.add"
+                            >
+                            </el-input>
+                        </el-form-item>
+                        <el-form-item label="用户名:" prop="add1">
+                            <el-input
+                                placeholder="请输入"
+                                maxlength="30"
+                                v-autoTrim="{ obj: form, key: 'add1' }"
+                                v-model="form.add1"
+                            >
+                            </el-input>
+                        </el-form-item>
+                        <el-form-item label="密码:" prop="add2">
+                            <el-input
+                                placeholder="请输入"
+                                maxlength="30"
+                                type="password"
+                                v-autoTrim="{ obj: form, key: 'add2' }"
+                                v-model="form.add2"
+                            >
+                            </el-input>
+                        </el-form-item>
+                        <div class="testLinkPanel">
+                            <el-button type="primary">测试链接</el-button>
+                        </div>
+                    </div>
+                </el-form>
+
+                <div class="btns">
+                    <el-button type="primary">保存</el-button>
+                    <el-button type="primary">取消</el-button>
+                </div>
+            </el-col>
+        </el-row>
+    </div>
+</template>
+
+<script>
+//import  from '';
+
+export default {
+    name: "addAlgorithms", // 新增算法
+    components: {},
+    data() {
+        return {
+            form: {
+                name: "",
+                add: "",
+                add1: "",
+                add2: "",
+                type: "1",
+                sf: "",
+            },
+            type: "1",
+            rules: {
+                sf: [{ required: true, message: "请选择", trigger: "change" }],
+                type: [
+                    { required: true, message: "请选择", trigger: "change" },
+                ],
+                name: [{ required: true, message: "请输入", trigger: "blur" }],
+                add: [{ required: true, message: "请输入", trigger: "blur" }],
+                add1: [{ required: true, message: "请输入", trigger: "blur" }],
+                add2: [{ required: true, message: "请输入", trigger: "blur" }],
+            },
+        };
+    },
+
+    computed: {
+        // type(){
+        // },
+        // rules() {
+        // }
+    },
+
+    methods: {
+        typeChange(val) {
+            if (val === "1") {
+                this.rules = {
+                    name: [
+                        { required: true, message: "请输入", trigger: "blur" },
+                    ],
+                    sf: [
+                        {
+                            required: true,
+                            message: "请选择",
+                            trigger: "change",
+                        },
+                    ],
+                    type: [
+                        {
+                            required: true,
+                            message: "请选择",
+                            trigger: "change",
+                        },
+                    ],
+                };
+            } else {
+                this.rules = {
+                    name: [
+                        { required: true, message: "请输入", trigger: "blur" },
+                    ],
+                    type: [
+                        {
+                            required: true,
+                            message: "请选择",
+                            trigger: "change",
+                        },
+                    ],
+                    add: [
+                        { required: true, message: "请输入", trigger: "blur" },
+                    ],
+                    add1: [
+                        { required: true, message: "请输入", trigger: "blur" },
+                    ],
+                    add2: [
+                        { required: true, message: "请输入", trigger: "blur" },
+                    ],
+                };
+            }
+            this.$nextTick(() => {
+                this.$refs["form"].clearValidate();
+            });
+            this.type = val;
+        },
+    },
+
+    // mounted: {},
+};
+</script>
+
+<style lang='less' scoped>
+.addAlgorithmsPanel {
+    padding: 45px 30px 0;
+
+    .el-form {
+        // padding: 45px 30px;
+
+        /deep/ .el-input,
+        .el-select {
+            width: 100%;
+        }
+    }
+
+    .testLinkPanel {
+        margin-left: 160px;
+    }
+
+    .btns {
+        padding-top: 90px;
+        text-align: center;
+    }
+}
+</style>

+ 230 - 0
src/views/algorithmsLibrary/algorithmsLibraryList.vue

@@ -0,0 +1,230 @@
+<template>
+    <div>
+        <search-layout :needBox="true">
+            <template slot="searchItem1">
+                <span class="label">ID</span>
+                <el-input
+                    v-model="searchParams.id"
+                    size="small"
+                    clearable
+                    placeholder="请输入"
+                >
+                </el-input>
+            </template>
+            <template slot="searchItem2">
+                <span class="label">算法名称</span>
+                <el-input
+                    v-model="searchParams.clientOrgName"
+                    size="small"
+                    clearable
+                    placeholder="请输入"
+                >
+                </el-input>
+            </template>
+            <template slot="searchItem3">
+                <span class="label">算法描述</span>
+                <el-input
+                    v-model="searchParams.clientOrgName"
+                    size="small"
+                    clearable
+                    placeholder="请输入"
+                >
+                </el-input>
+            </template>
+            <template slot="searchItem4">
+                <span class="label">校验状态</span>
+                <el-select v-model="searchParams.status">
+                    <el-option
+                        v-for="item in list"
+                        :label="item.caption"
+                        :value="item.code"
+                        :key="item.code"
+                    ></el-option>
+                </el-select>
+            </template>
+            <template slot="searchBtn1">
+                <el-button type="primary">查询</el-button>
+            </template>
+            <template slot="searchBtn2">
+                <el-button type="primary">重置</el-button>
+            </template>
+        </search-layout>
+
+        <div class="tabsBox">
+            <toolbarTab
+                :isConnect="true"
+                position="top"
+                :subPageActiveName="subPageActiveName"
+                :toolbarItem="pageBtnList"
+                @toolbarClick="pageControl"
+                class="toolbarTab"
+            >
+            </toolbarTab>
+            <el-button
+                icon="el-icon-circle-plus-outline"
+                @click="addConfig"
+                type="primary"
+                plain
+                >新增</el-button
+            >
+        </div>
+
+        <tableList
+            ref="table"
+            style="border-top: none; margin: 0 30px"
+            :columns="columns"
+            :getDataWay="getDataWay"
+            :pagination="pagination"
+        >
+            <el-table-column label="操作" slot="cgInfos" align="center">
+                <template v-slot="scope">
+                    <i
+                        @click="addMarkDia(scope.row)"
+                        class="el-icon-share elIcon"
+                    ></i>
+                    <i
+                        @click="addMarkDia(scope.row)"
+                        class="el-icon-edit-outline elIcon"
+                    ></i>
+                    <i
+                        @click="addMarkDia(scope.row)"
+                        class="el-icon-delete elIcon"
+                    ></i>
+                </template>
+            </el-table-column>
+        </tableList>
+    </div>
+</template>
+
+<script>
+import searchLayout from "@/components/grid/searchLayout";
+import tableList from "@/components/grid/TableList";
+import toolbarTab from "@/components/toolbar/toolbarTab";
+
+export default {
+    name: "algorithmsLibraryList", // 算法库列表
+    components: { searchLayout, tableList, toolbarTab },
+    data() {
+        return {
+            searchParams: {
+                //搜索参数
+                id: "", //ID
+                clientOrgName: "", //车辆名称
+                clientOrgName1: "", //配置名称
+                clientOrgName2: "", //配置描述
+                status: "",
+            },
+            list: [],
+            activitedPageNum: 1,
+            subPageActiveName: 1,
+            pageBtnList: [
+                {
+                    type: "primary",
+                    title: "公有",
+                    key: "all",
+                    fromId: 1,
+                    method: "showAll",
+                    plain: true,
+                    disabled: false,
+                },
+                {
+                    type: "primary",
+                    title: "私有导入",
+                    key: "notRead",
+                    fromId: 2,
+                    method: "showNotRead",
+                    plain: true,
+                    disabled: false,
+                },
+                {
+                    type: "primary",
+                    title: "私有仓库",
+                    key: "notRead1",
+                    fromId: 3,
+                    method: "showNotRead1",
+                    plain: true,
+                    disabled: false,
+                },
+            ],
+            columns: [
+                //表格列
+                {
+                    label: "ID",
+                    prop: "id",
+                },
+                {
+                    label: "算法名称",
+                    prop: "aid",
+                },
+                {
+                    label: "算法描述",
+                    prop: "ktName",
+                },
+                {
+                    label: "校验状态",
+                    prop: "jbSource",
+                },
+                {
+                    label: "操作",
+                    prop: "cgInfos",
+                    template: true,
+                },
+            ],
+            pagination: {
+                //分页使用
+                currentPage: 1,
+                pageSize: 10,
+                position: "right",
+                pageSizes: [10, 30, 50, 100, 200],
+                layout: "sizes, total, prev, pager, next, jumper",
+            },
+            getDataWay: {
+                //加载表格数据
+                dataType: "data",
+                type: "post",
+                firstRequest: false,
+                data: [
+                    {
+                        id: 1,
+                        ktName: "kjdhfkjsdhfkjsjhdfksdjhfkhwoieyrhfisdhfksjhdf",
+                        jbSource: "收到就好付款时间的回复可见收到货覅无痕",
+                    },
+                    { id: 2 },
+                    { id: 3 },
+                    { id: 4 },
+                    { id: 15 },
+                    { id: 6 },
+                ],
+                // data: this.$api.scientificStatistics.typeProjectStatistics,
+                param: {},
+            },
+        };
+    },
+    methods: {
+        pageControl(data) {
+            this.activitedPageNum = data.fromId;
+        },
+        addConfig() {
+            this.$router.push({ path: "/addAlgorithms" });
+        },
+        addMarkDia() {},
+    },
+};
+</script>
+
+<style scoped lang="less">
+.tabsBox {
+    position: relative;
+    overflow: hidden;
+
+    .el-button {
+        position: absolute;
+        right: 40px;
+        top: 45px;
+    }
+}
+
+.toolbarTab {
+    margin: 45px 40px 15px;
+}
+</style>

+ 26 - 0
src/views/algorithmsLibrary/index.vue

@@ -0,0 +1,26 @@
+<template>
+    <div>
+        <router-view></router-view>
+    </div>
+</template>
+
+<script>
+//import  from '';
+
+export default {
+    name: "algorithmsLibrary", // 算法库
+    components: {},
+    data() {
+        return {};
+    },
+
+    computed: {},
+
+    methods: {},
+
+    // mounted: {},
+};
+</script>
+
+<style lang='less' scoped>
+</style>

+ 48 - 0
src/views/index.vue

@@ -0,0 +1,48 @@
+<template>
+    <div id="main" v-bind:class="{ fold: isFold }">
+        <page-menu @menuFold="menuFold"></page-menu>
+        <bread-crumb></bread-crumb>
+        <router-view class="mainBox"></router-view>
+    </div>
+</template>
+
+<script>
+// @ is an alias to /src
+import pageMenu from "./page/pageMenu";
+import breadCrumb from "@/views/page/breadCrumb";
+
+export default {
+    name: "index",
+    components: {
+        pageMenu,
+        breadCrumb,
+    },
+    data() {
+        return {
+            isFold: false, // menu是否折叠
+        };
+    },
+    methods: {
+        menuFold(flag) {
+            this.isFold = flag;
+        },
+    },
+};
+</script>
+
+<style scoped lang="less">
+#main {
+    position: relative;
+    width: 100%;
+    min-height: 100vh;
+    padding-left: 150px;
+}
+
+#main.fold {
+    padding-left: 60px;
+}
+
+.mainBox {
+    padding-bottom: 60px;
+}
+</style>

+ 305 - 0
src/views/modelLibrary/addVehicleConfiguration.vue

@@ -0,0 +1,305 @@
+<template>
+    <div>
+        <el-form ref="form" :model="form" :rules="rules" label-width="108px">
+            <div class="inputBox flexBox">
+                <span class="label">配置ID</span>
+                <div>{{ confId }}</div>
+            </div>
+            <div class="flexBox headBox">
+                <el-form-item label="配置名称:" prop="secrete">
+                    <el-select v-model="form.secrete">
+                        <el-option
+                            v-for="item in confList"
+                            :label="item.caption"
+                            :value="item.code"
+                            :key="item.code"
+                        ></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="配置描述:" prop="title">
+                    <el-input
+                        placeholder="请输入"
+                        maxlength="150"
+                        v-autoTrim="{ obj: form, key: 'title' }"
+                        v-model="form.title"
+                    >
+                    </el-input>
+                </el-form-item>
+                <el-form-item label="车辆名称:" prop="title">
+                    <el-input
+                        placeholder="请输入"
+                        maxlength="150"
+                        v-autoTrim="{ obj: form, key: 'title' }"
+                        v-model="form.title"
+                    >
+                    </el-input>
+                </el-form-item>
+                <el-form-item label="车辆描述:" prop="title">
+                    <el-input
+                        placeholder="请输入"
+                        maxlength="150"
+                        v-autoTrim="{ obj: form, key: 'title' }"
+                        v-model="form.title"
+                    >
+                    </el-input>
+                </el-form-item>
+            </div>
+
+            <div class="contentBox">
+                <div>
+                    <el-button type="primary" class="previewBtn"
+                        >预览</el-button
+                    >
+                    <handle-config-list
+                        v-for="index in 4"
+                        :isActiveA="index === 1"
+                        :titleCode="index - 1"
+                        :key="index"
+                        @curItem="curItem"
+                    ></handle-config-list>
+                </div>
+                <div class="model">
+                    <img src="../../assets/common/image/car.png" width="100%" />
+                    <div class="btns">
+                        <el-button type="primary" @click="save">保存</el-button>
+                        <el-button type="primary">取消</el-button>
+                        <el-button type="primary">分享</el-button>
+                    </div>
+                </div>
+                <div class="conditions">
+                    <div class="titlePanel">
+                        <i class="el-icon el-icon-video-camera"></i>
+                        <span class="name">{{ curTitle }}</span>
+                    </div>
+                    <div class="forms">
+                        <el-form-item label="X(M):" prop="x">
+                            <el-input
+                                placeholder="请输入"
+                                maxlength="15"
+                                v-autoTrim="{ obj: form, key: 'x' }"
+                                v-model="form.x"
+                            >
+                            </el-input>
+                        </el-form-item>
+                        <el-form-item label="Y(M):" prop="y">
+                            <el-input
+                                placeholder="请输入"
+                                maxlength="15"
+                                v-autoTrim="{ obj: form, key: 'y' }"
+                                v-model="form.y"
+                            >
+                            </el-input>
+                        </el-form-item>
+                        <el-form-item label="Z(M):" prop="z">
+                            <el-input
+                                placeholder="请输入"
+                                maxlength="15"
+                                v-autoTrim="{ obj: form, key: 'z' }"
+                                v-model="form.z"
+                            >
+                            </el-input>
+                        </el-form-item>
+                        <el-form-item label="横摆角(deg):" prop="title">
+                            <el-input
+                                placeholder="请输入"
+                                maxlength="15"
+                                v-autoTrim="{ obj: form, key: 'title' }"
+                                v-model="form.title"
+                            >
+                            </el-input>
+                        </el-form-item>
+                        <el-form-item label="俯仰角(deg):" prop="title">
+                            <el-input
+                                placeholder="请输入"
+                                maxlength="15"
+                                v-autoTrim="{ obj: form, key: 'title' }"
+                                v-model="form.title"
+                            >
+                            </el-input>
+                        </el-form-item>
+                        <el-form-item label="翻滚角(deg):" prop="title">
+                            <el-input
+                                placeholder="请输入"
+                                maxlength="15"
+                                v-autoTrim="{ obj: form, key: 'title' }"
+                                v-model="form.title"
+                            >
+                            </el-input>
+                        </el-form-item>
+                    </div>
+                </div>
+            </div>
+        </el-form>
+    </div>
+</template>
+
+<script>
+import handleConfigList from "./components/handleConfigList.vue";
+
+export default {
+    name: "addVehicleConfiguration", // 新增车辆配置
+    components: { handleConfigList },
+    data() {
+        let validateNum = (rule, value, callback) => {
+            // !/^(-?\d+)(\.\d{1,2})?$/.test(value) &&
+            !/^(-?(0|[1-9][0-9]+))(\.\d{1,2})?$/.test(value) &&
+                callback(new Error(rule.message));
+            callback();
+        };
+        return {
+            confId: "l2s2d3k4j5fl90898",
+            confList: [{ caption: "玩儿", code: 1 }],
+            curTitle: "水电费可接受的李逵负荆",
+            form: {
+                title: "",
+                content: "",
+                sendto: "",
+                sendtoIds: "",
+                md5PathList: [],
+                secrete: "",
+                x: "",
+                y: "",
+                z: "",
+            },
+            rules: {
+                title: [
+                    { required: true, message: "请输入标题", trigger: "blur" },
+                ],
+                content: [
+                    { required: true, message: "请输入内容", trigger: "blur" },
+                ],
+                sendto: [
+                    {
+                        required: true,
+                        message: "请选择发送对象",
+                        trigger: "change",
+                    },
+                ],
+                secrete: [
+                    { required: true, message: "请选择密级", trigger: "blur" },
+                ],
+                x: [
+                    {
+                        required: true,
+                        message: "请输入X轴坐标",
+                        trigger: "blur",
+                    },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有2位小数的数字",
+                        trigger: ["blur"],
+                    },
+                ],
+                y: [
+                    {
+                        required: true,
+                        message: "请输入Y轴坐标",
+                        trigger: "blur",
+                    },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有2位小数的数字",
+                        trigger: ["blur"],
+                    },
+                ],
+                z: [
+                    {
+                        required: true,
+                        message: "请输入Z轴坐标",
+                        trigger: "blur",
+                    },
+                    {
+                        validator: validateNum,
+                        message: "请输入最多带有2位小数的数字",
+                        trigger: ["blur"],
+                    },
+                ],
+            },
+        };
+    },
+
+    computed: {},
+
+    methods: {
+        save() {
+            this.$refs.form.validate().then(
+                async (valid) => {
+                    console.log(6);
+                },
+                (valid) => {
+                    // 表单校验失败
+                    this.$message.error("错了哦");
+                }
+            );
+        },
+        curItem(title) {
+            this.curTitle = title;
+        },
+    },
+
+    // mounted: {},
+};
+</script>
+
+<style lang='less' scoped>
+.el-form {
+    margin: 55px 50px 0;
+}
+
+.headBox {
+    .el-form-item {
+        margin-right: 20px;
+    }
+}
+
+.inputBox.flexBox {
+    margin-bottom: 22px;
+
+    .label {
+        width: 88px;
+    }
+
+    div {
+        line-height: 32px;
+    }
+}
+
+.contentBox {
+    display: flex;
+    justify-content: space-between;
+    margin-top: 30px;
+
+    .previewBtn {
+        width: 100%;
+        margin-bottom: 15px;
+    }
+
+    .model {
+        width: 400px;
+    }
+
+    .btns {
+        padding-top: 30px;
+        text-align: right;
+    }
+
+    .conditions {
+        .titlePanel {
+            padding-bottom: 30px;
+            color: @themeColor;
+
+            .name {
+                margin-left: 10px;
+            }
+        }
+
+        .forms /deep/ .el-form-item__label {
+            width: 120px !important;
+        }
+
+        .forms /deep/ .el-form-item__content {
+            margin-left: 120px !important;
+        }
+    }
+}
+</style>

+ 19 - 0
src/views/modelLibrary/common/util.less

@@ -0,0 +1,19 @@
+.inputBox.flexBox {
+    margin-bottom: 22px;
+
+    .label {
+        width: 138px;
+    }
+
+    div {
+        line-height: 32px;
+    }
+}
+
+.titlePanel {
+    padding: 22px 0;
+}
+
+.el-textarea {
+    width: 230px;
+}

+ 131 - 0
src/views/modelLibrary/components/formCamera.vue

@@ -0,0 +1,131 @@
+<template>
+    <div>
+        <el-form ref="form" :model="form" :rules="rules" label-width="160px">
+            <div class="inputBox flexBox">
+                <span class="label">传感器ID</span>
+                <div>{{ sensorId }}</div>
+            </div>
+            <el-form-item label="传感器名称:" prop="name">
+                <el-input
+                    placeholder="请输入"
+                    maxlength="30"
+                    v-autoTrim="{ obj: form, key: 'name' }"
+                    v-model="form.name"
+                >
+                </el-input>
+            </el-form-item>
+            <el-form-item label="传感器描述:" prop="des">
+                <el-input
+                    v-autoTrim="{
+                        obj: form,
+                        key: 'des',
+                    }"
+                    v-model="form.des"
+                    type="textarea"
+                    placeholder="请输入传感器描述"
+                    :autosize="{ minRows: 4, maxRows: 4 }"
+                    maxlength="200"
+                ></el-input>
+            </el-form-item>
+
+            <div class="titlePanel">
+                <div class="titlePanelBor">内参</div>
+            </div>
+            <el-form-item label="盲区距离(m):" prop="x">
+                <el-input
+                    placeholder="请输入"
+                    maxlength="15"
+                    v-autoTrim="{ obj: form, key: 'x' }"
+                    v-model="form.x"
+                >
+                </el-input>
+            </el-form-item>
+            <el-form-item label="探测距离(m):" prop="x">
+                <el-input
+                    placeholder="请输入"
+                    maxlength="15"
+                    v-autoTrim="{ obj: form, key: 'x' }"
+                    v-model="form.x"
+                >
+                </el-input>
+            </el-form-item>
+            <el-form-item label="水平视场角(deg):" prop="x">
+                <el-input
+                    placeholder="请输入"
+                    maxlength="15"
+                    v-autoTrim="{ obj: form, key: 'x' }"
+                    v-model="form.x"
+                >
+                </el-input>
+            </el-form-item>
+            <el-form-item label="垂直视场角(deg):" prop="x">
+                <el-input
+                    placeholder="请输入"
+                    maxlength="15"
+                    v-autoTrim="{ obj: form, key: 'x' }"
+                    v-model="form.x"
+                >
+                </el-input>
+            </el-form-item>
+            <el-form-item label="分辨率:" prop="y">
+                <el-radio v-model="form.y" label="1">1920x1080</el-radio>
+                <el-radio v-model="form.y" label="2">800x600</el-radio>
+            </el-form-item>
+            <el-form-item label="帧率(HZ):" prop="x">
+                <el-input
+                    placeholder="请输入"
+                    maxlength="15"
+                    v-autoTrim="{ obj: form, key: 'x' }"
+                    v-model="form.x"
+                >
+                </el-input>
+            </el-form-item>
+
+            <div class="titlePanel">
+                <div class="titlePanelBor">其他</div>
+            </div>
+            <el-form-item label="显示本车:" prop="y">
+                <el-radio v-model="form.z" label="1">是</el-radio>
+                <el-radio v-model="form.z" label="2">否</el-radio>
+            </el-form-item>
+        </el-form>
+    </div>
+</template>
+
+<script>
+//import  from '';
+
+export default {
+    name: "formCamera", // form-摄像头
+    components: {},
+    data() {
+        return {
+            sensorId: "LKJFDLKJ",
+            form: {
+                name: "",
+                des: "",
+                x: "",
+                y: "1",
+                z: "1",
+            },
+            rules: {
+                name: [{ required: true, message: "请输入", trigger: "blur" }],
+                des: [{ required: true, message: "请输入", trigger: "blur" }],
+                x: [{ required: true, message: "请输入", trigger: "blur" }],
+                y: [{ required: true, message: "请选择", trigger: "change" }],
+                z: [{ required: true, message: "请选择", trigger: "change" }],
+            },
+        };
+    },
+
+    computed: {},
+
+    methods: {},
+
+    // mounted: {},
+};
+</script>
+
+<style lang='less' scoped>
+@import '../common/util.less';
+</style>

+ 105 - 0
src/views/modelLibrary/components/formGps.vue

@@ -0,0 +1,105 @@
+<template>
+    <div>
+        <el-form ref="form" :model="form" :rules="rules" label-width="160px">
+            <div class="inputBox flexBox">
+                <span class="label">传感器ID</span>
+                <div>{{ sensorId }}</div>
+            </div>
+            <el-form-item label="传感器名称:" prop="name">
+                <el-input
+                    placeholder="请输入"
+                    maxlength="30"
+                    v-autoTrim="{ obj: form, key: 'name' }"
+                    v-model="form.name"
+                >
+                </el-input>
+            </el-form-item>
+            <el-form-item label="传感器描述:" prop="des">
+                <el-input
+                    v-autoTrim="{
+                        obj: form,
+                        key: 'des',
+                    }"
+                    v-model="form.des"
+                    type="textarea"
+                    placeholder="请输入传感器描述"
+                    :autosize="{ minRows: 4, maxRows: 4 }"
+                    maxlength="200"
+                ></el-input>
+            </el-form-item>
+
+            <div class="titlePanel">
+                <div class="titlePanelBor">内参</div>
+            </div>
+            <el-form-item label="经度偏移量(deg):" prop="x">
+                <el-input
+                    placeholder="请输入"
+                    maxlength="15"
+                    v-autoTrim="{ obj: form, key: 'x' }"
+                    v-model="form.x"
+                >
+                </el-input>
+            </el-form-item>
+            <el-form-item label="纬度偏移量(deg):" prop="x">
+                <el-input
+                    placeholder="请输入"
+                    maxlength="15"
+                    v-autoTrim="{ obj: form, key: 'x' }"
+                    v-model="form.x"
+                >
+                </el-input>
+            </el-form-item>
+
+            <div class="titlePanel">
+                <div class="titlePanelBor">其他</div>
+            </div>
+            <el-form-item label="帧率(HZ):" prop="x">
+                <el-input
+                    placeholder="请输入"
+                    maxlength="15"
+                    v-autoTrim="{ obj: form, key: 'x' }"
+                    v-model="form.x"
+                >
+                </el-input>
+            </el-form-item>
+        </el-form>
+    </div>
+</template>
+
+<script>
+//import  from '';
+
+export default {
+    name: "formGps", // form-GPS
+    components: {},
+    data() {
+        return {
+            sensorId: "LKJFDLKJ",
+            form: {
+                name: "",
+                des: "",
+                x: "",
+                y: "1",
+                z: "1",
+            },
+            rules: {
+                name: [{ required: true, message: "请输入", trigger: "blur" }],
+                des: [{ required: true, message: "请输入", trigger: "blur" }],
+                x: [{ required: true, message: "请输入", trigger: "blur" }],
+                y: [{ required: true, message: "请选择", trigger: "change" }],
+                z: [{ required: true, message: "请选择", trigger: "change" }],
+            },
+        };
+    },
+
+    computed: {},
+
+    methods: {},
+
+    // mounted: {},
+};
+</script>
+
+<style lang='less' scoped>
+@import "../common/util.less";
+</style>

+ 145 - 0
src/views/modelLibrary/components/formLaserRadar.vue

@@ -0,0 +1,145 @@
+<template>
+    <div>
+        <el-form ref="form" :model="form" :rules="rules" label-width="160px">
+            <div class="inputBox flexBox">
+                <span class="label">传感器ID</span>
+                <div>{{ sensorId }}</div>
+            </div>
+            <el-form-item label="传感器名称:" prop="name">
+                <el-input
+                    placeholder="请输入"
+                    maxlength="30"
+                    v-autoTrim="{ obj: form, key: 'name' }"
+                    v-model="form.name"
+                >
+                </el-input>
+            </el-form-item>
+            <el-form-item label="传感器描述:" prop="des">
+                <el-input
+                    v-autoTrim="{
+                        obj: form,
+                        key: 'des',
+                    }"
+                    v-model="form.des"
+                    type="textarea"
+                    placeholder="请输入传感器描述"
+                    :autosize="{ minRows: 4, maxRows: 4 }"
+                    maxlength="200"
+                ></el-input>
+            </el-form-item>
+
+            <div class="titlePanel">
+                <div class="titlePanelBor">内参</div>
+            </div>
+            <el-form-item label="盲区距离(m):" prop="x">
+                <el-input
+                    placeholder="请输入"
+                    maxlength="15"
+                    v-autoTrim="{ obj: form, key: 'x' }"
+                    v-model="form.x"
+                >
+                </el-input>
+            </el-form-item>
+            <el-form-item label="探测距离(m):" prop="x">
+                <el-input
+                    placeholder="请输入"
+                    maxlength="15"
+                    v-autoTrim="{ obj: form, key: 'x' }"
+                    v-model="form.x"
+                >
+                </el-input>
+            </el-form-item>
+            <el-form-item label="水平视场角(deg):" prop="x">
+                <el-input
+                    placeholder="请输入"
+                    maxlength="15"
+                    v-autoTrim="{ obj: form, key: 'x' }"
+                    v-model="form.x"
+                >
+                </el-input>
+            </el-form-item>
+            <el-form-item label="垂直视场角(deg):" prop="x">
+                <el-input
+                    placeholder="请输入"
+                    maxlength="15"
+                    v-autoTrim="{ obj: form, key: 'x' }"
+                    v-model="form.x"
+                >
+                </el-input>
+            </el-form-item>
+            <el-form-item label="线数(个):" prop="x">
+                <el-input
+                    placeholder="请输入"
+                    maxlength="15"
+                    v-autoTrim="{ obj: form, key: 'x' }"
+                    v-model="form.x"
+                >
+                </el-input>
+            </el-form-item>
+            <el-form-item label="帧率(HZ):" prop="x">
+                <el-input
+                    placeholder="请输入"
+                    maxlength="15"
+                    v-autoTrim="{ obj: form, key: 'x' }"
+                    v-model="form.x"
+                >
+                </el-input>
+            </el-form-item>
+            <el-form-item label="出点数(个):" prop="x">
+                <el-input
+                    placeholder="请输入"
+                    maxlength="15"
+                    v-autoTrim="{ obj: form, key: 'x' }"
+                    v-model="form.x"
+                >
+                </el-input>
+            </el-form-item>
+
+            <div class="titlePanel">
+                <div class="titlePanelBor">其他</div>
+            </div>
+            <el-form-item label="输出模式:" prop="y">
+                <el-radio v-model="form.z" label="1">大地坐标系</el-radio>
+                <el-radio v-model="form.z" label="2">相对本车坐标系</el-radio>
+            </el-form-item>
+        </el-form>
+    </div>
+</template>
+
+<script>
+//import  from '';
+
+export default {
+    name: "formLaserRadar", // form-激光雷达
+    components: {},
+    data() {
+        return {
+            sensorId: "LKJFDLKJ",
+            form: {
+                name: "",
+                des: "",
+                x: "",
+                y: "1",
+                z: "1",
+            },
+            rules: {
+                name: [{ required: true, message: "请输入", trigger: "blur" }],
+                des: [{ required: true, message: "请输入", trigger: "blur" }],
+                x: [{ required: true, message: "请输入", trigger: "blur" }],
+                y: [{ required: true, message: "请选择", trigger: "change" }],
+                z: [{ required: true, message: "请选择", trigger: "change" }],
+            },
+        };
+    },
+
+    computed: {},
+
+    methods: {},
+
+    // mounted: {},
+};
+</script>
+
+<style lang='less' scoped>
+@import "../common/util.less";
+</style>

+ 26 - 0
src/views/modelLibrary/components/formMillimeterWaveRadar.vue

@@ -0,0 +1,26 @@
+<template>
+    <div>
+        毫米波雷达
+    </div>
+</template>
+
+<script>
+//import  from '';
+
+export default {
+    name: "formMillimeterWaveRadar", // form-毫米波雷达
+    components: {},
+    data() {
+        return {};
+    },
+
+    computed: {},
+
+    methods: {},
+
+    // mounted: {},
+};
+</script>
+
+<style lang='less' scoped>
+</style>

+ 205 - 0
src/views/modelLibrary/components/formPerfectSensor.vue

@@ -0,0 +1,205 @@
+<template>
+    <div>
+        <el-form ref="form" :model="form" :rules="rules" label-width="160px">
+            <div class="inputBox flexBox">
+                <span class="label">传感器ID</span>
+                <div>{{ sensorId }}</div>
+            </div>
+            <el-form-item label="传感器名称:" prop="name">
+                <el-input
+                    placeholder="请输入"
+                    maxlength="30"
+                    v-autoTrim="{ obj: form, key: 'name' }"
+                    v-model="form.name"
+                >
+                </el-input>
+            </el-form-item>
+            <el-form-item label="传感器描述:" prop="des">
+                <el-input
+                    v-autoTrim="{
+                        obj: form,
+                        key: 'des',
+                    }"
+                    v-model="form.des"
+                    type="textarea"
+                    placeholder="请输入传感器描述"
+                    :autosize="{ minRows: 4, maxRows: 4 }"
+                    maxlength="200"
+                ></el-input>
+            </el-form-item>
+
+            <div class="titlePanel">
+                <div class="titlePanelBor">内参</div>
+            </div>
+            <el-form-item label="盲区距离(m):" prop="x">
+                <el-input
+                    placeholder="请输入"
+                    maxlength="15"
+                    v-autoTrim="{ obj: form, key: 'x' }"
+                    v-model="form.x"
+                >
+                </el-input>
+            </el-form-item>
+            <el-form-item label="探测距离(m):" prop="x">
+                <el-input
+                    placeholder="请输入"
+                    maxlength="15"
+                    v-autoTrim="{ obj: form, key: 'x' }"
+                    v-model="form.x"
+                >
+                </el-input>
+            </el-form-item>
+            <el-form-item label="水平视场角左(deg):" prop="x">
+                <el-input
+                    placeholder="请输入"
+                    maxlength="15"
+                    v-autoTrim="{ obj: form, key: 'x' }"
+                    v-model="form.x"
+                >
+                </el-input>
+            </el-form-item>
+            <el-form-item label="水平视场角右(deg):" prop="x">
+                <el-input
+                    placeholder="请输入"
+                    maxlength="15"
+                    v-autoTrim="{ obj: form, key: 'x' }"
+                    v-model="form.x"
+                >
+                </el-input>
+            </el-form-item>
+            <el-form-item label="垂直视场角顶(deg):" prop="x">
+                <el-input
+                    placeholder="请输入"
+                    maxlength="15"
+                    v-autoTrim="{ obj: form, key: 'x' }"
+                    v-model="form.x"
+                >
+                </el-input>
+            </el-form-item>
+            <el-form-item label="垂直视场角底(deg):" prop="x">
+                <el-input
+                    placeholder="请输入"
+                    maxlength="15"
+                    v-autoTrim="{ obj: form, key: 'x' }"
+                    v-model="form.x"
+                >
+                </el-input>
+            </el-form-item>
+
+            <div class="titlePanel">
+                <div class="titlePanelBor">其他</div>
+            </div>
+            <el-form-item label="显示探测锥:" prop="y">
+                <el-radio v-model="form.z" label="1">是</el-radio>
+                <el-radio v-model="form.z" label="2">否</el-radio>
+            </el-form-item>
+            <el-form-item label="最大目标物数量(个):" prop="x">
+                <el-input
+                    placeholder="请输入"
+                    maxlength="15"
+                    v-autoTrim="{ obj: form, key: 'x' }"
+                    v-model="form.x"
+                >
+                </el-input>
+            </el-form-item>
+            <el-form-item label="坐标系:" prop="s">
+                <el-select v-model="form.s">
+                    <el-option
+                        v-for="item in sList"
+                        :label="item.caption"
+                        :value="item.code"
+                        :key="item.code"
+                    ></el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item label="目标物筛选:" prop="targetSel">
+                <el-checkbox
+                    :indeterminate="isIndeterminate"
+                    v-model="checkAll"
+                    @change="handleCheckAllChange"
+                    >全选</el-checkbox
+                >
+                <el-checkbox-group
+                    v-model="form.targetSel"
+                    @change="handleCheckedTargetChange"
+                >
+                    <el-checkbox
+                        v-for="target in targetOptions"
+                        :label="target.code"
+                        :key="target.code"
+                        >{{ target.title }}</el-checkbox
+                    >
+                </el-checkbox-group>
+            </el-form-item>
+        </el-form>
+    </div>
+</template>
+
+<script>
+//import  from '';
+
+const targetOptions = [
+    { code: "1", title: "车辆" },
+    { code: "2", title: "行人" },
+    { code: "3", title: "路灯" },
+    { code: "4", title: "信号灯" },
+    { code: "5", title: "障碍物" },
+    { code: "6", title: "道路信息" },
+    { code: "7", title: "车道信息" },
+    { code: "8", title: "车道完整信息" },
+    { code: "9", title: "路标" },
+];
+
+export default {
+    name: "formPerfectSensor", // form-完美传感器
+    components: {},
+    data() {
+        return {
+            sensorId: "LKJFDLKJ",
+            sList: [],
+            checkAll: false,
+            isIndeterminate: false,
+            targetOptions: targetOptions,
+            form: {
+                name: "",
+                des: "",
+                x: "",
+                y: "1",
+                z: "1",
+                s: "",
+                b: "",
+                targetSel: [],
+            },
+            rules: {
+                name: [{ required: true, message: "请输入", trigger: "blur" }],
+                des: [{ required: true, message: "请输入", trigger: "blur" }],
+                x: [{ required: true, message: "请输入", trigger: "blur" }],
+                y: [{ required: true, message: "请选择", trigger: "change" }],
+                z: [{ required: true, message: "请选择", trigger: "change" }],
+                s: [{ required: true, message: "请选择", trigger: "change" }],
+            },
+        };
+    },
+
+    computed: {},
+
+    methods: {
+        handleCheckAllChange(val) {
+            this.form.targetSel = val ? targetOptions.map((i)=>i.code) : [];
+            this.isIndeterminate = false;
+        },
+        handleCheckedTargetChange(value) {
+            let checkedCount = value.length;
+            this.checkAll = checkedCount === this.form.targetSel.length;
+            this.isIndeterminate =
+                checkedCount > 0 && checkedCount < this.targetOptions.length;
+        },
+    },
+
+    // mounted: {},
+};
+</script>
+
+<style lang='less' scoped>
+@import "../common/util.less";
+</style>

+ 204 - 0
src/views/modelLibrary/components/handleConfigList.vue

@@ -0,0 +1,204 @@
+<template>
+    <div v-bind:class="{ isActive: isActive }">
+        <div class="titlePanel">
+            <i class="el-icon el-icon-caret-right" @click="handleChange"></i>
+            <div class="title" @click="handleChange">{{ titleText }}</div>
+            <i class="el-icon el-icon-circle-plus-outline" @click="add"></i>
+        </div>
+        <ul class="listPanel">
+            <li class="content">
+                <i class="el-icon el-icon-video-camera" @click="configHandle('水电费可接受的李逵负荆')"></i>
+                <div class="name" @click="configHandle('水电费可接受的李逵负荆')">水电费可接受的李逵负荆</div>
+                <i class="el-icon el-icon-delete"></i>
+            </li>
+            <li class="content">
+                <i class="el-icon el-icon-video-camera" @click="configHandle('电饭锅')"></i>
+                <div class="name" @click="configHandle('电饭锅')">电饭锅</div>
+                <i class="el-icon el-icon-delete"></i>
+            </li>
+        </ul>
+
+        <el-dialog
+            :title="dialogTitle"
+            :visible.sync="dialogVisible"
+            width="690px"
+            :close-on-click-modal="false"
+            :close-on-press-escape="false"
+        >
+            <el-form
+                ref="form"
+                :model="form"
+                :rules="rules"
+                label-width="108px"
+            >
+                <el-form-item label="传感器:" prop="name">
+                    <el-input
+                        placeholder="请输入传感器名称"
+                        maxlength="30"
+                        class="name"
+                        v-autoTrim="{ obj: form, key: 'name' }"
+                        v-model="form.name"
+                    >
+                    </el-input>
+                </el-form-item>
+                <el-form-item label="传感器描述:" prop="des">
+                    <el-input
+                        v-autoTrim="{
+                            obj: form,
+                            key: 'des',
+                        }"
+                        v-model="form.des"
+                        type="textarea"
+                        placeholder="请输入传感器描述"
+                        :autosize="{ minRows: 4, maxRows: 4 }"
+                        maxlength="200"
+                    ></el-input>
+                </el-form-item>
+            </el-form>
+            <span slot="footer">
+                <el-button type="primary" @click="dialogVisible = false"
+                    >确 定</el-button
+                >
+                <el-button @click="dialogVisible = false">取 消</el-button>
+            </span>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import { mapState } from "vuex";
+
+export default {
+    name: "handleConfigList",
+    components: {},
+    data() {
+        return {
+            isActive: false,
+            titleText: "",
+            dialogTitle: "",
+            // titleTexts: ['摄像头','完美传感器','激光雷达','毫米波雷达','GPS'],
+            // dialogTitle: "",
+            dialogVisible: false,
+            form: {
+                name: "",
+                des: "",
+            },
+            rules: {
+                name: [
+                    { required: true, message: "请输入", trigger: "blur" },
+                ],
+            },
+        };
+    },
+    props: {
+        titleCode: {
+            default: 0,
+            type: Number,
+        },
+        isActiveA: {
+            default: false,
+            type: Boolean,
+        },
+    },
+
+    computed: {
+        ...mapState(["configTitleList"]),
+    },
+
+    methods: {
+        handleChange() {
+            if (this.isActive) {
+                this.isActive = false;
+            } else {
+                this.isActive = true;
+            }
+        },
+        add() {
+            this.dialogVisible = true;
+        },
+        handleClose(done) {
+            done();
+        },
+        configHandle(title){
+            this.$emit('curItem',title);
+        },
+    },
+
+    mounted() {
+        this.isActive = this.isActiveA;
+        this.titleText = this.configTitleList[this.titleCode];
+        this.dialogTitle = "添加" + this.configTitleList[this.titleCode];
+    },
+};
+</script>
+
+<style lang='less' scoped>
+.titlePanel {
+    display: flex;
+    align-items: center;
+    margin-bottom: 24px;
+    cursor: pointer;
+
+    .title {
+        flex: 1;
+        padding-left: 10px;
+        font-weight: bold;
+    }
+
+    .el-icon-caret-right {
+        transform: rotate(0);
+        transition: all 0.3s;
+    }
+}
+
+.el-icon {
+    color: @themeColor;
+    font-size: 18px;
+}
+
+.listPanel {
+    height: 0;
+    overflow: hidden;
+    transition: all 0.3s;
+
+    .content {
+        display: flex;
+        align-items: center;
+        margin-left: 24px;
+        margin-bottom: 15px;
+        cursor: pointer;
+        transition: all 0.3s;
+
+        .name {
+            flex: 1;
+            margin-left: 5px;
+            margin-right: 5px;
+        }
+    }
+}
+
+.isActive {
+    .el-icon-caret-right {
+        transform: rotate(90deg);
+        transition: all 0.3s;
+    }
+
+    .listPanel {
+        height: auto;
+        transition: all 0.3s;
+    }
+}
+
+/deep/ .el-dialog__footer {
+    padding: 10px 20px 20px;
+    text-align: right;
+}
+
+/deep/ .el-dialog__header {
+    background-color: #ffffff;
+}
+
+/deep/ .el-dialog__headerbtn .el-dialog__close {
+    color: #909399;
+}
+</style>

+ 150 - 0
src/views/modelLibrary/components/modelList.vue

@@ -0,0 +1,150 @@
+<template>
+    <div class="modelListPanel">
+        <div class="addBtn">
+            <span>新增</span>
+            <i class="el-icon-plus"></i>
+        </div>
+        <div class="listPanel">
+            <div class="inputPanel">
+                <el-input
+                    placeholder="请输入内容"
+                    v-model="input3"
+                    class="input-with-select"
+                >
+                    <el-button slot="append" icon="el-icon-search"></el-button>
+                </el-input>
+            </div>
+            <div class="title">公有</div>
+            <ul class="list listPub">
+                <li><span>传感器-1</span></li>
+                <li><span>传感器-2</span></li>
+                <li><span>传感器-3</span></li>
+                <li><span>传感器-4</span></li>
+            </ul>
+            <div class="title">私有</div>
+            <ul class="list listPri">
+                <li><span>传感器-1</span><i class="el-icon-delete"></i></li>
+                <li><span>传感器-1</span><i class="el-icon-delete"></i></li>
+                <li><span>传感器-1</span><i class="el-icon-delete"></i></li>
+                <li><span>传感器-1</span><i class="el-icon-delete"></i></li>
+            </ul>
+        </div>
+    </div>
+</template>
+
+<script>
+//import  from '';
+
+export default {
+    name: "modelList", // 模型列表
+    components: {},
+    data() {
+        return {
+            input3: "",
+        };
+    },
+
+    computed: {},
+
+    methods: {},
+
+    // mounted: {},
+};
+</script>
+
+<style lang='less' scoped>
+.modelListPanel {
+    position: relative;
+    width: 322px;
+    margin-right: 10px;
+
+    .addBtn {
+        position: relative;
+        z-index: 1;
+        display: flex;
+        justify-content: space-between;
+        width: 320px;
+        padding: 12px 24px;
+        margin: 0 auto;
+        border-radius: 3px;
+        color: #ffffff;
+        background: @themeColor;
+        cursor: pointer;
+    }
+
+    .listPanel {
+        padding-top: 18px;
+        border: 1px solid @grayLine;
+        border-radius: 4px;
+        box-shadow: 3px 0 6px @grayLine, 0 3px 6px @grayLine, 0 0px transparent,
+            -3px 0 6px @grayLine;
+
+        .title {
+            border-left: 6px solid @themeColor;
+            padding-left: 20px;
+            margin-bottom: 4px;
+            color: @themeColor;
+            font-size: 16px;
+            font-weight: bold;
+        }
+
+        .list {
+            padding: 0 10px 40px 26px;
+            margin-right: 6px;
+            border-top: 1px solid @grayLine;
+
+            li {
+                margin-top: 10px;
+
+                span,
+                i {
+                    cursor: pointer;
+                }
+            }
+        }
+
+        .listPri li {
+            display: flex;
+            justify-content: space-between;
+            width: 100%;
+
+            i {
+                font-size: 16px;
+                color: @themeColor;
+            }
+        }
+    }
+
+    .inputPanel {
+        margin: 0 10px 20px;
+
+        .el-input {
+            width: 300px;
+        }
+
+        /deep/ .el-input-group__append {
+            background-color: #fff;
+            border-color: #e5e5e5;
+            padding: 0;
+            overflow: hidden;
+        }
+    }
+
+    .input-with-select .el-input-group__prepend {
+        background-color: #fff;
+    }
+
+    /deep/ .el-input-group__append button.el-button,
+    /deep/ .el-input-group__append div.el-select .el-input__inner,
+    /deep/ .el-input-group__append div.el-select:hover .el-input__inner,
+    /deep/ .el-input-group__prepend button.el-button,
+    /deep/ .el-input-group__prepend div.el-select .el-input__inner,
+    /deep/ .el-input-group__prepend div.el-select:hover .el-input__inner {
+        border-color: transparent;
+        background-color: transparent;
+        color: inherit;
+        border-top: 0;
+        border-bottom: 0;
+    }
+}
+</style>

+ 28 - 0
src/views/modelLibrary/index.vue

@@ -0,0 +1,28 @@
+<template>
+  <div>
+      <router-view></router-view>
+  </div>
+</template>
+
+<script>
+//import  from '';
+
+export default {
+  name: 'modelLibrary', // 模型库
+  components: {},
+  data () {
+    return {
+
+    };
+  },
+
+  computed: {},
+
+  methods: {},
+
+  // mounted: {},
+}
+</script>
+
+<style lang='less' scoped>
+</style>

+ 155 - 0
src/views/modelLibrary/sensorModel.vue

@@ -0,0 +1,155 @@
+<template>
+    <div class="sensorModelPanel">
+        <model-list class="modelList"></model-list>
+        <div class="contentPanel">
+            <toolbarTab
+                :isConnect="true"
+                position="top"
+                :subPageActiveName="subPageActiveName"
+                :toolbarItem="subPageList"
+                @toolbarClick="toolsControl"
+            >
+            </toolbarTab>
+
+            <div class="tabContent">
+                <form-camera v-if="subPageActiveName === 1"></form-camera>
+                <form-perfect-sensor
+                    v-if="subPageActiveName === 2"
+                ></form-perfect-sensor>
+                <form-laser-radar
+                    v-if="subPageActiveName === 3"
+                ></form-laser-radar>
+                <!-- <form-millimeter-wave-radar
+                    v-if="subPageActiveName === 4"
+                ></form-millimeter-wave-radar> -->
+                <form-gps v-if="subPageActiveName === 4"></form-gps>
+                <div class="model">
+                    <img :src="imgSrc" width="100%" />
+                </div>
+            </div>
+            <div class="btns">
+                <el-button type="primary">保存</el-button>
+                <el-button type="primary">取消</el-button>
+                <el-button type="primary">分享</el-button>
+                <el-button type="primary">另存为</el-button>
+            </div>
+        </div>
+    </div>
+</template>
+
+<script>
+import modelList from "./components/modelList.vue";
+import toolbarTab from "@/components/toolbar/toolbarTab";
+import { mapState } from "vuex";
+import formCamera from "./components/formCamera.vue";
+import formPerfectSensor from "./components/formPerfectSensor.vue";
+import formLaserRadar from "./components/formLaserRadar.vue";
+import formMillimeterWaveRadar from "./components/formMillimeterWaveRadar.vue";
+import formGps from "./components/formGps.vue";
+
+export default {
+    name: "sensorModel", // 传感器模型
+    components: {
+        modelList,
+        toolbarTab,
+        formCamera,
+        formPerfectSensor,
+        formLaserRadar,
+        formMillimeterWaveRadar,
+        formGps,
+    },
+    data() {
+        return {
+            subPageActiveName: 1,
+            fromId: 1,
+            imgSrc: require("@/assets/common/image/car.png"),
+        };
+    },
+
+    computed: {
+        ...mapState(["configTitleList"]),
+        subPageList() {
+            return [
+                {
+                    type: "primary",
+                    plain: true,
+                    title: this.configTitleList[0],
+                    disabled: false,
+                    fromId: 1,
+                },
+                {
+                    type: "primary",
+                    plain: true,
+                    title: this.configTitleList[1],
+                    disabled: false,
+                    fromId: 2,
+                },
+                {
+                    type: "primary",
+                    plain: true,
+                    title: this.configTitleList[2],
+                    disabled: false,
+                    fromId: 3,
+                },
+                {
+                    type: "primary",
+                    plain: true,
+                    title: this.configTitleList[3],
+                    disabled: false,
+                    fromId: 4,
+                },
+                // {
+                //     type: "primary",
+                //     plain: true,
+                //     title: this.configTitleList[4],
+                //     disabled: false,
+                //     fromId: 5,
+                // },
+            ];
+        },
+    },
+
+    methods: {
+        toolsControl(item) {
+            this.subPageActiveName = item.fromId;
+        },
+    },
+
+    // mounted: {},
+};
+</script>
+
+<style lang='less' scoped>
+.sensorModelPanel {
+    display: flex;
+    flex: 1;
+    padding: 15px 30px 30px;
+
+    .modelList /deep/ .listPanel {
+        min-height: 400px;
+        height: calc(100vh - 200px);
+    }
+
+    .contentPanel {
+        flex: 1;
+    }
+
+    .tabContent {
+        display: flex;
+        padding-top: 15px;
+
+        .model {
+            width: 400px;
+        }
+    }
+
+    .btns {
+        padding-top: 30px;
+        text-align: center;
+    }
+
+    /deep/ .el-tabs__item {
+        width: 150px;
+    }
+}
+</style>

+ 370 - 0
src/views/modelLibrary/vehicleConfigurationList.vue

@@ -0,0 +1,370 @@
+<template>
+    <div>
+        <search-layout :needBox="true">
+            <template slot="searchItem1">
+                <span class="label">配置ID</span>
+                <el-input
+                    v-model="searchParams.id"
+                    size="small"
+                    clearable
+                    placeholder="请输入"
+                >
+                </el-input>
+            </template>
+            <template slot="searchItem2">
+                <span class="label">配置名称</span>
+                <el-input
+                    v-model="searchParams.clientOrgName"
+                    size="small"
+                    clearable
+                    placeholder="请输入"
+                >
+                </el-input>
+            </template>
+            <template slot="searchItem3">
+                <span class="label">配置描述</span>
+                <el-input
+                    v-model="searchParams.clientOrgName"
+                    size="small"
+                    clearable
+                    placeholder="请输入"
+                >
+                </el-input>
+            </template>
+            <template slot="searchItem4">
+                <span class="label">车辆名称</span>
+                <el-input
+                    v-model="searchParams.clientOrgName"
+                    size="small"
+                    clearable
+                    placeholder="请输入"
+                >
+                </el-input>
+            </template>
+            <template slot="searchItem5">
+                <span class="label">车辆描述</span>
+                <el-input
+                    v-model="searchParams.clientOrgName"
+                    size="small"
+                    clearable
+                    placeholder="请输入"
+                >
+                </el-input>
+            </template>
+
+            <template slot="searchBtn1">
+                <el-button type="primary">查询</el-button>
+            </template>
+            <template slot="searchBtn2">
+                <el-button type="primary">重置</el-button>
+            </template>
+        </search-layout>
+
+        <div class="tabsBox">
+            <toolbarTab
+                :isConnect="true"
+                position="top"
+                :subPageActiveName="subPageActiveName"
+                :toolbarItem="pageBtnList"
+                @toolbarClick="pageControl"
+                class="toolbarTab"
+            >
+            </toolbarTab>
+            <el-button
+                icon="el-icon-circle-plus-outline"
+                @click="addConfig"
+                type="primary"
+                plain
+                :disabled="activitedPageNum === 1"
+                >新增</el-button
+            >
+        </div>
+
+        <!-- <div > -->
+        <tableList
+            v-if="activitedPageNum === 1"
+            ref="table"
+            style="border-top: none; margin: 0 30px"
+            :columns="columns"
+            :getDataWay="getDataWay"
+            :pagination="pagination"
+        >
+            <el-table-column label="操作" slot="cgInfos" align="center">
+                <template v-slot="scope">
+                    <!-- <span>
+                        <i
+                            @click="addMarkDia(scope.row)"
+                            class="el-icon-share elIcon"
+                        ></i
+                        >分享
+                    </span>
+                    <span>
+                        <i
+                            @click="addMarkDia(scope.row)"
+                            class="el-icon-edit-outline elIcon"
+                        ></i
+                        >编辑
+                    </span>
+                    <span>
+                        <i
+                            @click="addMarkDia(scope.row)"
+                            class="el-icon-close elIcon"
+                        ></i
+                        >删除
+                    </span> -->
+
+                    <i
+                        @click="addMarkDia(scope.row)"
+                        class="el-icon-share elIcon"
+                    ></i>
+                    <i
+                        @click="addMarkDia(scope.row)"
+                        class="el-icon-edit-outline elIcon"
+                    ></i>
+                    <i
+                        @click="addMarkDia(scope.row)"
+                        class="el-icon-delete elIcon"
+                    ></i>
+                </template>
+            </el-table-column>
+        </tableList>
+        <div v-else>
+            <tableList
+                ref="tableA"
+                style="border-top: none; margin: 0 30px"
+                :columns="columnsA"
+                :getDataWay="getDataWayA"
+                :pagination="paginationA"
+            >
+                <el-table-column label="操作" slot="cgInfos" align="center">
+                    <template v-slot="scope">
+                        <i
+                            @click="addMarkDia(scope.row)"
+                            class="el-icon-share elIcon"
+                        ></i>
+                        <i
+                            @click="addMarkDia(scope.row)"
+                            class="el-icon-edit-outline elIcon"
+                        ></i>
+                        <i
+                            @click="addMarkDia(scope.row)"
+                            class="el-icon-share elIcon"
+                        ></i>
+                        <i
+                            @click="addMarkDia(scope.row)"
+                            class="el-icon-delete elIcon"
+                        ></i>
+                    </template>
+                </el-table-column>
+            </tableList>
+        </div>
+    </div>
+</template>
+
+<script>
+import searchLayout from "@/components/grid/searchLayout";
+import tableList from "@/components/grid/TableList";
+import toolbarTab from "@/components/toolbar/toolbarTab";
+
+export default {
+    name: "vehicleConfigurationList", // 车辆配置
+    components: { searchLayout, tableList, toolbarTab },
+    data() {
+        return {
+            searchParams: {
+                //搜索参数
+                id: "", //ID
+                clientOrgName: "", //车辆名称
+                clientOrgName1: "", //配置名称
+                clientOrgName2: "", //配置描述
+            },
+            activitedPageNum: 1,
+            subPageActiveName: 1,
+            pageBtnList: [
+                {
+                    type: "primary",
+                    title: "公有",
+                    key: "all",
+                    fromId: 1,
+                    method: "showAll",
+                    plain: true,
+                    disabled: false,
+                },
+                {
+                    type: "primary",
+                    title: "私有",
+                    key: "notRead",
+                    fromId: 2,
+                    method: "showNotRead",
+                    plain: true,
+                    disabled: false,
+                },
+            ],
+            columns: [
+                {
+                    label: "配置ID",
+                    prop: "id",
+                    // width: 110,
+                },
+                {
+                    label: "配置名称",
+                    prop: "ktName",
+                    // template: true,
+                },
+                {
+                    label: "配置描述",
+                    prop: "jbSource",
+                    // width: 130,
+                },
+                {
+                    label: "车辆名称",
+                    prop: "startDateStr",
+                    width: 120,
+                },
+                {
+                    label: "车辆描述",
+                    prop: "endDateStr",
+                    width: 120,
+                },
+                {
+                    label: "传感器配置",
+                    prop: "projectDateStr",
+                    width: 120,
+                },
+                {
+                    label: "操作",
+                    prop: "cgInfos",
+                    template: true,
+                },
+            ],
+            columnsA: [
+                {
+                    label: "配置ID",
+                    prop: "id",
+                    // width: 110,
+                },
+                {
+                    label: "配置名称",
+                    prop: "ktName",
+                    // template: true,
+                },
+                {
+                    label: "配置描述",
+                    prop: "jbSource",
+                    // width: 130,
+                },
+                {
+                    label: "车辆名称",
+                    prop: "startDateStr",
+                    width: 120,
+                },
+                {
+                    label: "车辆描述",
+                    prop: "endDateStr",
+                    width: 120,
+                },
+                {
+                    label: "传感器配置",
+                    prop: "projectDateStr",
+                    width: 120,
+                },
+                {
+                    label: "操作",
+                    prop: "cgInfos",
+                    template: true,
+                },
+            ],
+            pagination: {
+                //分页使用
+                currentPage: 1,
+                pageSize: 10,
+                position: "right",
+                pageSizes: [10, 30, 50, 100, 200],
+                layout: "sizes, total, prev, pager, next, jumper",
+            },
+            paginationA: {
+                //分页使用
+                currentPage: 1,
+                pageSize: 10,
+                position: "right",
+                pageSizes: [10, 30, 50, 100, 200],
+                layout: "sizes, total, prev, pager, next, jumper",
+            },
+            getDataWay: {
+                //加载表格数据
+                dataType: "data",
+                type: "post",
+                firstRequest: false,
+                data: [
+                    {
+                        id: 1,
+                        ktName: "kjdhfkjsdhfkjsjhdfksdjhfkhwoieyrhfisdhfksjhdf",
+                        jbSource: "收到就好付款时间的回复可见收到货覅无痕",
+                    },
+                    { id: 2 },
+                    { id: 3 },
+                    { id: 4 },
+                    { id: 5 },
+                    { id: 6 },
+                ],
+                // data: this.$api.scientificStatistics.typeProjectStatistics,
+                param: {},
+            },
+            getDataWayA: {
+                //加载表格数据
+                dataType: "data",
+                type: "post",
+                firstRequest: false,
+                data: [
+                    {
+                        id: 6,
+                        ktName: "沃尔沃二",
+                        jbSource: "收到就好付款时间的回复可见收到货覅无痕",
+                    },
+                    { id: 66 },
+                    {
+                        id: 666,
+                        tName: "沃尔沃二",
+                        jbSource: "收到就好付款时间的回复可见收到货覅无痕",
+                    },
+                    { id: 6666 },
+                    { id: 51 },
+                    { id: 6 },
+                ],
+                // data: this.$api.scientificStatistics.typeProjectStatistics,
+                param: {},
+            },
+        };
+    },
+    methods: {
+        pageControl(data) {
+            this.activitedPageNum = data.fromId;
+        },
+        addConfig() {
+            this.$router.push({ path: "/addVehicleConfiguration" });
+        },
+        addMarkDia() {},
+    },
+    created() {},
+    // activated() {
+    //     this.$nextTick(() => {});
+    // },
+};
+</script>
+
+<style scoped lang="less">
+.tabsBox {
+    position: relative;
+    overflow: hidden;
+
+    .el-button {
+        position: absolute;
+        right: 40px;
+        top: 45px;
+    }
+}
+
+.toolbarTab {
+    margin: 45px 40px 15px;
+}
+</style>

+ 309 - 0
src/views/modelLibrary/vehicleModel.vue

@@ -0,0 +1,309 @@
+<template>
+    <div class="vehicleModelPanel">
+        <model-list class="modelList"></model-list>
+
+        <div class="contentPanel">
+            <el-form
+                ref="form"
+                :model="form"
+                :rules="rules"
+                label-width="160px"
+            >
+                <div class="inputBox flexBox">
+                    <span class="label">车辆ID</span>
+                    <div>{{ vehicleId }}</div>
+                </div>
+
+                <div class="flexBox">
+                    <el-form-item label="车辆名称:" prop="name">
+                        <el-input
+                            placeholder="请输入"
+                            maxlength="30"
+                            v-autoTrim="{ obj: form, key: 'name' }"
+                            v-model="form.name"
+                        >
+                        </el-input>
+                    </el-form-item>
+                    <el-form-item label="车辆描述:" prop="des">
+                        <el-input
+                            v-autoTrim="{ obj: form, key: 'des' }"
+                            v-model="form.des"
+                            placeholder="请输入"
+                            maxlength="200"
+                        ></el-input>
+                    </el-form-item>
+                    <el-form-item label="车辆类型:" prop="type">
+                        <el-select v-model="form.type">
+                            <el-option
+                                v-for="item in typeList"
+                                :label="item.caption"
+                                :value="item.code"
+                                :key="item.code"
+                            ></el-option>
+                        </el-select>
+                    </el-form-item>
+                </div>
+
+                <div class="titlePanel">
+                    <div class="titlePanelBor">控制参数</div>
+                </div>
+                <div class="flexBox">
+                    <el-form-item label="最大速度(km/h):" prop="x">
+                        <el-input
+                            placeholder="请输入"
+                            maxlength="15"
+                            v-autoTrim="{ obj: form, key: 'x' }"
+                            v-model="form.x"
+                        >
+                        </el-input>
+                    </el-form-item>
+                    <el-form-item label="发动机功率(kW):" prop="x">
+                        <el-input
+                            placeholder="请输入"
+                            maxlength="15"
+                            v-autoTrim="{ obj: form, key: 'x' }"
+                            v-model="form.x"
+                        >
+                        </el-input>
+                    </el-form-item>
+                    <el-form-item label="最大减速度(m/s2):" prop="x">
+                        <el-input
+                            placeholder="请输入"
+                            maxlength="15"
+                            v-autoTrim="{ obj: form, key: 'x' }"
+                            v-model="form.x"
+                        >
+                        </el-input>
+                    </el-form-item>
+                    <el-form-item label="最大转向角度(deg):" prop="x">
+                        <el-input
+                            placeholder="请输入"
+                            maxlength="15"
+                            v-autoTrim="{ obj: form, key: 'x' }"
+                            v-model="form.x"
+                        >
+                        </el-input>
+                    </el-form-item>
+                    <el-form-item label="输出模式:" prop="y">
+                        <el-radio v-model="form.z" label="1">前驱</el-radio>
+                        <el-radio v-model="form.z" label="2">后驱</el-radio>
+                        <el-radio v-model="form.z" label="3">四驱</el-radio>
+                    </el-form-item>
+                </div>
+
+                <div class="titlePanel">
+                    <div class="titlePanelBor">效率参数</div>
+                </div>
+                <div class="flexBox">
+                    <el-form-item label="总效率:" prop="x">
+                        <el-input
+                            placeholder="请输入"
+                            maxlength="15"
+                            v-autoTrim="{ obj: form, key: 'x' }"
+                            v-model="form.x"
+                        >
+                        </el-input>
+                    </el-form-item>
+                    <el-form-item label="前表面有效面积(㎡):" prop="x">
+                        <el-input
+                            placeholder="请输入"
+                            maxlength="15"
+                            v-autoTrim="{ obj: form, key: 'x' }"
+                            v-model="form.x"
+                        >
+                        </el-input>
+                    </el-form-item>
+                    <el-form-item label="空气阻力系数:" prop="x">
+                        <el-input
+                            placeholder="请输入"
+                            maxlength="15"
+                            v-autoTrim="{ obj: form, key: 'x' }"
+                            v-model="form.x"
+                        >
+                        </el-input>
+                    </el-form-item>
+                    <el-form-item label="滚动阻力系数:" prop="x">
+                        <el-input
+                            placeholder="请输入"
+                            maxlength="15"
+                            v-autoTrim="{ obj: form, key: 'x' }"
+                            v-model="form.x"
+                        >
+                        </el-input>
+                    </el-form-item>
+                </div>
+
+                <div class="titlePanel">
+                    <div class="titlePanelBor">几何参数</div>
+                </div>
+                <div class="flexBox">
+                    <el-form-item label="车轮直径(m):" prop="x">
+                        <el-input
+                            placeholder="请输入"
+                            maxlength="15"
+                            v-autoTrim="{ obj: form, key: 'x' }"
+                            v-model="form.x"
+                        >
+                        </el-input>
+                    </el-form-item>
+                    <el-form-item label="车前距(m):" prop="x">
+                        <el-input
+                            placeholder="请输入"
+                            maxlength="15"
+                            v-autoTrim="{ obj: form, key: 'x' }"
+                            v-model="form.x"
+                        >
+                        </el-input>
+                    </el-form-item>
+                    <el-form-item label="车后距(m):" prop="x">
+                        <el-input
+                            placeholder="请输入"
+                            maxlength="15"
+                            v-autoTrim="{ obj: form, key: 'x' }"
+                            v-model="form.x"
+                        >
+                        </el-input>
+                    </el-form-item>
+                    <el-form-item label="车左距(m):" prop="x">
+                        <el-input
+                            placeholder="请输入"
+                            maxlength="15"
+                            v-autoTrim="{ obj: form, key: 'x' }"
+                            v-model="form.x"
+                        >
+                        </el-input>
+                    </el-form-item>
+                    <el-form-item label="车右距(m):" prop="x">
+                        <el-input
+                            placeholder="请输入"
+                            maxlength="15"
+                            v-autoTrim="{ obj: form, key: 'x' }"
+                            v-model="form.x"
+                        >
+                        </el-input>
+                    </el-form-item>
+                    <el-form-item label="车高(m):" prop="x">
+                        <el-input
+                            placeholder="请输入"
+                            maxlength="15"
+                            v-autoTrim="{ obj: form, key: 'x' }"
+                            v-model="form.x"
+                        >
+                        </el-input>
+                    </el-form-item>
+                    <el-form-item label="轴距(m):" prop="x">
+                        <el-input
+                            placeholder="请输入"
+                            maxlength="15"
+                            v-autoTrim="{ obj: form, key: 'x' }"
+                            v-model="form.x"
+                        >
+                        </el-input>
+                    </el-form-item>
+                    <el-form-item label="质量(kg):" prop="x">
+                        <el-input
+                            placeholder="请输入"
+                            maxlength="15"
+                            v-autoTrim="{ obj: form, key: 'x' }"
+                            v-model="form.x"
+                        >
+                        </el-input>
+                    </el-form-item>
+                </div>
+
+                <div class="titlePanel">
+                    <div class="titlePanelBor">3D视图</div>
+                </div>
+                <div class="model">
+                    <img :src="imgSrc" width="100%" />
+                </div>
+            </el-form>
+
+            <div class="btns">
+                <el-button type="primary">保存</el-button>
+                <el-button type="primary">取消</el-button>
+                <el-button type="primary">分享</el-button>
+                <el-button type="primary">另存为</el-button>
+            </div>
+        </div>
+    </div>
+</template>
+
+<script>
+import modelList from "./components/modelList.vue";
+
+export default {
+    name: "vehicleModel", // 车辆模型
+    components: { modelList },
+    data() {
+        return {
+            vehicleId: "LKJFDLKJ",
+            typeList: [],
+            imgSrc: require("@/assets/common/image/car.png"),
+            form: {
+                name: "",
+                des: "",
+                x: "",
+                y: "1",
+                z: "1",
+                type: "",
+            },
+            rules: {
+                name: [{ required: true, message: "请输入", trigger: "blur" }],
+                des: [{ required: true, message: "请输入", trigger: "blur" }],
+                x: [{ required: true, message: "请输入", trigger: "blur" }],
+                y: [{ required: true, message: "请选择", trigger: "change" }],
+                z: [{ required: true, message: "请选择", trigger: "change" }],
+                type: [
+                    { required: true, message: "请选择", trigger: "change" },
+                ],
+            },
+        };
+    },
+
+    computed: {},
+
+    methods: {},
+
+    // mounted: {},
+};
+</script>
+
+<style lang='less' scoped>
+.vehicleModelPanel {
+    display: flex;
+    flex: 1;
+    padding: 15px 30px 30px;
+
+    .modelList /deep/ .listPanel {
+        min-height: 400px;
+        height: calc(100vh - 200px);
+    }
+
+    .contentPanel {
+        flex: 1;
+        padding-left: 30px;
+    }
+
+    .inputBox.flexBox {
+        margin-bottom: 22px;
+
+        .label {
+            width: 138px;
+        }
+
+        div {
+            line-height: 32px;
+        }
+    }
+
+    .titlePanel {
+        padding: 22px 0;
+    }
+
+    .btns {
+        padding-top: 30px;
+        text-align: center;
+    }
+}
+</style>

+ 129 - 0
src/views/page/breadCrumb.vue

@@ -0,0 +1,129 @@
+<template>
+    <div class="topClass">
+        <div class="contentClass">
+            <el-breadcrumb separator="/">
+                <transition-group name="breadcrumb">
+                    <el-breadcrumb-item
+                        v-for="item in list"
+                        :key="item.path + item.name"
+                    >
+                        <router-link
+                            v-if="!disabledRoutes.includes(item.name)"
+                            @click="console.log(item)"
+                            :to="
+                                item.name !== $route.name
+                                    ? item.fullPath
+                                        ? item.fullPath
+                                        : item.path
+                                        ? item.path
+                                        : '/'
+                                    : $route.fullPath
+                            "
+                        >
+                            {{ item.meta.tabname }}
+                        </router-link>
+                        <span v-else style="line-height: 20px">{{
+                            item.meta.tabname
+                        }}</span>
+                    </el-breadcrumb-item>
+                </transition-group>
+            </el-breadcrumb>
+        </div>
+
+        <div class="close">
+            <i class="el-icon-switch-button"></i>
+        </div>
+    </div>
+</template>
+
+<script>
+export default {
+    name: "breadCrumb",
+    data() {
+        return {
+            disabledRoutes: [
+                "modelLibrary",
+                "algorithmsLibrary",
+                "sceneLibrary",
+                "systemManagement",
+            ], // 相关页面只为占位,页面是空白,无法展示
+        };
+    },
+    methods: {},
+    computed: {
+        list() {
+            // console.log(this.$route);
+            this.$route.matched.filter((item) => {
+                if (item.name === this.$route.name) {
+                    item.fullPath = this.$route.fullPath;
+                }
+            });
+            return this.$route.matched;
+        },
+    },
+};
+</script>
+
+<style lang="less" scoped>
+.topClass {
+    position: relative;
+    height: 35px;
+    line-height: 33px;
+    border-bottom: 2px solid #f5f7fa;
+    overflow: hidden;
+
+    .contentClass {
+        // width: 1100px;
+        // margin: 0 auto;
+        // flex: 1;
+        padding-top: 6px;
+        padding-left: 12px;
+
+        // .breadcrumb {
+        //     height: 30px;
+        //     border-radius: 4px;
+        //     margin-bottom: 0px;
+        //     position: relative;
+        // }
+
+        /deep/ .el-breadcrumb__inner a {
+            color: #333;
+            font-weight: normal;
+            user-select: none;
+            line-height: 20px;
+
+            &:hover {
+                color: @themeColor;
+            }
+        }
+
+        /deep/ .el-breadcrumb__item:last-child .el-breadcrumb__inner,
+        .el-breadcrumb__item:last-child .el-breadcrumb__inner a,
+        .el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,
+        .el-breadcrumb__item:last-child .el-breadcrumb__inner:hover {
+            /*font-weight: 700;*/
+            color: @themeColor;
+            user-select: none;
+            line-height: 20px;
+            cursor: pointer;
+        }
+
+        /deep/ .el-breadcrumb__separator[class*="el-icon-arrow-right"] {
+            margin: 0px 3px 0px 1px;
+        }
+    }
+
+    .close {
+        position: absolute;
+        top: 7px;
+        right: 20px;
+        z-index: 3;
+        width: 18px;
+        height: 18px;
+        line-height: 1;
+        font-size: 18px;
+        color: @themeColor;
+        cursor: pointer;
+    }
+}
+</style>

+ 401 - 0
src/views/page/pageMenu.vue

@@ -0,0 +1,401 @@
+<template>
+    <div class="pageMenu" v-bind:class="{ widthFold: menuFold }">
+        <div class="panel">
+            <div class="icon" v-show="!menuFold" @click="menuFoldHandle()">
+                <b></b>
+            </div>
+            <div class="iconFold" v-show="menuFold" @click="menuFoldHandle(1)">
+                <b></b>
+            </div>
+            <ul class="menuFold" v-show="menuFold">
+                <li
+                    @click="menuFoldHandle(1)"
+                    v-bind:class="{ isOpened: opened === 'modelLibrary' }"
+                >
+                    <b class="my-icon-menuA is"></b>
+                </li>
+                <li
+                    @click="menuFoldHandle(1)"
+                    v-bind:class="{ isOpened: opened === 'algorithmsLibrary' }"
+                >
+                    <b class="my-icon-menuB"></b>
+                </li>
+                <li
+                    @click="menuFoldHandle(1)"
+                    v-bind:class="{ isOpened: opened === 'sceneLibrary' }"
+                >
+                    <b class="my-icon-menuC"></b>
+                </li>
+                <li
+                    @click="menuFoldHandle(1)"
+                    v-bind:class="{ isOpened: opened === 'systemManagement' }"
+                >
+                    <b class="my-icon-menuD"></b>
+                </li>
+                <li
+                    @click="menuFoldHandle(1)"
+                    v-bind:class="{ isOpened: opened === 'systemManagement' }"
+                >
+                    <b class="my-icon-menuE"></b>
+                </li>
+                <li
+                    @click="menuFoldHandle(1)"
+                    v-bind:class="{ isOpened: opened === 'systemManagement' }"
+                >
+                    <b class="my-icon-menuF"></b>
+                </li>
+            </ul>
+
+            <div class="menuList" v-show="!menuFold">
+                <el-menu
+                    default-active="modelLibrary"
+                    class="el-menu-vertical-demo"
+                    background-color="#3397FF"
+                    :router="true"
+                    @select="menuSel"
+                >
+                    <!-- active-text-color="#ffffff" -->
+                    <el-submenu index="modelLibrary">
+                        <template slot="title">
+                            <i class="my-icon-menuA"></i>
+                            <span>模型库</span>
+                        </template>
+                        <el-menu-item index="vehicleConfigurationList"
+                            >车辆配置</el-menu-item
+                        >
+                        <el-menu-item index="sensorModel"
+                            >传感器模型</el-menu-item
+                        >
+                        <el-menu-item index="vehicleModel"
+                            >车辆模型</el-menu-item
+                        >
+                    </el-submenu>
+                    <el-submenu index="algorithmsLibrary">
+                        <template slot="title">
+                            <i class="my-icon-menuB"></i>
+                            <span>算法库</span>
+                        </template>
+                        <el-menu-item index="algorithmsLibraryList"
+                            >算法库列表</el-menu-item
+                        >
+                    </el-submenu>
+                    <el-submenu index="sceneLibrary">
+                        <template slot="title">
+                            <i class="my-icon-menuC"></i>
+                            <span>场景库</span>
+                        </template>
+                        <el-menu-item index="naturalDrivingScenarioList"
+                            >自然驾驶场景</el-menu-item
+                        >
+                        <el-menu-item
+                            index="standardRegulationSimulationScenarioList"
+                            >标准法规仿真场景</el-menu-item
+                        >
+                        <el-menu-item
+                            index="trafficAccidentSimulationScenarioList"
+                            >交通事故仿真场景</el-menu-item
+                        >
+                        <el-menu-item index="scenarioTestPackageManagementList"
+                            >场景测试包管理</el-menu-item
+                        >
+                        <el-menu-item index="gradingRulesList"
+                            >打分规则</el-menu-item
+                        >
+                    </el-submenu>
+                    <el-submenu index="systemManagement">
+                        <template slot="title">
+                            <i class="my-icon-menuD"></i>
+                            <span>工作台</span>
+                        </template>
+                        <el-menu-item index="accountManagement"
+                            >账户管理</el-menu-item
+                        >
+                    </el-submenu>
+                    <el-submenu index="systemManagement">
+                        <template slot="title">
+                            <i class="my-icon-menuE"></i>
+                            <span>报告管理</span>
+                        </template>
+                        <el-menu-item index="accountManagement"
+                            >账户管理</el-menu-item
+                        >
+                    </el-submenu>
+                    <el-submenu index="systemManagement">
+                        <template slot="title">
+                            <i class="my-icon-menuF"></i>
+                            <span>系统管理</span>
+                        </template>
+                        <el-menu-item index="accountManagement"
+                            >账户管理</el-menu-item
+                        >
+                    </el-submenu>
+                </el-menu>
+            </div>
+        </div>
+        <div class="fold" v-show="menuFold">
+            <img :src="imgSrc" width="100%" height="100%" />
+        </div>
+        <div class="unfold" v-show="!menuFold">
+            <img :src="imgSrc" width="100%" height="100%" />
+        </div>
+    </div>
+</template>
+
+<script>
+export default {
+    name: "pageMenu",
+    data() {
+        return {
+            menuFold: false, // menu是否折叠
+            opened: false,
+            imgSrc: require("@/assets/common/image/photoF.png"),
+        };
+    },
+    methods: {
+        menuFoldHandle(val) {
+            if (val) {
+                this.menuFold = false;
+            } else {
+                this.menuFold = true;
+            }
+            this.$emit("menuFold", this.menuFold);
+        },
+        menuSel(index, indexPath) {
+            // console.log(index, indexPath);
+            this.opened = indexPath[0];
+        },
+    },
+    created() {
+        console.log(this.$route);
+        let { code, ticket } = this.$route.query;
+        if (code && ticket) {
+            this.$axios({
+                method: "post",
+                url: this.$api.common.single,
+                data: { code, ticket },
+            }).then((res) => {
+                if (res.code == 200 && !!res.info.access_token) {
+                    localStorage.setItem(
+                        "Authorization",
+                        "Bearer " + res.info.access_token
+                    );
+                }else {
+                    alert(res)
+                }
+            });
+        } else {
+            console.log(66);
+        }
+    },
+};
+</script>
+
+<style scoped lang="less">
+.pageMenu {
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    z-index: 6;
+    width: 150px;
+    height: 100%;
+
+    [class^="my-icon-"] {
+        vertical-align: middle;
+        text-align: center;
+        font-size: 18px;
+        background-size: contain;
+    }
+}
+
+.widthFold {
+    width: 60px;
+}
+
+.panel {
+    position: absolute;
+    left: 0;
+    top: 0;
+    bottom: 0;
+    z-index: 9;
+    width: 100%;
+    height: 100%;
+    background: @themeColor;
+}
+
+.icon,
+.iconFold {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    height: 61px;
+    border-bottom: 1px solid #ffffff;
+    cursor: pointer;
+
+    b {
+        display: block;
+        background-size: contain;
+    }
+}
+
+.iconFold {
+    width: 60px;
+    b {
+        width: 28px;
+        height: 38px;
+        background: url("../../assets/common/image/menu/iconFold.png") center
+            no-repeat;
+    }
+}
+
+.icon {
+    width: 150px;
+    b {
+        width: 98px;
+        height: 27px;
+        background: url("../../assets/common/image/menu/icon.png") center
+            no-repeat;
+    }
+}
+
+.el-submenu [class^="my-icon-"] {
+    width: 24px;
+    height: 18px;
+    margin-right: 5px;
+}
+
+.my-icon-menuA {
+    background: url("../../assets/common/image/menu/menuA.png") center no-repeat;
+}
+
+.my-icon-menuB {
+    background: url("../../assets/common/image/menu/menuB.png") center no-repeat;
+}
+
+.my-icon-menuC {
+    background: url("../../assets/common/image/menu/menuC.png") center no-repeat;
+}
+
+.my-icon-menuD {
+    background: url("../../assets/common/image/menu/menuD.png") center no-repeat;
+}
+
+.my-icon-menuE {
+    background: url("../../assets/common/image/menu/menuE.png") center no-repeat;
+}
+
+.my-icon-menuF {
+    background: url("../../assets/common/image/menu/menuF.png") center no-repeat;
+}
+
+.menuFold {
+    li {
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        height: 40px;
+        margin-top: 20px;
+        cursor: pointer;
+
+        b {
+            display: block;
+            width: 20px;
+            height: 20px;
+        }
+    }
+
+    .isOpened {
+        background-color: #2979cc;
+    }
+}
+
+.el-menu {
+    // background: @themeColor;
+
+    /deep/ .el-submenu__title,
+    .el-menu-item {
+        color: #ffffff;
+    }
+
+    /deep/ .el-submenu__title {
+        padding-left: 15px !important;
+        padding-right: 10px;
+    }
+
+    /deep/ .el-submenu__icon-arrow {
+        right: 10px;
+    }
+
+    /deep/ .el-submenu__title i,
+    /deep/ .el-menu-item i {
+        color: #ffffff;
+    }
+
+    /deep/ .el-submenu .el-menu-item {
+        min-width: auto;
+        width: 100%;
+        padding: 0;
+        padding-left: 30px !important;
+    }
+}
+
+.el-submenu.is-active {
+    /deep/ .el-submenu__title {
+        background-color: #2979cc !important;
+    }
+}
+
+.el-submenu.is-active.is-opened {
+    /deep/ .el-submenu__title {
+        background-color: @themeColor !important;
+    }
+}
+
+.el-submenu.is-opened {
+    .el-menu,
+    .el-menu-item {
+        background-color: #2979cc !important;
+    }
+}
+
+.hasList {
+    // /deep/ .el-submenu__title
+    /deep/ .el-menu-item {
+        color: #d7e7fe;
+    }
+
+    /deep/ .is-active {
+        background-color: #3982eb !important;
+        color: #ffffff;
+    }
+}
+
+.userIcon {
+    > div {
+        position: fixed;
+        bottom: 30px;
+    }
+}
+
+.fold,
+.unfold {
+    position: fixed;
+    bottom: 30px;
+    z-index: 12;
+    border-radius: 50%;
+    cursor: pointer;
+    overflow: hidden;
+}
+.fold {
+    width: 36px;
+    height: 36px;
+    left: 12px;
+}
+
+.unfold {
+    width: 60px;
+    height: 60px;
+    left: 35px;
+}
+</style>

+ 98 - 0
src/views/sceneLibrary/common/util.less

@@ -0,0 +1,98 @@
+.labelPanel {
+    :last-child {
+        margin-right: 0;
+    }
+}
+
+.labelBox {
+    display: inline-block;
+    line-height: 1;
+    font-weight: 500;
+    white-space: nowrap;
+    vertical-align: middle;
+    background: #fff;
+    border: 1px solid #dcdfe6;
+    -webkit-appearance: none;
+    text-align: center;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    outline: 0;
+    margin-bottom: 10px;
+    margin-right: 20px;
+    position: relative;
+    padding: 12px 20px;
+    font-size: 14px;
+}
+
+
+.el-checkbox-button {
+    margin-right: 20px;
+}
+
+.labelA {
+    /deep/ .el-checkbox-button__inner, &.labelBox {
+        border: 1px solid @greenA;
+        color: @greenA;
+        border-radius: 4px;
+        background-color: @greenBgA;
+    }
+
+    &.is-checked {
+        /deep/ .el-checkbox-button__inner {
+            color: #FFFFFF;
+            background-color: @greenA;
+            border-color: @greenA;
+        }
+    }
+}
+
+.labelB {
+    /deep/ .el-checkbox-button__inner, &.labelBox {
+        border: 1px solid @orangeA;
+        color: @orangeA;
+        border-radius: 4px;
+        background-color: @orangeBgA;
+    }
+
+    &.is-checked {
+        /deep/ .el-checkbox-button__inner {
+            color: #FFFFFF;
+            background-color: @orangeA;
+            border-color: @orangeA;
+        }
+    }
+}
+
+.labelC {
+    /deep/ .el-checkbox-button__inner, &.labelBox {
+        border: 1px solid @lightBlueA;
+        color: @lightBlueA;
+        border-radius: 4px;
+        background-color: @lightBlueBgA;
+    }
+
+    &.is-checked {
+        /deep/ .el-checkbox-button__inner {
+            color: #FFFFFF;
+            background-color: @lightBlueA;
+            border-color: @lightBlueA;
+        }
+    }
+}
+
+.labelD {
+    /deep/ .el-checkbox-button__inner, &.labelBox {
+        border: 1px solid @purpleA;
+        color: @purpleA;
+        border-radius: 4px;
+        background-color: @purpleBgA;
+    }
+
+    &.is-checked {
+        /deep/ .el-checkbox-button__inner {
+            color: #FFFFFF;
+            background-color: @purpleA;
+            border-color: @purpleA;
+        }
+    }
+}

+ 90 - 0
src/views/sceneLibrary/gradingRule.vue

@@ -0,0 +1,90 @@
+<template>
+    <div>
+        <el-form ref="form" :model="form" :rules="rules" label-width="108px">
+            <el-form-item label="规则名称:" prop="name">
+                <el-input
+                    placeholder="请输入"
+                    maxlength="30"
+                    v-autoTrim="{ obj: form, key: 'name' }"
+                    v-model="form.name"
+                >
+                </el-input>
+            </el-form-item>
+
+            <el-form-item label="规则描述:" prop="x">
+                <el-input
+                    placeholder="请输入"
+                    maxlength="30"
+                    v-autoTrim="{ obj: form, key: 'x' }"
+                    v-model="form.x"
+                >
+                </el-input>
+            </el-form-item>
+
+            <el-form-item label="规则详情:" prop="des">
+                <el-input
+                    v-autoTrim="{
+                        obj: form,
+                        key: 'des',
+                    }"
+                    v-model="form.des"
+                    type="textarea"
+                    placeholder="请输入"
+                    :autosize="{ minRows: 8, maxRows: 8 }"
+                    maxlength="500"
+                ></el-input>
+            </el-form-item>
+
+            <div class="btns">
+                <el-button type="primary">保存</el-button>
+                <el-button type="primary" plain>取消</el-button>
+            </div>
+        </el-form>
+    </div>
+</template>
+
+<script>
+//import  from '';
+
+export default {
+    name: "gradingRule", // 打分规则
+    components: {},
+    data() {
+        return {
+            form: {
+                name: "",
+                des: "",
+                x: "",
+            },
+            rules: {
+                name: [{ required: true, message: "请输入", trigger: "blur" }],
+                des: [{ required: true, message: "请输入", trigger: "blur" }],
+                x: [{ required: true, message: "请输入", trigger: "blur" }],
+            },
+        };
+    },
+
+    computed: {},
+
+    methods: {},
+
+    // mounted() {},
+};
+</script>
+
+<style lang='less' scoped>
+.el-form {
+    width: 60%;
+    padding-top: 60px;
+    margin: 0 auto;
+
+    .el-input {
+        width: 100%;
+    }
+}
+
+.btns {
+    padding-top: 30px;
+    text-align: center;
+}
+</style>

+ 228 - 0
src/views/sceneLibrary/gradingRulesList.vue

@@ -0,0 +1,228 @@
+<template>
+    <div>
+        <search-layout :needBox="true">
+            <template slot="searchItem1">
+                <span class="label">规则ID</span>
+                <el-input
+                    v-model="searchParams.id"
+                    size="small"
+                    clearable
+                    placeholder="请输入"
+                >
+                </el-input>
+            </template>
+            <template slot="searchItem2">
+                <span class="label">规则名称</span>
+                <el-input
+                    v-model="searchParams.id"
+                    size="small"
+                    clearable
+                    placeholder="请输入"
+                >
+                </el-input>
+            </template>
+            <template slot="searchItem3">
+                <span class="label">规则描述</span>
+                <el-input
+                    v-model="searchParams.id"
+                    size="small"
+                    clearable
+                    placeholder="请输入"
+                >
+                </el-input>
+            </template>
+            <template slot="searchItem4">
+                <span class="label">创建时间</span>
+                <el-date-picker
+                    v-model="searchParams.clientOrgName1"
+                    type="date"
+                    placeholder="选择日期"
+                >
+                </el-date-picker>
+            </template>
+            <template slot="searchBtn1">
+                <el-button type="primary">查询</el-button>
+            </template>
+            <template slot="searchBtn2">
+                <el-button type="primary">重置</el-button>
+            </template>
+        </search-layout>
+
+        <div class="tabsBox">
+            <toolbarTab
+                :isConnect="true"
+                position="top"
+                :subPageActiveName="subPageActiveName"
+                :toolbarItem="pageBtnList"
+                @toolbarClick="pageControl"
+                class="toolbarTab"
+            >
+            </toolbarTab>
+            <el-button
+                icon="el-icon-circle-plus-outline"
+                @click="addConfig"
+                type="primary"
+                plain
+                :disabled="activitedPageNum === 1"
+                >新增</el-button
+            >
+        </div>
+
+        <tableList
+            ref="table"
+            style="margin: 0 30px"
+            :columns="columns"
+            :getDataWay="getDataWay"
+            :pagination="pagination"
+            index
+        >
+            <el-table-column
+                label="操作"
+                slot="cgInfos"
+                align="center"
+                width="180"
+            >
+                <template v-slot="scope">
+                    <i
+                            @click="addMarkDia(scope.row)"
+                            class="el-icon-share elIcon"
+                        ></i>
+                        <i
+                            @click="addMarkDia(scope.row)"
+                            class="el-icon-edit-outline elIcon"
+                        ></i>
+                        <i
+                            @click="addMarkDia(scope.row)"
+                            class="el-icon-delete elIcon"
+                        ></i>
+                </template>
+            </el-table-column>
+        </tableList>
+    </div>
+</template>
+
+<script>
+import searchLayout from "@/components/grid/searchLayout";
+import tableList from "@/components/grid/TableList";
+import toolbarTab from "@/components/toolbar/toolbarTab";
+
+export default {
+    name: "gradingRulesList", // 打分规则列表
+    components: { searchLayout, tableList, toolbarTab },
+    data() {
+        return {
+            searchParams: {
+                //搜索参数
+                id: "", //ID
+                clientOrgName: "", //车辆名称
+                clientOrgName1: "", //配置名称
+                clientOrgName2: "", //配置描述
+                status: "",
+                c: [],
+            },
+            list: [],
+            activitedPageNum: 1,
+            subPageActiveName: 1,
+            pageBtnList: [
+                {
+                    type: "primary",
+                    title: "公有",
+                    key: "all",
+                    fromId: 1,
+                    method: "showAll",
+                    plain: true,
+                    disabled: false,
+                },
+                {
+                    type: "primary",
+                    title: "私有",
+                    key: "notRead",
+                    fromId: 2,
+                    method: "showNotRead",
+                    plain: true,
+                    disabled: false,
+                },
+            ],
+            columns: [
+                //表格列
+                {
+                    label: "规则名称",
+                    prop: "aid1",
+                },
+                {
+                    label: "规则描述",
+                    prop: "ktName",
+                },
+                {
+                    label: "创建时间",
+                    prop: "jbSource",
+                },
+                {
+                    label: "操作",
+                    prop: "cgInfos",
+                    template: true,
+                },
+            ],
+            pagination: {
+                //分页使用
+                currentPage: 1,
+                pageSize: 10,
+                position: "right",
+                pageSizes: [10, 30, 50, 100, 200],
+                layout: "sizes, total, prev, pager, next, jumper",
+            },
+            getDataWay: {
+                //加载表格数据
+                dataType: "data",
+                type: "post",
+                firstRequest: false,
+                data: [
+                    {
+                        id: 1,
+                        ktName: "kjdhfkjsdhfkjsjhdfksdjhfkhwoieyrhfisdhfksjhdf",
+                        jbSource: "收到就好付款时间的回复可见收到货覅无痕",
+                    },
+                    { id: 2 },
+                    { id: 3 },
+                    { id: 4 },
+                    { id: 51 },
+                    { id: 6 },
+                ],
+                param: {},
+            },
+            dialogVisible: false,
+        };
+    },
+    methods: {
+        viewRow(row) {
+            this.dialogVisible = true;
+        },
+        pageControl(data) {
+            this.activitedPageNum = data.fromId;
+        },
+        addConfig() {
+            this.$router.push({ path: "/gradingRule" });
+        },
+        addMarkDia() {},
+    },
+
+    // mounted: {},
+};
+</script>
+
+<style lang='less' scoped>
+.tabsBox {
+    position: relative;
+    overflow: hidden;
+
+    .el-button {
+        position: absolute;
+        right: 40px;
+        top: 45px;
+    }
+}
+
+.toolbarTab {
+    margin: 45px 40px 15px;
+}
+</style>

+ 26 - 0
src/views/sceneLibrary/index.vue

@@ -0,0 +1,26 @@
+<template>
+    <div>
+        <router-view></router-view>
+    </div>
+</template>
+
+<script>
+//import  from '';
+
+export default {
+    name: "sceneLibrary", // 场景库
+    components: {},
+    data() {
+        return {};
+    },
+
+    computed: {},
+
+    methods: {},
+
+    // mounted: {},
+};
+</script>
+
+<style lang='less' scoped>
+</style>

+ 224 - 0
src/views/sceneLibrary/naturalDrivingScenarioList.vue

@@ -0,0 +1,224 @@
+<template>
+    <div>
+        <search-layout :needBox="true">
+            <template slot="searchItem1">
+                <span class="label">道路</span>
+                <el-select v-model="searchParams.status">
+                    <el-option
+                        v-for="item in list"
+                        :label="item.caption"
+                        :value="item.code"
+                        :key="item.code"
+                    ></el-option>
+                </el-select>
+            </template>
+            <template slot="searchItem2">
+                <span class="label">基础设施</span>
+                <el-select v-model="searchParams.status">
+                    <el-option
+                        v-for="item in list"
+                        :label="item.caption"
+                        :value="item.code"
+                        :key="item.code"
+                    ></el-option>
+                </el-select>
+            </template>
+            <template slot="searchItem3">
+                <span class="label">交通情况</span>
+                <el-select v-model="searchParams.status">
+                    <el-option
+                        v-for="item in list"
+                        :label="item.caption"
+                        :value="item.code"
+                        :key="item.code"
+                    ></el-option>
+                </el-select>
+            </template>
+            <template slot="searchItem4">
+                <span class="label">自车行为</span>
+                <el-select v-model="searchParams.status">
+                    <el-option
+                        v-for="item in list"
+                        :label="item.caption"
+                        :value="item.code"
+                        :key="item.code"
+                    ></el-option>
+                </el-select>
+            </template>
+            <template slot="searchItem5">
+                <span class="label">目标行为</span>
+                <el-select v-model="searchParams.status">
+                    <el-option
+                        v-for="item in list"
+                        :label="item.caption"
+                        :value="item.code"
+                        :key="item.code"
+                    ></el-option>
+                </el-select>
+            </template>
+            <template slot="searchItem6">
+                <span class="label">自然环境</span>
+                <el-select v-model="searchParams.status">
+                    <el-option
+                        v-for="item in list"
+                        :label="item.caption"
+                        :value="item.code"
+                        :key="item.code"
+                    ></el-option>
+                </el-select>
+            </template>
+            <template slot="searchItem7">
+                <el-checkbox-group v-model="searchParams.c">
+                    <el-checkbox-button :label="1" :key="1" class="labelA">绿灯</el-checkbox-button>
+                    <el-checkbox-button :label="2" :key="2" class="labelB">桥梁</el-checkbox-button>
+                    <el-checkbox-button :label="3" :key="3" class="labelC">晴天</el-checkbox-button>
+                    <el-checkbox-button :label="4" :key="4" class="labelD">直道</el-checkbox-button>
+                    <el-checkbox-button :label="5" :key="5" class="labelC">晴天</el-checkbox-button>
+                    <el-checkbox-button :label="6" :key="6" class="labelD">直道</el-checkbox-button>
+                </el-checkbox-group>
+            </template>
+            <template slot="searchBtn1">
+                <el-button type="primary">查询</el-button>
+            </template>
+            <template slot="searchBtn2">
+                <el-button type="primary">重置</el-button>
+            </template>
+        </search-layout>
+
+        <tableList
+            ref="table"
+            style="border-top: none; margin: 30px"
+            :columns="columns"
+            :getDataWay="getDataWay"
+            :pagination="pagination"
+            index
+        >
+            <el-table-column label="标签" slot="asd" align="center">
+                <template>
+                    <div class="labelPanel">
+                        <span class="labelBox labelA">绿灯</span>
+                        <span class="labelBox labelB">桥梁</span>
+                        <span class="labelBox labelC">晴天</span>
+                        <span class="labelBox labelD">直道</span>
+                    </div>
+                </template>
+            </el-table-column>
+            <el-table-column
+                label="操作"
+                slot="cgInfos"
+                align="center"
+                width="180"
+            >
+                <template v-slot="scope">
+                    <i
+                        @click="viewRow(scope.row)"
+                        class="el-icon-view elIcon cursor"
+                    >
+                    </i>
+                </template>
+            </el-table-column>
+        </tableList>
+
+        <el-dialog
+            title="CAMERAO"
+            :visible.sync="dialogVisible"
+            width="690px"
+            :close-on-click-modal="false"
+            :close-on-press-escape="false"
+        >
+            <div>123</div>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import searchLayout from "@/components/grid/searchLayout";
+import tableList from "@/components/grid/TableList";
+
+export default {
+    name: "naturalDrivingScenarioList", // 自然驾驶场景
+    components: { searchLayout, tableList },
+    data() {
+        return {
+            searchParams: {
+                //搜索参数
+                id: "", //ID
+                clientOrgName: "", //车辆名称
+                clientOrgName1: "", //配置名称
+                clientOrgName2: "", //配置描述
+                status: "",
+                c:[],
+            },
+            list: [],
+            columns: [
+                //表格列
+                {
+                    label: "场景名称",
+                    prop: "aid1",
+                },
+                {
+                    label: "天气",
+                    prop: "ktName",
+                },
+                {
+                    label: "自车行为",
+                    prop: "jbSource",
+                },
+                {
+                    label: "目标行为",
+                    prop: "jbSource",
+                },
+                {
+                    label: "标签",
+                    prop: "asd",
+                    template: true,
+                },
+                {
+                    label: "操作",
+                    prop: "cgInfos",
+                    template: true,
+                },
+            ],
+            pagination: {
+                //分页使用
+                currentPage: 1,
+                pageSize: 10,
+                position: "right",
+                pageSizes: [10, 30, 50, 100, 200],
+                layout: "sizes, total, prev, pager, next, jumper",
+            },
+            getDataWay: {
+                //加载表格数据
+                dataType: "data",
+                type: "post",
+                firstRequest: false,
+                data: [
+                    {
+                        id: 1,
+                        ktName: "kjdhfkjsdhfkjsjhdfksdjhfkhwoieyrhfisdhfksjhdf",
+                        jbSource: "收到就好付款时间的回复可见收到货覅无痕",
+                    },
+                    { id: 2 },
+                    { id: 3 },
+                    { id: 4 },
+                    { id: 51 },
+                    { id: 6 },
+                ],
+                param: {},
+            },
+            dialogVisible: false,
+        };
+    },
+    methods: {
+        viewRow(row) {
+            this.dialogVisible = true;
+        },
+    },
+
+    // mounted: {},
+};
+</script>
+
+<style lang='less' scoped>
+@import './common/util.less';
+</style>

+ 285 - 0
src/views/sceneLibrary/scenarioTestPackageManagementList.vue

@@ -0,0 +1,285 @@
+<template>
+    <div>
+        <search-layout :needBox="true">
+            <template slot="searchItem1">
+                <span class="label">指标ID</span>
+                <el-input
+                    v-model="searchParams.id"
+                    size="small"
+                    clearable
+                    placeholder="请输入"
+                >
+                </el-input>
+            </template>
+            <template slot="searchItem2">
+                <span class="label">指标名称</span>
+                <el-input
+                    v-model="searchParams.clientOrgName"
+                    size="small"
+                    clearable
+                    placeholder="请输入"
+                >
+                </el-input>
+            </template>
+            <template slot="searchItem3">
+                <span class="label">创建时间</span>
+                <el-date-picker
+                    v-model="searchParams.clientOrgName1"
+                    type="date"
+                    placeholder="选择日期"
+                >
+                </el-date-picker>
+            </template>
+
+            <template slot="searchBtn1">
+                <el-button type="primary">查询</el-button>
+            </template>
+            <template slot="searchBtn2">
+                <el-button type="primary">重置</el-button>
+            </template>
+        </search-layout>
+
+        <div class="tabsBox">
+            <toolbarTab
+                :isConnect="true"
+                position="top"
+                :subPageActiveName="subPageActiveName"
+                :toolbarItem="pageBtnList"
+                @toolbarClick="pageControl"
+                class="toolbarTab"
+            >
+            </toolbarTab>
+            <el-button
+                icon="el-icon-circle-plus-outline"
+                @click="addConfig"
+                type="primary"
+                plain
+                :disabled="activitedPageNum === 1"
+                >新增</el-button
+            >
+        </div>
+
+        <tableList
+            v-if="activitedPageNum === 1"
+            ref="table"
+            style="margin: 0 30px"
+            :columns="columns"
+            :getDataWay="getDataWay"
+            :pagination="pagination"
+            index
+        >
+            <el-table-column label="操作" slot="cgInfos" align="center">
+                <template v-slot="scope">
+                    <i
+                        @click="addMarkDia(scope.row)"
+                        class="el-icon-edit-outline elIcon"
+                    ></i>
+                </template>
+            </el-table-column>
+        </tableList>
+        <div v-else>
+            <tableList
+                ref="tableA"
+                style="margin: 0 30px"
+                :columns="columnsA"
+                :getDataWay="getDataWayA"
+                :pagination="paginationA"
+                index
+            >
+                <el-table-column label="操作" slot="cgInfos" align="center">
+                    <template v-slot="scope">
+                        <i
+                            @click="addMarkDia(scope.row)"
+                            class="el-icon-share elIcon"
+                        ></i>
+                        <i
+                            @click="addMarkDia(scope.row)"
+                            class="el-icon-edit-outline elIcon"
+                        ></i>
+                        <i
+                            @click="addMarkDia(scope.row)"
+                            class="el-icon-delete elIcon"
+                        ></i>
+                    </template>
+                </el-table-column>
+            </tableList>
+        </div>
+    </div>
+</template>
+
+<script>
+import searchLayout from "@/components/grid/searchLayout";
+import tableList from "@/components/grid/TableList";
+import toolbarTab from "@/components/toolbar/toolbarTab";
+
+export default {
+    name: "scenarioTestPackageManagementList", // 场景测试包管理
+    components: { searchLayout, tableList, toolbarTab },
+    data() {
+        return {
+            searchParams: {
+                //搜索参数
+                id: "", //ID
+                clientOrgName: "", //车辆名称
+                clientOrgName1: "", //配置名称
+                clientOrgName2: "", //配置描述
+            },
+            activitedPageNum: 1,
+            subPageActiveName: 1,
+            pageBtnList: [
+                {
+                    type: "primary",
+                    title: "公有",
+                    key: "all",
+                    fromId: 1,
+                    method: "showAll",
+                    plain: true,
+                    disabled: false,
+                },
+                {
+                    type: "primary",
+                    title: "私有",
+                    key: "notRead",
+                    fromId: 2,
+                    method: "showNotRead",
+                    plain: true,
+                    disabled: false,
+                },
+            ],
+            columns: [
+                {
+                    label: "指标ID",
+                    prop: "id",
+                },
+                {
+                    label: "指标名称",
+                    prop: "ktName",
+                },
+                {
+                    label: "场景数量",
+                    prop: "jbSource",
+                },
+                {
+                    label: "创建时间",
+                    prop: "startDateStr",
+                    width: 120,
+                },
+                {
+                    label: "操作",
+                    prop: "cgInfos",
+                    template: true,
+                },
+            ],
+            columnsA: [
+                {
+                    label: "指标ID",
+                    prop: "id",
+                },
+                {
+                    label: "指标名称",
+                    prop: "ktName",
+                },
+                {
+                    label: "场景数量",
+                    prop: "jbSource",
+                },
+                {
+                    label: "创建时间",
+                    prop: "startDateStr",
+                    width: 120,
+                },
+                {
+                    label: "操作",
+                    prop: "cgInfos",
+                    template: true,
+                },
+            ],
+            pagination: {
+                //分页使用
+                currentPage: 1,
+                pageSize: 10,
+                position: "right",
+                pageSizes: [10, 30, 50, 100, 200],
+                layout: "sizes, total, prev, pager, next, jumper",
+            },
+            paginationA: {
+                //分页使用
+                currentPage: 1,
+                pageSize: 10,
+                position: "right",
+                pageSizes: [10, 30, 50, 100, 200],
+                layout: "sizes, total, prev, pager, next, jumper",
+            },
+            getDataWay: {
+                //加载表格数据
+                dataType: "data",
+                type: "post",
+                firstRequest: false,
+                data: [
+                    {
+                        id: 1,
+                        ktName: "kjdhfkjsdhfkjsjhdfksdjhfkhwoieyrhfisdhfksjhdf",
+                        jbSource: "收到就好付款时间的回复可见收到货覅无痕",
+                    },
+                    { id: 2 },
+                    { id: 3 },
+                    { id: 4 },
+                    { id: 5 },
+                    { id: 6 },
+                ],
+                param: {},
+            },
+            getDataWayA: {
+                //加载表格数据
+                dataType: "data",
+                type: "post",
+                firstRequest: false,
+                data: [
+                    {
+                        id: 6,
+                        ktName: "沃尔沃二",
+                        jbSource: "收到就好付款时间的回复可见收到货覅无痕",
+                    },
+                    { id: 66 },
+                    {
+                        id: 666,
+                        tName: "沃尔沃二",
+                        jbSource: "收到就好付款时间的回复可见收到货覅无痕",
+                    },
+                    { id: 6666 },
+                    { id: 51 },
+                    { id: 6 },
+                ],
+                param: {},
+            },
+        };
+    },
+    methods: {
+        pageControl(data) {
+            this.activitedPageNum = data.fromId;
+        },
+        addConfig() {
+            this.$router.push({ path: "/scenePacketList" });
+        },
+        addMarkDia() {},
+    },
+    created() {},
+};
+</script>
+
+<style scoped lang="less">
+.tabsBox {
+    position: relative;
+    overflow: hidden;
+
+    .el-button {
+        position: absolute;
+        right: 40px;
+        top: 45px;
+    }
+}
+
+.toolbarTab {
+    margin: 45px 40px 15px;
+}
+</style>

+ 813 - 0
src/views/sceneLibrary/scenePacketList.vue

@@ -0,0 +1,813 @@
+<template>
+    <div class="scenePacketListPanel">
+        <div class="viewBox">
+            <el-button icon="el-icon-view" @click="view" type="primary"
+                >模板预览</el-button
+            >
+        </div>
+
+        <tableList
+            ref="table"
+            :columns="columns"
+            :getDataWay="getDataWay"
+            :pagination="pagination"
+        >
+            <el-table-column label="操作" slot="cgInfos" align="center">
+                <template v-slot="scope">
+                    <i
+                        @click="addIndicators(scope.row)"
+                        class="el-icon-plus elIcon"
+                    ></i>
+                    <i
+                        @click="addIndicators(scope.row)"
+                        class="el-icon-edit-outline elIcon"
+                    ></i>
+                    <i
+                        @click="addMarkDia(scope.row)"
+                        class="el-icon-delete elIcon"
+                    ></i>
+                    <i
+                        @click="addScenario(scope.row)"
+                        class="el-icon-document-add elIcon"
+                    ></i>
+                </template>
+            </el-table-column>
+        </tableList>
+
+        <el-dialog
+            :title="diaTitle"
+            :visible.sync="indicatorsVisible"
+            width="690px"
+            :close-on-click-modal="false"
+            :close-on-press-escape="false"
+        >
+            <el-form
+                ref="form"
+                :model="form"
+                :rules="rules"
+                label-width="108px"
+            >
+                <el-form-item label="指标名称:" prop="name">
+                    <el-input
+                        placeholder="请输入"
+                        maxlength="30"
+                        v-autoTrim="{ obj: form, key: 'name' }"
+                        v-model="form.name"
+                    >
+                    </el-input>
+                </el-form-item>
+                <el-form-item label="权重:" prop="x">
+                    <el-input
+                        placeholder="请输入"
+                        maxlength="30"
+                        v-autoTrim="{ obj: form, key: 'x' }"
+                        v-model="form.x"
+                    >
+                    </el-input>
+                </el-form-item>
+                <el-form-item label="评分规则:" prop="x">
+                    <el-select v-model="form.y">
+                        <el-option
+                            v-for="item in list"
+                            :label="item.caption"
+                            :value="item.code"
+                            :key="item.code"
+                        ></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="备注:" prop="des">
+                    <el-input
+                        v-autoTrim="{
+                            obj: form,
+                            key: 'des',
+                        }"
+                        v-model="form.des"
+                        type="textarea"
+                        placeholder="请输入"
+                        :autosize="{ minRows: 4, maxRows: 4 }"
+                        maxlength="200"
+                    ></el-input>
+                </el-form-item>
+            </el-form>
+            <span slot="footer">
+                <el-button type="primary" @click="indicatorsConfirm"
+                    >确 定</el-button
+                >
+                <el-button @click="indicatorsVisible = false">取 消</el-button>
+            </span>
+        </el-dialog>
+
+        <el-dialog
+            title="场景分类"
+            :visible.sync="scenarioVisible"
+            width="690px"
+            :close-on-click-modal="false"
+            :close-on-press-escape="false"
+        >
+            <el-form
+                ref="formA"
+                :model="formA"
+                :rules="rulesA"
+                label-width="108px"
+            >
+                <el-form-item label="场景分类:" prop="x">
+                    <el-select v-model="formA.y">
+                        <el-option
+                            v-for="item in listA"
+                            :label="item.caption"
+                            :value="item.code"
+                            :key="item.code"
+                        ></el-option>
+                    </el-select>
+                </el-form-item>
+            </el-form>
+            <div class="tips">
+                解释:基于不同环境要素,在前述主题场景及两条路径的框架下进行场景的精确细分。细分维度包括天气、季节、温度、路况、车况等多种元素,所采纳元素的广度和深度既与需求有关,也与汽车智能化程度(感知能力)相关
+            </div>
+            <span slot="footer">
+                <el-button type="primary" @click="scenarioConfirm"
+                    >确 定</el-button
+                >
+                <el-button @click="scenarioVisible = false">取 消</el-button>
+            </span>
+        </el-dialog>
+
+        <el-dialog
+            title="真实场景"
+            :visible.sync="scenarioListsVisible"
+            width="90%"
+            :close-on-click-modal="false"
+            :close-on-press-escape="false"
+        >
+            <div class="tabsBox">
+                <toolbarTab
+                    :isConnect="true"
+                    position="top"
+                    :subPageActiveName="subPageActiveName"
+                    :toolbarItem="pageBtnList"
+                    @toolbarClick="pageControl"
+                    class="toolbarTab"
+                >
+                </toolbarTab>
+
+                <div v-show="activitedPageNum === 1">
+                    <search-layout>
+                        <template slot="searchItem1">
+                            <span class="label">场景名称</span>
+                            <el-input
+                                v-model="searchParamsA.id"
+                                size="small"
+                                clearable
+                                placeholder="请输入"
+                            >
+                            </el-input>
+                        </template>
+                        <template slot="searchItem2">
+                            <span class="label">自车驾驶行为</span>
+                            <el-select v-model="searchParamsA.status" multiple>
+                                <el-option
+                                    v-for="item in list"
+                                    :label="item.caption"
+                                    :value="item.code"
+                                    :key="item.code"
+                                ></el-option>
+                            </el-select>
+                        </template>
+                        <template slot="searchItem3">
+                            <span class="label">目标驾驶行为</span>
+                            <el-select v-model="searchParamsA.status" multiple>
+                                <el-option
+                                    v-for="item in list"
+                                    :label="item.caption"
+                                    :value="item.code"
+                                    :key="item.code"
+                                ></el-option>
+                            </el-select>
+                        </template>
+                        <template slot="searchItem4">
+                            <span class="label">自车反应行为</span>
+                            <el-select v-model="searchParamsA.status" multiple>
+                                <el-option
+                                    v-for="item in list"
+                                    :label="item.caption"
+                                    :value="item.code"
+                                    :key="item.code"
+                                ></el-option>
+                            </el-select>
+                        </template>
+                        <template slot="searchItem5">
+                            <span class="label">冲突行为</span>
+                            <el-select v-model="searchParamsA.status" multiple>
+                                <el-option
+                                    v-for="item in list"
+                                    :label="item.caption"
+                                    :value="item.code"
+                                    :key="item.code"
+                                ></el-option>
+                            </el-select>
+                        </template>
+                        <template slot="searchItem6">
+                            <span class="label">冲突类型</span>
+                            <el-select v-model="searchParamsA.status" multiple>
+                                <el-option
+                                    v-for="item in list"
+                                    :label="item.caption"
+                                    :value="item.code"
+                                    :key="item.code"
+                                ></el-option>
+                            </el-select>
+                        </template>
+                        <template slot="searchBtn1">
+                            <el-button type="primary">查询</el-button>
+                        </template>
+                        <template slot="searchBtn2">
+                            <el-button type="primary">重置</el-button>
+                        </template>
+                    </search-layout>
+                    <div class="isSelected">
+                        <el-checkbox v-model="selectedA">已选择</el-checkbox>
+                    </div>
+                    <tableList
+                        ref="tableA"
+                        :columns="columnsA"
+                        :getDataWay="getDataWayA"
+                        :pagination="paginationA"
+                        index
+                        selection
+                    >
+                    </tableList>
+                </div>
+
+                <div v-show="activitedPageNum === 2">
+                    <search-layout>
+                        <template slot="searchItem1">
+                            <span class="label">道路</span>
+                            <el-select v-model="searchParamsB.status">
+                                <el-option
+                                    v-for="item in list"
+                                    :label="item.caption"
+                                    :value="item.code"
+                                    :key="item.code"
+                                ></el-option>
+                            </el-select>
+                        </template>
+                        <template slot="searchItem2">
+                            <span class="label">基础设施</span>
+                            <el-select v-model="searchParamsB.status">
+                                <el-option
+                                    v-for="item in list"
+                                    :label="item.caption"
+                                    :value="item.code"
+                                    :key="item.code"
+                                ></el-option>
+                            </el-select>
+                        </template>
+                        <template slot="searchItem3">
+                            <span class="label">交通情况</span>
+                            <el-select v-model="searchParamsB.status">
+                                <el-option
+                                    v-for="item in list"
+                                    :label="item.caption"
+                                    :value="item.code"
+                                    :key="item.code"
+                                ></el-option>
+                            </el-select>
+                        </template>
+                        <template slot="searchItem4">
+                            <span class="label">自车行为</span>
+                            <el-select v-model="searchParamsB.status">
+                                <el-option
+                                    v-for="item in list"
+                                    :label="item.caption"
+                                    :value="item.code"
+                                    :key="item.code"
+                                ></el-option>
+                            </el-select>
+                        </template>
+                        <template slot="searchItem5">
+                            <span class="label">目标行为</span>
+                            <el-select v-model="searchParamsB.status">
+                                <el-option
+                                    v-for="item in list"
+                                    :label="item.caption"
+                                    :value="item.code"
+                                    :key="item.code"
+                                ></el-option>
+                            </el-select>
+                        </template>
+                        <template slot="searchItem6">
+                            <span class="label">自然环境</span>
+                            <el-select v-model="searchParamsB.status">
+                                <el-option
+                                    v-for="item in list"
+                                    :label="item.caption"
+                                    :value="item.code"
+                                    :key="item.code"
+                                ></el-option>
+                            </el-select>
+                        </template>
+                        <template slot="searchBtn1">
+                            <el-button type="primary">查询</el-button>
+                        </template>
+                        <template slot="searchBtn2">
+                            <el-button type="primary">重置</el-button>
+                        </template>
+                    </search-layout>
+                    <div class="isSelected">
+                        <el-checkbox v-model="selectedB">已选择</el-checkbox>
+                    </div>
+                    <tableList
+                        ref="tableB"
+                        :columns="columnsB"
+                        :getDataWay="getDataWayB"
+                        :pagination="paginationB"
+                        index
+                        selection
+                    >
+                    </tableList>
+                </div>
+
+                <div v-show="activitedPageNum === 3">
+                    <search-layout>
+                        <template slot="searchItem1">
+                            <span class="label">场景名称</span>
+                            <el-input
+                                v-model="searchParamsC.id"
+                                size="small"
+                                clearable
+                                placeholder="请输入"
+                            >
+                            </el-input>
+                        </template>
+                        <template slot="searchItem2">
+                            <span class="label">法规类型</span>
+                            <el-select v-model="searchParamsC.status" multiple>
+                                <el-option
+                                    v-for="item in list"
+                                    :label="item.caption"
+                                    :value="item.code"
+                                    :key="item.code"
+                                ></el-option>
+                            </el-select>
+                        </template>
+                        <template slot="searchItem3">
+                            <span class="label">标准类型</span>
+                            <el-input
+                                v-model="searchParamsC.id"
+                                size="small"
+                                clearable
+                                placeholder="请输入"
+                            >
+                            </el-input>
+                        </template>
+                        <template slot="searchBtn1">
+                            <el-button type="primary">查询</el-button>
+                        </template>
+                        <template slot="searchBtn2">
+                            <el-button type="primary">重置</el-button>
+                        </template>
+                    </search-layout>
+                    <div class="isSelected">
+                        <el-checkbox v-model="selectedC">已选择</el-checkbox>
+                    </div>
+                    <tableList
+                        ref="tableC"
+                        :columns="columnsC"
+                        :getDataWay="getDataWayC"
+                        :pagination="paginationC"
+                        index
+                        selection
+                    >
+                    </tableList>
+                </div>
+            </div>
+
+            <div class="flexBox summaryBox">
+                <div>场景总数: {{ sceneTotal }}</div>
+                <div>交通事故场景: {{ sceneA }}</div>
+                <div>自然驾驶场景: {{ sceneB }}</div>
+                <div>标准法规场景: {{ sceneC }}</div>
+            </div>
+
+            <span slot="footer">
+                <el-button type="primary" @click="scenarioListsConfirm"
+                    >确 定</el-button
+                >
+                <el-button @click="scenarioListsVisible = false"
+                    >取 消</el-button
+                >
+            </span>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import searchLayout from "@/components/grid/searchLayout";
+import tableList from "@/components/grid/TableList";
+import toolbarTab from "@/components/toolbar/toolbarTab";
+
+export default {
+    name: "scenePacketList", // 场景数据包
+    components: { searchLayout, tableList, toolbarTab },
+    data() {
+        return {
+            searchParams: {
+                //搜索参数
+                id: "", //ID
+                clientOrgName: "", //车辆名称
+                clientOrgName1: "", //配置名称
+                clientOrgName2: "", //配置描述
+            },
+            activitedPageNum: 1,
+            subPageActiveName: 1,
+            pageBtnList: [
+                {
+                    type: "primary",
+                    title: "交通事故场景",
+                    key: "all",
+                    fromId: 1,
+                    method: "showAll",
+                    plain: true,
+                    disabled: false,
+                },
+                {
+                    type: "primary",
+                    title: "自然驾驶场景",
+                    key: "notRead",
+                    fromId: 2,
+                    method: "showNotRead",
+                    plain: true,
+                    disabled: false,
+                },
+                {
+                    type: "primary",
+                    title: "标准法规场景",
+                    key: "notRead1",
+                    fromId: 3,
+                    method: "showNotRead1",
+                    plain: true,
+                    disabled: false,
+                },
+            ],
+            columns: [
+                {
+                    label: "操作",
+                    prop: "cgInfos",
+                    template: true,
+                },
+                {
+                    label: "指标名称",
+                    prop: "id",
+                },
+                {
+                    label: "权重",
+                    prop: "ktName",
+                },
+                {
+                    label: "场景数量",
+                    prop: "jbSource",
+                },
+                {
+                    label: "规则名称",
+                    prop: "startDateStr",
+                },
+                {
+                    label: "备注",
+                    prop: "startDateStr",
+                },
+            ],
+            pagination: {
+                //分页使用
+                currentPage: 1,
+                pageSize: 10,
+                position: "right",
+                pageSizes: [10, 30, 50, 100, 200],
+                layout: "sizes, total, prev, pager, next, jumper",
+            },
+            getDataWay: {
+                //加载表格数据
+                dataType: "data",
+                type: "post",
+                firstRequest: false,
+                data: [
+                    {
+                        id: 1,
+                        ktName: "kjdhfkjsdhfkjsjhdfksdjhfkhwoieyrhfisdhfksjhdf",
+                        jbSource: "收到就好付款时间的回复可见收到货覅无痕",
+                    },
+                    { id: 2 },
+                    { id: 3 },
+                    { id: 4 },
+                    { id: 5 },
+                    { id: 6 },
+                ],
+                param: {},
+            },
+            diaTitle: "",
+            indicatorsVisible: false, // 编辑指标
+            scenarioVisible: false, // 选择场景
+            scenarioListsVisible: false, // 真实场景列表
+            form: {
+                name: "",
+                des: "",
+                x: "",
+                y: "",
+            },
+            rules: {
+                name: [{ required: true, message: "请输入", trigger: "blur" }],
+                x: [{ required: true, message: "请输入", trigger: "blur" }],
+                y: [{ required: true, message: "请选择", trigger: "change" }],
+            },
+            list: [],
+            formA: {
+                x: "",
+            },
+            rulesA: {
+                x: [{ required: true, message: "请选择", trigger: "change" }],
+            },
+            listA: [],
+            searchParamsA: {
+                //搜索参数
+                id: "", //ID
+                clientOrgName: "", //车辆名称
+                clientOrgName1: "", //配置名称
+                clientOrgName2: "", //配置描述
+                status: "",
+                x: "1",
+                c: [],
+            },
+            columnsA: [
+                //表格列
+                {
+                    label: "场景名称",
+                    prop: "id",
+                },
+                {
+                    label: "自车驾驶行为",
+                    prop: "aid1",
+                },
+                {
+                    label: "目标驾驶行为",
+                    prop: "ktName",
+                },
+                {
+                    label: "自车反应行为",
+                    prop: "jbSource",
+                },
+                {
+                    label: "冲突行为",
+                    prop: "jbSource",
+                },
+                {
+                    label: "冲突类型",
+                    prop: "jbSource",
+                },
+                {
+                    label: "标签",
+                    prop: "asd",
+                    template: true,
+                },
+                {
+                    label: "操作",
+                    prop: "cgInfos",
+                    template: true,
+                },
+            ],
+            paginationA: {
+                //分页使用
+                currentPage: 1,
+                pageSize: 10,
+                position: "right",
+                pageSizes: [10, 30, 50, 100, 200],
+                layout: "sizes, total, prev, pager, next, jumper",
+            },
+            getDataWayA: {
+                //加载表格数据
+                dataType: "data",
+                type: "post",
+                firstRequest: false,
+                data: [
+                    {
+                        id: 1,
+                        ktName: "kjdhfkjsdhfkjsjhdfksdjhfkhwoieyrhfisdhfksjhdf",
+                        jbSource: "收到就好付款时间的回复可见收到货覅无痕",
+                    },
+                    { id: 2 },
+                    { id: 3 },
+                    { id: 4 },
+                    { id: 51 },
+                    { id: 6 },
+                ],
+                // data: this.$api.scientificStatistics.typeProjectStatistics,
+                param: {},
+            },
+            selectedA: false,
+            searchParamsB: {
+                //搜索参数
+                id: "", //ID
+                clientOrgName: "", //车辆名称
+                clientOrgName1: "", //配置名称
+                clientOrgName2: "", //配置描述
+                status: "",
+                c: [],
+            },
+            columnsB: [
+                //表格列
+                {
+                    label: "场景名称",
+                    prop: "aid1",
+                },
+                {
+                    label: "天气",
+                    prop: "ktName",
+                },
+                {
+                    label: "自车行为",
+                    prop: "jbSource",
+                },
+                {
+                    label: "目标行为",
+                    prop: "jbSource",
+                },
+                {
+                    label: "标签",
+                    prop: "asd",
+                    template: true,
+                },
+                {
+                    label: "操作",
+                    prop: "cgInfos",
+                    template: true,
+                },
+            ],
+            paginationB: {
+                //分页使用
+                currentPage: 1,
+                pageSize: 10,
+                position: "right",
+                pageSizes: [10, 30, 50, 100, 200],
+                layout: "sizes, total, prev, pager, next, jumper",
+            },
+            getDataWayB: {
+                //加载表格数据
+                dataType: "data",
+                type: "post",
+                firstRequest: false,
+                data: [
+                    {
+                        id: 1,
+                        ktName: "kjdhfkjsdhfkjsjhdfksdjhfkhwoieyrhfisdhfksjhdf",
+                        jbSource: "收到就好付款时间的回复可见收到货覅无痕",
+                    },
+                    { id: 2 },
+                    { id: 3 },
+                    { id: 4 },
+                    { id: 51 },
+                    { id: 6 },
+                ],
+                param: {},
+            },
+            selectedB: false,
+            searchParamsC: {
+                //搜索参数
+                id: "", //ID
+                clientOrgName: "", //车辆名称
+                clientOrgName1: "", //配置名称
+                clientOrgName2: "", //配置描述
+                status: "",
+                c: [],
+            },
+            columnsC: [
+                //表格列
+                {
+                    label: "场景名称",
+                    prop: "id",
+                },
+                {
+                    label: "法规类型",
+                    prop: "aid1",
+                },
+                {
+                    label: "标准类型",
+                    prop: "ktName",
+                },
+                {
+                    label: "标签",
+                    prop: "asd",
+                    template: true,
+                },
+                {
+                    label: "操作",
+                    prop: "cgInfos",
+                    template: true,
+                },
+            ],
+            paginationC: {
+                //分页使用
+                currentPage: 1,
+                pageSize: 10,
+                position: "right",
+                pageSizes: [10, 30, 50, 100, 200],
+                layout: "sizes, total, prev, pager, next, jumper",
+            },
+            getDataWayC: {
+                //加载表格数据
+                dataType: "data",
+                type: "post",
+                firstRequest: false,
+                data: [
+                    {
+                        id: 1,
+                        ktName: "kjdhfkjsdhfkjsjhdfksdjhfkhwoieyrhfisdhfksjhdf",
+                        jbSource: "收到就好付款时间的回复可见收到货覅无痕",
+                    },
+                    { id: 2 },
+                    { id: 3 },
+                    { id: 4 },
+                    { id: 51 },
+                    { id: 6 },
+                ],
+                // data: this.$api.scientificStatistics.typeProjectStatistics,
+                param: {},
+            },
+            selectedC: false,
+            sceneTotal: 0,
+            sceneA: 0,
+            sceneB: 0,
+            sceneC: 0,
+        };
+    },
+
+    computed: {},
+
+    methods: {
+        view() {},
+        addIndicators(row) {
+            this.diaTitle = "添加指标";
+            this.indicatorsVisible = true;
+        },
+        addScenario(row) {
+            this.scenarioVisible = true;
+        },
+        indicatorsConfirm() {
+            this.indicatorsVisible = false;
+        },
+        scenarioConfirm() {
+            this.scenarioVisible = false;
+            this.scenarioListsVisible = true;
+        },
+        scenarioListsConfirm() {
+            this.scenarioListsVisible = false;
+        },
+        pageControl(data) {
+            this.activitedPageNum = data.fromId;
+        },
+    },
+
+    // mounted() {},
+};
+</script>
+
+<style lang='less' scoped>
+.scenePacketListPanel {
+    padding: 30px;
+
+    .viewBox {
+        padding: 0 10px 10px;
+    }
+
+    .tips {
+        padding: 10px 0 10px 18px;
+        font-size: 12px;
+        color: @gray;
+    }
+
+    .tabsBox {
+        .el-input,
+        .el-select {
+            width: 230px;
+        }
+
+        .label {
+            min-width: 90px;
+        }
+
+        .isSelected {
+            padding: 10px 0 10px 30px;
+        }
+    }
+
+    .summaryBox {
+        padding: 20px 20px 0;
+        margin-top: 20px;
+        border-top: 1px dotted @themeColor;
+        color: @themeColor;
+        font-size: 18px;
+        font-weight: bold;
+
+        > div {
+            margin-right: 30px;
+        }
+    }
+}
+</style>

+ 197 - 0
src/views/sceneLibrary/standardRegulationSimulationScenarioList.vue

@@ -0,0 +1,197 @@
+<template>
+    <div>
+        <search-layout :needBox="true">
+            <template slot="searchItem1">
+                <span class="label">场景名称</span>
+                <el-input
+                    v-model="searchParams.id"
+                    size="small"
+                    clearable
+                    placeholder="请输入"
+                >
+                </el-input>
+            </template>
+            <template slot="searchItem2">
+                <span class="label">法规类型</span>
+                <el-select v-model="searchParams.status" multiple>
+                    <el-option
+                        v-for="item in list"
+                        :label="item.caption"
+                        :value="item.code"
+                        :key="item.code"
+                    ></el-option>
+                </el-select>
+            </template>
+            <template slot="searchItem3">
+                <span class="label">标准类型</span>
+                <el-input
+                    v-model="searchParams.id"
+                    size="small"
+                    clearable
+                    placeholder="请输入"
+                >
+                </el-input>
+            </template>
+            <template slot="searchItem4">
+                <el-checkbox-group v-model="searchParams.c">
+                    <el-checkbox-button :label="1" :key="1" class="labelA"
+                        >绿灯</el-checkbox-button
+                    >
+                    <el-checkbox-button :label="2" :key="2" class="labelB"
+                        >桥梁</el-checkbox-button
+                    >
+                    <el-checkbox-button :label="3" :key="3" class="labelC"
+                        >晴天</el-checkbox-button
+                    >
+                    <el-checkbox-button :label="4" :key="4" class="labelD"
+                        >直道</el-checkbox-button
+                    >
+                    <el-checkbox-button :label="5" :key="5" class="labelC"
+                        >晴天</el-checkbox-button
+                    >
+                    <el-checkbox-button :label="6" :key="6" class="labelD"
+                        >直道</el-checkbox-button
+                    >
+                </el-checkbox-group>
+            </template>
+            <template slot="searchBtn1">
+                <el-button type="primary">查询</el-button>
+            </template>
+            <template slot="searchBtn2">
+                <el-button type="primary">重置</el-button>
+            </template>
+        </search-layout>
+
+        <tableList
+            ref="table"
+            style="border-top: none; margin: 30px"
+            :columns="columns"
+            :getDataWay="getDataWay"
+            :pagination="pagination"
+            index
+        >
+            <el-table-column label="标签" slot="asd" align="center">
+                <template>
+                    <div class="labelPanel">
+                        <span class="labelBox labelA">绿灯</span>
+                        <span class="labelBox labelB">桥梁</span>
+                        <span class="labelBox labelC">晴天</span>
+                        <span class="labelBox labelD">直道</span>
+                    </div>
+                </template>
+            </el-table-column>
+            <el-table-column
+                label="操作"
+                slot="cgInfos"
+                align="center"
+                width="180"
+            >
+                <template v-slot="scope">
+                    <i
+                        @click="viewRow(scope.row)"
+                        class="el-icon-view elIcon cursor"
+                    >
+                    </i>
+                </template>
+            </el-table-column>
+        </tableList>
+
+        <el-dialog
+            title="CAMERAO"
+            :visible.sync="dialogVisible"
+            width="690px"
+            :close-on-click-modal="false"
+            :close-on-press-escape="false"
+        >
+            <div>123</div>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import searchLayout from "@/components/grid/searchLayout";
+import tableList from "@/components/grid/TableList";
+
+export default {
+    name: "standardRegulationSimulationScenarioList", // 标准法规仿真场景
+    components: { searchLayout, tableList },
+    data() {
+        return {
+            searchParams: {
+                //搜索参数
+                id: "", //ID
+                clientOrgName: "", //车辆名称
+                clientOrgName1: "", //配置名称
+                clientOrgName2: "", //配置描述
+                status: "",
+                c: [],
+            },
+            list: [],
+            columns: [
+                //表格列
+                {
+                    label: "场景名称",
+                    prop: "id",
+                },
+                {
+                    label: "法规类型",
+                    prop: "aid1",
+                },
+                {
+                    label: "标准类型",
+                    prop: "ktName",
+                },
+                {
+                    label: "标签",
+                    prop: "asd",
+                    template: true,
+                },
+                {
+                    label: "操作",
+                    prop: "cgInfos",
+                    template: true,
+                },
+            ],
+            pagination: {
+                //分页使用
+                currentPage: 1,
+                pageSize: 10,
+                position: "right",
+                pageSizes: [10, 30, 50, 100, 200],
+                layout: "sizes, total, prev, pager, next, jumper",
+            },
+            getDataWay: {
+                //加载表格数据
+                dataType: "data",
+                type: "post",
+                firstRequest: false,
+                data: [
+                    {
+                        id: 1,
+                        ktName: "kjdhfkjsdhfkjsjhdfksdjhfkhwoieyrhfisdhfksjhdf",
+                        jbSource: "收到就好付款时间的回复可见收到货覅无痕",
+                    },
+                    { id: 2 },
+                    { id: 3 },
+                    { id: 4 },
+                    { id: 51 },
+                    { id: 6 },
+                ],
+                param: {},
+            },
+            dialogVisible: false,
+        };
+    },
+    methods: {
+        viewRow(row) {
+            this.dialogVisible = true;
+        },
+    },
+
+    // mounted: {},
+};
+</script>
+
+<style lang='less' scoped>
+@import "./common/util.less";
+</style>

+ 268 - 0
src/views/sceneLibrary/trafficAccidentSimulationScenarioList.vue

@@ -0,0 +1,268 @@
+<template>
+    <div>
+        <search-layout :needBox="true">
+            <template slot="searchItem1">
+                <span class="label">场景名称</span>
+                <el-input
+                    v-model="searchParams.id"
+                    size="small"
+                    clearable
+                    placeholder="请输入"
+                >
+                </el-input>
+            </template>
+            <template slot="searchItem2">
+                <span class="label">自车驾驶行为</span>
+                <el-select v-model="searchParams.status" multiple>
+                    <el-option
+                        v-for="item in list"
+                        :label="item.caption"
+                        :value="item.code"
+                        :key="item.code"
+                    ></el-option>
+                </el-select>
+            </template>
+            <template slot="searchItem3">
+                <span class="label">目标驾驶行为</span>
+                <el-select v-model="searchParams.status" multiple>
+                    <el-option
+                        v-for="item in list"
+                        :label="item.caption"
+                        :value="item.code"
+                        :key="item.code"
+                    ></el-option>
+                </el-select>
+            </template>
+            <template slot="searchItem4">
+                <span class="label">自车反应行为</span>
+                <el-select v-model="searchParams.status" multiple>
+                    <el-option
+                        v-for="item in list"
+                        :label="item.caption"
+                        :value="item.code"
+                        :key="item.code"
+                    ></el-option>
+                </el-select>
+            </template>
+            <template slot="searchItem5">
+                <span class="label">冲突行为</span>
+                <el-select v-model="searchParams.status" multiple>
+                    <el-option
+                        v-for="item in list"
+                        :label="item.caption"
+                        :value="item.code"
+                        :key="item.code"
+                    ></el-option>
+                </el-select>
+            </template>
+            <template slot="searchItem6">
+                <span class="label">冲突类型</span>
+                <el-select v-model="searchParams.status" multiple>
+                    <el-option
+                        v-for="item in list"
+                        :label="item.caption"
+                        :value="item.code"
+                        :key="item.code"
+                    ></el-option>
+                </el-select>
+            </template>
+            <template slot="searchItem7">
+                <el-checkbox-group v-model="searchParams.c">
+                    <el-checkbox-button :label="1" :key="1" class="labelA"
+                        >绿灯</el-checkbox-button
+                    >
+                    <el-checkbox-button :label="2" :key="2" class="labelB"
+                        >桥梁</el-checkbox-button
+                    >
+                    <el-checkbox-button :label="3" :key="3" class="labelC"
+                        >晴天</el-checkbox-button
+                    >
+                    <el-checkbox-button :label="4" :key="4" class="labelD"
+                        >直道</el-checkbox-button
+                    >
+                    <el-checkbox-button :label="5" :key="5" class="labelC"
+                        >晴天</el-checkbox-button
+                    >
+                    <el-checkbox-button :label="6" :key="6" class="labelD"
+                        >直道</el-checkbox-button
+                    >
+                </el-checkbox-group>
+            </template>
+            <!-- <template slot="searchItem7">
+                <div class="radioBox">
+                    <span class="label">是否存在盲区</span>
+                    <el-radio v-model="searchParams.x" label="1">是</el-radio>
+                    <el-radio v-model="searchParams.x" label="2">否</el-radio>
+                </div>
+            </template>
+            <template slot="searchItem8">
+                <div class="radioBox">
+                    <span class="label">是否发生碰撞</span>
+                    <el-radio v-model="searchParams.x" label="1">是</el-radio>
+                    <el-radio v-model="searchParams.x" label="2">否</el-radio>
+                </div>
+            </template> -->
+            <template slot="searchBtn1">
+                <el-button type="primary">查询</el-button>
+            </template>
+            <template slot="searchBtn2">
+                <el-button type="primary">重置</el-button>
+            </template>
+        </search-layout>
+
+        <tableList
+            ref="table"
+            style="border-top: none; margin: 30px"
+            :columns="columns"
+            :getDataWay="getDataWay"
+            :pagination="pagination"
+            index
+        >
+            <el-table-column label="标签" slot="asd" align="center">
+                <template>
+                    <div class="labelPanel">
+                        <span class="labelBox labelA">绿灯</span>
+                        <span class="labelBox labelB">桥梁</span>
+                        <span class="labelBox labelC">晴天</span>
+                        <span class="labelBox labelD">直道</span>
+                    </div>
+                </template>
+            </el-table-column>
+            <el-table-column
+                label="操作"
+                slot="cgInfos"
+                align="center"
+                width="180"
+            >
+                <template v-slot="scope">
+                    <i
+                        @click="viewRow(scope.row)"
+                        class="el-icon-view elIcon cursor"
+                    >
+                    </i>
+                </template>
+            </el-table-column>
+        </tableList>
+
+        <el-dialog
+            title="CAMERAO"
+            :visible.sync="dialogVisible"
+            width="690px"
+            :close-on-click-modal="false"
+            :close-on-press-escape="false"
+        >
+            <div>123</div>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import searchLayout from "@/components/grid/searchLayout";
+import tableList from "@/components/grid/TableList";
+
+export default {
+    name: "trafficAccidentSimulationScenarioList", // 交通事故仿真场景
+    components: { searchLayout, tableList },
+    data() {
+        return {
+            searchParams: {
+                //搜索参数
+                id: "", //ID
+                clientOrgName: "", //车辆名称
+                clientOrgName1: "", //配置名称
+                clientOrgName2: "", //配置描述
+                status: "",
+                x: "1",
+                c: [],
+            },
+            list: [],
+            columns: [
+                //表格列
+                {
+                    label: "场景名称",
+                    prop: "id",
+                },
+                {
+                    label: "自车驾驶行为",
+                    prop: "aid1",
+                },
+                {
+                    label: "目标驾驶行为",
+                    prop: "ktName",
+                },
+                {
+                    label: "自车反应行为",
+                    prop: "jbSource",
+                },
+                {
+                    label: "冲突行为",
+                    prop: "jbSource",
+                },
+                {
+                    label: "冲突类型",
+                    prop: "jbSource",
+                },
+                {
+                    label: "标签",
+                    prop: "asd",
+                    template: true,
+                },
+                {
+                    label: "操作",
+                    prop: "cgInfos",
+                    template: true,
+                },
+            ],
+            pagination: {
+                //分页使用
+                currentPage: 1,
+                pageSize: 10,
+                position: "right",
+                pageSizes: [10, 30, 50, 100, 200],
+                layout: "sizes, total, prev, pager, next, jumper",
+            },
+            getDataWay: {
+                //加载表格数据
+                dataType: "data",
+                type: "post",
+                firstRequest: false,
+                data: [
+                    {
+                        id: 1,
+                        ktName: "kjdhfkjsdhfkjsjhdfksdjhfkhwoieyrhfisdhfksjhdf",
+                        jbSource: "收到就好付款时间的回复可见收到货覅无痕",
+                    },
+                    { id: 2 },
+                    { id: 3 },
+                    { id: 4 },
+                    { id: 51 },
+                    { id: 6 },
+                ],
+                // data: this.$api.scientificStatistics.typeProjectStatistics,
+                param: {},
+            },
+            dialogVisible: false,
+        };
+    },
+    methods: {
+        viewRow(row) {
+            this.dialogVisible = true;
+        },
+    },
+
+    // mounted: {},
+};
+</script>
+
+<style lang='less' scoped>
+@import "./common/util.less";
+.inputBox {
+    .radioBox {
+        width: 340px;
+    }
+
+    .label {
+        min-width: 90px;
+    }
+}
+</style>

+ 195 - 0
src/views/systemManagement/accountManagement.vue

@@ -0,0 +1,195 @@
+<template>
+    <div>
+        <search-layout :needBox="true">
+            <template slot="searchItem1">
+                <span class="label">账户名称</span>
+                <el-input
+                    v-model="searchParams.id"
+                    size="small"
+                    clearable
+                    placeholder="请输入"
+                >
+                </el-input>
+            </template>
+            <template slot="searchItem2">
+                <span class="label">所属公司</span>
+                <el-input
+                    v-model="searchParams.clientOrgName"
+                    size="small"
+                    clearable
+                    placeholder="请输入"
+                >
+                </el-input>
+            </template>
+            <template slot="searchItem3">
+                <span class="label">账户类型</span>
+                <el-select v-model="searchParams.status">
+                    <el-option
+                        v-for="item in list"
+                        :label="item.caption"
+                        :value="item.code"
+                        :key="item.code"
+                    ></el-option>
+                </el-select>
+            </template>
+            <template slot="searchItem4">
+                <span class="label">状态</span>
+                <el-select v-model="searchParams.status">
+                    <el-option
+                        v-for="item in list"
+                        :label="item.caption"
+                        :value="item.code"
+                        :key="item.code"
+                    ></el-option>
+                </el-select>
+            </template>
+            <template slot="searchBtn1">
+                <el-button type="primary">查询</el-button>
+            </template>
+            <template slot="searchBtn2">
+                <el-button type="primary">重置</el-button>
+            </template>
+        </search-layout>
+
+        <div class="btnsPanel">
+            <el-button type="primary" plain icon="el-icon-video-pause"
+                >批量停用</el-button
+            >
+            <el-button type="primary" plain icon="el-icon-video-play"
+                >批量启用</el-button
+            >
+            <el-button
+                type="primary"
+                icon="el-icon-circle-plus-outline"
+                @click="addConfig"
+                >创建</el-button
+            >
+        </div>
+
+        <tableList
+            ref="table"
+            style="border-top: none; margin: 0 30px"
+            :columns="columns"
+            :getDataWay="getDataWay"
+            :pagination="pagination"
+            index
+            selection
+        >
+            <el-table-column label="操作" slot="cgInfos" align="center">
+                <template v-slot="scope">
+                    <i
+                        @click="addMarkDia(scope.row)"
+                        class="el-icon-edit-outline elIcon"
+                    ></i>
+                    <i
+                        @click="addMarkDia(scope.row)"
+                        class="el-icon-video-pause elIcon"
+                    ></i>
+                </template>
+            </el-table-column>
+        </tableList>
+    </div>
+</template>
+
+<script>
+import searchLayout from "@/components/grid/searchLayout";
+import tableList from "@/components/grid/TableList";
+
+export default {
+    name: "accountManagement", // 账户管理
+    components: { searchLayout, tableList },
+    data() {
+        return {
+            searchParams: {
+                //搜索参数
+                id: "", //ID
+                clientOrgName: "", //车辆名称
+                clientOrgName1: "", //配置名称
+                clientOrgName2: "", //配置描述
+                status: "",
+            },
+            list: [],
+            columns: [
+                //表格列
+                {
+                    label: "账户名称",
+                    prop: "id",
+                },
+                {
+                    label: "账户类型",
+                    prop: "aid",
+                },
+                {
+                    label: "所属公司",
+                    prop: "ktName",
+                },
+                {
+                    label: "联系人",
+                    prop: "jbSource",
+                },
+                {
+                    label: "联系方式",
+                    prop: "aid",
+                },
+                {
+                    label: "状态",
+                    prop: "ktName",
+                },
+                {
+                    label: "创建人",
+                    prop: "jbSource",
+                },
+                {
+                    label: "创建时间",
+                    prop: "jbSource",
+                },
+                {
+                    label: "操作",
+                    prop: "cgInfos",
+                    template: true,
+                },
+            ],
+            pagination: {
+                //分页使用
+                currentPage: 1,
+                pageSize: 10,
+                position: "right",
+                pageSizes: [10, 30, 50, 100, 200],
+                layout: "sizes, total, prev, pager, next, jumper",
+            },
+            getDataWay: {
+                //加载表格数据
+                dataType: "data",
+                type: "post",
+                firstRequest: false,
+                data: [
+                    {
+                        id: 1,
+                        ktName: "kjdhfkjsdhfkjsjhdfksdjhfkhwoieyrhfisdhfksjhdf",
+                        jbSource: "收到就好付款时间的回复可见收到货覅无痕",
+                    },
+                    { id: 2 },
+                    { id: 3 },
+                    { id: 4 },
+                    { id: 51 },
+                    { id: 6 },
+                ],
+                // data: this.$api.scientificStatistics.typeProjectStatistics,
+                param: {},
+            },
+        };
+    },
+    methods: {
+        addConfig() {
+            this.$router.push({ path: "/addAccount" });
+        },
+        addMarkDia() {},
+    },
+};
+</script>
+
+<style scoped lang="less">
+.btnsPanel {
+    margin: 45px 40px 15px;
+}
+</style>

+ 294 - 0
src/views/systemManagement/addAccount.vue

@@ -0,0 +1,294 @@
+<template>
+    <div>
+        <div class="flexBox box">
+            <div class="fileBox">
+                <div class="til">头像</div>
+                <div class="photo">
+                    <img :src="imgSrc" width="100%" height="100%" />
+                </div>
+                <div class="uploadBox">
+                    <el-button type="primary" plain icon="el-icon-upload2"
+                        >上传文件</el-button
+                    >
+                </div>
+            </div>
+            <el-form
+                ref="form"
+                :model="form"
+                :rules="rules"
+                label-width="108px"
+            >
+                <el-form-item label="账户名称:" prop="name" v-show="isEdited">
+                    <el-input
+                        placeholder="请输入"
+                        maxlength="30"
+                        v-autoTrim="{ obj: form, key: 'name' }"
+                        v-model="form.name"
+                    >
+                    </el-input>
+                </el-form-item>
+                <el-form-item label="账户名称:" prop="name" v-show="!isEdited">
+                    {{ form.name }}
+                </el-form-item>
+
+                <el-form-item label="账户类型:" prop="des" v-show="isEdited">
+                    <el-select v-model="form.des">
+                        <el-option
+                            v-for="item in list"
+                            :label="item.caption"
+                            :value="item.code"
+                            :key="item.code"
+                        ></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="账户类型:" prop="des" v-show="!isEdited">
+                    {{ form.name }}
+                </el-form-item>
+
+                <el-form-item label="所属公司:" prop="x" v-show="isEdited">
+                    <el-input
+                        placeholder="请输入"
+                        maxlength="15"
+                        v-autoTrim="{ obj: form, key: 'x' }"
+                        v-model="form.x"
+                    >
+                    </el-input>
+                </el-form-item>
+                <el-form-item label="所属公司:" prop="x" v-show="!isEdited">
+                    {{ form.name }}
+                </el-form-item>
+
+                <el-form-item label="联系人:" prop="x" v-show="isEdited">
+                    <el-input
+                        placeholder="请输入"
+                        maxlength="15"
+                        v-autoTrim="{ obj: form, key: 'x' }"
+                        v-model="form.x"
+                    >
+                    </el-input>
+                </el-form-item>
+                <el-form-item label="联系人:" prop="x" v-show="!isEdited">
+                    {{ form.name }}
+                </el-form-item>
+
+                <el-form-item label="联系方式:" prop="x" v-show="isEdited">
+                    <el-input
+                        placeholder="请输入"
+                        maxlength="15"
+                        v-autoTrim="{ obj: form, key: 'x' }"
+                        v-model="form.x"
+                    >
+                    </el-input>
+                </el-form-item>
+                <el-form-item label="联系方式:" prop="x" v-show="!isEdited">
+                    {{ form.name }}
+                </el-form-item>
+
+                <el-form-item label="密码:" prop="x" v-show="isEdited">
+                    <el-input
+                        placeholder="请输入"
+                        type="password"
+                        maxlength="15"
+                        v-autoTrim="{ obj: form, key: 'x' }"
+                        v-model="form.x"
+                    >
+                    </el-input>
+                </el-form-item>
+
+                <el-form-item label="确认密码:" prop="x" v-show="isEdited">
+                    <el-input
+                        placeholder="请输入"
+                        type="password"
+                        maxlength="15"
+                        v-autoTrim="{ obj: form, key: 'x' }"
+                        v-model="form.x"
+                    >
+                    </el-input>
+                </el-form-item>
+
+                <el-form-item label="状态:" prop="y" v-show="isEdited">
+                    <el-radio v-model="form.z" label="1">启用</el-radio>
+                    <el-radio v-model="form.z" label="2">停用</el-radio>
+                </el-form-item>
+                <el-form-item label="状态:" prop="y" v-show="!isEdited">
+                    {{ form.name }}
+                </el-form-item>
+
+                <div class="btns" v-show="isEdited">
+                    <el-button type="primary">保存</el-button>
+                    <el-button type="primary" plain @click="cancelForm"
+                        >取消</el-button
+                    >
+                </div>
+            </el-form>
+            <div class="editBox">
+                <el-button
+                 v-show="isEdited"
+                    type="primary"
+                    icon="el-icon-edit-outline"
+                    @click="editForm"
+                    >编辑</el-button
+                >
+            </div>
+        </div>
+
+        <el-dialog
+            title="编辑"
+            :visible.sync="dialogVisible"
+            width="690px"
+            :close-on-click-modal="false"
+            :close-on-press-escape="false"
+        >
+            <el-form
+                ref="formA"
+                :model="formA"
+                :rules="rulesA"
+                label-width="108px"
+            >
+                <el-form-item
+                    label="手机验证码:"
+                    prop="name"
+                    class="getCodeBox"
+                >
+                    <el-input
+                        placeholder="请输入"
+                        maxlength="30"
+                        class="name"
+                        v-autoTrim="{ obj: form, key: 'name' }"
+                        v-model="formA.name"
+                    >
+                        <el-button slot="append" type="primary"
+                            >获取验证码</el-button
+                        >
+                    </el-input>
+                </el-form-item>
+            </el-form>
+            <span slot="footer">
+                <el-button type="primary" @click="dialogVisible = false"
+                    >确 定</el-button
+                >
+                <el-button @click="dialogVisible = false">取 消</el-button>
+            </span>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+//import  from '';
+
+export default {
+    name: "addAccount", // 创建账户
+    components: {},
+    data() {
+        return {
+            list: [],
+            isEdited: true,
+            imgSrc: require("@/assets/common/image/photoF.png"),
+            form: {
+                name: "创建账户",
+                des: "",
+                x: "",
+                y: "1",
+                z: "2",
+            },
+            rules: {
+                name: [{ required: true, message: "请输入", trigger: "blur" }],
+                des: [{ required: true, message: "请输入", trigger: "blur" }],
+                x: [{ required: true, message: "请输入", trigger: "blur" }],
+                y: [{ required: true, message: "请选择", trigger: "change" }],
+                z: [{ required: true, message: "请选择", trigger: "change" }],
+            },
+            formA: {
+                name: "",
+            },
+            rulesA: {
+                name: [{ required: true, message: "请输入", trigger: "blur" }],
+            },
+            dialogVisible: false,
+        };
+    },
+
+    computed: {},
+
+    methods: {
+        editForm() {
+            this.isEdited = true;
+            this.dialogVisible = true;
+        },
+        cancelForm() {
+            this.isEdited = false;
+            this.dialogVisible = false;
+        },
+    },
+
+    // mounted: {},
+};
+</script>
+
+<style lang='less' scoped>
+.flexBox.box {
+    padding-top: 45px;
+}
+
+.el-form {
+    flex: 1;
+    padding-bottom: 45px;
+
+    /deep/ .el-input,
+    .el-select {
+        width: 100%;
+    }
+}
+
+.fileBox {
+    text-align: right;
+    padding: 0 5% 0 10%;
+
+    .til {
+        width: 210px;
+        padding-bottom: 10px;
+        margin: 0 auto;
+        text-align: left;
+    }
+
+    .photo {
+        display: inline-block;
+        width: 210px;
+        height: 210px;
+        line-height: 210px;
+        border-radius: 50%;
+        overflow: hidden;
+
+        // img {
+        //     vertical-align: middle;
+        // }
+    }
+}
+
+.uploadBox {
+    padding-top: 30px;
+    text-align: center;
+}
+
+.editBox {
+    width: 15%;
+    padding-left: 4%;
+    text-align: left;
+}
+
+.btns {
+    padding-top: 30px;
+    text-align: center;
+}
+
+.getCodeBox {
+    .el-button {
+        background-color: @themeColor;
+        color: #ffffff;
+    }
+
+    /deep/ .el-input-group__append {
+        border: 1px solid transparent;
+    }
+}
+</style>

+ 26 - 0
src/views/systemManagement/index.vue

@@ -0,0 +1,26 @@
+<template>
+    <div>
+        <router-view></router-view>
+    </div>
+</template>
+
+<script>
+//import  from '';
+
+export default {
+    name: "systemManagement", // 系统管理
+    components: {},
+    data() {
+        return {};
+    },
+
+    computed: {},
+
+    methods: {},
+
+    // mounted: {},
+};
+</script>
+
+<style lang='less' scoped>
+</style>

+ 10 - 0
tests/e2e/.eslintrc.js

@@ -0,0 +1,10 @@
+module.exports = {
+  plugins: ["cypress"],
+  env: {
+    mocha: true,
+    "cypress/globals": true,
+  },
+  rules: {
+    strict: "off",
+  },
+};

+ 25 - 0
tests/e2e/plugins/index.js

@@ -0,0 +1,25 @@
+/* eslint-disable arrow-body-style */
+// https://docs.cypress.io/guides/guides/plugins-guide.html
+
+// if you need a custom webpack configuration you can uncomment the following import
+// and then use the `file:preprocessor` event
+// as explained in the cypress docs
+// https://docs.cypress.io/api/plugins/preprocessors-api.html#Examples
+
+// /* eslint-disable import/no-extraneous-dependencies, global-require */
+// const webpack = require('@cypress/webpack-preprocessor')
+
+module.exports = (on, config) => {
+  // on('file:preprocessor', webpack({
+  //  webpackOptions: require('@vue/cli-service/webpack.config'),
+  //  watchOptions: {}
+  // }))
+
+  return Object.assign({}, config, {
+    fixturesFolder: "tests/e2e/fixtures",
+    integrationFolder: "tests/e2e/specs",
+    screenshotsFolder: "tests/e2e/screenshots",
+    videosFolder: "tests/e2e/videos",
+    supportFile: "tests/e2e/support/index.js",
+  });
+};

+ 8 - 0
tests/e2e/specs/test.js

@@ -0,0 +1,8 @@
+// https://docs.cypress.io/api/introduction/api.html
+
+describe("My First Test", () => {
+  it("Visits the app root url", () => {
+    cy.visit("/");
+    cy.contains("h1", "Welcome to Your Vue.js App");
+  });
+});

+ 25 - 0
tests/e2e/support/commands.js

@@ -0,0 +1,25 @@
+// ***********************************************
+// This example commands.js shows you how to
+// create various custom commands and overwrite
+// existing commands.
+//
+// For more comprehensive examples of custom
+// commands please read more here:
+// https://on.cypress.io/custom-commands
+// ***********************************************
+//
+//
+// -- This is a parent command --
+// Cypress.Commands.add("login", (email, password) => { ... })
+//
+//
+// -- This is a child command --
+// Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... })
+//
+//
+// -- This is a dual command --
+// Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... })
+//
+//
+// -- This is will overwrite an existing command --
+// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... })

+ 20 - 0
tests/e2e/support/index.js

@@ -0,0 +1,20 @@
+// ***********************************************************
+// This example support/index.js is processed and
+// loaded automatically before your test files.
+//
+// This is a great place to put global configuration and
+// behavior that modifies Cypress.
+//
+// You can change the location of this file or turn off
+// automatically serving support files with the
+// 'supportFile' configuration option.
+//
+// You can read more here:
+// https://on.cypress.io/configuration
+// ***********************************************************
+
+// Import commands.js using ES2015 syntax:
+import "./commands";
+
+// Alternatively you can use CommonJS syntax:
+// require('./commands')

+ 13 - 0
tests/unit/example.spec.js

@@ -0,0 +1,13 @@
+import { expect } from "chai";
+import { shallowMount } from "@vue/test-utils";
+import HelloWorld from "@/components/HelloWorld.vue";
+
+describe("HelloWorld.vue", () => {
+  it("renders props.msg when passed", () => {
+    const msg = "new message";
+    const wrapper = shallowMount(HelloWorld, {
+      propsData: { msg },
+    });
+    expect(wrapper.text()).to.include(msg);
+  });
+});

+ 119 - 0
vue.config.js

@@ -0,0 +1,119 @@
+'use strict'
+const webpack = require('webpack');
+const path = require('path')
+const resolve = dir => path.resolve(__dirname, dir)
+const CompressionWebpackPlugin = require('compression-webpack-plugin');
+const productionGzipExtensions = /\.(js|css|json|txt|html|ico|svg)(\?.*)?$/i;
+const IS_PROD = ['production', 'prod'].includes(process.env.NODE_ENV);
+// 打包分析
+const BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPlugin;
+
+
+module.exports = {
+    transpileDependencies: ['webpack-dev-server/client'],
+    // 部署应用时的基本 URL
+    publicPath: '/',
+    // 输出文件目录
+    outputDir: 'dist',
+    // eslint-loader 是否在保存的时候检查
+    lintOnSave: false,
+    assetsDir: '', // 相对于outputDir的静态资源(js、css、img、fonts)目录
+    //是否使用包含运行时编译器的 Vue 构建版本
+    runtimeCompiler: true,
+    // 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建
+    productionSourceMap: false,
+    chainWebpack: config => {
+        config
+            .entry('./src/main.js')
+            .add('babel-polyfill');
+        config.resolve.symlinks(true); // 修复热更新失效
+        // 添加别名
+        config.resolve.alias
+            .set('@', resolve('src'))
+        // .set('assets', resolve('src/assets'))
+        // .set('components', resolve('src/components'));
+        // 如果使用多页面打包,使用vue inspect --plugins查看html是否在结果数组中
+        config.plugin('html').tap(args => {
+            //修复 Lazy loading routes Error
+            args[0].chunksSortMode = 'none';
+            return args;
+        })
+        //压缩图片
+        // config.module
+        //     .rule("images")
+        //     .use("image-webpack-loader")
+        //     .loader("image-webpack-loader")
+        //     .options({
+        //         bypassOnDebug: true
+        //     })
+        //     .end()
+        // 打包分析, 打包之后自动生成一个名叫report.html文件(可忽视)  查看打包数据使用
+        if (IS_PROD) {
+            config.plugin("webpack-report").use(BundleAnalyzerPlugin, [{
+                analyzerMode: "static"
+            }]);
+        }
+    },
+    css: {
+        // extract: true, //解决css热更新失败问题
+        sourceMap: false,
+        modules: false,
+        loaderOptions: {
+            less: {
+                javascriptEnabled: true,
+            }
+        }
+    },
+    //需要npm install style-resources-loader ; 然后执行 vue add style-resources-loader 选择预编译less
+    pluginOptions: {
+        'style-resources-loader': {
+            preProcessor: 'less',
+            patterns: ['src/assets/common/css/theme.less']
+        }
+    },
+    devServer: { //跨域
+        port: "8082", //端口号
+        open: true, //配置自动启动浏览器
+        hot: true,
+        proxy: { // 配置跨域处理 可以设置多个
+            '/simulation': {
+                // target: 'http://10.10.83.145:6888/user-center',
+                // target: 'http://10.15.12.70/simulation',
+                target: 'http://10.15.12.70:7001',
+                changeOrigin: true,
+                secure: false, // 如果是https接口,需要配置这个参数
+                // pathRewrite: {
+                //     '^/simulation': '/simulation'
+                // }
+            },
+        }
+    },
+    configureWebpack: config => {
+        const plugins = [];
+        plugins.push(
+            new webpack.ProvidePlugin({
+                $: "jquery",
+                jQuery: "jquery",
+                "windows.jQuery": "jquery",
+                'window.Quill': 'quill/dist/quill.js',
+                'Quill': 'quill/dist/quill.js'
+            })
+        )
+        if (IS_PROD) {
+            //开启 gzip 压缩
+            plugins.push(
+                new CompressionWebpackPlugin({
+                    filename: '[path].gz[query]',
+                    algorithm: 'gzip',
+                    test: productionGzipExtensions,
+                    threshold: 10240,
+                    minRatio: 0.8
+                })
+            );
+        }
+        config.plugins = [
+            ...config.plugins,
+            ...plugins
+        ];
+    },
+}

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio