From e113e75408c9d94aaa6ab1b7d2904a7ad45e4412 Mon Sep 17 00:00:00 2001
From: wzp <516075396@qq.com>
Date: 星期二, 06 四月 2021 10:57:35 +0800
Subject: [PATCH] 新版本

---
 vue.config.js                                          |   55 
 src/assets/carousel/1.png                              |    0 
 src/icons/svg/nested.svg                               |    1 
 src/icons/svg/international.svg                        |    1 
 src/layout/index.vue                                   |   72 
 src/api/subject.js                                     |    6 
 src/layout/indexold.vue                                |   96 
 .env.test                                              |    3 
 src/icons/svg/skill.svg                                |    1 
 src/lang/th.js                                         |   54 
 src/icons/svg/home.svg                                 |    5 
 src/assets/carousel/3.png                              |    0 
 src/api/examPaperAnswer.js                             |   10 
 src/views/demography/index.vue                         |  217 
 src/assets/custom-theme/indexExtend.css                |   10 
 src/components/LangSelect/index.vue                    |   55 
 src/views/exam/components/QuestionJobEdit.vue          |  116 
 src/icons/svg/edit.svg                                 |    1 
 src/api/login.js                                       |    7 
 src/icons/svg/exit-fullscreen.svg                      |    1 
 src/icons/svg/people.svg                               |    1 
 src/icons/svg/wechat.svg                               |    1 
 src/store/modules/user.js                              |   84 
 src/assets/401_images/401.gif                          |    0 
 src/store/index.js                                     |   23 
 src/icons/svg/theme.svg                                |    1 
 src/icons/svg/pdf.svg                                  |    1 
 src/icons/svg/qq.svg                                   |    1 
 src/api/questionAnswer.js                              |    6 
 src/icons/svg/bug.svg                                  |    1 
 src/icons/svg/documentation.svg                        |    1 
 src/icons/svg/form.svg                                 |    1 
 src/views/exam/paper/finish.vue                        |   53 
 src/assets/exam-paper/show2.png                        |    0 
 .env.dev                                               |    4 
 src/icons/svg/excel.svg                                |    1 
 src/icons/svg/education.svg                            |    5 
 src/icons/svg/drag.svg                                 |    1 
 src/views/question-error/index.vue                     |   99 
 src/icons/svg/table.svg                                |    1 
 src/utils/index.js                                     |  419 
 src/icons/svg/tab.svg                                  |    1 
 src/icons/svg/component.svg                            |    1 
 src/icons/svg/exam.svg                                 |    7 
 src/icons/svg/eye.svg                                  |    1 
 package-lock.json                                      | 13957 +++++++++++++++++++++++
 src/icons/svg/shopping.svg                             |    1 
 src/views/exam/paper/do.vue                            |  295 
 src/api/question.js                                    |    4 
 src/views/exam/paper/intelligence.vue                  |  814 +
 src/router.js                                          |  125 
 src/icons/svgo.yml                                     |   22 
 src/views/exam/paper/guide.vue                         |   68 
 src/assets/exam-paper/show1.png                        |    0 
 src/styles/index.scss                                  |  328 
 src/assets/logo.jpeg                                   |    0 
 src/icons/svg/language.svg                             |    1 
 public/index.html                                      |   56 
 src/icons/svg/fullscreen.svg                           |    1 
 src/icons/svg/email.svg                                |    1 
 src/components/BackToTop/index.vue                     |  129 
 src/icons/svg/clipboard.svg                            |    1 
 src/utils/request.js                                   |  160 
 babel.config.js                                        |    5 
 src/icons/svg/search.svg                               |    1 
 src/icons/svg/tree-table.svg                           |    1 
 src/views/exam/paper/job.vue                           |  431 
 src/views/exam/paper/read.vue                          |  111 
 src/icons/svg/eye-open.svg                             |    1 
 src/icons/svg/peoples.svg                              |    1 
 .eslintignore                                          |    2 
 src/lang/index.js                                      |   50 
 src/icons/svg/list.svg                                 |    1 
 src/icons/svg/chart.svg                                |    1 
 src/icons/svg/zip.svg                                  |    1 
 src/api/register.js                                    |    5 
 src/views/exam/components/QuestionEdit.vue             |  121 
 src/icons/svg/icon.svg                                 |    1 
 src/assets/logo-t.jpg                                  |    0 
 src/icons/svg/dashboard.svg                            |    1 
 src/icons/svg/example.svg                              |    1 
 src/icons/svg/gitee.svg                                |    4 
 src/icons/svg/star.svg                                 |    1 
 src/assets/logo2.png                                   |    0 
 src/icons/svg/lock.svg                                 |    1 
 src/icons/svg/tree.svg                                 |    1 
 src/icons/svg/question.svg                             |    5 
 .eslintrc.js                                           |   17 
 src/views/exam/components/QuestionIntelligenceEdit.vue |  121 
 src/assets/WechatIMG2896.jpeg                          |    0 
 public/favicon.ico                                     |    0 
 src/components/Ueditor/index.vue                       |   65 
 src/views/demography/login.vue                         |  113 
 .editorconfig                                          |    5 
 src/icons/svg/password.svg                             |    1 
 src/components/PanThumb/index.vue                      |  140 
 .env.pre                                               |    3 
 src/lang/zh.js                                         |   54 
 src/icons/svg/guide.svg                                |    1 
 src/icons/svg/users.svg                                |    6 
 src/utils/scroll-to.js                                 |   58 
 src/api/user.js                                        |   12 
 src/store/modules/exam.js                              |   48 
 src/assets/custom-theme/index.css                      | 14738 ++++++++++++++++++++++++
 src/icons/svg/link.svg                                 |    1 
 src/icons/svg/size.svg                                 |    1 
 src/views/paper/index.vue                              |   90 
 src/icons/svg/404.svg                                  |    1 
 src/components/Pagination/index.vue                    |  100 
 src/lang/en.js                                         |   54 
 src/main.js                                            |   65 
 src/assets/carousel/2.png                              |    0 
 src/assets/custom-theme/fonts/element-icons.ttf        |    0 
 postcss.config.js                                      |    5 
 src/assets/404_images/404.png                          |    0 
 src/icons/svg/user.svg                                 |    1 
 src/assets/exam-paper/show3.png                        |    0 
 .gitignore                                             |   21 
 src/store/modules/enumItem.js                          |   61 
 src/icons/index.js                                     |    9 
 src/views/error-page/404.vue                           |  225 
 src/api/dashboard.js                                   |    8 
 src/assets/avatar.png                                  |    0 
 src/icons/svg/money.svg                                |    1 
 .env.prod                                              |    3 
 src/views/exam/paper/exception.vue                     |   55 
 src/views/demography/langOption.vue                    |  155 
 src/views/error-page/401.vue                           |   99 
 src/assets/logo.png                                    |    0 
 src/assets/carousel/4.png                              |    0 
 src/assets/404_images/404_cloud.png                    |    0 
 src/assets/logo2.jpg                                   |    0 
 .env                                                   |    1 
 src/components/SvgIcon/index.vue                       |   62 
 src/views/record/index.vue                             |  125 
 src/assets/custom-theme/fonts/element-icons.woff       |    0 
 src/utils/validate.js                                  |   89 
 src/icons/svg/message.svg                              |    1 
 .browserslistrc                                        |    2 
 src/icons/svg/social-github.svg                        |    1 
 package.json                                           |   44 
 src/api/demography.js                                  |   54 
 src/views/exam/paper/personality.vue                   |  561 
 src/App.vue                                            |   19 
 src/api/examPaper.js                                   |   10 
 src/views/exam/paper/doPuzzle.vue                      |  285 
 146 files changed, 35,726 insertions(+), 0 deletions(-)

diff --git a/.browserslistrc b/.browserslistrc
new file mode 100644
index 0000000..d6471a3
--- /dev/null
+++ b/.browserslistrc
@@ -0,0 +1,2 @@
+> 1%
+last 2 versions
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..7053c49
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,5 @@
+[*.{js,jsx,ts,tsx,vue}]
+indent_style = space
+indent_size = 2
+trim_trailing_whitespace = true
+insert_final_newline = true
diff --git a/.env b/.env
new file mode 100644
index 0000000..cb6cb30
--- /dev/null
+++ b/.env
@@ -0,0 +1 @@
+timeOut=30
diff --git a/.env.dev b/.env.dev
new file mode 100644
index 0000000..09a0c0b
--- /dev/null
+++ b/.env.dev
@@ -0,0 +1,4 @@
+NODE_ENV = 'development'
+VUE_APP_API = 'http://localhost:8001'
+VUE_APP_URL = 'http://localhost:8001'
+VUE_OTS_URL = 'http://localhost:8090'
diff --git a/.env.pre b/.env.pre
new file mode 100644
index 0000000..8821c5f
--- /dev/null
+++ b/.env.pre
@@ -0,0 +1,3 @@
+NODE_ENV = 'production'
+VUE_APP_API = 'http://localhost:8001'
+VUE_APP_URL = 'http://localhost'
diff --git a/.env.prod b/.env.prod
new file mode 100644
index 0000000..e3ac2f3
--- /dev/null
+++ b/.env.prod
@@ -0,0 +1,3 @@
+NODE_ENV = 'production'
+VUE_APP_API = 'https://www.alvisu.com:8001'
+VUE_APP_URL = 'https://www.alvisu.com:8085'
diff --git a/.env.test b/.env.test
new file mode 100644
index 0000000..b40e76f
--- /dev/null
+++ b/.env.test
@@ -0,0 +1,3 @@
+NODE_ENV = 'production'
+VUE_APP_API = 'http://10.103.15.180:8001'
+VUE_APP_URL = 'http://10.103.15.180'
diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 0000000..1714f21
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1,2 @@
+/public/student/components/ueditor
+/public/student/components/echarts
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 0000000..98d0431
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,17 @@
+module.exports = {
+  root: true,
+  env: {
+    node: true
+  },
+  'extends': [
+    'plugin:vue/essential',
+    '@vue/standard'
+  ],
+  rules: {
+    'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
+    'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off'
+  },
+  parserOptions: {
+    parser: 'babel-eslint'
+  }
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..a0dddc6
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,21 @@
+.DS_Store
+node_modules
+/dist
+
+# local env files
+.env.local
+.env.*.local
+
+# Log files
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/babel.config.js b/babel.config.js
new file mode 100644
index 0000000..ba17966
--- /dev/null
+++ b/babel.config.js
@@ -0,0 +1,5 @@
+module.exports = {
+  presets: [
+    '@vue/app'
+  ]
+}
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..ea0fc38
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,13957 @@
+{
+  "name": "exam-student",
+  "version": "2.0.1",
+  "lockfileVersion": 1,
+  "requires": true,
+  "dependencies": {
+    "@babel/code-frame": {
+      "version": "7.0.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.0.0.tgz",
+      "integrity": "sha1-BuKrGb21NThVWaq7W6WXKUgoAPg=",
+      "dev": true,
+      "requires": {
+        "@babel/highlight": "^7.0.0"
+      }
+    },
+    "@babel/core": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npm.taobao.org/@babel/core/download/@babel/core-7.5.5.tgz",
+      "integrity": "sha1-F7JobvDWvFj5Y93daKtml1VYLDA=",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.5.5",
+        "@babel/generator": "^7.5.5",
+        "@babel/helpers": "^7.5.5",
+        "@babel/parser": "^7.5.5",
+        "@babel/template": "^7.4.4",
+        "@babel/traverse": "^7.5.5",
+        "@babel/types": "^7.5.5",
+        "convert-source-map": "^1.1.0",
+        "debug": "^4.1.0",
+        "json5": "^2.1.0",
+        "lodash": "^4.17.13",
+        "resolve": "^1.3.2",
+        "semver": "^5.4.1",
+        "source-map": "^0.5.0"
+      },
+      "dependencies": {
+        "@babel/code-frame": {
+          "version": "7.5.5",
+          "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.5.5.tgz",
+          "integrity": "sha1-vAeC9tafe31JUxIZaZuYj2aaj50=",
+          "dev": true,
+          "requires": {
+            "@babel/highlight": "^7.0.0"
+          }
+        },
+        "@babel/generator": {
+          "version": "7.5.5",
+          "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.5.5.tgz",
+          "integrity": "sha1-hzp/k2o8iUkbQ1NtEiRbYmZk488=",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.5.5",
+            "jsesc": "^2.5.1",
+            "lodash": "^4.17.13",
+            "source-map": "^0.5.0",
+            "trim-right": "^1.0.1"
+          }
+        },
+        "@babel/helper-split-export-declaration": {
+          "version": "7.4.4",
+          "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.4.4.tgz",
+          "integrity": "sha1-/5SJSjQL549T8GrwOLIFxJ2ZNnc=",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.4.4"
+          }
+        },
+        "@babel/parser": {
+          "version": "7.5.5",
+          "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.5.5.tgz?cache=0&sync_timestamp=1563398895618&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.5.5.tgz",
+          "integrity": "sha1-AvB3rIgX099Kgy71neZ1Zeccyks=",
+          "dev": true
+        },
+        "@babel/template": {
+          "version": "7.4.4",
+          "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.4.4.tgz",
+          "integrity": "sha1-9LiNEiVomgj1vDoXSDVFvp5O0jc=",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.0.0",
+            "@babel/parser": "^7.4.4",
+            "@babel/types": "^7.4.4"
+          }
+        },
+        "@babel/traverse": {
+          "version": "7.5.5",
+          "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.5.5.tgz",
+          "integrity": "sha1-9mT482jtMpiM1kjan3LVynDxZbs=",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.5.5",
+            "@babel/generator": "^7.5.5",
+            "@babel/helper-function-name": "^7.1.0",
+            "@babel/helper-split-export-declaration": "^7.4.4",
+            "@babel/parser": "^7.5.5",
+            "@babel/types": "^7.5.5",
+            "debug": "^4.1.0",
+            "globals": "^11.1.0",
+            "lodash": "^4.17.13"
+          }
+        },
+        "@babel/types": {
+          "version": "7.5.5",
+          "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.5.5.tgz",
+          "integrity": "sha1-l7n3KOGCeFkJqkq1YmTwkKAo0Yo=",
+          "dev": true,
+          "requires": {
+            "esutils": "^2.0.2",
+            "lodash": "^4.17.13",
+            "to-fast-properties": "^2.0.0"
+          }
+        },
+        "lodash": {
+          "version": "4.17.15",
+          "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.15.tgz",
+          "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=",
+          "dev": true
+        }
+      }
+    },
+    "@babel/generator": {
+      "version": "7.4.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.4.0.tgz",
+      "integrity": "sha1-wjDnlYmuenKf1GMbne1NwiBBgZY=",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.4.0",
+        "jsesc": "^2.5.1",
+        "lodash": "^4.17.11",
+        "source-map": "^0.5.0",
+        "trim-right": "^1.0.1"
+      }
+    },
+    "@babel/helper-annotate-as-pure": {
+      "version": "7.0.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-annotate-as-pure/download/@babel/helper-annotate-as-pure-7.0.0.tgz",
+      "integrity": "sha1-Mj053QtQ4Qx8Bsp9djjmhk2MXDI=",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@babel/helper-builder-binary-assignment-operator-visitor": {
+      "version": "7.1.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-builder-binary-assignment-operator-visitor/download/@babel/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz",
+      "integrity": "sha1-a2lijf5Ah3mODE7Zjj1Kay+9L18=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-explode-assignable-expression": "^7.1.0",
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@babel/helper-call-delegate": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npm.taobao.org/@babel/helper-call-delegate/download/@babel/helper-call-delegate-7.4.4.tgz",
+      "integrity": "sha1-h8H4yhmtVSpzanonscH8+LH/H0M=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-hoist-variables": "^7.4.4",
+        "@babel/traverse": "^7.4.4",
+        "@babel/types": "^7.4.4"
+      },
+      "dependencies": {
+        "@babel/code-frame": {
+          "version": "7.5.5",
+          "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.5.5.tgz",
+          "integrity": "sha1-vAeC9tafe31JUxIZaZuYj2aaj50=",
+          "dev": true,
+          "requires": {
+            "@babel/highlight": "^7.0.0"
+          }
+        },
+        "@babel/generator": {
+          "version": "7.5.5",
+          "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.5.5.tgz",
+          "integrity": "sha1-hzp/k2o8iUkbQ1NtEiRbYmZk488=",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.5.5",
+            "jsesc": "^2.5.1",
+            "lodash": "^4.17.13",
+            "source-map": "^0.5.0",
+            "trim-right": "^1.0.1"
+          }
+        },
+        "@babel/helper-split-export-declaration": {
+          "version": "7.4.4",
+          "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.4.4.tgz",
+          "integrity": "sha1-/5SJSjQL549T8GrwOLIFxJ2ZNnc=",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.4.4"
+          }
+        },
+        "@babel/parser": {
+          "version": "7.5.5",
+          "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.5.5.tgz?cache=0&sync_timestamp=1563398895618&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.5.5.tgz",
+          "integrity": "sha1-AvB3rIgX099Kgy71neZ1Zeccyks=",
+          "dev": true
+        },
+        "@babel/traverse": {
+          "version": "7.5.5",
+          "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.5.5.tgz",
+          "integrity": "sha1-9mT482jtMpiM1kjan3LVynDxZbs=",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.5.5",
+            "@babel/generator": "^7.5.5",
+            "@babel/helper-function-name": "^7.1.0",
+            "@babel/helper-split-export-declaration": "^7.4.4",
+            "@babel/parser": "^7.5.5",
+            "@babel/types": "^7.5.5",
+            "debug": "^4.1.0",
+            "globals": "^11.1.0",
+            "lodash": "^4.17.13"
+          }
+        },
+        "@babel/types": {
+          "version": "7.5.5",
+          "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.5.5.tgz",
+          "integrity": "sha1-l7n3KOGCeFkJqkq1YmTwkKAo0Yo=",
+          "dev": true,
+          "requires": {
+            "esutils": "^2.0.2",
+            "lodash": "^4.17.13",
+            "to-fast-properties": "^2.0.0"
+          }
+        },
+        "lodash": {
+          "version": "4.17.15",
+          "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.15.tgz",
+          "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=",
+          "dev": true
+        }
+      }
+    },
+    "@babel/helper-create-class-features-plugin": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npm.taobao.org/@babel/helper-create-class-features-plugin/download/@babel/helper-create-class-features-plugin-7.5.5.tgz",
+      "integrity": "sha1-QB8wLI3bwO3Tb3xrKIfY+hEi5aQ=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-function-name": "^7.1.0",
+        "@babel/helper-member-expression-to-functions": "^7.5.5",
+        "@babel/helper-optimise-call-expression": "^7.0.0",
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-replace-supers": "^7.5.5",
+        "@babel/helper-split-export-declaration": "^7.4.4"
+      },
+      "dependencies": {
+        "@babel/helper-split-export-declaration": {
+          "version": "7.4.4",
+          "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.4.4.tgz",
+          "integrity": "sha1-/5SJSjQL549T8GrwOLIFxJ2ZNnc=",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.4.4"
+          }
+        },
+        "@babel/types": {
+          "version": "7.5.5",
+          "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.5.5.tgz",
+          "integrity": "sha1-l7n3KOGCeFkJqkq1YmTwkKAo0Yo=",
+          "dev": true,
+          "requires": {
+            "esutils": "^2.0.2",
+            "lodash": "^4.17.13",
+            "to-fast-properties": "^2.0.0"
+          }
+        },
+        "lodash": {
+          "version": "4.17.15",
+          "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.15.tgz",
+          "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=",
+          "dev": true
+        }
+      }
+    },
+    "@babel/helper-define-map": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npm.taobao.org/@babel/helper-define-map/download/@babel/helper-define-map-7.5.5.tgz",
+      "integrity": "sha1-PewywgRvN+CbKMk+sLED/Sol02k=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-function-name": "^7.1.0",
+        "@babel/types": "^7.5.5",
+        "lodash": "^4.17.13"
+      },
+      "dependencies": {
+        "@babel/types": {
+          "version": "7.5.5",
+          "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.5.5.tgz",
+          "integrity": "sha1-l7n3KOGCeFkJqkq1YmTwkKAo0Yo=",
+          "dev": true,
+          "requires": {
+            "esutils": "^2.0.2",
+            "lodash": "^4.17.13",
+            "to-fast-properties": "^2.0.0"
+          }
+        },
+        "lodash": {
+          "version": "4.17.15",
+          "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.15.tgz",
+          "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=",
+          "dev": true
+        }
+      }
+    },
+    "@babel/helper-explode-assignable-expression": {
+      "version": "7.1.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-explode-assignable-expression/download/@babel/helper-explode-assignable-expression-7.1.0.tgz",
+      "integrity": "sha1-U3+hP28WdN90WwwA7I/k6ZaByPY=",
+      "dev": true,
+      "requires": {
+        "@babel/traverse": "^7.1.0",
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@babel/helper-function-name": {
+      "version": "7.1.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.1.0.tgz",
+      "integrity": "sha1-oM6wFoX3M1XUNgwSR/WCv6/I/1M=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-get-function-arity": "^7.0.0",
+        "@babel/template": "^7.1.0",
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@babel/helper-get-function-arity": {
+      "version": "7.0.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.0.0.tgz",
+      "integrity": "sha1-g1ctQyDipGVyY3NBE8QoaLZOScM=",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@babel/helper-hoist-variables": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npm.taobao.org/@babel/helper-hoist-variables/download/@babel/helper-hoist-variables-7.4.4.tgz",
+      "integrity": "sha1-Api18lyMCcUxAtUqxKmPdz6yhQo=",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.4.4"
+      },
+      "dependencies": {
+        "@babel/types": {
+          "version": "7.5.5",
+          "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.5.5.tgz",
+          "integrity": "sha1-l7n3KOGCeFkJqkq1YmTwkKAo0Yo=",
+          "dev": true,
+          "requires": {
+            "esutils": "^2.0.2",
+            "lodash": "^4.17.13",
+            "to-fast-properties": "^2.0.0"
+          }
+        },
+        "lodash": {
+          "version": "4.17.15",
+          "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.15.tgz",
+          "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=",
+          "dev": true
+        }
+      }
+    },
+    "@babel/helper-member-expression-to-functions": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npm.taobao.org/@babel/helper-member-expression-to-functions/download/@babel/helper-member-expression-to-functions-7.5.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-member-expression-to-functions%2Fdownload%2F%40babel%2Fhelper-member-expression-to-functions-7.5.5.tgz",
+      "integrity": "sha1-H7W47ERTqTxDnun+Ou6kqEt2tZA=",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.5.5"
+      },
+      "dependencies": {
+        "@babel/types": {
+          "version": "7.5.5",
+          "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.5.5.tgz",
+          "integrity": "sha1-l7n3KOGCeFkJqkq1YmTwkKAo0Yo=",
+          "dev": true,
+          "requires": {
+            "esutils": "^2.0.2",
+            "lodash": "^4.17.13",
+            "to-fast-properties": "^2.0.0"
+          }
+        },
+        "lodash": {
+          "version": "4.17.15",
+          "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.15.tgz",
+          "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=",
+          "dev": true
+        }
+      }
+    },
+    "@babel/helper-module-imports": {
+      "version": "7.0.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-module-imports/download/@babel/helper-module-imports-7.0.0.tgz",
+      "integrity": "sha1-lggbcRHkhtpNLNlxrRpP4hbMLj0=",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@babel/helper-module-transforms": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npm.taobao.org/@babel/helper-module-transforms/download/@babel/helper-module-transforms-7.5.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-module-transforms%2Fdownload%2F%40babel%2Fhelper-module-transforms-7.5.5.tgz",
+      "integrity": "sha1-+E/4oJA43Lyh/UNVZhpQCTcWW0o=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-imports": "^7.0.0",
+        "@babel/helper-simple-access": "^7.1.0",
+        "@babel/helper-split-export-declaration": "^7.4.4",
+        "@babel/template": "^7.4.4",
+        "@babel/types": "^7.5.5",
+        "lodash": "^4.17.13"
+      },
+      "dependencies": {
+        "@babel/helper-split-export-declaration": {
+          "version": "7.4.4",
+          "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.4.4.tgz",
+          "integrity": "sha1-/5SJSjQL549T8GrwOLIFxJ2ZNnc=",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.4.4"
+          }
+        },
+        "@babel/parser": {
+          "version": "7.5.5",
+          "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.5.5.tgz?cache=0&sync_timestamp=1563398895618&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.5.5.tgz",
+          "integrity": "sha1-AvB3rIgX099Kgy71neZ1Zeccyks=",
+          "dev": true
+        },
+        "@babel/template": {
+          "version": "7.4.4",
+          "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.4.4.tgz",
+          "integrity": "sha1-9LiNEiVomgj1vDoXSDVFvp5O0jc=",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.0.0",
+            "@babel/parser": "^7.4.4",
+            "@babel/types": "^7.4.4"
+          }
+        },
+        "@babel/types": {
+          "version": "7.5.5",
+          "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.5.5.tgz",
+          "integrity": "sha1-l7n3KOGCeFkJqkq1YmTwkKAo0Yo=",
+          "dev": true,
+          "requires": {
+            "esutils": "^2.0.2",
+            "lodash": "^4.17.13",
+            "to-fast-properties": "^2.0.0"
+          }
+        },
+        "lodash": {
+          "version": "4.17.15",
+          "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.15.tgz",
+          "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=",
+          "dev": true
+        }
+      }
+    },
+    "@babel/helper-optimise-call-expression": {
+      "version": "7.0.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-optimise-call-expression/download/@babel/helper-optimise-call-expression-7.0.0.tgz",
+      "integrity": "sha1-opIMVwKwc8Fd5REGIAqoytIEl9U=",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@babel/helper-plugin-utils": {
+      "version": "7.0.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.0.0.tgz",
+      "integrity": "sha1-u7P77phmHFaQNCN8wDlnupm08lA=",
+      "dev": true
+    },
+    "@babel/helper-regex": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npm.taobao.org/@babel/helper-regex/download/@babel/helper-regex-7.5.5.tgz",
+      "integrity": "sha1-CqaCT3EAouDonBUnwjk2wVLKs1E=",
+      "dev": true,
+      "requires": {
+        "lodash": "^4.17.13"
+      },
+      "dependencies": {
+        "lodash": {
+          "version": "4.17.15",
+          "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.15.tgz",
+          "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=",
+          "dev": true
+        }
+      }
+    },
+    "@babel/helper-remap-async-to-generator": {
+      "version": "7.1.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-remap-async-to-generator/download/@babel/helper-remap-async-to-generator-7.1.0.tgz",
+      "integrity": "sha1-Nh2AghtvONp1vT8HheziCojF/n8=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.0.0",
+        "@babel/helper-wrap-function": "^7.1.0",
+        "@babel/template": "^7.1.0",
+        "@babel/traverse": "^7.1.0",
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@babel/helper-replace-supers": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npm.taobao.org/@babel/helper-replace-supers/download/@babel/helper-replace-supers-7.5.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-replace-supers%2Fdownload%2F%40babel%2Fhelper-replace-supers-7.5.5.tgz",
+      "integrity": "sha1-+EzkPfAxIi0rrQaNJibLV5nDS8I=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-member-expression-to-functions": "^7.5.5",
+        "@babel/helper-optimise-call-expression": "^7.0.0",
+        "@babel/traverse": "^7.5.5",
+        "@babel/types": "^7.5.5"
+      },
+      "dependencies": {
+        "@babel/code-frame": {
+          "version": "7.5.5",
+          "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.5.5.tgz",
+          "integrity": "sha1-vAeC9tafe31JUxIZaZuYj2aaj50=",
+          "dev": true,
+          "requires": {
+            "@babel/highlight": "^7.0.0"
+          }
+        },
+        "@babel/generator": {
+          "version": "7.5.5",
+          "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.5.5.tgz",
+          "integrity": "sha1-hzp/k2o8iUkbQ1NtEiRbYmZk488=",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.5.5",
+            "jsesc": "^2.5.1",
+            "lodash": "^4.17.13",
+            "source-map": "^0.5.0",
+            "trim-right": "^1.0.1"
+          }
+        },
+        "@babel/helper-split-export-declaration": {
+          "version": "7.4.4",
+          "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.4.4.tgz",
+          "integrity": "sha1-/5SJSjQL549T8GrwOLIFxJ2ZNnc=",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.4.4"
+          }
+        },
+        "@babel/parser": {
+          "version": "7.5.5",
+          "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.5.5.tgz?cache=0&sync_timestamp=1563398895618&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.5.5.tgz",
+          "integrity": "sha1-AvB3rIgX099Kgy71neZ1Zeccyks=",
+          "dev": true
+        },
+        "@babel/traverse": {
+          "version": "7.5.5",
+          "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.5.5.tgz",
+          "integrity": "sha1-9mT482jtMpiM1kjan3LVynDxZbs=",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.5.5",
+            "@babel/generator": "^7.5.5",
+            "@babel/helper-function-name": "^7.1.0",
+            "@babel/helper-split-export-declaration": "^7.4.4",
+            "@babel/parser": "^7.5.5",
+            "@babel/types": "^7.5.5",
+            "debug": "^4.1.0",
+            "globals": "^11.1.0",
+            "lodash": "^4.17.13"
+          }
+        },
+        "@babel/types": {
+          "version": "7.5.5",
+          "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.5.5.tgz",
+          "integrity": "sha1-l7n3KOGCeFkJqkq1YmTwkKAo0Yo=",
+          "dev": true,
+          "requires": {
+            "esutils": "^2.0.2",
+            "lodash": "^4.17.13",
+            "to-fast-properties": "^2.0.0"
+          }
+        },
+        "lodash": {
+          "version": "4.17.15",
+          "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.15.tgz",
+          "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=",
+          "dev": true
+        }
+      }
+    },
+    "@babel/helper-simple-access": {
+      "version": "7.1.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-simple-access/download/@babel/helper-simple-access-7.1.0.tgz",
+      "integrity": "sha1-Ze65VMjCRb6qToWdphiPOdceWFw=",
+      "dev": true,
+      "requires": {
+        "@babel/template": "^7.1.0",
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@babel/helper-split-export-declaration": {
+      "version": "7.4.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.4.0.tgz",
+      "integrity": "sha1-Vxv9UnAfSSkg1jt/c1Aw6aPhC1U=",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.4.0"
+      }
+    },
+    "@babel/helper-wrap-function": {
+      "version": "7.2.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-wrap-function/download/@babel/helper-wrap-function-7.2.0.tgz",
+      "integrity": "sha1-xOABJEV2nigVtVKW6tQ6lYVJ9vo=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-function-name": "^7.1.0",
+        "@babel/template": "^7.1.0",
+        "@babel/traverse": "^7.1.0",
+        "@babel/types": "^7.2.0"
+      }
+    },
+    "@babel/helpers": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npm.taobao.org/@babel/helpers/download/@babel/helpers-7.5.5.tgz",
+      "integrity": "sha1-Y5CNKnOUIinR5mhbwqDnMN3jt14=",
+      "dev": true,
+      "requires": {
+        "@babel/template": "^7.4.4",
+        "@babel/traverse": "^7.5.5",
+        "@babel/types": "^7.5.5"
+      },
+      "dependencies": {
+        "@babel/generator": {
+          "version": "7.5.5",
+          "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.5.5.tgz",
+          "integrity": "sha1-hzp/k2o8iUkbQ1NtEiRbYmZk488=",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.5.5",
+            "jsesc": "^2.5.1",
+            "lodash": "^4.17.13",
+            "source-map": "^0.5.0",
+            "trim-right": "^1.0.1"
+          }
+        },
+        "@babel/helper-split-export-declaration": {
+          "version": "7.4.4",
+          "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.4.4.tgz",
+          "integrity": "sha1-/5SJSjQL549T8GrwOLIFxJ2ZNnc=",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.4.4"
+          }
+        },
+        "@babel/parser": {
+          "version": "7.5.5",
+          "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.5.5.tgz?cache=0&sync_timestamp=1563398895618&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.5.5.tgz",
+          "integrity": "sha1-AvB3rIgX099Kgy71neZ1Zeccyks=",
+          "dev": true
+        },
+        "@babel/template": {
+          "version": "7.4.4",
+          "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.4.4.tgz",
+          "integrity": "sha1-9LiNEiVomgj1vDoXSDVFvp5O0jc=",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.0.0",
+            "@babel/parser": "^7.4.4",
+            "@babel/types": "^7.4.4"
+          }
+        },
+        "@babel/traverse": {
+          "version": "7.5.5",
+          "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.5.5.tgz",
+          "integrity": "sha1-9mT482jtMpiM1kjan3LVynDxZbs=",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.5.5",
+            "@babel/generator": "^7.5.5",
+            "@babel/helper-function-name": "^7.1.0",
+            "@babel/helper-split-export-declaration": "^7.4.4",
+            "@babel/parser": "^7.5.5",
+            "@babel/types": "^7.5.5",
+            "debug": "^4.1.0",
+            "globals": "^11.1.0",
+            "lodash": "^4.17.13"
+          },
+          "dependencies": {
+            "@babel/code-frame": {
+              "version": "7.5.5",
+              "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.5.5.tgz",
+              "integrity": "sha1-vAeC9tafe31JUxIZaZuYj2aaj50=",
+              "dev": true,
+              "requires": {
+                "@babel/highlight": "^7.0.0"
+              }
+            }
+          }
+        },
+        "@babel/types": {
+          "version": "7.5.5",
+          "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.5.5.tgz",
+          "integrity": "sha1-l7n3KOGCeFkJqkq1YmTwkKAo0Yo=",
+          "dev": true,
+          "requires": {
+            "esutils": "^2.0.2",
+            "lodash": "^4.17.13",
+            "to-fast-properties": "^2.0.0"
+          }
+        },
+        "lodash": {
+          "version": "4.17.15",
+          "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.15.tgz",
+          "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=",
+          "dev": true
+        }
+      }
+    },
+    "@babel/highlight": {
+      "version": "7.0.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.0.0.tgz",
+      "integrity": "sha1-9xDDjI1Fjm3ZogGvtjf8t4HOmeQ=",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.0.0",
+        "esutils": "^2.0.2",
+        "js-tokens": "^4.0.0"
+      }
+    },
+    "@babel/parser": {
+      "version": "7.4.3",
+      "resolved": "http://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.4.3.tgz",
+      "integrity": "sha1-6zrID2SqEByQfUzlQGNg/nW3iVs=",
+      "dev": true
+    },
+    "@babel/plugin-proposal-async-generator-functions": {
+      "version": "7.2.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-proposal-async-generator-functions/download/@babel/plugin-proposal-async-generator-functions-7.2.0.tgz",
+      "integrity": "sha1-somzBmadzkrSCwJSiJoVdoydQX4=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-remap-async-to-generator": "^7.1.0",
+        "@babel/plugin-syntax-async-generators": "^7.2.0"
+      }
+    },
+    "@babel/plugin-proposal-class-properties": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-class-properties/download/@babel/plugin-proposal-class-properties-7.5.5.tgz",
+      "integrity": "sha1-qXTPrh43wxEOcfPGouSLjnGVjNQ=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-class-features-plugin": "^7.5.5",
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-proposal-decorators": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-decorators/download/@babel/plugin-proposal-decorators-7.4.4.tgz",
+      "integrity": "sha1-3psqGoqwGW83jiqC8QtuKjbyHMA=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-class-features-plugin": "^7.4.4",
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-syntax-decorators": "^7.2.0"
+      }
+    },
+    "@babel/plugin-proposal-json-strings": {
+      "version": "7.2.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-proposal-json-strings/download/@babel/plugin-proposal-json-strings-7.2.0.tgz",
+      "integrity": "sha1-Vo7MRGxhSK5rJn8CVREwiR4p8xc=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-syntax-json-strings": "^7.2.0"
+      }
+    },
+    "@babel/plugin-proposal-object-rest-spread": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-object-rest-spread/download/@babel/plugin-proposal-object-rest-spread-7.5.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-object-rest-spread%2Fdownload%2F%40babel%2Fplugin-proposal-object-rest-spread-7.5.5.tgz",
+      "integrity": "sha1-YZOXRPcbp2o65Gte6hilTBbSLlg=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-syntax-object-rest-spread": "^7.2.0"
+      }
+    },
+    "@babel/plugin-proposal-optional-catch-binding": {
+      "version": "7.2.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-proposal-optional-catch-binding/download/@babel/plugin-proposal-optional-catch-binding-7.2.0.tgz",
+      "integrity": "sha1-E12B7baKCB5V5W7EhUHs6AZcOPU=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.2.0"
+      }
+    },
+    "@babel/plugin-proposal-unicode-property-regex": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-unicode-property-regex/download/@babel/plugin-proposal-unicode-property-regex-7.4.4.tgz",
+      "integrity": "sha1-UB/9mCbAuR2iJpByByKsfLHKnHg=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-regex": "^7.4.4",
+        "regexpu-core": "^4.5.4"
+      }
+    },
+    "@babel/plugin-syntax-async-generators": {
+      "version": "7.2.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-syntax-async-generators/download/@babel/plugin-syntax-async-generators-7.2.0.tgz",
+      "integrity": "sha1-aeHw2zTG9aDPfiszI78VmnbIy38=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-syntax-decorators": {
+      "version": "7.2.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-syntax-decorators/download/@babel/plugin-syntax-decorators-7.2.0.tgz",
+      "integrity": "sha1-xQsblX3MaeSxEntl4cM+72FXDBs=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-syntax-dynamic-import": {
+      "version": "7.2.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-syntax-dynamic-import/download/@babel/plugin-syntax-dynamic-import-7.2.0.tgz",
+      "integrity": "sha1-acFZ/69JmBIhYa2OvF5tH1XfhhI=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-syntax-json-strings": {
+      "version": "7.2.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-syntax-json-strings/download/@babel/plugin-syntax-json-strings-7.2.0.tgz",
+      "integrity": "sha1-cr0T9v/h0lk4Ep0qGGsR/WKVFHA=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-syntax-jsx": {
+      "version": "7.2.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-syntax-jsx/download/@babel/plugin-syntax-jsx-7.2.0.tgz",
+      "integrity": "sha1-C4WjtLx830zEuL8jYzW5B8oi58c=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-syntax-object-rest-spread": {
+      "version": "7.2.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-syntax-object-rest-spread/download/@babel/plugin-syntax-object-rest-spread-7.2.0.tgz",
+      "integrity": "sha1-O3o+czUQxX6CC5FCpleayLDfrS4=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-syntax-optional-catch-binding": {
+      "version": "7.2.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-syntax-optional-catch-binding/download/@babel/plugin-syntax-optional-catch-binding-7.2.0.tgz",
+      "integrity": "sha1-qUAT1u2okI3+akd+f57ahWVuz1w=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-arrow-functions": {
+      "version": "7.2.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-arrow-functions/download/@babel/plugin-transform-arrow-functions-7.2.0.tgz",
+      "integrity": "sha1-mur75Nb/xlY7+Pg3IJFijwB3lVA=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-async-to-generator": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-async-to-generator/download/@babel/plugin-transform-async-to-generator-7.5.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-async-to-generator%2Fdownload%2F%40babel%2Fplugin-transform-async-to-generator-7.5.0.tgz",
+      "integrity": "sha1-iaOEigFmYjtbxIEWS1k2q5R+iH4=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-imports": "^7.0.0",
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-remap-async-to-generator": "^7.1.0"
+      }
+    },
+    "@babel/plugin-transform-block-scoped-functions": {
+      "version": "7.2.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-block-scoped-functions/download/@babel/plugin-transform-block-scoped-functions-7.2.0.tgz",
+      "integrity": "sha1-XTzBHo1d3XUqpkyRSNDbbLef0ZA=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-block-scoping": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoping/download/@babel/plugin-transform-block-scoping-7.5.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-block-scoping%2Fdownload%2F%40babel%2Fplugin-transform-block-scoping-7.5.5.tgz",
+      "integrity": "sha1-o185XlQCgi8Q0hGfb44EXjY5os4=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "lodash": "^4.17.13"
+      },
+      "dependencies": {
+        "lodash": {
+          "version": "4.17.15",
+          "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.15.tgz",
+          "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=",
+          "dev": true
+        }
+      }
+    },
+    "@babel/plugin-transform-classes": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-classes/download/@babel/plugin-transform-classes-7.5.5.tgz",
+      "integrity": "sha1-0JQpnZvWgKFKKg7a44MFrWD7Tek=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.0.0",
+        "@babel/helper-define-map": "^7.5.5",
+        "@babel/helper-function-name": "^7.1.0",
+        "@babel/helper-optimise-call-expression": "^7.0.0",
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-replace-supers": "^7.5.5",
+        "@babel/helper-split-export-declaration": "^7.4.4",
+        "globals": "^11.1.0"
+      },
+      "dependencies": {
+        "@babel/helper-split-export-declaration": {
+          "version": "7.4.4",
+          "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.4.4.tgz",
+          "integrity": "sha1-/5SJSjQL549T8GrwOLIFxJ2ZNnc=",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.4.4"
+          }
+        },
+        "@babel/types": {
+          "version": "7.5.5",
+          "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.5.5.tgz",
+          "integrity": "sha1-l7n3KOGCeFkJqkq1YmTwkKAo0Yo=",
+          "dev": true,
+          "requires": {
+            "esutils": "^2.0.2",
+            "lodash": "^4.17.13",
+            "to-fast-properties": "^2.0.0"
+          }
+        },
+        "lodash": {
+          "version": "4.17.15",
+          "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.15.tgz",
+          "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=",
+          "dev": true
+        }
+      }
+    },
+    "@babel/plugin-transform-computed-properties": {
+      "version": "7.2.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-computed-properties/download/@babel/plugin-transform-computed-properties-7.2.0.tgz",
+      "integrity": "sha1-g6ffamWIZbHI9kHVEMbzryICFto=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-destructuring": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-destructuring/download/@babel/plugin-transform-destructuring-7.5.0.tgz",
+      "integrity": "sha1-9sCf3+P5RRb/B0/od9t7ye8FhVo=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-dotall-regex": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-dotall-regex/download/@babel/plugin-transform-dotall-regex-7.4.4.tgz",
+      "integrity": "sha1-NhoUi8lRREMSxpRG127R6o5EUMM=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-regex": "^7.4.4",
+        "regexpu-core": "^4.5.4"
+      }
+    },
+    "@babel/plugin-transform-duplicate-keys": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-duplicate-keys/download/@babel/plugin-transform-duplicate-keys-7.5.0.tgz",
+      "integrity": "sha1-xdv1EGv4TN9pEiLAl0wSsd+TGFM=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-exponentiation-operator": {
+      "version": "7.2.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-exponentiation-operator/download/@babel/plugin-transform-exponentiation-operator-7.2.0.tgz",
+      "integrity": "sha1-pjhoKJ5bQAf3BU1GSRr1FDV2YAg=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0",
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-for-of": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-for-of/download/@babel/plugin-transform-for-of-7.4.4.tgz",
+      "integrity": "sha1-Amf8c14kyAi6FzhmxsTRRA/DxVY=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-function-name": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-function-name/download/@babel/plugin-transform-function-name-7.4.4.tgz",
+      "integrity": "sha1-4UNhFquwYQwiWQlISHVKxSMJIq0=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-function-name": "^7.1.0",
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-literals": {
+      "version": "7.2.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-literals/download/@babel/plugin-transform-literals-7.2.0.tgz",
+      "integrity": "sha1-aQNT6B+SZ9rU/Yz9d+r6hqulPqE=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-modules-amd": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-amd/download/@babel/plugin-transform-modules-amd-7.5.0.tgz",
+      "integrity": "sha1-7wBDXUbaCllhqnKKHS7P8GPk+5E=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-transforms": "^7.1.0",
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "babel-plugin-dynamic-import-node": "^2.3.0"
+      }
+    },
+    "@babel/plugin-transform-modules-commonjs": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-commonjs/download/@babel/plugin-transform-modules-commonjs-7.5.0.tgz?cache=0&sync_timestamp=1562245150624&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-modules-commonjs%2Fdownload%2F%40babel%2Fplugin-transform-modules-commonjs-7.5.0.tgz",
+      "integrity": "sha1-QlEn5gRSMTYIWO6qR6cdde3tenQ=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-transforms": "^7.4.4",
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-simple-access": "^7.1.0",
+        "babel-plugin-dynamic-import-node": "^2.3.0"
+      }
+    },
+    "@babel/plugin-transform-modules-systemjs": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-systemjs/download/@babel/plugin-transform-modules-systemjs-7.5.0.tgz",
+      "integrity": "sha1-51JmoT75QgLbKgYgl3dW9R1S0kk=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-hoist-variables": "^7.4.4",
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "babel-plugin-dynamic-import-node": "^2.3.0"
+      }
+    },
+    "@babel/plugin-transform-modules-umd": {
+      "version": "7.2.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-modules-umd/download/@babel/plugin-transform-modules-umd-7.2.0.tgz",
+      "integrity": "sha1-dnjOdRafCHe46yI1U4wHQmjdAa4=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-transforms": "^7.1.0",
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-named-capturing-groups-regex": {
+      "version": "7.4.5",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-named-capturing-groups-regex/download/@babel/plugin-transform-named-capturing-groups-regex-7.4.5.tgz",
+      "integrity": "sha1-nSaf0oo3AlgZm0KUc2gTpgu90QY=",
+      "dev": true,
+      "requires": {
+        "regexp-tree": "^0.1.6"
+      }
+    },
+    "@babel/plugin-transform-new-target": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-new-target/download/@babel/plugin-transform-new-target-7.4.4.tgz",
+      "integrity": "sha1-GNEgQ4sMye6VpH8scryXaPvtYKU=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-object-super": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-object-super/download/@babel/plugin-transform-object-super-7.5.5.tgz",
+      "integrity": "sha1-xwAh34NAc8ZethO4Z5zEo4HRqfk=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-replace-supers": "^7.5.5"
+      }
+    },
+    "@babel/plugin-transform-parameters": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-parameters/download/@babel/plugin-transform-parameters-7.4.4.tgz",
+      "integrity": "sha1-dVbPA/MYvScZ/kySLS2Ai+VXHhY=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-call-delegate": "^7.4.4",
+        "@babel/helper-get-function-arity": "^7.0.0",
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-regenerator": {
+      "version": "7.4.5",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-regenerator/download/@babel/plugin-transform-regenerator-7.4.5.tgz",
+      "integrity": "sha1-Yp3IJRLFXO4BNB+ye9/LIQNUaA8=",
+      "dev": true,
+      "requires": {
+        "regenerator-transform": "^0.14.0"
+      }
+    },
+    "@babel/plugin-transform-runtime": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-runtime/download/@babel/plugin-transform-runtime-7.5.5.tgz",
+      "integrity": "sha1-pjMa+/xZGJ0hNbLglHRFeo49KLw=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-imports": "^7.0.0",
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "resolve": "^1.8.1",
+        "semver": "^5.5.1"
+      }
+    },
+    "@babel/plugin-transform-shorthand-properties": {
+      "version": "7.2.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-shorthand-properties/download/@babel/plugin-transform-shorthand-properties-7.2.0.tgz",
+      "integrity": "sha1-YzOu4vjW7n4oYVRXKYk0o7RhmPA=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-spread": {
+      "version": "7.2.2",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-spread/download/@babel/plugin-transform-spread-7.2.2.tgz",
+      "integrity": "sha1-MQOpq+IvdCttQG7NPNSbd0kZtAY=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-sticky-regex": {
+      "version": "7.2.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-sticky-regex/download/@babel/plugin-transform-sticky-regex-7.2.0.tgz",
+      "integrity": "sha1-oeRUtZlVYKnB4NU338FQYf0mh+E=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-regex": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-template-literals": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-template-literals/download/@babel/plugin-transform-template-literals-7.4.4.tgz",
+      "integrity": "sha1-nSj+p7vOY3+3YSoHUJidgyHUvLA=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.0.0",
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-typeof-symbol": {
+      "version": "7.2.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-typeof-symbol/download/@babel/plugin-transform-typeof-symbol-7.2.0.tgz",
+      "integrity": "sha1-EX0rzsL79ktLWdH5gZiUaC0p8rI=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-unicode-regex": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-unicode-regex/download/@babel/plugin-transform-unicode-regex-7.4.4.tgz",
+      "integrity": "sha1-q0Y0u08U02cov1l4Mis1WHeHlw8=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-regex": "^7.4.4",
+        "regexpu-core": "^4.5.4"
+      }
+    },
+    "@babel/preset-env": {
+      "version": "7.3.4",
+      "resolved": "https://registry.npm.taobao.org/@babel/preset-env/download/@babel/preset-env-7.3.4.tgz",
+      "integrity": "sha1-iHzzi20jyC8ZtRNSmL2xYAYuM+E=",
+      "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"
+      }
+    },
+    "@babel/runtime": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.5.5.tgz",
+      "integrity": "sha1-dPulbTXvvspEQJHHhQzNSU/S8TI=",
+      "dev": true,
+      "requires": {
+        "regenerator-runtime": "^0.13.2"
+      },
+      "dependencies": {
+        "regenerator-runtime": {
+          "version": "0.13.3",
+          "resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.13.3.tgz",
+          "integrity": "sha1-fPanfY9cb2Drc8X8GVWyzrAea/U=",
+          "dev": true
+        }
+      }
+    },
+    "@babel/runtime-corejs2": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npm.taobao.org/@babel/runtime-corejs2/download/@babel/runtime-corejs2-7.5.5.tgz",
+      "integrity": "sha1-wyFMCO8gNBr0GH8cn73DV/vslrI=",
+      "dev": true,
+      "requires": {
+        "core-js": "^2.6.5",
+        "regenerator-runtime": "^0.13.2"
+      },
+      "dependencies": {
+        "regenerator-runtime": {
+          "version": "0.13.3",
+          "resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.13.3.tgz",
+          "integrity": "sha1-fPanfY9cb2Drc8X8GVWyzrAea/U=",
+          "dev": true
+        }
+      }
+    },
+    "@babel/template": {
+      "version": "7.4.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/template/download/@babel/template-7.4.0.tgz",
+      "integrity": "sha1-EkdOnAd7rlhcXYNalcCwt5DCXIs=",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.0.0",
+        "@babel/parser": "^7.4.0",
+        "@babel/types": "^7.4.0"
+      }
+    },
+    "@babel/traverse": {
+      "version": "7.4.3",
+      "resolved": "http://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.4.3.tgz",
+      "integrity": "sha1-GgHwePxXXVif8wwPcb88PZzLrYQ=",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.0.0",
+        "@babel/generator": "^7.4.0",
+        "@babel/helper-function-name": "^7.1.0",
+        "@babel/helper-split-export-declaration": "^7.4.0",
+        "@babel/parser": "^7.4.3",
+        "@babel/types": "^7.4.0",
+        "debug": "^4.1.0",
+        "globals": "^11.1.0",
+        "lodash": "^4.17.11"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.1.1",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz",
+          "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        }
+      }
+    },
+    "@babel/types": {
+      "version": "7.4.0",
+      "resolved": "http://registry.npm.taobao.org/@babel/types/download/@babel/types-7.4.0.tgz",
+      "integrity": "sha1-Zwck930kzObMfYz2RZnVEdFkiUw=",
+      "dev": true,
+      "requires": {
+        "esutils": "^2.0.2",
+        "lodash": "^4.17.11",
+        "to-fast-properties": "^2.0.0"
+      }
+    },
+    "@hapi/address": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/@hapi/address/download/@hapi/address-2.0.0.tgz",
+      "integrity": "sha1-nwVGnIjLL9Pc1iR3a1TulcMSEmo=",
+      "dev": true
+    },
+    "@hapi/hoek": {
+      "version": "6.2.4",
+      "resolved": "https://registry.npm.taobao.org/@hapi/hoek/download/@hapi/hoek-6.2.4.tgz",
+      "integrity": "sha1-S5X7rMv7qQGFaQiQvfGi+72hBZU=",
+      "dev": true
+    },
+    "@hapi/joi": {
+      "version": "15.1.0",
+      "resolved": "https://registry.npm.taobao.org/@hapi/joi/download/@hapi/joi-15.1.0.tgz?cache=0&sync_timestamp=1561256488016&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Fjoi%2Fdownload%2F%40hapi%2Fjoi-15.1.0.tgz",
+      "integrity": "sha1-lAy3SbXFXCarOzTONi6CthYsjno=",
+      "dev": true,
+      "requires": {
+        "@hapi/address": "2.x.x",
+        "@hapi/hoek": "6.x.x",
+        "@hapi/marker": "1.x.x",
+        "@hapi/topo": "3.x.x"
+      }
+    },
+    "@hapi/marker": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/@hapi/marker/download/@hapi/marker-1.0.0.tgz",
+      "integrity": "sha1-ZbCysB0b4GMEiGzptLd7G/shp2k=",
+      "dev": true
+    },
+    "@hapi/topo": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npm.taobao.org/@hapi/topo/download/@hapi/topo-3.1.2.tgz",
+      "integrity": "sha1-V8wTF74ajF9HwST5sOPEnNeEJNI=",
+      "dev": true,
+      "requires": {
+        "@hapi/hoek": "8.x.x"
+      },
+      "dependencies": {
+        "@hapi/hoek": {
+          "version": "8.0.2",
+          "resolved": "https://registry.npm.taobao.org/@hapi/hoek/download/@hapi/hoek-8.0.2.tgz",
+          "integrity": "sha1-9jpf8A6JGk56qY8REZ+VFcZnIDI=",
+          "dev": true
+        }
+      }
+    },
+    "@intervolga/optimize-cssnano-plugin": {
+      "version": "1.0.6",
+      "resolved": "http://registry.npm.taobao.org/@intervolga/optimize-cssnano-plugin/download/@intervolga/optimize-cssnano-plugin-1.0.6.tgz",
+      "integrity": "sha1-vnx4RhKLiPapsdEmGgrQbrXA/fg=",
+      "dev": true,
+      "requires": {
+        "cssnano": "^4.0.0",
+        "cssnano-preset-default": "^4.0.0",
+        "postcss": "^7.0.0"
+      }
+    },
+    "@mrmlnc/readdir-enhanced": {
+      "version": "2.2.1",
+      "resolved": "http://registry.npm.taobao.org/@mrmlnc/readdir-enhanced/download/@mrmlnc/readdir-enhanced-2.2.1.tgz",
+      "integrity": "sha1-UkryQNGjYFJ7cwR17PoTRKpUDd4=",
+      "dev": true,
+      "requires": {
+        "call-me-maybe": "^1.0.1",
+        "glob-to-regexp": "^0.3.0"
+      }
+    },
+    "@nodelib/fs.stat": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npm.taobao.org/@nodelib/fs.stat/download/@nodelib/fs.stat-1.1.3.tgz",
+      "integrity": "sha1-K1o6s/kYzKSKjHVMCBaOPwPrphs=",
+      "dev": true
+    },
+    "@soda/friendly-errors-webpack-plugin": {
+      "version": "1.7.1",
+      "resolved": "http://registry.npm.taobao.org/@soda/friendly-errors-webpack-plugin/download/@soda/friendly-errors-webpack-plugin-1.7.1.tgz",
+      "integrity": "sha1-cG9kvLSouWQrSK46zkRMcDNNYV0=",
+      "dev": true,
+      "requires": {
+        "chalk": "^1.1.3",
+        "error-stack-parser": "^2.0.0",
+        "string-width": "^2.0.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "2.1.1",
+          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz",
+          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz",
+          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        },
+        "supports-color": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz",
+          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+          "dev": true
+        }
+      }
+    },
+    "@types/events": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/@types/events/download/@types/events-3.0.0.tgz",
+      "integrity": "sha1-KGLz9Yqaf3w+eNefEw3U1xwlwqc=",
+      "dev": true
+    },
+    "@types/glob": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npm.taobao.org/@types/glob/download/@types/glob-7.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fglob%2Fdownload%2F%40types%2Fglob-7.1.1.tgz",
+      "integrity": "sha1-qlmhxuP7xCHgfM0xqUTDDrpSFXU=",
+      "dev": true,
+      "requires": {
+        "@types/events": "*",
+        "@types/minimatch": "*",
+        "@types/node": "*"
+      }
+    },
+    "@types/minimatch": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npm.taobao.org/@types/minimatch/download/@types/minimatch-3.0.3.tgz",
+      "integrity": "sha1-PcoOPzOyAPx9ETnAzZbBJoyt/Z0=",
+      "dev": true
+    },
+    "@types/node": {
+      "version": "12.6.8",
+      "resolved": "https://registry.npm.taobao.org/@types/node/download/@types/node-12.6.8.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-12.6.8.tgz",
+      "integrity": "sha1-5Gm0v50cmDKu5JB7qKBRSUNXwSw=",
+      "dev": true
+    },
+    "@types/normalize-package-data": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npm.taobao.org/@types/normalize-package-data/download/@types/normalize-package-data-2.4.0.tgz",
+      "integrity": "sha1-5IbQ2XOW15vu3QpuM/RTT/a0lz4=",
+      "dev": true
+    },
+    "@types/q": {
+      "version": "1.5.2",
+      "resolved": "https://registry.npm.taobao.org/@types/q/download/@types/q-1.5.2.tgz",
+      "integrity": "sha1-aQoUdbhPKohP0HzXl8APXzE1bqg=",
+      "dev": true
+    },
+    "@vue/babel-helper-vue-jsx-merge-props": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/@vue/babel-helper-vue-jsx-merge-props/download/@vue/babel-helper-vue-jsx-merge-props-1.0.0.tgz",
+      "integrity": "sha1-BI/leZWNpAj7eosqPsBQtQpmEEA=",
+      "dev": true
+    },
+    "@vue/babel-plugin-transform-vue-jsx": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/@vue/babel-plugin-transform-vue-jsx/download/@vue/babel-plugin-transform-vue-jsx-1.0.0.tgz",
+      "integrity": "sha1-68vznDEslBFMjE9AfuT2yXqkVDI=",
+      "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.0.0",
+        "html-tags": "^2.0.0",
+        "lodash.kebabcase": "^4.1.1",
+        "svg-tags": "^1.0.0"
+      }
+    },
+    "@vue/babel-preset-app": {
+      "version": "3.9.2",
+      "resolved": "https://registry.npm.taobao.org/@vue/babel-preset-app/download/@vue/babel-preset-app-3.9.2.tgz",
+      "integrity": "sha1-tyqbBqu+P48nJ4O+E5UScSd74zg=",
+      "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"
+      }
+    },
+    "@vue/babel-preset-jsx": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/@vue/babel-preset-jsx/download/@vue/babel-preset-jsx-1.0.0.tgz",
+      "integrity": "sha1-5RXNRTpajqaw8wsruS8mbYq06fU=",
+      "dev": true,
+      "requires": {
+        "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0",
+        "@vue/babel-plugin-transform-vue-jsx": "^1.0.0",
+        "@vue/babel-sugar-functional-vue": "^1.0.0",
+        "@vue/babel-sugar-inject-h": "^1.0.0",
+        "@vue/babel-sugar-v-model": "^1.0.0",
+        "@vue/babel-sugar-v-on": "^1.0.0"
+      }
+    },
+    "@vue/babel-sugar-functional-vue": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-functional-vue/download/@vue/babel-sugar-functional-vue-1.0.0.tgz",
+      "integrity": "sha1-F+LEyie3SyRNo7kjJA7JHRAEjLM=",
+      "dev": true,
+      "requires": {
+        "@babel/plugin-syntax-jsx": "^7.2.0"
+      }
+    },
+    "@vue/babel-sugar-inject-h": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-inject-h/download/@vue/babel-sugar-inject-h-1.0.0.tgz",
+      "integrity": "sha1-5e+2xbW3mI3AODGvbRM797zeY0c=",
+      "dev": true,
+      "requires": {
+        "@babel/plugin-syntax-jsx": "^7.2.0"
+      }
+    },
+    "@vue/babel-sugar-v-model": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-v-model/download/@vue/babel-sugar-v-model-1.0.0.tgz",
+      "integrity": "sha1-9NpWqmf2WjSb0sJpqV5y5gGvRhM=",
+      "dev": true,
+      "requires": {
+        "@babel/plugin-syntax-jsx": "^7.2.0",
+        "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0",
+        "@vue/babel-plugin-transform-vue-jsx": "^1.0.0",
+        "camelcase": "^5.0.0",
+        "html-tags": "^2.0.0",
+        "svg-tags": "^1.0.0"
+      }
+    },
+    "@vue/babel-sugar-v-on": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-v-on/download/@vue/babel-sugar-v-on-1.0.0.tgz",
+      "integrity": "sha1-pjPuj+IFdj6GWwESRpgbf4lmgDM=",
+      "dev": true,
+      "requires": {
+        "@babel/plugin-syntax-jsx": "^7.2.0",
+        "@vue/babel-plugin-transform-vue-jsx": "^1.0.0",
+        "camelcase": "^5.0.0"
+      }
+    },
+    "@vue/cli-overlay": {
+      "version": "3.9.0",
+      "resolved": "https://registry.npm.taobao.org/@vue/cli-overlay/download/@vue/cli-overlay-3.9.0.tgz",
+      "integrity": "sha1-EfUT0foRsBNfuLqLiNIo3w3FQuA=",
+      "dev": true
+    },
+    "@vue/cli-plugin-babel": {
+      "version": "3.9.2",
+      "resolved": "https://registry.npm.taobao.org/@vue/cli-plugin-babel/download/@vue/cli-plugin-babel-3.9.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-plugin-babel%2Fdownload%2F%40vue%2Fcli-plugin-babel-3.9.2.tgz",
+      "integrity": "sha1-j/lio4Oq6v0rKAmYQopX6iPpU5w=",
+      "dev": true,
+      "requires": {
+        "@babel/core": "^7.0.0",
+        "@vue/babel-preset-app": "^3.9.2",
+        "@vue/cli-shared-utils": "^3.9.0",
+        "babel-loader": "^8.0.5",
+        "webpack": ">=4 < 4.29"
+      }
+    },
+    "@vue/cli-plugin-eslint": {
+      "version": "3.9.2",
+      "resolved": "https://registry.npm.taobao.org/@vue/cli-plugin-eslint/download/@vue/cli-plugin-eslint-3.9.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-plugin-eslint%2Fdownload%2F%40vue%2Fcli-plugin-eslint-3.9.2.tgz",
+      "integrity": "sha1-dHxhaxOhHzSsgFVO7omcv80Zd7g=",
+      "dev": true,
+      "requires": {
+        "@vue/cli-shared-utils": "^3.9.0",
+        "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 < 4.29",
+        "yorkie": "^2.0.0"
+      },
+      "dependencies": {
+        "ajv": {
+          "version": "5.5.2",
+          "resolved": "https://registry.npm.taobao.org/ajv/download/ajv-5.5.2.tgz?cache=0&sync_timestamp=1563113786760&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-5.5.2.tgz",
+          "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
+          "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"
+          }
+        },
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "dev": true,
+          "optional": true
+        },
+        "cross-spawn": {
+          "version": "5.1.0",
+          "resolved": "http://registry.npm.taobao.org/cross-spawn/download/cross-spawn-5.1.0.tgz",
+          "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "lru-cache": "^4.0.1",
+            "shebang-command": "^1.2.0",
+            "which": "^1.2.9"
+          }
+        },
+        "debug": {
+          "version": "3.2.6",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz",
+          "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "eslint": {
+          "version": "4.19.1",
+          "resolved": "https://registry.npm.taobao.org/eslint/download/eslint-4.19.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint%2Fdownload%2Feslint-4.19.1.tgz",
+          "integrity": "sha1-MtHWU+HZBAiFS/spbwdux+GGowA=",
+          "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"
+          }
+        },
+        "eslint-plugin-vue": {
+          "version": "4.7.1",
+          "resolved": "https://registry.npm.taobao.org/eslint-plugin-vue/download/eslint-plugin-vue-4.7.1.tgz?cache=0&sync_timestamp=1561378693439&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-plugin-vue%2Fdownload%2Feslint-plugin-vue-4.7.1.tgz",
+          "integrity": "sha1-yCm5/GJYLBiXtaC5Sv1E7MpRHmM=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "vue-eslint-parser": "^2.0.3"
+          }
+        },
+        "eslint-scope": {
+          "version": "3.7.3",
+          "resolved": "http://registry.npm.taobao.org/eslint-scope/download/eslint-scope-3.7.3.tgz",
+          "integrity": "sha1-u1ByANPRf2AkdjYWC0gmKEsQhTU=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "esrecurse": "^4.1.0",
+            "estraverse": "^4.1.1"
+          }
+        },
+        "fast-deep-equal": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-1.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-deep-equal%2Fdownload%2Ffast-deep-equal-1.1.0.tgz",
+          "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
+          "dev": true,
+          "optional": true
+        },
+        "json-schema-traverse": {
+          "version": "0.3.1",
+          "resolved": "http://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.3.1.tgz",
+          "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
+          "dev": true,
+          "optional": true
+        },
+        "lru-cache": {
+          "version": "4.1.5",
+          "resolved": "http://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz",
+          "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "pseudomap": "^1.0.2",
+            "yallist": "^2.1.2"
+          }
+        },
+        "strip-ansi": {
+          "version": "4.0.0",
+          "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz",
+          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ansi-regex": "^3.0.0"
+          }
+        },
+        "yallist": {
+          "version": "2.1.2",
+          "resolved": "http://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz",
+          "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+          "dev": true,
+          "optional": true
+        }
+      }
+    },
+    "@vue/cli-service": {
+      "version": "3.9.3",
+      "resolved": "https://registry.npm.taobao.org/@vue/cli-service/download/@vue/cli-service-3.9.3.tgz",
+      "integrity": "sha1-S9V4ZGWvuLYIxcf8lmE5DnR+p1Y=",
+      "dev": true,
+      "requires": {
+        "@intervolga/optimize-cssnano-plugin": "^1.0.5",
+        "@soda/friendly-errors-webpack-plugin": "^1.7.1",
+        "@vue/cli-overlay": "^3.9.0",
+        "@vue/cli-shared-utils": "^3.9.0",
+        "@vue/component-compiler-utils": "^2.6.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.6.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 < 4.29",
+        "webpack-bundle-analyzer": "^3.3.0",
+        "webpack-chain": "^4.11.0",
+        "webpack-dev-server": "^3.4.1",
+        "webpack-merge": "^4.2.1"
+      },
+      "dependencies": {
+        "acorn": {
+          "version": "6.2.0",
+          "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-6.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-6.2.0.tgz",
+          "integrity": "sha1-Z/DaL8M51s+11vskT9RJ8zzYu+M=",
+          "dev": true
+        },
+        "semver": {
+          "version": "6.2.0",
+          "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.2.0.tgz",
+          "integrity": "sha1-TYE9lZCq+KkZJpPWyFuTRN5ZAds=",
+          "dev": true
+        }
+      }
+    },
+    "@vue/cli-shared-utils": {
+      "version": "3.9.0",
+      "resolved": "https://registry.npm.taobao.org/@vue/cli-shared-utils/download/@vue/cli-shared-utils-3.9.0.tgz?cache=0&sync_timestamp=1563117936545&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-shared-utils%2Fdownload%2F%40vue%2Fcli-shared-utils-3.9.0.tgz",
+      "integrity": "sha1-y1akQ792Ooc4SaEdB+nnY4qhbMI=",
+      "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"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "6.2.0",
+          "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.2.0.tgz",
+          "integrity": "sha1-TYE9lZCq+KkZJpPWyFuTRN5ZAds=",
+          "dev": true
+        }
+      }
+    },
+    "@vue/component-compiler-utils": {
+      "version": "2.6.0",
+      "resolved": "http://registry.npm.taobao.org/@vue/component-compiler-utils/download/@vue/component-compiler-utils-2.6.0.tgz",
+      "integrity": "sha1-qkbSpvdkdECwuJMkNNIvEjceVDs=",
+      "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.14",
+        "postcss-selector-parser": "^5.0.0",
+        "prettier": "1.16.3",
+        "source-map": "~0.6.1",
+        "vue-template-es2015-compiler": "^1.9.0"
+      },
+      "dependencies": {
+        "lru-cache": {
+          "version": "4.1.5",
+          "resolved": "http://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz",
+          "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=",
+          "dev": true,
+          "requires": {
+            "pseudomap": "^1.0.2",
+            "yallist": "^2.1.2"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        },
+        "yallist": {
+          "version": "2.1.2",
+          "resolved": "http://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz",
+          "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+          "dev": true
+        }
+      }
+    },
+    "@vue/eslint-config-standard": {
+      "version": "4.0.0",
+      "resolved": "http://registry.npm.taobao.org/@vue/eslint-config-standard/download/@vue/eslint-config-standard-4.0.0.tgz",
+      "integrity": "sha1-a+RH7mdOOw9zPFhAmP2aIubXb80=",
+      "dev": true,
+      "requires": {
+        "eslint-config-standard": "^12.0.0",
+        "eslint-plugin-import": "^2.14.0",
+        "eslint-plugin-node": "^8.0.0",
+        "eslint-plugin-promise": "^4.0.1",
+        "eslint-plugin-standard": "^4.0.0"
+      }
+    },
+    "@vue/preload-webpack-plugin": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/@vue/preload-webpack-plugin/download/@vue/preload-webpack-plugin-1.1.0.tgz",
+      "integrity": "sha1-12jboAQmHAKbU6d8XqLV+e5PPM4=",
+      "dev": true
+    },
+    "@vue/web-component-wrapper": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/@vue/web-component-wrapper/download/@vue/web-component-wrapper-1.2.0.tgz",
+      "integrity": "sha1-uw5G8VhafiibTuYGfcxaauYvHdE=",
+      "dev": true
+    },
+    "@webassemblyjs/ast": {
+      "version": "1.7.11",
+      "resolved": "http://registry.npm.taobao.org/@webassemblyjs/ast/download/@webassemblyjs/ast-1.7.11.tgz",
+      "integrity": "sha1-uYhYLK+7Kwlei1VlJvMMkNBXys4=",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/helper-module-context": "1.7.11",
+        "@webassemblyjs/helper-wasm-bytecode": "1.7.11",
+        "@webassemblyjs/wast-parser": "1.7.11"
+      }
+    },
+    "@webassemblyjs/floating-point-hex-parser": {
+      "version": "1.7.11",
+      "resolved": "http://registry.npm.taobao.org/@webassemblyjs/floating-point-hex-parser/download/@webassemblyjs/floating-point-hex-parser-1.7.11.tgz",
+      "integrity": "sha1-pp8K9lAuuaPARVVbGmEp09Py4xM=",
+      "dev": true
+    },
+    "@webassemblyjs/helper-api-error": {
+      "version": "1.7.11",
+      "resolved": "http://registry.npm.taobao.org/@webassemblyjs/helper-api-error/download/@webassemblyjs/helper-api-error-1.7.11.tgz",
+      "integrity": "sha1-x7a7gQX4QDlRGis5zklPGTgYoyo=",
+      "dev": true
+    },
+    "@webassemblyjs/helper-buffer": {
+      "version": "1.7.11",
+      "resolved": "http://registry.npm.taobao.org/@webassemblyjs/helper-buffer/download/@webassemblyjs/helper-buffer-1.7.11.tgz",
+      "integrity": "sha1-MSLUjcxslFbtmC3r4WyPNxAd85s=",
+      "dev": true
+    },
+    "@webassemblyjs/helper-code-frame": {
+      "version": "1.7.11",
+      "resolved": "http://registry.npm.taobao.org/@webassemblyjs/helper-code-frame/download/@webassemblyjs/helper-code-frame-1.7.11.tgz",
+      "integrity": "sha1-z48QbnRmYqDaKb3vY1/NPRJINks=",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/wast-printer": "1.7.11"
+      }
+    },
+    "@webassemblyjs/helper-fsm": {
+      "version": "1.7.11",
+      "resolved": "http://registry.npm.taobao.org/@webassemblyjs/helper-fsm/download/@webassemblyjs/helper-fsm-1.7.11.tgz",
+      "integrity": "sha1-3ziIKmJAgNA/dQP5Pj8XrFrAEYE=",
+      "dev": true
+    },
+    "@webassemblyjs/helper-module-context": {
+      "version": "1.7.11",
+      "resolved": "http://registry.npm.taobao.org/@webassemblyjs/helper-module-context/download/@webassemblyjs/helper-module-context-1.7.11.tgz",
+      "integrity": "sha1-2HTXIuUeYqwgJHaTXWScgC+g4gk=",
+      "dev": true
+    },
+    "@webassemblyjs/helper-wasm-bytecode": {
+      "version": "1.7.11",
+      "resolved": "http://registry.npm.taobao.org/@webassemblyjs/helper-wasm-bytecode/download/@webassemblyjs/helper-wasm-bytecode-1.7.11.tgz",
+      "integrity": "sha1-3ZoegX8cLrEFtM8QEwk8ufPJywY=",
+      "dev": true
+    },
+    "@webassemblyjs/helper-wasm-section": {
+      "version": "1.7.11",
+      "resolved": "http://registry.npm.taobao.org/@webassemblyjs/helper-wasm-section/download/@webassemblyjs/helper-wasm-section-1.7.11.tgz",
+      "integrity": "sha1-nJrEHs+fvP/8lvbSZ14t4zgR5oo=",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.7.11",
+        "@webassemblyjs/helper-buffer": "1.7.11",
+        "@webassemblyjs/helper-wasm-bytecode": "1.7.11",
+        "@webassemblyjs/wasm-gen": "1.7.11"
+      }
+    },
+    "@webassemblyjs/ieee754": {
+      "version": "1.7.11",
+      "resolved": "http://registry.npm.taobao.org/@webassemblyjs/ieee754/download/@webassemblyjs/ieee754-1.7.11.tgz",
+      "integrity": "sha1-yVg562N1ejGICq7HtlEtQZGsZAs=",
+      "dev": true,
+      "requires": {
+        "@xtuc/ieee754": "^1.2.0"
+      }
+    },
+    "@webassemblyjs/leb128": {
+      "version": "1.7.11",
+      "resolved": "http://registry.npm.taobao.org/@webassemblyjs/leb128/download/@webassemblyjs/leb128-1.7.11.tgz",
+      "integrity": "sha1-1yZ6HunEWU/T9+NymIGOxlaH22M=",
+      "dev": true,
+      "requires": {
+        "@xtuc/long": "4.2.1"
+      }
+    },
+    "@webassemblyjs/utf8": {
+      "version": "1.7.11",
+      "resolved": "http://registry.npm.taobao.org/@webassemblyjs/utf8/download/@webassemblyjs/utf8-1.7.11.tgz",
+      "integrity": "sha1-Btchjqn9yUpnk6qSIIFg2z0m7oI=",
+      "dev": true
+    },
+    "@webassemblyjs/wasm-edit": {
+      "version": "1.7.11",
+      "resolved": "http://registry.npm.taobao.org/@webassemblyjs/wasm-edit/download/@webassemblyjs/wasm-edit-1.7.11.tgz",
+      "integrity": "sha1-jHTKR01PlR0B266b1wgU7iKoIAU=",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.7.11",
+        "@webassemblyjs/helper-buffer": "1.7.11",
+        "@webassemblyjs/helper-wasm-bytecode": "1.7.11",
+        "@webassemblyjs/helper-wasm-section": "1.7.11",
+        "@webassemblyjs/wasm-gen": "1.7.11",
+        "@webassemblyjs/wasm-opt": "1.7.11",
+        "@webassemblyjs/wasm-parser": "1.7.11",
+        "@webassemblyjs/wast-printer": "1.7.11"
+      }
+    },
+    "@webassemblyjs/wasm-gen": {
+      "version": "1.7.11",
+      "resolved": "http://registry.npm.taobao.org/@webassemblyjs/wasm-gen/download/@webassemblyjs/wasm-gen-1.7.11.tgz",
+      "integrity": "sha1-m7upQvIjdWhqb7dZr816ycRdoag=",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.7.11",
+        "@webassemblyjs/helper-wasm-bytecode": "1.7.11",
+        "@webassemblyjs/ieee754": "1.7.11",
+        "@webassemblyjs/leb128": "1.7.11",
+        "@webassemblyjs/utf8": "1.7.11"
+      }
+    },
+    "@webassemblyjs/wasm-opt": {
+      "version": "1.7.11",
+      "resolved": "http://registry.npm.taobao.org/@webassemblyjs/wasm-opt/download/@webassemblyjs/wasm-opt-1.7.11.tgz",
+      "integrity": "sha1-szHo5874+OLwB9QsOjagWAp9bKc=",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.7.11",
+        "@webassemblyjs/helper-buffer": "1.7.11",
+        "@webassemblyjs/wasm-gen": "1.7.11",
+        "@webassemblyjs/wasm-parser": "1.7.11"
+      }
+    },
+    "@webassemblyjs/wasm-parser": {
+      "version": "1.7.11",
+      "resolved": "http://registry.npm.taobao.org/@webassemblyjs/wasm-parser/download/@webassemblyjs/wasm-parser-1.7.11.tgz",
+      "integrity": "sha1-bj0g+mo1GfawhO+Tka1YIR77Cho=",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.7.11",
+        "@webassemblyjs/helper-api-error": "1.7.11",
+        "@webassemblyjs/helper-wasm-bytecode": "1.7.11",
+        "@webassemblyjs/ieee754": "1.7.11",
+        "@webassemblyjs/leb128": "1.7.11",
+        "@webassemblyjs/utf8": "1.7.11"
+      }
+    },
+    "@webassemblyjs/wast-parser": {
+      "version": "1.7.11",
+      "resolved": "http://registry.npm.taobao.org/@webassemblyjs/wast-parser/download/@webassemblyjs/wast-parser-1.7.11.tgz",
+      "integrity": "sha1-Jb0RdWLKjAAnIP+BFu+QctnKhpw=",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.7.11",
+        "@webassemblyjs/floating-point-hex-parser": "1.7.11",
+        "@webassemblyjs/helper-api-error": "1.7.11",
+        "@webassemblyjs/helper-code-frame": "1.7.11",
+        "@webassemblyjs/helper-fsm": "1.7.11",
+        "@xtuc/long": "4.2.1"
+      }
+    },
+    "@webassemblyjs/wast-printer": {
+      "version": "1.7.11",
+      "resolved": "http://registry.npm.taobao.org/@webassemblyjs/wast-printer/download/@webassemblyjs/wast-printer-1.7.11.tgz",
+      "integrity": "sha1-xCRbbeJCy1CizJUBdP2/ZceNeBM=",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.7.11",
+        "@webassemblyjs/wast-parser": "1.7.11",
+        "@xtuc/long": "4.2.1"
+      }
+    },
+    "@xtuc/ieee754": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/@xtuc/ieee754/download/@xtuc/ieee754-1.2.0.tgz",
+      "integrity": "sha1-7vAUoxRa5Hehy8AM0eVSM23Ot5A=",
+      "dev": true
+    },
+    "@xtuc/long": {
+      "version": "4.2.1",
+      "resolved": "http://registry.npm.taobao.org/@xtuc/long/download/@xtuc/long-4.2.1.tgz",
+      "integrity": "sha1-XIXWYvdvodNFdXZsXc1mFavNMNg=",
+      "dev": true
+    },
+    "abbrev": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npm.taobao.org/abbrev/download/abbrev-1.1.1.tgz",
+      "integrity": "sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg=",
+      "dev": true
+    },
+    "accepts": {
+      "version": "1.3.7",
+      "resolved": "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz",
+      "integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=",
+      "dev": true,
+      "requires": {
+        "mime-types": "~2.1.24",
+        "negotiator": "0.6.2"
+      },
+      "dependencies": {
+        "mime-db": {
+          "version": "1.40.0",
+          "resolved": "https://registry.npm.taobao.org/mime-db/download/mime-db-1.40.0.tgz",
+          "integrity": "sha1-plBX6ZjbCQ9zKmj2wnbTh9QSbDI=",
+          "dev": true
+        },
+        "mime-types": {
+          "version": "2.1.24",
+          "resolved": "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.24.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-types%2Fdownload%2Fmime-types-2.1.24.tgz",
+          "integrity": "sha1-tvjQs+lR77d97eyhlM/20W9nb4E=",
+          "dev": true,
+          "requires": {
+            "mime-db": "1.40.0"
+          }
+        }
+      }
+    },
+    "acorn": {
+      "version": "5.7.3",
+      "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-5.7.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-5.7.3.tgz",
+      "integrity": "sha1-Z6ojG/iBKXS4UjWpZ3Hra9B+onk=",
+      "dev": true
+    },
+    "acorn-dynamic-import": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/acorn-dynamic-import/download/acorn-dynamic-import-3.0.0.tgz",
+      "integrity": "sha1-kBzu5Mf6rvfgetKkfokGddpQong=",
+      "dev": true,
+      "requires": {
+        "acorn": "^5.0.0"
+      }
+    },
+    "acorn-jsx": {
+      "version": "3.0.1",
+      "resolved": "http://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-3.0.1.tgz",
+      "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "acorn": "^3.0.4"
+      },
+      "dependencies": {
+        "acorn": {
+          "version": "3.3.0",
+          "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-3.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-3.3.0.tgz",
+          "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=",
+          "dev": true,
+          "optional": true
+        }
+      }
+    },
+    "acorn-walk": {
+      "version": "6.2.0",
+      "resolved": "https://registry.npm.taobao.org/acorn-walk/download/acorn-walk-6.2.0.tgz?cache=0&sync_timestamp=1562222741612&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-walk%2Fdownload%2Facorn-walk-6.2.0.tgz",
+      "integrity": "sha1-Ejy487hMIXHx9/slJhWxx4prGow=",
+      "dev": true
+    },
+    "address": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/address/download/address-1.1.0.tgz",
+      "integrity": "sha1-744EeEf80sW29QwWll+ST9mf5wk=",
+      "dev": true
+    },
+    "ajv": {
+      "version": "6.10.0",
+      "resolved": "http://registry.npm.taobao.org/ajv/download/ajv-6.10.0.tgz",
+      "integrity": "sha1-kNDVRDnaWHzX6EO/twRfUL0ivfE=",
+      "dev": true,
+      "requires": {
+        "fast-deep-equal": "^2.0.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",
+      "resolved": "http://registry.npm.taobao.org/ajv-errors/download/ajv-errors-1.0.1.tgz",
+      "integrity": "sha1-81mGrOuRr63sQQL72FAUlQzvpk0=",
+      "dev": true
+    },
+    "ajv-keywords": {
+      "version": "3.4.1",
+      "resolved": "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-3.4.1.tgz",
+      "integrity": "sha1-75FuJxxkrBIXH9g4TqrmsjRYVNo=",
+      "dev": true
+    },
+    "alphanum-sort": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/alphanum-sort/download/alphanum-sort-1.0.2.tgz",
+      "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
+      "dev": true
+    },
+    "amdefine": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/amdefine/download/amdefine-1.0.1.tgz",
+      "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+      "dev": true
+    },
+    "ansi-colors": {
+      "version": "3.2.4",
+      "resolved": "https://registry.npm.taobao.org/ansi-colors/download/ansi-colors-3.2.4.tgz",
+      "integrity": "sha1-46PaS/uubIapwoViXeEkojQCb78=",
+      "dev": true
+    },
+    "ansi-escapes": {
+      "version": "3.2.0",
+      "resolved": "http://registry.npm.taobao.org/ansi-escapes/download/ansi-escapes-3.2.0.tgz",
+      "integrity": "sha1-h4C5j/nb9WOBUtHx/lwde0RCl2s=",
+      "dev": true
+    },
+    "ansi-html": {
+      "version": "0.0.7",
+      "resolved": "http://registry.npm.taobao.org/ansi-html/download/ansi-html-0.0.7.tgz",
+      "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=",
+      "dev": true
+    },
+    "ansi-regex": {
+      "version": "4.1.0",
+      "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz",
+      "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=",
+      "dev": true
+    },
+    "ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz",
+      "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=",
+      "dev": true,
+      "requires": {
+        "color-convert": "^1.9.0"
+      }
+    },
+    "any-promise": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npm.taobao.org/any-promise/download/any-promise-1.3.0.tgz",
+      "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=",
+      "dev": true
+    },
+    "anymatch": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-2.0.0.tgz",
+      "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=",
+      "dev": true,
+      "requires": {
+        "micromatch": "^3.1.4",
+        "normalize-path": "^2.1.1"
+      },
+      "dependencies": {
+        "normalize-path": {
+          "version": "2.1.1",
+          "resolved": "http://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz",
+          "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+          "dev": true,
+          "requires": {
+            "remove-trailing-separator": "^1.0.1"
+          }
+        }
+      }
+    },
+    "aproba": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/aproba/download/aproba-1.2.0.tgz",
+      "integrity": "sha1-aALmJk79GMeQobDVF/DyYnvyyUo=",
+      "dev": true
+    },
+    "arch": {
+      "version": "2.1.1",
+      "resolved": "http://registry.npm.taobao.org/arch/download/arch-2.1.1.tgz",
+      "integrity": "sha1-j1wnMao1owkpIhuwZA7tZRdeyE4=",
+      "dev": true
+    },
+    "are-we-there-yet": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npm.taobao.org/are-we-there-yet/download/are-we-there-yet-1.1.5.tgz",
+      "integrity": "sha1-SzXClE8GKov82mZBB2A1D+nd/CE=",
+      "dev": true,
+      "requires": {
+        "delegates": "^1.0.0",
+        "readable-stream": "^2.0.6"
+      }
+    },
+    "argparse": {
+      "version": "1.0.10",
+      "resolved": "http://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz",
+      "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=",
+      "dev": true,
+      "requires": {
+        "sprintf-js": "~1.0.2"
+      }
+    },
+    "arr-diff": {
+      "version": "4.0.0",
+      "resolved": "http://registry.npm.taobao.org/arr-diff/download/arr-diff-4.0.0.tgz",
+      "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+      "dev": true
+    },
+    "arr-flatten": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/arr-flatten/download/arr-flatten-1.1.0.tgz",
+      "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=",
+      "dev": true
+    },
+    "arr-union": {
+      "version": "3.1.0",
+      "resolved": "http://registry.npm.taobao.org/arr-union/download/arr-union-3.1.0.tgz",
+      "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+      "dev": true
+    },
+    "array-filter": {
+      "version": "0.0.1",
+      "resolved": "http://registry.npm.taobao.org/array-filter/download/array-filter-0.0.1.tgz",
+      "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=",
+      "dev": true
+    },
+    "array-find-index": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/array-find-index/download/array-find-index-1.0.2.tgz",
+      "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+      "dev": true
+    },
+    "array-flatten": {
+      "version": "1.1.1",
+      "resolved": "http://registry.npm.taobao.org/array-flatten/download/array-flatten-1.1.1.tgz",
+      "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
+      "dev": true
+    },
+    "array-map": {
+      "version": "0.0.0",
+      "resolved": "http://registry.npm.taobao.org/array-map/download/array-map-0.0.0.tgz",
+      "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=",
+      "dev": true
+    },
+    "array-reduce": {
+      "version": "0.0.0",
+      "resolved": "http://registry.npm.taobao.org/array-reduce/download/array-reduce-0.0.0.tgz",
+      "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=",
+      "dev": true
+    },
+    "array-union": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/array-union/download/array-union-1.0.2.tgz",
+      "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+      "dev": true,
+      "requires": {
+        "array-uniq": "^1.0.1"
+      }
+    },
+    "array-uniq": {
+      "version": "1.0.3",
+      "resolved": "http://registry.npm.taobao.org/array-uniq/download/array-uniq-1.0.3.tgz",
+      "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+      "dev": true
+    },
+    "array-unique": {
+      "version": "0.3.2",
+      "resolved": "http://registry.npm.taobao.org/array-unique/download/array-unique-0.3.2.tgz",
+      "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+      "dev": true
+    },
+    "asn1": {
+      "version": "0.2.4",
+      "resolved": "http://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz",
+      "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=",
+      "dev": true,
+      "requires": {
+        "safer-buffer": "~2.1.0"
+      }
+    },
+    "asn1.js": {
+      "version": "4.10.1",
+      "resolved": "https://registry.npm.taobao.org/asn1.js/download/asn1.js-4.10.1.tgz",
+      "integrity": "sha1-ucK/WAXx5kqt7tbfOiv6+1pz9aA=",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.0.0",
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "assert": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npm.taobao.org/assert/download/assert-1.5.0.tgz",
+      "integrity": "sha1-VcEJqvbgrv2z3EtxJAxwv1dLGOs=",
+      "dev": true,
+      "requires": {
+        "object-assign": "^4.1.1",
+        "util": "0.10.3"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.1.tgz",
+          "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
+          "dev": true
+        },
+        "util": {
+          "version": "0.10.3",
+          "resolved": "https://registry.npm.taobao.org/util/download/util-0.10.3.tgz",
+          "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+          "dev": true,
+          "requires": {
+            "inherits": "2.0.1"
+          }
+        }
+      }
+    },
+    "assert-plus": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz",
+      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+      "dev": true
+    },
+    "assign-symbols": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/assign-symbols/download/assign-symbols-1.0.0.tgz",
+      "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+      "dev": true
+    },
+    "astral-regex": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/astral-regex/download/astral-regex-1.0.0.tgz",
+      "integrity": "sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k=",
+      "dev": true
+    },
+    "async": {
+      "version": "1.5.2",
+      "resolved": "https://registry.npm.taobao.org/async/download/async-1.5.2.tgz?cache=0&sync_timestamp=1563385399810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fasync%2Fdownload%2Fasync-1.5.2.tgz",
+      "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+      "dev": true
+    },
+    "async-each": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npm.taobao.org/async-each/download/async-each-1.0.3.tgz",
+      "integrity": "sha1-tyfb+H12UWAvBvTUrDh/R9kbDL8=",
+      "dev": true
+    },
+    "async-foreach": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npm.taobao.org/async-foreach/download/async-foreach-0.1.3.tgz",
+      "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=",
+      "dev": true
+    },
+    "async-limiter": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.0.tgz",
+      "integrity": "sha1-ePrtjD0HSrgfIrTphdeehzj3IPg=",
+      "dev": true
+    },
+    "async-validator": {
+      "version": "1.8.5",
+      "resolved": "http://registry.npm.taobao.org/async-validator/download/async-validator-1.8.5.tgz",
+      "integrity": "sha1-3D4I7B/Q3dtn5ghC8CwM0c7G1/A=",
+      "requires": {
+        "babel-runtime": "6.x"
+      }
+    },
+    "asynckit": {
+      "version": "0.4.0",
+      "resolved": "http://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz",
+      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+      "dev": true
+    },
+    "atob": {
+      "version": "2.1.2",
+      "resolved": "http://registry.npm.taobao.org/atob/download/atob-2.1.2.tgz",
+      "integrity": "sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k=",
+      "dev": true
+    },
+    "autoprefixer": {
+      "version": "9.6.1",
+      "resolved": "https://registry.npm.taobao.org/autoprefixer/download/autoprefixer-9.6.1.tgz",
+      "integrity": "sha1-UZZ6AtLSMAuwGGbBYR7INI01Wkc=",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.6.3",
+        "caniuse-lite": "^1.0.30000980",
+        "chalk": "^2.4.2",
+        "normalize-range": "^0.1.2",
+        "num2fraction": "^1.2.2",
+        "postcss": "^7.0.17",
+        "postcss-value-parser": "^4.0.0"
+      },
+      "dependencies": {
+        "postcss": {
+          "version": "7.0.17",
+          "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-7.0.17.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss%2Fdownload%2Fpostcss-7.0.17.tgz",
+          "integrity": "sha1-TaG9/1Mi1KCsqrTYfz54JDa60x8=",
+          "dev": true,
+          "requires": {
+            "chalk": "^2.4.2",
+            "source-map": "^0.6.1",
+            "supports-color": "^6.1.0"
+          }
+        },
+        "postcss-value-parser": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-4.0.0.tgz",
+          "integrity": "sha1-mamD02X3sq2ND5uMMJSSbqtLk20=",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "6.1.0",
+          "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz",
+          "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        }
+      }
+    },
+    "aws-sign2": {
+      "version": "0.7.0",
+      "resolved": "http://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz",
+      "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
+      "dev": true
+    },
+    "aws4": {
+      "version": "1.8.0",
+      "resolved": "http://registry.npm.taobao.org/aws4/download/aws4-1.8.0.tgz",
+      "integrity": "sha1-8OAD2cqef1nHpQiUXXsu+aBKVC8=",
+      "dev": true
+    },
+    "axios": {
+      "version": "0.19.0",
+      "resolved": "https://registry.npm.taobao.org/axios/download/axios-0.19.0.tgz",
+      "integrity": "sha1-jgm/89kSLhM/e4EByPvdAO09Krg=",
+      "requires": {
+        "follow-redirects": "1.5.10",
+        "is-buffer": "^2.0.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz",
+          "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "follow-redirects": {
+          "version": "1.5.10",
+          "resolved": "https://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.5.10.tgz",
+          "integrity": "sha1-e3qfmuov3/NnhqlP9kPtB/T/Xio=",
+          "requires": {
+            "debug": "=3.1.0"
+          }
+        },
+        "is-buffer": {
+          "version": "2.0.3",
+          "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-2.0.3.tgz",
+          "integrity": "sha1-Ts8/z3ScvR5HJonhCaxmJhol5yU="
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+        }
+      }
+    },
+    "babel-code-frame": {
+      "version": "6.26.0",
+      "resolved": "http://registry.npm.taobao.org/babel-code-frame/download/babel-code-frame-6.26.0.tgz",
+      "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
+      "dev": true,
+      "requires": {
+        "chalk": "^1.1.3",
+        "esutils": "^2.0.2",
+        "js-tokens": "^3.0.2"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "2.1.1",
+          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz",
+          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          }
+        },
+        "js-tokens": {
+          "version": "3.0.2",
+          "resolved": "https://registry.npm.taobao.org/js-tokens/download/js-tokens-3.0.2.tgz",
+          "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+          "dev": true
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz",
+          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        },
+        "supports-color": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz",
+          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+          "dev": true
+        }
+      }
+    },
+    "babel-eslint": {
+      "version": "10.0.1",
+      "resolved": "http://registry.npm.taobao.org/babel-eslint/download/babel-eslint-10.0.1.tgz",
+      "integrity": "sha1-kZaB3AmWFM19MdRciQhpUJKh+u0=",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.0.0",
+        "@babel/parser": "^7.0.0",
+        "@babel/traverse": "^7.0.0",
+        "@babel/types": "^7.0.0",
+        "eslint-scope": "3.7.1",
+        "eslint-visitor-keys": "^1.0.0"
+      },
+      "dependencies": {
+        "eslint-scope": {
+          "version": "3.7.1",
+          "resolved": "http://registry.npm.taobao.org/eslint-scope/download/eslint-scope-3.7.1.tgz",
+          "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=",
+          "dev": true,
+          "requires": {
+            "esrecurse": "^4.1.0",
+            "estraverse": "^4.1.1"
+          }
+        }
+      }
+    },
+    "babel-helper-vue-jsx-merge-props": {
+      "version": "2.0.3",
+      "resolved": "http://registry.npm.taobao.org/babel-helper-vue-jsx-merge-props/download/babel-helper-vue-jsx-merge-props-2.0.3.tgz",
+      "integrity": "sha1-Iq69OzOQIyjlEyk6jkmSs4T58bY="
+    },
+    "babel-loader": {
+      "version": "8.0.6",
+      "resolved": "https://registry.npm.taobao.org/babel-loader/download/babel-loader-8.0.6.tgz",
+      "integrity": "sha1-4zvbbzYrA/S7FBoMIauHxQG3Dfs=",
+      "dev": true,
+      "requires": {
+        "find-cache-dir": "^2.0.0",
+        "loader-utils": "^1.0.2",
+        "mkdirp": "^0.5.1",
+        "pify": "^4.0.1"
+      }
+    },
+    "babel-plugin-dynamic-import-node": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npm.taobao.org/babel-plugin-dynamic-import-node/download/babel-plugin-dynamic-import-node-2.3.0.tgz",
+      "integrity": "sha1-8A9Qe9qjw+P/bn5emNkKesq5b38=",
+      "dev": true,
+      "requires": {
+        "object.assign": "^4.1.0"
+      }
+    },
+    "babel-plugin-module-resolver": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npm.taobao.org/babel-plugin-module-resolver/download/babel-plugin-module-resolver-3.2.0.tgz",
+      "integrity": "sha1-3fpeMB47mqEthSqZefGLN4gf9ac=",
+      "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-polyfill": {
+      "version": "6.26.0",
+      "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz",
+      "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=",
+      "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",
+          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
+          "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=",
+          "dev": true
+        }
+      }
+    },
+    "babel-runtime": {
+      "version": "6.26.0",
+      "resolved": "http://registry.npm.taobao.org/babel-runtime/download/babel-runtime-6.26.0.tgz",
+      "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+      "requires": {
+        "core-js": "^2.4.0",
+        "regenerator-runtime": "^0.11.0"
+      }
+    },
+    "balanced-match": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz",
+      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+      "dev": true
+    },
+    "base": {
+      "version": "0.11.2",
+      "resolved": "http://registry.npm.taobao.org/base/download/base-0.11.2.tgz",
+      "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=",
+      "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",
+          "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "http://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+          "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
+      }
+    },
+    "base64-js": {
+      "version": "1.3.0",
+      "resolved": "http://registry.npm.taobao.org/base64-js/download/base64-js-1.3.0.tgz",
+      "integrity": "sha1-yrHmEY8FEJXli1KBrqjBzSK/wOM=",
+      "dev": true
+    },
+    "batch": {
+      "version": "0.6.1",
+      "resolved": "http://registry.npm.taobao.org/batch/download/batch-0.6.1.tgz",
+      "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
+      "dev": true
+    },
+    "bcrypt-pbkdf": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz",
+      "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+      "dev": true,
+      "requires": {
+        "tweetnacl": "^0.14.3"
+      }
+    },
+    "bfj": {
+      "version": "6.1.2",
+      "resolved": "https://registry.npm.taobao.org/bfj/download/bfj-6.1.2.tgz",
+      "integrity": "sha1-MlyGGoIryzWKQceKM7jm4ght3n8=",
+      "dev": true,
+      "requires": {
+        "bluebird": "^3.5.5",
+        "check-types": "^8.0.3",
+        "hoopy": "^0.1.4",
+        "tryer": "^1.0.1"
+      },
+      "dependencies": {
+        "bluebird": {
+          "version": "3.5.5",
+          "resolved": "https://registry.npm.taobao.org/bluebird/download/bluebird-3.5.5.tgz",
+          "integrity": "sha1-qNCv1zJR7/u9X+OEp31zADwXpx8=",
+          "dev": true
+        }
+      }
+    },
+    "big.js": {
+      "version": "5.2.2",
+      "resolved": "http://registry.npm.taobao.org/big.js/download/big.js-5.2.2.tgz",
+      "integrity": "sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg=",
+      "dev": true
+    },
+    "binary-extensions": {
+      "version": "1.13.1",
+      "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz",
+      "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U=",
+      "dev": true
+    },
+    "block-stream": {
+      "version": "0.0.9",
+      "resolved": "https://registry.npm.taobao.org/block-stream/download/block-stream-0.0.9.tgz",
+      "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
+      "dev": true,
+      "requires": {
+        "inherits": "~2.0.0"
+      }
+    },
+    "bluebird": {
+      "version": "3.5.4",
+      "resolved": "http://registry.npm.taobao.org/bluebird/download/bluebird-3.5.4.tgz",
+      "integrity": "sha1-1sxmFZXeMNWzr1/O3TwLPvbsVxQ=",
+      "dev": true
+    },
+    "bn.js": {
+      "version": "4.11.8",
+      "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.11.8.tgz",
+      "integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=",
+      "dev": true
+    },
+    "body-parser": {
+      "version": "1.19.0",
+      "resolved": "https://registry.npm.taobao.org/body-parser/download/body-parser-1.19.0.tgz",
+      "integrity": "sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io=",
+      "dev": true,
+      "requires": {
+        "bytes": "3.1.0",
+        "content-type": "~1.0.4",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
+        "on-finished": "~2.3.0",
+        "qs": "6.7.0",
+        "raw-body": "2.4.0",
+        "type-is": "~1.6.17"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz",
+          "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        },
+        "qs": {
+          "version": "6.7.0",
+          "resolved": "http://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz?cache=0&other_urls=http%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.7.0.tgz",
+          "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=",
+          "dev": true
+        }
+      }
+    },
+    "bonjour": {
+      "version": "3.5.0",
+      "resolved": "http://registry.npm.taobao.org/bonjour/download/bonjour-3.5.0.tgz",
+      "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
+      "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",
+          "resolved": "http://registry.npm.taobao.org/array-flatten/download/array-flatten-2.1.2.tgz",
+          "integrity": "sha1-JO+AoowaiTYX4hSbDG0NeIKTsJk=",
+          "dev": true
+        }
+      }
+    },
+    "boolbase": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/boolbase/download/boolbase-1.0.0.tgz",
+      "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
+      "dev": true
+    },
+    "brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "http://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz",
+      "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=",
+      "dev": true,
+      "requires": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "braces": {
+      "version": "2.3.2",
+      "resolved": "http://registry.npm.taobao.org/braces/download/braces-2.3.2.tgz",
+      "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=",
+      "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",
+          "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "brorand": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/brorand/download/brorand-1.1.0.tgz",
+      "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+      "dev": true
+    },
+    "browserify-aes": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/browserify-aes/download/browserify-aes-1.2.0.tgz",
+      "integrity": "sha1-Mmc0ZC9APavDADIJhTu3CtQo70g=",
+      "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",
+      "resolved": "http://registry.npm.taobao.org/browserify-cipher/download/browserify-cipher-1.0.1.tgz",
+      "integrity": "sha1-jWR0wbhwv9q807z8wZNKEOlPFfA=",
+      "dev": true,
+      "requires": {
+        "browserify-aes": "^1.0.4",
+        "browserify-des": "^1.0.0",
+        "evp_bytestokey": "^1.0.0"
+      }
+    },
+    "browserify-des": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/browserify-des/download/browserify-des-1.0.2.tgz",
+      "integrity": "sha1-OvTx9Zg5QDVy8cZiBDdfen9wPpw=",
+      "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.0.1",
+      "resolved": "http://registry.npm.taobao.org/browserify-rsa/download/browserify-rsa-4.0.1.tgz",
+      "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.0",
+        "randombytes": "^2.0.1"
+      }
+    },
+    "browserify-sign": {
+      "version": "4.0.4",
+      "resolved": "http://registry.npm.taobao.org/browserify-sign/download/browserify-sign-4.0.4.tgz",
+      "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.1",
+        "browserify-rsa": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "create-hmac": "^1.1.2",
+        "elliptic": "^6.0.0",
+        "inherits": "^2.0.1",
+        "parse-asn1": "^5.0.0"
+      }
+    },
+    "browserify-zlib": {
+      "version": "0.2.0",
+      "resolved": "http://registry.npm.taobao.org/browserify-zlib/download/browserify-zlib-0.2.0.tgz",
+      "integrity": "sha1-KGlFnZqjviRf6P4sofRuLn9U1z8=",
+      "dev": true,
+      "requires": {
+        "pako": "~1.0.5"
+      }
+    },
+    "browserslist": {
+      "version": "4.6.6",
+      "resolved": "https://registry.npm.taobao.org/browserslist/download/browserslist-4.6.6.tgz",
+      "integrity": "sha1-bkv0Z83lILydvfN0fa+gNTHOxFM=",
+      "dev": true,
+      "requires": {
+        "caniuse-lite": "^1.0.30000984",
+        "electron-to-chromium": "^1.3.191",
+        "node-releases": "^1.1.25"
+      }
+    },
+    "buffer": {
+      "version": "4.9.1",
+      "resolved": "http://registry.npm.taobao.org/buffer/download/buffer-4.9.1.tgz",
+      "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
+      "dev": true,
+      "requires": {
+        "base64-js": "^1.0.2",
+        "ieee754": "^1.1.4",
+        "isarray": "^1.0.0"
+      }
+    },
+    "buffer-from": {
+      "version": "1.1.1",
+      "resolved": "http://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz",
+      "integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=",
+      "dev": true
+    },
+    "buffer-indexof": {
+      "version": "1.1.1",
+      "resolved": "http://registry.npm.taobao.org/buffer-indexof/download/buffer-indexof-1.1.1.tgz",
+      "integrity": "sha1-Uvq8xqYG0aADAoAmSO9o9jnaJow=",
+      "dev": true
+    },
+    "buffer-xor": {
+      "version": "1.0.3",
+      "resolved": "http://registry.npm.taobao.org/buffer-xor/download/buffer-xor-1.0.3.tgz",
+      "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
+      "dev": true
+    },
+    "builtin-status-codes": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/builtin-status-codes/download/builtin-status-codes-3.0.0.tgz",
+      "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
+      "dev": true
+    },
+    "bytes": {
+      "version": "3.1.0",
+      "resolved": "http://registry.npm.taobao.org/bytes/download/bytes-3.1.0.tgz",
+      "integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY=",
+      "dev": true
+    },
+    "cacache": {
+      "version": "11.3.3",
+      "resolved": "https://registry.npm.taobao.org/cacache/download/cacache-11.3.3.tgz",
+      "integrity": "sha1-i9Kd+ManGKbr0tAQ2k15cq47utw=",
+      "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",
+        "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"
+      },
+      "dependencies": {
+        "bluebird": {
+          "version": "3.5.5",
+          "resolved": "https://registry.npm.taobao.org/bluebird/download/bluebird-3.5.5.tgz",
+          "integrity": "sha1-qNCv1zJR7/u9X+OEp31zADwXpx8=",
+          "dev": true
+        },
+        "glob": {
+          "version": "7.1.4",
+          "resolved": "https://registry.npm.taobao.org/glob/download/glob-7.1.4.tgz",
+          "integrity": "sha1-qmCKL2xXetNX4a5aXCbZqNGWklU=",
+          "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"
+          }
+        }
+      }
+    },
+    "cache-base": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/cache-base/download/cache-base-1.0.1.tgz",
+      "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=",
+      "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",
+      "resolved": "https://registry.npm.taobao.org/cache-loader/download/cache-loader-2.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcache-loader%2Fdownload%2Fcache-loader-2.0.1.tgz",
+      "integrity": "sha1-V1j0GmLXwjlB48PHAW5vrrA6ywc=",
+      "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",
+          "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz",
+          "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=",
+          "dev": true,
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        }
+      }
+    },
+    "call-me-maybe": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/call-me-maybe/download/call-me-maybe-1.0.1.tgz",
+      "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=",
+      "dev": true
+    },
+    "caller-callsite": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/caller-callsite/download/caller-callsite-2.0.0.tgz",
+      "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
+      "dev": true,
+      "requires": {
+        "callsites": "^2.0.0"
+      },
+      "dependencies": {
+        "callsites": {
+          "version": "2.0.0",
+          "resolved": "http://registry.npm.taobao.org/callsites/download/callsites-2.0.0.tgz",
+          "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
+          "dev": true
+        }
+      }
+    },
+    "caller-path": {
+      "version": "0.1.0",
+      "resolved": "http://registry.npm.taobao.org/caller-path/download/caller-path-0.1.0.tgz",
+      "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "callsites": "^0.2.0"
+      }
+    },
+    "callsites": {
+      "version": "0.2.0",
+      "resolved": "http://registry.npm.taobao.org/callsites/download/callsites-0.2.0.tgz",
+      "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=",
+      "dev": true,
+      "optional": true
+    },
+    "camel-case": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/camel-case/download/camel-case-3.0.0.tgz",
+      "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=",
+      "dev": true,
+      "requires": {
+        "no-case": "^2.2.0",
+        "upper-case": "^1.1.1"
+      }
+    },
+    "camelcase": {
+      "version": "5.3.1",
+      "resolved": "http://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz",
+      "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=",
+      "dev": true
+    },
+    "camelcase-keys": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/camelcase-keys/download/camelcase-keys-2.1.0.tgz",
+      "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+      "dev": true,
+      "requires": {
+        "camelcase": "^2.0.0",
+        "map-obj": "^1.0.0"
+      },
+      "dependencies": {
+        "camelcase": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-2.1.1.tgz",
+          "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+          "dev": true
+        }
+      }
+    },
+    "caniuse-api": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/caniuse-api/download/caniuse-api-3.0.0.tgz",
+      "integrity": "sha1-Xk2Q4idJYdRikZl99Znj7QCO5MA=",
+      "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.30000984",
+      "resolved": "https://registry.npm.taobao.org/caniuse-lite/download/caniuse-lite-1.0.30000984.tgz",
+      "integrity": "sha1-3JbDxGnpvPxq1b3STHfskY6nb+A=",
+      "dev": true
+    },
+    "case-sensitive-paths-webpack-plugin": {
+      "version": "2.2.0",
+      "resolved": "http://registry.npm.taobao.org/case-sensitive-paths-webpack-plugin/download/case-sensitive-paths-webpack-plugin-2.2.0.tgz",
+      "integrity": "sha1-M3HvY2XvnCX6S4HBas4OnH3FjD4=",
+      "dev": true
+    },
+    "caseless": {
+      "version": "0.12.0",
+      "resolved": "http://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz",
+      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+      "dev": true
+    },
+    "chalk": {
+      "version": "2.4.2",
+      "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz",
+      "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=",
+      "dev": true,
+      "requires": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      }
+    },
+    "chardet": {
+      "version": "0.4.2",
+      "resolved": "https://registry.npm.taobao.org/chardet/download/chardet-0.4.2.tgz",
+      "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=",
+      "dev": true,
+      "optional": true
+    },
+    "check-types": {
+      "version": "8.0.3",
+      "resolved": "https://registry.npm.taobao.org/check-types/download/check-types-8.0.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcheck-types%2Fdownload%2Fcheck-types-8.0.3.tgz",
+      "integrity": "sha1-M1bMoZyIlUTy16le1JzlCKDs9VI=",
+      "dev": true
+    },
+    "chokidar": {
+      "version": "2.1.6",
+      "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-2.1.6.tgz?cache=0&sync_timestamp=1562457945399&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-2.1.6.tgz",
+      "integrity": "sha1-tsrWU6kp4kTOioNCRBZNJB+pVMU=",
+      "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"
+      }
+    },
+    "chownr": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/chownr/download/chownr-1.1.2.tgz",
+      "integrity": "sha1-oY8eCyacimpdPIbrKYvrFMPde/Y=",
+      "dev": true
+    },
+    "chrome-trace-event": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/chrome-trace-event/download/chrome-trace-event-1.0.2.tgz",
+      "integrity": "sha1-I0CQ7pfH1K0aLEvq4nUF3v/GCKQ=",
+      "dev": true,
+      "requires": {
+        "tslib": "^1.9.0"
+      }
+    },
+    "ci-info": {
+      "version": "1.6.0",
+      "resolved": "http://registry.npm.taobao.org/ci-info/download/ci-info-1.6.0.tgz",
+      "integrity": "sha1-LKINu5zrMtRSSmgzAzE/AwSx5Jc=",
+      "dev": true
+    },
+    "cipher-base": {
+      "version": "1.0.4",
+      "resolved": "http://registry.npm.taobao.org/cipher-base/download/cipher-base-1.0.4.tgz",
+      "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "circular-json": {
+      "version": "0.3.3",
+      "resolved": "http://registry.npm.taobao.org/circular-json/download/circular-json-0.3.3.tgz",
+      "integrity": "sha1-gVyZ6oT2gJUp0vRXkb34JxE1LWY=",
+      "dev": true,
+      "optional": true
+    },
+    "class-utils": {
+      "version": "0.3.6",
+      "resolved": "http://registry.npm.taobao.org/class-utils/download/class-utils-0.3.6.tgz",
+      "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=",
+      "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",
+          "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        }
+      }
+    },
+    "clean-css": {
+      "version": "4.2.1",
+      "resolved": "http://registry.npm.taobao.org/clean-css/download/clean-css-4.2.1.tgz",
+      "integrity": "sha1-LUEe92uFabbQyEBo2r6FsKpeXBc=",
+      "dev": true,
+      "requires": {
+        "source-map": "~0.6.0"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        }
+      }
+    },
+    "cli-cursor": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/cli-cursor/download/cli-cursor-2.1.0.tgz",
+      "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+      "dev": true,
+      "requires": {
+        "restore-cursor": "^2.0.0"
+      }
+    },
+    "cli-highlight": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npm.taobao.org/cli-highlight/download/cli-highlight-2.1.1.tgz",
+      "integrity": "sha1-IYAiPVFhixEvRQnPluSmx1Cwfpc=",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.3.0",
+        "highlight.js": "^9.6.0",
+        "mz": "^2.4.0",
+        "parse5": "^4.0.0",
+        "yargs": "^13.0.0"
+      }
+    },
+    "cli-spinners": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npm.taobao.org/cli-spinners/download/cli-spinners-2.2.0.tgz",
+      "integrity": "sha1-6LmI2SBsaSMC2O6DTnqFwBRNj3c=",
+      "dev": true
+    },
+    "cli-width": {
+      "version": "2.2.0",
+      "resolved": "http://registry.npm.taobao.org/cli-width/download/cli-width-2.2.0.tgz",
+      "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
+      "dev": true
+    },
+    "clipboardy": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/clipboardy/download/clipboardy-2.1.0.tgz",
+      "integrity": "sha1-ASOgyPrJLyVtxWM14LuL6XpJCaU=",
+      "dev": true,
+      "requires": {
+        "arch": "^2.1.1",
+        "execa": "^1.0.0"
+      }
+    },
+    "cliui": {
+      "version": "5.0.0",
+      "resolved": "http://registry.npm.taobao.org/cliui/download/cliui-5.0.0.tgz",
+      "integrity": "sha1-3u/P2y6AB4SqNPRvoI4GhRx7u8U=",
+      "dev": true,
+      "requires": {
+        "string-width": "^3.1.0",
+        "strip-ansi": "^5.2.0",
+        "wrap-ansi": "^5.1.0"
+      },
+      "dependencies": {
+        "string-width": {
+          "version": "3.1.0",
+          "resolved": "http://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz",
+          "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^7.0.1",
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^5.1.0"
+          }
+        },
+        "wrap-ansi": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-5.1.0.tgz",
+          "integrity": "sha1-H9H2cjXVttD+54EFYAG/tpTAOwk=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^3.2.0",
+            "string-width": "^3.0.0",
+            "strip-ansi": "^5.0.0"
+          }
+        }
+      }
+    },
+    "clone": {
+      "version": "1.0.4",
+      "resolved": "http://registry.npm.taobao.org/clone/download/clone-1.0.4.tgz",
+      "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
+      "dev": true
+    },
+    "clone-deep": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npm.taobao.org/clone-deep/download/clone-deep-2.0.2.tgz",
+      "integrity": "sha1-ANs6Hhc2VnMNEYjD1qztbX6pdxM=",
+      "dev": true,
+      "requires": {
+        "for-own": "^1.0.0",
+        "is-plain-object": "^2.0.4",
+        "kind-of": "^6.0.0",
+        "shallow-clone": "^1.0.0"
+      }
+    },
+    "co": {
+      "version": "4.6.0",
+      "resolved": "http://registry.npm.taobao.org/co/download/co-4.6.0.tgz",
+      "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+      "dev": true
+    },
+    "coa": {
+      "version": "2.0.2",
+      "resolved": "http://registry.npm.taobao.org/coa/download/coa-2.0.2.tgz",
+      "integrity": "sha1-Q/bCEVG07yv1cYfbDXPeIp4+fsM=",
+      "dev": true,
+      "requires": {
+        "@types/q": "^1.5.1",
+        "chalk": "^2.4.1",
+        "q": "^1.1.2"
+      }
+    },
+    "code-point-at": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/code-point-at/download/code-point-at-1.1.0.tgz",
+      "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+      "dev": true
+    },
+    "collection-visit": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/collection-visit/download/collection-visit-1.0.0.tgz",
+      "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+      "dev": true,
+      "requires": {
+        "map-visit": "^1.0.0",
+        "object-visit": "^1.0.0"
+      }
+    },
+    "color": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npm.taobao.org/color/download/color-3.1.2.tgz",
+      "integrity": "sha1-aBSOf4XUGtdknF+oyBBvCY0inhA=",
+      "dev": true,
+      "requires": {
+        "color-convert": "^1.9.1",
+        "color-string": "^1.5.2"
+      }
+    },
+    "color-convert": {
+      "version": "1.9.3",
+      "resolved": "http://registry.npm.taobao.org/color-convert/download/color-convert-1.9.3.tgz",
+      "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=",
+      "dev": true,
+      "requires": {
+        "color-name": "1.1.3"
+      }
+    },
+    "color-name": {
+      "version": "1.1.3",
+      "resolved": "http://registry.npm.taobao.org/color-name/download/color-name-1.1.3.tgz",
+      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+      "dev": true
+    },
+    "color-string": {
+      "version": "1.5.3",
+      "resolved": "http://registry.npm.taobao.org/color-string/download/color-string-1.5.3.tgz",
+      "integrity": "sha1-ybvF8BtYtUkvPWhXRZy2WQziBMw=",
+      "dev": true,
+      "requires": {
+        "color-name": "^1.0.0",
+        "simple-swizzle": "^0.2.2"
+      }
+    },
+    "combined-stream": {
+      "version": "1.0.7",
+      "resolved": "http://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.7.tgz",
+      "integrity": "sha1-LR0kMXr7ir6V1tLAsHtXgTU52Cg=",
+      "dev": true,
+      "requires": {
+        "delayed-stream": "~1.0.0"
+      }
+    },
+    "commander": {
+      "version": "2.20.0",
+      "resolved": "http://registry.npm.taobao.org/commander/download/commander-2.20.0.tgz",
+      "integrity": "sha1-1YuytcHuj4ew00ACfp6U4iLFpCI=",
+      "dev": true
+    },
+    "commondir": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/commondir/download/commondir-1.0.1.tgz",
+      "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+      "dev": true
+    },
+    "component-emitter": {
+      "version": "1.2.1",
+      "resolved": "http://registry.npm.taobao.org/component-emitter/download/component-emitter-1.2.1.tgz",
+      "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
+      "dev": true
+    },
+    "compressible": {
+      "version": "2.0.17",
+      "resolved": "https://registry.npm.taobao.org/compressible/download/compressible-2.0.17.tgz",
+      "integrity": "sha1-bowQihatWDhKl386SCyiC/8vOME=",
+      "dev": true,
+      "requires": {
+        "mime-db": ">= 1.40.0 < 2"
+      },
+      "dependencies": {
+        "mime-db": {
+          "version": "1.40.0",
+          "resolved": "https://registry.npm.taobao.org/mime-db/download/mime-db-1.40.0.tgz",
+          "integrity": "sha1-plBX6ZjbCQ9zKmj2wnbTh9QSbDI=",
+          "dev": true
+        }
+      }
+    },
+    "compression": {
+      "version": "1.7.4",
+      "resolved": "http://registry.npm.taobao.org/compression/download/compression-1.7.4.tgz",
+      "integrity": "sha1-lVI+/xcMpXwpoMpB5v4TH0Hlu48=",
+      "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",
+          "resolved": "http://registry.npm.taobao.org/bytes/download/bytes-3.0.0.tgz",
+          "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+          "dev": true
+        },
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz",
+          "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        }
+      }
+    },
+    "concat-map": {
+      "version": "0.0.1",
+      "resolved": "http://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz",
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+      "dev": true
+    },
+    "concat-stream": {
+      "version": "1.6.2",
+      "resolved": "http://registry.npm.taobao.org/concat-stream/download/concat-stream-1.6.2.tgz",
+      "integrity": "sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ=",
+      "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",
+      "resolved": "http://registry.npm.taobao.org/connect-history-api-fallback/download/connect-history-api-fallback-1.6.0.tgz",
+      "integrity": "sha1-izIIk1kwjRERFdgcrT/Oq4iPl7w=",
+      "dev": true
+    },
+    "console-browserify": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/console-browserify/download/console-browserify-1.1.0.tgz",
+      "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
+      "dev": true,
+      "requires": {
+        "date-now": "^0.1.4"
+      }
+    },
+    "console-control-strings": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/console-control-strings/download/console-control-strings-1.1.0.tgz",
+      "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
+      "dev": true
+    },
+    "consolidate": {
+      "version": "0.15.1",
+      "resolved": "http://registry.npm.taobao.org/consolidate/download/consolidate-0.15.1.tgz",
+      "integrity": "sha1-IasEMjXHGgfUXZqtmFk7DbpWurc=",
+      "dev": true,
+      "requires": {
+        "bluebird": "^3.1.1"
+      }
+    },
+    "constants-browserify": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/constants-browserify/download/constants-browserify-1.0.0.tgz",
+      "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
+      "dev": true
+    },
+    "contains-path": {
+      "version": "0.1.0",
+      "resolved": "http://registry.npm.taobao.org/contains-path/download/contains-path-0.1.0.tgz",
+      "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
+      "dev": true
+    },
+    "content-disposition": {
+      "version": "0.5.3",
+      "resolved": "http://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz",
+      "integrity": "sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "5.1.2"
+      }
+    },
+    "content-type": {
+      "version": "1.0.4",
+      "resolved": "http://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz",
+      "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=",
+      "dev": true
+    },
+    "convert-source-map": {
+      "version": "1.6.0",
+      "resolved": "http://registry.npm.taobao.org/convert-source-map/download/convert-source-map-1.6.0.tgz",
+      "integrity": "sha1-UbU3qMQ+DwTewZk7/83VBOdYrCA=",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "~5.1.1"
+      }
+    },
+    "cookie": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npm.taobao.org/cookie/download/cookie-0.4.0.tgz",
+      "integrity": "sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo=",
+      "dev": true
+    },
+    "cookie-signature": {
+      "version": "1.0.6",
+      "resolved": "http://registry.npm.taobao.org/cookie-signature/download/cookie-signature-1.0.6.tgz",
+      "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
+      "dev": true
+    },
+    "copy-concurrently": {
+      "version": "1.0.5",
+      "resolved": "http://registry.npm.taobao.org/copy-concurrently/download/copy-concurrently-1.0.5.tgz",
+      "integrity": "sha1-kilzmMrjSTf8r9bsgTnBgFHwteA=",
+      "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",
+      "resolved": "http://registry.npm.taobao.org/copy-descriptor/download/copy-descriptor-0.1.1.tgz",
+      "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+      "dev": true
+    },
+    "copy-webpack-plugin": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npm.taobao.org/copy-webpack-plugin/download/copy-webpack-plugin-4.6.0.tgz",
+      "integrity": "sha1-5/QN2KaEd9QF3Rt6hUquMksVi64=",
+      "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",
+          "resolved": "https://registry.npm.taobao.org/cacache/download/cacache-10.0.4.tgz",
+          "integrity": "sha1-ZFI2eZnv+dQYiu/ZoU6dfGomNGA=",
+          "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",
+          "resolved": "http://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-1.0.0.tgz",
+          "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=",
+          "dev": true,
+          "requires": {
+            "commondir": "^1.0.1",
+            "make-dir": "^1.0.0",
+            "pkg-dir": "^2.0.0"
+          }
+        },
+        "globby": {
+          "version": "7.1.1",
+          "resolved": "https://registry.npm.taobao.org/globby/download/globby-7.1.1.tgz",
+          "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=",
+          "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"
+          }
+        },
+        "lru-cache": {
+          "version": "4.1.5",
+          "resolved": "http://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz",
+          "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=",
+          "dev": true,
+          "requires": {
+            "pseudomap": "^1.0.2",
+            "yallist": "^2.1.2"
+          }
+        },
+        "make-dir": {
+          "version": "1.3.0",
+          "resolved": "http://registry.npm.taobao.org/make-dir/download/make-dir-1.3.0.tgz?cache=0&other_urls=http%3A%2F%2Fregistry.npm.taobao.org%2Fmake-dir%2Fdownload%2Fmake-dir-1.3.0.tgz",
+          "integrity": "sha1-ecEDO4BRW9bSTsmTPoYMp17ifww=",
+          "dev": true,
+          "requires": {
+            "pify": "^3.0.0"
+          }
+        },
+        "mississippi": {
+          "version": "2.0.0",
+          "resolved": "http://registry.npm.taobao.org/mississippi/download/mississippi-2.0.0.tgz",
+          "integrity": "sha1-NEKlCPr8KFAEhv7qmUCWduTuWm8=",
+          "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"
+          }
+        },
+        "pify": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz",
+          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+          "dev": true
+        },
+        "pkg-dir": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-2.0.0.tgz",
+          "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
+          "dev": true,
+          "requires": {
+            "find-up": "^2.1.0"
+          }
+        },
+        "pump": {
+          "version": "2.0.1",
+          "resolved": "http://registry.npm.taobao.org/pump/download/pump-2.0.1.tgz",
+          "integrity": "sha1-Ejma3W5M91Jtlzy8i1zi4pCLOQk=",
+          "dev": true,
+          "requires": {
+            "end-of-stream": "^1.1.0",
+            "once": "^1.3.1"
+          }
+        },
+        "slash": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npm.taobao.org/slash/download/slash-1.0.0.tgz",
+          "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
+          "dev": true
+        },
+        "ssri": {
+          "version": "5.3.0",
+          "resolved": "http://registry.npm.taobao.org/ssri/download/ssri-5.3.0.tgz",
+          "integrity": "sha1-ujhyycbTOgcEp9cf8EXl7EiZnQY=",
+          "dev": true,
+          "requires": {
+            "safe-buffer": "^5.1.1"
+          }
+        },
+        "yallist": {
+          "version": "2.1.2",
+          "resolved": "http://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz",
+          "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+          "dev": true
+        }
+      }
+    },
+    "core-js": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npm.taobao.org/core-js/download/core-js-2.6.9.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js%2Fdownload%2Fcore-js-2.6.9.tgz",
+      "integrity": "sha1-a0shRiDINBUuF5Mjcn/Bl0GwhPI="
+    },
+    "core-util-is": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz",
+      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+      "dev": true
+    },
+    "cosmiconfig": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npm.taobao.org/cosmiconfig/download/cosmiconfig-5.2.1.tgz",
+      "integrity": "sha1-BA9yaAnFked6F8CjYmykW08Wixo=",
+      "dev": true,
+      "requires": {
+        "import-fresh": "^2.0.0",
+        "is-directory": "^0.3.1",
+        "js-yaml": "^3.13.1",
+        "parse-json": "^4.0.0"
+      }
+    },
+    "create-ecdh": {
+      "version": "4.0.3",
+      "resolved": "http://registry.npm.taobao.org/create-ecdh/download/create-ecdh-4.0.3.tgz",
+      "integrity": "sha1-yREbbzMEXEaX8UR4f5JUzcd8Rf8=",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.0",
+        "elliptic": "^6.0.0"
+      }
+    },
+    "create-hash": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/create-hash/download/create-hash-1.2.0.tgz",
+      "integrity": "sha1-iJB4rxGmN1a8+1m9IhmWvjqe8ZY=",
+      "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",
+      "resolved": "http://registry.npm.taobao.org/create-hmac/download/create-hmac-1.1.7.tgz",
+      "integrity": "sha1-aRcMeLOrlXFHsriwRXLkfq0iQ/8=",
+      "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",
+      "resolved": "http://registry.npm.taobao.org/cross-spawn/download/cross-spawn-6.0.5.tgz",
+      "integrity": "sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=",
+      "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"
+      }
+    },
+    "crypto-browserify": {
+      "version": "3.12.0",
+      "resolved": "http://registry.npm.taobao.org/crypto-browserify/download/crypto-browserify-3.12.0.tgz",
+      "integrity": "sha1-OWz58xN/A+S45TLFj2mCVOAPgOw=",
+      "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",
+      "resolved": "http://registry.npm.taobao.org/css-color-names/download/css-color-names-0.0.4.tgz",
+      "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=",
+      "dev": true
+    },
+    "css-declaration-sorter": {
+      "version": "4.0.1",
+      "resolved": "http://registry.npm.taobao.org/css-declaration-sorter/download/css-declaration-sorter-4.0.1.tgz",
+      "integrity": "sha1-wZiUD2OnbX42wecQGLABchBUyyI=",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.1",
+        "timsort": "^0.3.0"
+      }
+    },
+    "css-loader": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/css-loader/download/css-loader-1.0.1.tgz?cache=0&sync_timestamp=1563445723109&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-loader%2Fdownload%2Fcss-loader-1.0.1.tgz",
+      "integrity": "sha1-aIW7UjOzXsR7AGBX2gHMZAtref4=",
+      "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"
+      },
+      "dependencies": {
+        "postcss": {
+          "version": "6.0.23",
+          "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-6.0.23.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss%2Fdownload%2Fpostcss-6.0.23.tgz",
+          "integrity": "sha1-YcgswyisYOZ3ZF+XkFTrmLwOMyQ=",
+          "dev": true,
+          "requires": {
+            "chalk": "^2.4.1",
+            "source-map": "^0.6.1",
+            "supports-color": "^5.4.0"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        }
+      }
+    },
+    "css-select": {
+      "version": "2.0.2",
+      "resolved": "http://registry.npm.taobao.org/css-select/download/css-select-2.0.2.tgz",
+      "integrity": "sha1-q0OGzsnh9miFVWSxfDcztDsqXt4=",
+      "dev": true,
+      "requires": {
+        "boolbase": "^1.0.0",
+        "css-what": "^2.1.2",
+        "domutils": "^1.7.0",
+        "nth-check": "^1.0.2"
+      }
+    },
+    "css-select-base-adapter": {
+      "version": "0.1.1",
+      "resolved": "http://registry.npm.taobao.org/css-select-base-adapter/download/css-select-base-adapter-0.1.1.tgz",
+      "integrity": "sha1-Oy/0lyzDYquIVhUHqVQIoUMhNdc=",
+      "dev": true
+    },
+    "css-selector-tokenizer": {
+      "version": "0.7.1",
+      "resolved": "http://registry.npm.taobao.org/css-selector-tokenizer/download/css-selector-tokenizer-0.7.1.tgz",
+      "integrity": "sha1-oXcnGovKUBkXL0+JH8bu2cv2jV0=",
+      "dev": true,
+      "requires": {
+        "cssesc": "^0.1.0",
+        "fastparse": "^1.1.1",
+        "regexpu-core": "^1.0.0"
+      },
+      "dependencies": {
+        "cssesc": {
+          "version": "0.1.0",
+          "resolved": "http://registry.npm.taobao.org/cssesc/download/cssesc-0.1.0.tgz",
+          "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=",
+          "dev": true
+        },
+        "jsesc": {
+          "version": "0.5.0",
+          "resolved": "http://registry.npm.taobao.org/jsesc/download/jsesc-0.5.0.tgz",
+          "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
+          "dev": true
+        },
+        "regexpu-core": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/regexpu-core/download/regexpu-core-1.0.0.tgz",
+          "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=",
+          "dev": true,
+          "requires": {
+            "regenerate": "^1.2.1",
+            "regjsgen": "^0.2.0",
+            "regjsparser": "^0.1.4"
+          }
+        },
+        "regjsgen": {
+          "version": "0.2.0",
+          "resolved": "http://registry.npm.taobao.org/regjsgen/download/regjsgen-0.2.0.tgz",
+          "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=",
+          "dev": true
+        },
+        "regjsparser": {
+          "version": "0.1.5",
+          "resolved": "http://registry.npm.taobao.org/regjsparser/download/regjsparser-0.1.5.tgz",
+          "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
+          "dev": true,
+          "requires": {
+            "jsesc": "~0.5.0"
+          }
+        }
+      }
+    },
+    "css-tree": {
+      "version": "1.0.0-alpha.33",
+      "resolved": "https://registry.npm.taobao.org/css-tree/download/css-tree-1.0.0-alpha.33.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-tree%2Fdownload%2Fcss-tree-1.0.0-alpha.33.tgz",
+      "integrity": "sha1-lw4g5akfejeN3Q/FjQtsjU876T4=",
+      "dev": true,
+      "requires": {
+        "mdn-data": "2.0.4",
+        "source-map": "^0.5.3"
+      }
+    },
+    "css-unit-converter": {
+      "version": "1.1.1",
+      "resolved": "http://registry.npm.taobao.org/css-unit-converter/download/css-unit-converter-1.1.1.tgz",
+      "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=",
+      "dev": true
+    },
+    "css-what": {
+      "version": "2.1.3",
+      "resolved": "http://registry.npm.taobao.org/css-what/download/css-what-2.1.3.tgz",
+      "integrity": "sha1-ptdgRXM2X+dGhsPzEcVlE9iChfI=",
+      "dev": true
+    },
+    "cssesc": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/cssesc/download/cssesc-2.0.0.tgz",
+      "integrity": "sha1-OxO9G7HLNuG8taTc0n9UxdyzVwM=",
+      "dev": true
+    },
+    "cssnano": {
+      "version": "4.1.10",
+      "resolved": "http://registry.npm.taobao.org/cssnano/download/cssnano-4.1.10.tgz",
+      "integrity": "sha1-CsQfCxPRPUZUh+ERt3jULaYxuLI=",
+      "dev": true,
+      "requires": {
+        "cosmiconfig": "^5.0.0",
+        "cssnano-preset-default": "^4.0.7",
+        "is-resolvable": "^1.0.0",
+        "postcss": "^7.0.0"
+      }
+    },
+    "cssnano-preset-default": {
+      "version": "4.0.7",
+      "resolved": "http://registry.npm.taobao.org/cssnano-preset-default/download/cssnano-preset-default-4.0.7.tgz",
+      "integrity": "sha1-UexmLM/KD4izltzZZ5zbkxvhf3Y=",
+      "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.2",
+        "postcss-unique-selectors": "^4.0.1"
+      }
+    },
+    "cssnano-util-get-arguments": {
+      "version": "4.0.0",
+      "resolved": "http://registry.npm.taobao.org/cssnano-util-get-arguments/download/cssnano-util-get-arguments-4.0.0.tgz",
+      "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=",
+      "dev": true
+    },
+    "cssnano-util-get-match": {
+      "version": "4.0.0",
+      "resolved": "http://registry.npm.taobao.org/cssnano-util-get-match/download/cssnano-util-get-match-4.0.0.tgz",
+      "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=",
+      "dev": true
+    },
+    "cssnano-util-raw-cache": {
+      "version": "4.0.1",
+      "resolved": "http://registry.npm.taobao.org/cssnano-util-raw-cache/download/cssnano-util-raw-cache-4.0.1.tgz",
+      "integrity": "sha1-sm1f1fcqEd/np4RvtMZyYPlr8oI=",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "cssnano-util-same-parent": {
+      "version": "4.0.1",
+      "resolved": "http://registry.npm.taobao.org/cssnano-util-same-parent/download/cssnano-util-same-parent-4.0.1.tgz",
+      "integrity": "sha1-V0CC+yhZ0ttDOFWDXZqEVuoYu/M=",
+      "dev": true
+    },
+    "csso": {
+      "version": "3.5.1",
+      "resolved": "http://registry.npm.taobao.org/csso/download/csso-3.5.1.tgz",
+      "integrity": "sha1-e564vmFiiXPBsmHhadLwJACOdYs=",
+      "dev": true,
+      "requires": {
+        "css-tree": "1.0.0-alpha.29"
+      },
+      "dependencies": {
+        "css-tree": {
+          "version": "1.0.0-alpha.29",
+          "resolved": "https://registry.npm.taobao.org/css-tree/download/css-tree-1.0.0-alpha.29.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-tree%2Fdownload%2Fcss-tree-1.0.0-alpha.29.tgz",
+          "integrity": "sha1-P6nU7zFCy9HDAedmTB81K9gvWjk=",
+          "dev": true,
+          "requires": {
+            "mdn-data": "~1.1.0",
+            "source-map": "^0.5.3"
+          }
+        },
+        "mdn-data": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npm.taobao.org/mdn-data/download/mdn-data-1.1.4.tgz?cache=0&sync_timestamp=1562673334420&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmdn-data%2Fdownload%2Fmdn-data-1.1.4.tgz",
+          "integrity": "sha1-ULXU/8RXUnZXPE7tuHgIEqhBnwE=",
+          "dev": true
+        }
+      }
+    },
+    "current-script-polyfill": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/current-script-polyfill/download/current-script-polyfill-1.0.0.tgz",
+      "integrity": "sha1-8xz35PPiGLBybnOMqSoC00iO9hU=",
+      "dev": true
+    },
+    "currently-unhandled": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npm.taobao.org/currently-unhandled/download/currently-unhandled-0.4.1.tgz",
+      "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+      "dev": true,
+      "requires": {
+        "array-find-index": "^1.0.1"
+      }
+    },
+    "cyclist": {
+      "version": "0.2.2",
+      "resolved": "http://registry.npm.taobao.org/cyclist/download/cyclist-0.2.2.tgz",
+      "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=",
+      "dev": true
+    },
+    "dashdash": {
+      "version": "1.14.1",
+      "resolved": "http://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz",
+      "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0"
+      }
+    },
+    "date-now": {
+      "version": "0.1.4",
+      "resolved": "http://registry.npm.taobao.org/date-now/download/date-now-0.1.4.tgz",
+      "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
+      "dev": true
+    },
+    "de-indent": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/de-indent/download/de-indent-1.0.2.tgz",
+      "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=",
+      "dev": true
+    },
+    "debug": {
+      "version": "4.1.1",
+      "resolved": "http://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz",
+      "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=",
+      "dev": true,
+      "requires": {
+        "ms": "^2.1.1"
+      }
+    },
+    "decamelize": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz",
+      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+      "dev": true
+    },
+    "decode-uri-component": {
+      "version": "0.2.0",
+      "resolved": "http://registry.npm.taobao.org/decode-uri-component/download/decode-uri-component-0.2.0.tgz",
+      "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+      "dev": true
+    },
+    "deep-equal": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/deep-equal/download/deep-equal-1.0.1.tgz",
+      "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
+      "dev": true
+    },
+    "deep-is": {
+      "version": "0.1.3",
+      "resolved": "http://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz",
+      "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+      "dev": true
+    },
+    "deepmerge": {
+      "version": "1.5.2",
+      "resolved": "http://registry.npm.taobao.org/deepmerge/download/deepmerge-1.5.2.tgz",
+      "integrity": "sha1-EEmdhohEza1P7ghC34x/bwyVp1M="
+    },
+    "default-gateway": {
+      "version": "5.0.2",
+      "resolved": "https://registry.npm.taobao.org/default-gateway/download/default-gateway-5.0.2.tgz",
+      "integrity": "sha1-0tihPW/uQG2TZdGeya3MuKYLgrM=",
+      "dev": true,
+      "requires": {
+        "execa": "^1.0.0",
+        "ip-regex": "^2.1.0"
+      }
+    },
+    "defaults": {
+      "version": "1.0.3",
+      "resolved": "http://registry.npm.taobao.org/defaults/download/defaults-1.0.3.tgz",
+      "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
+      "dev": true,
+      "requires": {
+        "clone": "^1.0.2"
+      }
+    },
+    "define-properties": {
+      "version": "1.1.3",
+      "resolved": "http://registry.npm.taobao.org/define-properties/download/define-properties-1.1.3.tgz",
+      "integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=",
+      "dev": true,
+      "requires": {
+        "object-keys": "^1.0.12"
+      }
+    },
+    "define-property": {
+      "version": "2.0.2",
+      "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-2.0.2.tgz",
+      "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=",
+      "dev": true,
+      "requires": {
+        "is-descriptor": "^1.0.2",
+        "isobject": "^3.0.1"
+      },
+      "dependencies": {
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "http://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+          "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
+      }
+    },
+    "del": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npm.taobao.org/del/download/del-4.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdel%2Fdownload%2Fdel-4.1.1.tgz",
+      "integrity": "sha1-no8RciLqRKMf86FWwEm5kFKp8LQ=",
+      "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",
+          "resolved": "https://registry.npm.taobao.org/globby/download/globby-6.1.0.tgz",
+          "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+          "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",
+              "resolved": "http://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz",
+              "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+              "dev": true
+            }
+          }
+        }
+      }
+    },
+    "delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz",
+      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+      "dev": true
+    },
+    "delegates": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/delegates/download/delegates-1.0.0.tgz",
+      "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
+      "dev": true
+    },
+    "depd": {
+      "version": "1.1.2",
+      "resolved": "http://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz",
+      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+      "dev": true
+    },
+    "des.js": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/des.js/download/des.js-1.0.0.tgz",
+      "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "destroy": {
+      "version": "1.0.4",
+      "resolved": "http://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz",
+      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
+      "dev": true
+    },
+    "detect-node": {
+      "version": "2.0.4",
+      "resolved": "http://registry.npm.taobao.org/detect-node/download/detect-node-2.0.4.tgz",
+      "integrity": "sha1-AU7o+PZpxcWAI9pkuBecCDooxGw=",
+      "dev": true
+    },
+    "diffie-hellman": {
+      "version": "5.0.3",
+      "resolved": "http://registry.npm.taobao.org/diffie-hellman/download/diffie-hellman-5.0.3.tgz",
+      "integrity": "sha1-QOjumPVaIUlgcUaSHGPhrl89KHU=",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.0",
+        "miller-rabin": "^4.0.0",
+        "randombytes": "^2.0.0"
+      }
+    },
+    "dir-glob": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npm.taobao.org/dir-glob/download/dir-glob-2.2.2.tgz",
+      "integrity": "sha1-+gnwaUFTyJGLGLoN6vrpR2n8UMQ=",
+      "dev": true,
+      "requires": {
+        "path-type": "^3.0.0"
+      }
+    },
+    "dns-equal": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/dns-equal/download/dns-equal-1.0.0.tgz",
+      "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=",
+      "dev": true
+    },
+    "dns-packet": {
+      "version": "1.3.1",
+      "resolved": "http://registry.npm.taobao.org/dns-packet/download/dns-packet-1.3.1.tgz",
+      "integrity": "sha1-EqpCaYEHW+UAuRDu3NC0fdfe2lo=",
+      "dev": true,
+      "requires": {
+        "ip": "^1.1.0",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "dns-txt": {
+      "version": "2.0.2",
+      "resolved": "http://registry.npm.taobao.org/dns-txt/download/dns-txt-2.0.2.tgz",
+      "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
+      "dev": true,
+      "requires": {
+        "buffer-indexof": "^1.0.0"
+      }
+    },
+    "doctrine": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/doctrine/download/doctrine-2.1.0.tgz",
+      "integrity": "sha1-XNAfwQFiG0LEzX9dGmYkNxbT850=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "esutils": "^2.0.2"
+      }
+    },
+    "dom-converter": {
+      "version": "0.2.0",
+      "resolved": "http://registry.npm.taobao.org/dom-converter/download/dom-converter-0.2.0.tgz",
+      "integrity": "sha1-ZyGp2u4uKTaClVtq/kFncWJ7t2g=",
+      "dev": true,
+      "requires": {
+        "utila": "~0.4"
+      }
+    },
+    "dom-serializer": {
+      "version": "0.1.1",
+      "resolved": "http://registry.npm.taobao.org/dom-serializer/download/dom-serializer-0.1.1.tgz",
+      "integrity": "sha1-HsQFnihLq+027sKUHUqXChic58A=",
+      "dev": true,
+      "requires": {
+        "domelementtype": "^1.3.0",
+        "entities": "^1.1.1"
+      }
+    },
+    "domain-browser": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/domain-browser/download/domain-browser-1.2.0.tgz",
+      "integrity": "sha1-PTH1AZGmdJ3RN1p/Ui6CPULlTto=",
+      "dev": true
+    },
+    "domelementtype": {
+      "version": "1.3.1",
+      "resolved": "http://registry.npm.taobao.org/domelementtype/download/domelementtype-1.3.1.tgz",
+      "integrity": "sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8=",
+      "dev": true
+    },
+    "domhandler": {
+      "version": "2.4.2",
+      "resolved": "http://registry.npm.taobao.org/domhandler/download/domhandler-2.4.2.tgz",
+      "integrity": "sha1-iAUJfpM9ZehVRvcm1g9euItE+AM=",
+      "dev": true,
+      "requires": {
+        "domelementtype": "1"
+      }
+    },
+    "domready": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npm.taobao.org/domready/download/domready-1.0.8.tgz",
+      "integrity": "sha1-kfJS5Ze2Wvd+dFriTdAYXV4m1Yw=",
+      "dev": true
+    },
+    "domutils": {
+      "version": "1.7.0",
+      "resolved": "http://registry.npm.taobao.org/domutils/download/domutils-1.7.0.tgz",
+      "integrity": "sha1-Vuo0HoNOBuZ0ivehyyXaZ+qfjCo=",
+      "dev": true,
+      "requires": {
+        "dom-serializer": "0",
+        "domelementtype": "1"
+      }
+    },
+    "dot-prop": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npm.taobao.org/dot-prop/download/dot-prop-4.2.0.tgz",
+      "integrity": "sha1-HxngwuGqDjJ5fEl5nyg3rGr2nFc=",
+      "dev": true,
+      "requires": {
+        "is-obj": "^1.0.0"
+      }
+    },
+    "dotenv": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npm.taobao.org/dotenv/download/dotenv-7.0.0.tgz",
+      "integrity": "sha1-or481Sc2ZzIG6KhftSEO6ilijnw=",
+      "dev": true
+    },
+    "dotenv-expand": {
+      "version": "5.1.0",
+      "resolved": "http://registry.npm.taobao.org/dotenv-expand/download/dotenv-expand-5.1.0.tgz",
+      "integrity": "sha1-P7rwIL/XlIhAcuomsel5HUWmKfA=",
+      "dev": true
+    },
+    "duplexer": {
+      "version": "0.1.1",
+      "resolved": "http://registry.npm.taobao.org/duplexer/download/duplexer-0.1.1.tgz",
+      "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
+      "dev": true
+    },
+    "duplexify": {
+      "version": "3.7.1",
+      "resolved": "https://registry.npm.taobao.org/duplexify/download/duplexify-3.7.1.tgz",
+      "integrity": "sha1-Kk31MX9sz9kfhtb9JdjYoQO4gwk=",
+      "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.0",
+      "resolved": "http://registry.npm.taobao.org/easy-stack/download/easy-stack-1.0.0.tgz",
+      "integrity": "sha1-EskbMIWjfwuqM26UhurEv5Tj54g=",
+      "dev": true
+    },
+    "ecc-jsbn": {
+      "version": "0.1.2",
+      "resolved": "http://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.2.tgz",
+      "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+      "dev": true,
+      "requires": {
+        "jsbn": "~0.1.0",
+        "safer-buffer": "^2.1.0"
+      }
+    },
+    "ee-first": {
+      "version": "1.1.1",
+      "resolved": "http://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz",
+      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+      "dev": true
+    },
+    "ejs": {
+      "version": "2.6.2",
+      "resolved": "https://registry.npm.taobao.org/ejs/download/ejs-2.6.2.tgz",
+      "integrity": "sha1-OjLGPRzRbREmbNRwOxT+xOdKtPY=",
+      "dev": true
+    },
+    "electron-to-chromium": {
+      "version": "1.3.196",
+      "resolved": "https://registry.npm.taobao.org/electron-to-chromium/download/electron-to-chromium-1.3.196.tgz",
+      "integrity": "sha1-GniFhViA+jrnqJCMRCdX5WHuyCs=",
+      "dev": true
+    },
+    "element-ui": {
+      "version": "2.10.1",
+      "resolved": "https://registry.npm.taobao.org/element-ui/download/element-ui-2.10.1.tgz?cache=0&sync_timestamp=1562053824530&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felement-ui%2Fdownload%2Felement-ui-2.10.1.tgz",
+      "integrity": "sha1-EBEBblDnb12ub7+chuU7blP8ues=",
+      "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.0",
+      "resolved": "https://registry.npm.taobao.org/elliptic/download/elliptic-6.5.0.tgz",
+      "integrity": "sha1-K47UyJG33jIA4UQSpbgkjHr1Bco=",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.4.0",
+        "brorand": "^1.0.1",
+        "hash.js": "^1.0.0",
+        "hmac-drbg": "^1.0.0",
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0",
+        "minimalistic-crypto-utils": "^1.0.0"
+      }
+    },
+    "emoji-regex": {
+      "version": "7.0.3",
+      "resolved": "http://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz",
+      "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=",
+      "dev": true
+    },
+    "emojis-list": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/emojis-list/download/emojis-list-2.1.0.tgz",
+      "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
+      "dev": true
+    },
+    "encodeurl": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz",
+      "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+      "dev": true
+    },
+    "end-of-stream": {
+      "version": "1.4.1",
+      "resolved": "http://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.1.tgz",
+      "integrity": "sha1-7SljTRm6ukY7bOa4CjchPqtx7EM=",
+      "dev": true,
+      "requires": {
+        "once": "^1.4.0"
+      }
+    },
+    "enhanced-resolve": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npm.taobao.org/enhanced-resolve/download/enhanced-resolve-4.1.0.tgz?cache=0&sync_timestamp=1562717843273&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fenhanced-resolve%2Fdownload%2Fenhanced-resolve-4.1.0.tgz",
+      "integrity": "sha1-Qcfgv9/nSsH/4eV61qXGyfN0Kn8=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "memory-fs": "^0.4.0",
+        "tapable": "^1.0.0"
+      }
+    },
+    "entities": {
+      "version": "1.1.2",
+      "resolved": "http://registry.npm.taobao.org/entities/download/entities-1.1.2.tgz",
+      "integrity": "sha1-vfpzUplmTfr9NFKe1PhSKidf6lY=",
+      "dev": true
+    },
+    "errno": {
+      "version": "0.1.7",
+      "resolved": "http://registry.npm.taobao.org/errno/download/errno-0.1.7.tgz",
+      "integrity": "sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg=",
+      "dev": true,
+      "requires": {
+        "prr": "~1.0.1"
+      }
+    },
+    "error-ex": {
+      "version": "1.3.2",
+      "resolved": "http://registry.npm.taobao.org/error-ex/download/error-ex-1.3.2.tgz",
+      "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=",
+      "dev": true,
+      "requires": {
+        "is-arrayish": "^0.2.1"
+      }
+    },
+    "error-stack-parser": {
+      "version": "2.0.2",
+      "resolved": "http://registry.npm.taobao.org/error-stack-parser/download/error-stack-parser-2.0.2.tgz",
+      "integrity": "sha1-Sujbqiv5CotFBwe5FJ3KvKE1Ug0=",
+      "dev": true,
+      "requires": {
+        "stackframe": "^1.0.4"
+      }
+    },
+    "es-abstract": {
+      "version": "1.13.0",
+      "resolved": "http://registry.npm.taobao.org/es-abstract/download/es-abstract-1.13.0.tgz",
+      "integrity": "sha1-rIYUX91QmdjdSVWMy6Lq+biOJOk=",
+      "dev": true,
+      "requires": {
+        "es-to-primitive": "^1.2.0",
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3",
+        "is-callable": "^1.1.4",
+        "is-regex": "^1.0.4",
+        "object-keys": "^1.0.12"
+      }
+    },
+    "es-to-primitive": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/es-to-primitive/download/es-to-primitive-1.2.0.tgz",
+      "integrity": "sha1-7fckeAM0VujdqO8J4ArZZQcH83c=",
+      "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",
+      "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
+      "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w=="
+    },
+    "escape-html": {
+      "version": "1.0.3",
+      "resolved": "http://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz",
+      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+      "dev": true
+    },
+    "escape-string-regexp": {
+      "version": "1.0.5",
+      "resolved": "http://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz",
+      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+      "dev": true
+    },
+    "eslint": {
+      "version": "5.16.0",
+      "resolved": "https://registry.npm.taobao.org/eslint/download/eslint-5.16.0.tgz",
+      "integrity": "sha1-oeOsGq5KP72Clvz496tzFMu2q+o=",
+      "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": {
+        "acorn": {
+          "version": "6.1.1",
+          "resolved": "http://registry.npm.taobao.org/acorn/download/acorn-6.1.1.tgz",
+          "integrity": "sha1-fSWuBbuK0fm2mRCOEJTs14hK3B8=",
+          "dev": true
+        },
+        "acorn-jsx": {
+          "version": "5.0.1",
+          "resolved": "http://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-5.0.1.tgz",
+          "integrity": "sha1-MqBk/ZJUKSFqCbFBECv90YX65A4=",
+          "dev": true
+        },
+        "chardet": {
+          "version": "0.7.0",
+          "resolved": "http://registry.npm.taobao.org/chardet/download/chardet-0.7.0.tgz",
+          "integrity": "sha1-kAlISfCTfy7twkJdDSip5fDLrZ4=",
+          "dev": true
+        },
+        "debug": {
+          "version": "4.1.1",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz",
+          "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "doctrine": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/doctrine/download/doctrine-3.0.0.tgz",
+          "integrity": "sha1-rd6+rXKmV023g2OdyHoSF3OXOWE=",
+          "dev": true,
+          "requires": {
+            "esutils": "^2.0.2"
+          }
+        },
+        "espree": {
+          "version": "5.0.1",
+          "resolved": "http://registry.npm.taobao.org/espree/download/espree-5.0.1.tgz",
+          "integrity": "sha1-XWUm+k/H8HiKXPdbFfMDI+L4H3o=",
+          "dev": true,
+          "requires": {
+            "acorn": "^6.0.7",
+            "acorn-jsx": "^5.0.0",
+            "eslint-visitor-keys": "^1.0.0"
+          }
+        },
+        "external-editor": {
+          "version": "3.0.3",
+          "resolved": "http://registry.npm.taobao.org/external-editor/download/external-editor-3.0.3.tgz",
+          "integrity": "sha1-WGbbKal4Jtvkvzr9JAcOrZ6kOic=",
+          "dev": true,
+          "requires": {
+            "chardet": "^0.7.0",
+            "iconv-lite": "^0.4.24",
+            "tmp": "^0.0.33"
+          }
+        },
+        "file-entry-cache": {
+          "version": "5.0.1",
+          "resolved": "http://registry.npm.taobao.org/file-entry-cache/download/file-entry-cache-5.0.1.tgz",
+          "integrity": "sha1-yg9u+m3T1WEzP7FFFQZcL6/fQ5w=",
+          "dev": true,
+          "requires": {
+            "flat-cache": "^2.0.1"
+          }
+        },
+        "flat-cache": {
+          "version": "2.0.1",
+          "resolved": "http://registry.npm.taobao.org/flat-cache/download/flat-cache-2.0.1.tgz",
+          "integrity": "sha1-XSltbwS9pEpGMKMBQTvbwuwIXsA=",
+          "dev": true,
+          "requires": {
+            "flatted": "^2.0.0",
+            "rimraf": "2.6.3",
+            "write": "1.0.3"
+          }
+        },
+        "ignore": {
+          "version": "4.0.6",
+          "resolved": "http://registry.npm.taobao.org/ignore/download/ignore-4.0.6.tgz",
+          "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=",
+          "dev": true
+        },
+        "import-fresh": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/import-fresh/download/import-fresh-3.0.0.tgz",
+          "integrity": "sha1-o9iX9CDKsOZxI2iX91vBS0iFw5A=",
+          "dev": true,
+          "requires": {
+            "parent-module": "^1.0.0",
+            "resolve-from": "^4.0.0"
+          }
+        },
+        "inquirer": {
+          "version": "6.3.1",
+          "resolved": "https://registry.npm.taobao.org/inquirer/download/inquirer-6.3.1.tgz",
+          "integrity": "sha1-ekE7XnlQgRATo9tJHGHR87d26Oc=",
+          "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.11",
+            "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": {
+            "strip-ansi": {
+              "version": "5.2.0",
+              "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz",
+              "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^4.1.0"
+              }
+            }
+          }
+        },
+        "regexpp": {
+          "version": "2.0.1",
+          "resolved": "http://registry.npm.taobao.org/regexpp/download/regexpp-2.0.1.tgz",
+          "integrity": "sha1-jRnTHPYySCtYkEn4KB+T28uk0H8=",
+          "dev": true
+        },
+        "resolve-from": {
+          "version": "4.0.0",
+          "resolved": "http://registry.npm.taobao.org/resolve-from/download/resolve-from-4.0.0.tgz",
+          "integrity": "sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=",
+          "dev": true
+        },
+        "slice-ansi": {
+          "version": "2.1.0",
+          "resolved": "http://registry.npm.taobao.org/slice-ansi/download/slice-ansi-2.1.0.tgz",
+          "integrity": "sha1-ys12k0YaY3pXiNkqfdT7oGjoFjY=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^3.2.0",
+            "astral-regex": "^1.0.0",
+            "is-fullwidth-code-point": "^2.0.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "4.0.0",
+          "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz",
+          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^3.0.0"
+          },
+          "dependencies": {
+            "ansi-regex": {
+              "version": "3.0.0",
+              "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+              "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+              "dev": true
+            }
+          }
+        },
+        "table": {
+          "version": "5.4.0",
+          "resolved": "https://registry.npm.taobao.org/table/download/table-5.4.0.tgz",
+          "integrity": "sha1-13KjIW5ogpkgpBoywY7aKGyV14A=",
+          "dev": true,
+          "requires": {
+            "ajv": "^6.9.1",
+            "lodash": "^4.17.11",
+            "slice-ansi": "^2.1.0",
+            "string-width": "^3.0.0"
+          },
+          "dependencies": {
+            "string-width": {
+              "version": "3.1.0",
+              "resolved": "http://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz",
+              "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=",
+              "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",
+              "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz",
+              "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^4.1.0"
+              }
+            }
+          }
+        },
+        "write": {
+          "version": "1.0.3",
+          "resolved": "http://registry.npm.taobao.org/write/download/write-1.0.3.tgz",
+          "integrity": "sha1-CADhRSO5I6OH5BUSPIZWFqrg9cM=",
+          "dev": true,
+          "requires": {
+            "mkdirp": "^0.5.1"
+          }
+        }
+      }
+    },
+    "eslint-config-standard": {
+      "version": "12.0.0",
+      "resolved": "http://registry.npm.taobao.org/eslint-config-standard/download/eslint-config-standard-12.0.0.tgz",
+      "integrity": "sha1-Y4tMZdsL1aQTGflruh8V3a0hB9k=",
+      "dev": true
+    },
+    "eslint-import-resolver-node": {
+      "version": "0.3.2",
+      "resolved": "http://registry.npm.taobao.org/eslint-import-resolver-node/download/eslint-import-resolver-node-0.3.2.tgz",
+      "integrity": "sha1-WPFfuDm40FdsqYBBNHaqskcttmo=",
+      "dev": true,
+      "requires": {
+        "debug": "^2.6.9",
+        "resolve": "^1.5.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz",
+          "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "http://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        }
+      }
+    },
+    "eslint-loader": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npm.taobao.org/eslint-loader/download/eslint-loader-2.2.1.tgz",
+      "integrity": "sha1-KLnBLaVAV68IReKmEScBova/gzc=",
+      "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-module-utils": {
+      "version": "2.3.0",
+      "resolved": "http://registry.npm.taobao.org/eslint-module-utils/download/eslint-module-utils-2.3.0.tgz",
+      "integrity": "sha1-VGF42rXgRsi1Yru1BwXiRW172kk=",
+      "dev": true,
+      "requires": {
+        "debug": "^2.6.8",
+        "pkg-dir": "^2.0.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz",
+          "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "find-up": {
+          "version": "2.1.0",
+          "resolved": "http://registry.npm.taobao.org/find-up/download/find-up-2.1.0.tgz",
+          "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+          "dev": true,
+          "requires": {
+            "locate-path": "^2.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "2.0.0",
+          "resolved": "http://registry.npm.taobao.org/locate-path/download/locate-path-2.0.0.tgz",
+          "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+          "dev": true,
+          "requires": {
+            "p-locate": "^2.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "http://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        },
+        "p-limit": {
+          "version": "1.3.0",
+          "resolved": "http://registry.npm.taobao.org/p-limit/download/p-limit-1.3.0.tgz",
+          "integrity": "sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=",
+          "dev": true,
+          "requires": {
+            "p-try": "^1.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "2.0.0",
+          "resolved": "http://registry.npm.taobao.org/p-locate/download/p-locate-2.0.0.tgz",
+          "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+          "dev": true,
+          "requires": {
+            "p-limit": "^1.1.0"
+          }
+        },
+        "p-try": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/p-try/download/p-try-1.0.0.tgz",
+          "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+          "dev": true
+        },
+        "pkg-dir": {
+          "version": "2.0.0",
+          "resolved": "http://registry.npm.taobao.org/pkg-dir/download/pkg-dir-2.0.0.tgz",
+          "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
+          "dev": true,
+          "requires": {
+            "find-up": "^2.1.0"
+          }
+        }
+      }
+    },
+    "eslint-plugin-es": {
+      "version": "1.4.0",
+      "resolved": "http://registry.npm.taobao.org/eslint-plugin-es/download/eslint-plugin-es-1.4.0.tgz",
+      "integrity": "sha1-R19luyDJk/wQ6Mj+d9HWAGgHLaY=",
+      "dev": true,
+      "requires": {
+        "eslint-utils": "^1.3.0",
+        "regexpp": "^2.0.1"
+      },
+      "dependencies": {
+        "regexpp": {
+          "version": "2.0.1",
+          "resolved": "http://registry.npm.taobao.org/regexpp/download/regexpp-2.0.1.tgz",
+          "integrity": "sha1-jRnTHPYySCtYkEn4KB+T28uk0H8=",
+          "dev": true
+        }
+      }
+    },
+    "eslint-plugin-import": {
+      "version": "2.16.0",
+      "resolved": "http://registry.npm.taobao.org/eslint-plugin-import/download/eslint-plugin-import-2.16.0.tgz",
+      "integrity": "sha1-l6w+ddB5HE+sDhXvOIUQIXvn9m8=",
+      "dev": true,
+      "requires": {
+        "contains-path": "^0.1.0",
+        "debug": "^2.6.9",
+        "doctrine": "1.5.0",
+        "eslint-import-resolver-node": "^0.3.2",
+        "eslint-module-utils": "^2.3.0",
+        "has": "^1.0.3",
+        "lodash": "^4.17.11",
+        "minimatch": "^3.0.4",
+        "read-pkg-up": "^2.0.0",
+        "resolve": "^1.9.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz",
+          "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "doctrine": {
+          "version": "1.5.0",
+          "resolved": "http://registry.npm.taobao.org/doctrine/download/doctrine-1.5.0.tgz",
+          "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
+          "dev": true,
+          "requires": {
+            "esutils": "^2.0.2",
+            "isarray": "^1.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "http://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        }
+      }
+    },
+    "eslint-plugin-node": {
+      "version": "8.0.1",
+      "resolved": "http://registry.npm.taobao.org/eslint-plugin-node/download/eslint-plugin-node-8.0.1.tgz",
+      "integrity": "sha1-Va41YAIoY9FB+noReZUyNApoWWQ=",
+      "dev": true,
+      "requires": {
+        "eslint-plugin-es": "^1.3.1",
+        "eslint-utils": "^1.3.1",
+        "ignore": "^5.0.2",
+        "minimatch": "^3.0.4",
+        "resolve": "^1.8.1",
+        "semver": "^5.5.0"
+      },
+      "dependencies": {
+        "ignore": {
+          "version": "5.0.6",
+          "resolved": "http://registry.npm.taobao.org/ignore/download/ignore-5.0.6.tgz",
+          "integrity": "sha1-Vi2sx+wn1nLd5DOqaDxUOyTBdpQ=",
+          "dev": true
+        }
+      }
+    },
+    "eslint-plugin-promise": {
+      "version": "4.1.1",
+      "resolved": "http://registry.npm.taobao.org/eslint-plugin-promise/download/eslint-plugin-promise-4.1.1.tgz",
+      "integrity": "sha1-HgjLaLWyzYg5+NWGTHlvVtgnRts=",
+      "dev": true
+    },
+    "eslint-plugin-standard": {
+      "version": "4.0.0",
+      "resolved": "http://registry.npm.taobao.org/eslint-plugin-standard/download/eslint-plugin-standard-4.0.0.tgz",
+      "integrity": "sha1-+EW0UQnJnNkOd3lpQKNEVGyPa1w=",
+      "dev": true
+    },
+    "eslint-plugin-vue": {
+      "version": "5.2.2",
+      "resolved": "http://registry.npm.taobao.org/eslint-plugin-vue/download/eslint-plugin-vue-5.2.2.tgz",
+      "integrity": "sha1-hmAYI7dyG3C8ktVPFyjPwDs2KDw=",
+      "dev": true,
+      "requires": {
+        "vue-eslint-parser": "^5.0.0"
+      },
+      "dependencies": {
+        "acorn": {
+          "version": "6.1.1",
+          "resolved": "http://registry.npm.taobao.org/acorn/download/acorn-6.1.1.tgz",
+          "integrity": "sha1-fSWuBbuK0fm2mRCOEJTs14hK3B8=",
+          "dev": true
+        },
+        "acorn-jsx": {
+          "version": "5.0.1",
+          "resolved": "http://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-5.0.1.tgz",
+          "integrity": "sha1-MqBk/ZJUKSFqCbFBECv90YX65A4=",
+          "dev": true
+        },
+        "debug": {
+          "version": "4.1.1",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz",
+          "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "espree": {
+          "version": "4.1.0",
+          "resolved": "http://registry.npm.taobao.org/espree/download/espree-4.1.0.tgz",
+          "integrity": "sha1-co1UUeD9FWwEOEp62J7VH/VOsl8=",
+          "dev": true,
+          "requires": {
+            "acorn": "^6.0.2",
+            "acorn-jsx": "^5.0.0",
+            "eslint-visitor-keys": "^1.0.0"
+          }
+        },
+        "vue-eslint-parser": {
+          "version": "5.0.0",
+          "resolved": "http://registry.npm.taobao.org/vue-eslint-parser/download/vue-eslint-parser-5.0.0.tgz",
+          "integrity": "sha1-APTk2pTsl0uCGib/DtD3p4QCuKE=",
+          "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"
+          }
+        }
+      }
+    },
+    "eslint-scope": {
+      "version": "4.0.3",
+      "resolved": "http://registry.npm.taobao.org/eslint-scope/download/eslint-scope-4.0.3.tgz",
+      "integrity": "sha1-ygODMxD2iJoyZHgaqC5j65z+eEg=",
+      "dev": true,
+      "requires": {
+        "esrecurse": "^4.1.0",
+        "estraverse": "^4.1.1"
+      }
+    },
+    "eslint-utils": {
+      "version": "1.3.1",
+      "resolved": "http://registry.npm.taobao.org/eslint-utils/download/eslint-utils-1.3.1.tgz",
+      "integrity": "sha1-moUbqJ7nxGA0b5fPiTnHKYgn5RI=",
+      "dev": true
+    },
+    "eslint-visitor-keys": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/eslint-visitor-keys/download/eslint-visitor-keys-1.0.0.tgz",
+      "integrity": "sha1-PzGA+y4pEBdxastMnW1bXDSmqB0=",
+      "dev": true
+    },
+    "espree": {
+      "version": "3.5.4",
+      "resolved": "https://registry.npm.taobao.org/espree/download/espree-3.5.4.tgz",
+      "integrity": "sha1-sPRHGHyKi+2US4FaZgvd9d610ac=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "acorn": "^5.5.0",
+        "acorn-jsx": "^3.0.0"
+      }
+    },
+    "esprima": {
+      "version": "4.0.1",
+      "resolved": "http://registry.npm.taobao.org/esprima/download/esprima-4.0.1.tgz",
+      "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=",
+      "dev": true
+    },
+    "esquery": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/esquery/download/esquery-1.0.1.tgz",
+      "integrity": "sha1-QGxRZYsfWZGl+bYrHcJbAOPlxwg=",
+      "dev": true,
+      "requires": {
+        "estraverse": "^4.0.0"
+      }
+    },
+    "esrecurse": {
+      "version": "4.2.1",
+      "resolved": "http://registry.npm.taobao.org/esrecurse/download/esrecurse-4.2.1.tgz",
+      "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=",
+      "dev": true,
+      "requires": {
+        "estraverse": "^4.1.0"
+      }
+    },
+    "estraverse": {
+      "version": "4.2.0",
+      "resolved": "http://registry.npm.taobao.org/estraverse/download/estraverse-4.2.0.tgz",
+      "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+      "dev": true
+    },
+    "esutils": {
+      "version": "2.0.2",
+      "resolved": "http://registry.npm.taobao.org/esutils/download/esutils-2.0.2.tgz",
+      "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+      "dev": true
+    },
+    "etag": {
+      "version": "1.8.1",
+      "resolved": "http://registry.npm.taobao.org/etag/download/etag-1.8.1.tgz",
+      "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
+      "dev": true
+    },
+    "event-pubsub": {
+      "version": "4.3.0",
+      "resolved": "http://registry.npm.taobao.org/event-pubsub/download/event-pubsub-4.3.0.tgz",
+      "integrity": "sha1-9o2Ba8KfHsAsU53FjI3UDOcss24=",
+      "dev": true
+    },
+    "eventemitter3": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-3.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feventemitter3%2Fdownload%2Feventemitter3-3.1.2.tgz",
+      "integrity": "sha1-LT1I+cNGaY/Og6hdfWZOmFNd9uc=",
+      "dev": true
+    },
+    "events": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/events/download/events-3.0.0.tgz",
+      "integrity": "sha1-mgoN+vYok9krh1uPJpjKQRSXPog=",
+      "dev": true
+    },
+    "eventsource": {
+      "version": "1.0.7",
+      "resolved": "http://registry.npm.taobao.org/eventsource/download/eventsource-1.0.7.tgz",
+      "integrity": "sha1-j7xyyT/NNAiAkLwKTmT0tc7m2NA=",
+      "dev": true,
+      "requires": {
+        "original": "^1.0.0"
+      }
+    },
+    "evp_bytestokey": {
+      "version": "1.0.3",
+      "resolved": "http://registry.npm.taobao.org/evp_bytestokey/download/evp_bytestokey-1.0.3.tgz",
+      "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=",
+      "dev": true,
+      "requires": {
+        "md5.js": "^1.3.4",
+        "safe-buffer": "^5.1.1"
+      }
+    },
+    "execa": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/execa/download/execa-1.0.0.tgz",
+      "integrity": "sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg=",
+      "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"
+      }
+    },
+    "expand-brackets": {
+      "version": "2.1.4",
+      "resolved": "http://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz",
+      "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+      "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",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz",
+          "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "http://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        }
+      }
+    },
+    "express": {
+      "version": "4.17.1",
+      "resolved": "https://registry.npm.taobao.org/express/download/express-4.17.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexpress%2Fdownload%2Fexpress-4.17.1.tgz",
+      "integrity": "sha1-RJH8OGBc9R+GKdOcK10Cb5ikwTQ=",
+      "dev": true,
+      "requires": {
+        "accepts": "~1.3.7",
+        "array-flatten": "1.1.1",
+        "body-parser": "1.19.0",
+        "content-disposition": "0.5.3",
+        "content-type": "~1.0.4",
+        "cookie": "0.4.0",
+        "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.5",
+        "qs": "6.7.0",
+        "range-parser": "~1.2.1",
+        "safe-buffer": "5.1.2",
+        "send": "0.17.1",
+        "serve-static": "1.14.1",
+        "setprototypeof": "1.1.1",
+        "statuses": "~1.5.0",
+        "type-is": "~1.6.18",
+        "utils-merge": "1.0.1",
+        "vary": "~1.1.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz",
+          "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        },
+        "qs": {
+          "version": "6.7.0",
+          "resolved": "http://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz?cache=0&other_urls=http%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.7.0.tgz",
+          "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=",
+          "dev": true
+        }
+      }
+    },
+    "extend": {
+      "version": "3.0.2",
+      "resolved": "http://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz",
+      "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=",
+      "dev": true
+    },
+    "extend-shallow": {
+      "version": "3.0.2",
+      "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-3.0.2.tgz",
+      "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+      "dev": true,
+      "requires": {
+        "assign-symbols": "^1.0.0",
+        "is-extendable": "^1.0.1"
+      },
+      "dependencies": {
+        "is-extendable": {
+          "version": "1.0.1",
+          "resolved": "http://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz",
+          "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=",
+          "dev": true,
+          "requires": {
+            "is-plain-object": "^2.0.4"
+          }
+        }
+      }
+    },
+    "external-editor": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npm.taobao.org/external-editor/download/external-editor-2.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexternal-editor%2Fdownload%2Fexternal-editor-2.2.0.tgz",
+      "integrity": "sha1-BFURz9jRM/OEZnPRBHwVTiFK09U=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "chardet": "^0.4.0",
+        "iconv-lite": "^0.4.17",
+        "tmp": "^0.0.33"
+      }
+    },
+    "extglob": {
+      "version": "2.0.4",
+      "resolved": "http://registry.npm.taobao.org/extglob/download/extglob-2.0.4.tgz",
+      "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=",
+      "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",
+          "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "http://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+          "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
+      }
+    },
+    "extsprintf": {
+      "version": "1.3.0",
+      "resolved": "http://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz",
+      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
+      "dev": true
+    },
+    "fast-deep-equal": {
+      "version": "2.0.1",
+      "resolved": "http://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-2.0.1.tgz",
+      "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+      "dev": true
+    },
+    "fast-glob": {
+      "version": "2.2.7",
+      "resolved": "https://registry.npm.taobao.org/fast-glob/download/fast-glob-2.2.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-glob%2Fdownload%2Ffast-glob-2.2.7.tgz",
+      "integrity": "sha1-aVOFfDr6R1//ku5gFdUtpwpM050=",
+      "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.0.0",
+      "resolved": "http://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz",
+      "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+      "dev": true
+    },
+    "fast-levenshtein": {
+      "version": "2.0.6",
+      "resolved": "http://registry.npm.taobao.org/fast-levenshtein/download/fast-levenshtein-2.0.6.tgz",
+      "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+      "dev": true
+    },
+    "fastparse": {
+      "version": "1.1.2",
+      "resolved": "http://registry.npm.taobao.org/fastparse/download/fastparse-1.1.2.tgz",
+      "integrity": "sha1-kXKMWllC7O2FMSg8eUQe5BIsNak=",
+      "dev": true
+    },
+    "faye-websocket": {
+      "version": "0.10.0",
+      "resolved": "https://registry.npm.taobao.org/faye-websocket/download/faye-websocket-0.10.0.tgz",
+      "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
+      "dev": true,
+      "requires": {
+        "websocket-driver": ">=0.5.1"
+      }
+    },
+    "figgy-pudding": {
+      "version": "3.5.1",
+      "resolved": "http://registry.npm.taobao.org/figgy-pudding/download/figgy-pudding-3.5.1.tgz",
+      "integrity": "sha1-hiRwESkBxyeg5JWoB0S9W6odZ5A=",
+      "dev": true
+    },
+    "figures": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/figures/download/figures-2.0.0.tgz",
+      "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+      "dev": true,
+      "requires": {
+        "escape-string-regexp": "^1.0.5"
+      }
+    },
+    "file-entry-cache": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/file-entry-cache/download/file-entry-cache-2.0.0.tgz",
+      "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "flat-cache": "^1.2.1",
+        "object-assign": "^4.0.1"
+      }
+    },
+    "file-loader": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npm.taobao.org/file-loader/download/file-loader-3.0.1.tgz",
+      "integrity": "sha1-+OC6C1mZGLUa3+RdZtHnca1WD6o=",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.0.2",
+        "schema-utils": "^1.0.0"
+      },
+      "dependencies": {
+        "schema-utils": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz",
+          "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=",
+          "dev": true,
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        }
+      }
+    },
+    "filesize": {
+      "version": "3.6.1",
+      "resolved": "http://registry.npm.taobao.org/filesize/download/filesize-3.6.1.tgz",
+      "integrity": "sha1-CQuz7gG2+AGoqL6Z0xcQs0Irsxc=",
+      "dev": true
+    },
+    "fill-range": {
+      "version": "4.0.0",
+      "resolved": "http://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz",
+      "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+      "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",
+          "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "finalhandler": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/finalhandler/download/finalhandler-1.1.2.tgz",
+      "integrity": "sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=",
+      "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",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz",
+          "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        }
+      }
+    },
+    "find-babel-config": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/find-babel-config/download/find-babel-config-1.2.0.tgz",
+      "integrity": "sha1-qbezF+tbmGDNqdVHQKjIM3oig6I=",
+      "dev": true,
+      "requires": {
+        "json5": "^0.5.1",
+        "path-exists": "^3.0.0"
+      },
+      "dependencies": {
+        "json5": {
+          "version": "0.5.1",
+          "resolved": "http://registry.npm.taobao.org/json5/download/json5-0.5.1.tgz",
+          "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
+          "dev": true
+        }
+      }
+    },
+    "find-cache-dir": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-2.1.0.tgz",
+      "integrity": "sha1-jQ+UzRP+Q8bHwmGg2GEVypGMBfc=",
+      "dev": true,
+      "requires": {
+        "commondir": "^1.0.1",
+        "make-dir": "^2.0.0",
+        "pkg-dir": "^3.0.0"
+      }
+    },
+    "find-up": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-2.1.0.tgz",
+      "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+      "dev": true,
+      "requires": {
+        "locate-path": "^2.0.0"
+      }
+    },
+    "flat-cache": {
+      "version": "1.3.4",
+      "resolved": "http://registry.npm.taobao.org/flat-cache/download/flat-cache-1.3.4.tgz",
+      "integrity": "sha1-LC73dSXMKSkAff/6HdMUqpyd7m8=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "circular-json": "^0.3.1",
+        "graceful-fs": "^4.1.2",
+        "rimraf": "~2.6.2",
+        "write": "^0.2.1"
+      }
+    },
+    "flatted": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/flatted/download/flatted-2.0.0.tgz",
+      "integrity": "sha1-VRIrZTbqSWtLRIk+4mCBQdENmRY=",
+      "dev": true
+    },
+    "flush-write-stream": {
+      "version": "1.1.1",
+      "resolved": "http://registry.npm.taobao.org/flush-write-stream/download/flush-write-stream-1.1.1.tgz",
+      "integrity": "sha1-jdfYc6G6vCB9lOrQwuDkQnbr8ug=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.3.6"
+      }
+    },
+    "follow-redirects": {
+      "version": "1.7.0",
+      "resolved": "http://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.7.0.tgz",
+      "integrity": "sha1-SJ68GY3A5/ZBZ70jsDxMGbV4THY=",
+      "dev": true,
+      "requires": {
+        "debug": "^3.2.6"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.6",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz",
+          "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        }
+      }
+    },
+    "for-in": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/for-in/download/for-in-1.0.2.tgz",
+      "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+      "dev": true
+    },
+    "for-own": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/for-own/download/for-own-1.0.0.tgz",
+      "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
+      "dev": true,
+      "requires": {
+        "for-in": "^1.0.1"
+      }
+    },
+    "forever-agent": {
+      "version": "0.6.1",
+      "resolved": "http://registry.npm.taobao.org/forever-agent/download/forever-agent-0.6.1.tgz",
+      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+      "dev": true
+    },
+    "form-data": {
+      "version": "2.3.3",
+      "resolved": "http://registry.npm.taobao.org/form-data/download/form-data-2.3.3.tgz",
+      "integrity": "sha1-3M5SwF9kTymManq5Nr1yTO/786Y=",
+      "dev": true,
+      "requires": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.6",
+        "mime-types": "^2.1.12"
+      }
+    },
+    "forwarded": {
+      "version": "0.1.2",
+      "resolved": "http://registry.npm.taobao.org/forwarded/download/forwarded-0.1.2.tgz",
+      "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
+      "dev": true
+    },
+    "fragment-cache": {
+      "version": "0.2.1",
+      "resolved": "http://registry.npm.taobao.org/fragment-cache/download/fragment-cache-0.2.1.tgz",
+      "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+      "dev": true,
+      "requires": {
+        "map-cache": "^0.2.2"
+      }
+    },
+    "fresh": {
+      "version": "0.5.2",
+      "resolved": "http://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz",
+      "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+      "dev": true
+    },
+    "from2": {
+      "version": "2.3.0",
+      "resolved": "http://registry.npm.taobao.org/from2/download/from2-2.3.0.tgz",
+      "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0"
+      }
+    },
+    "fs-extra": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npm.taobao.org/fs-extra/download/fs-extra-7.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffs-extra%2Fdownload%2Ffs-extra-7.0.1.tgz",
+      "integrity": "sha1-TxicRKoSO4lfcigE9V6iPq3DSOk=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "jsonfile": "^4.0.0",
+        "universalify": "^0.1.0"
+      }
+    },
+    "fs-write-stream-atomic": {
+      "version": "1.0.10",
+      "resolved": "http://registry.npm.taobao.org/fs-write-stream-atomic/download/fs-write-stream-atomic-1.0.10.tgz",
+      "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
+      "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",
+      "resolved": "http://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz",
+      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+      "dev": true
+    },
+    "fsevents": {
+      "version": "1.2.9",
+      "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.9.tgz",
+      "integrity": "sha1-P17WZYPM1vQAtaANtvfoYTY+OI8=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "nan": "^2.12.1",
+        "node-pre-gyp": "^0.12.0"
+      },
+      "dependencies": {
+        "abbrev": {
+          "version": "1.1.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "ansi-regex": {
+          "version": "2.1.1",
+          "bundled": true,
+          "dev": true
+        },
+        "aproba": {
+          "version": "1.2.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "are-we-there-yet": {
+          "version": "1.1.5",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "delegates": "^1.0.0",
+            "readable-stream": "^2.0.6"
+          }
+        },
+        "balanced-match": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true
+        },
+        "brace-expansion": {
+          "version": "1.1.11",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "balanced-match": "^1.0.0",
+            "concat-map": "0.0.1"
+          }
+        },
+        "chownr": {
+          "version": "1.1.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "code-point-at": {
+          "version": "1.1.0",
+          "bundled": true,
+          "dev": true
+        },
+        "concat-map": {
+          "version": "0.0.1",
+          "bundled": true,
+          "dev": true
+        },
+        "console-control-strings": {
+          "version": "1.1.0",
+          "bundled": true,
+          "dev": true
+        },
+        "core-util-is": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "debug": {
+          "version": "4.1.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "deep-extend": {
+          "version": "0.6.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "delegates": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "detect-libc": {
+          "version": "1.0.3",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "fs-minipass": {
+          "version": "1.2.5",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "minipass": "^2.2.1"
+          }
+        },
+        "fs.realpath": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "gauge": {
+          "version": "2.7.4",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "aproba": "^1.0.3",
+            "console-control-strings": "^1.0.0",
+            "has-unicode": "^2.0.0",
+            "object-assign": "^4.1.0",
+            "signal-exit": "^3.0.0",
+            "string-width": "^1.0.1",
+            "strip-ansi": "^3.0.1",
+            "wide-align": "^1.1.0"
+          }
+        },
+        "glob": {
+          "version": "7.1.3",
+          "bundled": true,
+          "dev": true,
+          "optional": 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"
+          }
+        },
+        "has-unicode": {
+          "version": "2.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "iconv-lite": {
+          "version": "0.4.24",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "safer-buffer": ">= 2.1.2 < 3"
+          }
+        },
+        "ignore-walk": {
+          "version": "3.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "minimatch": "^3.0.4"
+          }
+        },
+        "inflight": {
+          "version": "1.0.6",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "once": "^1.3.0",
+            "wrappy": "1"
+          }
+        },
+        "inherits": {
+          "version": "2.0.3",
+          "bundled": true,
+          "dev": true
+        },
+        "ini": {
+          "version": "1.3.5",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "number-is-nan": "^1.0.0"
+          }
+        },
+        "isarray": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "minimatch": {
+          "version": "3.0.4",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^1.1.7"
+          }
+        },
+        "minimist": {
+          "version": "0.0.8",
+          "bundled": true,
+          "dev": true
+        },
+        "minipass": {
+          "version": "2.3.5",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "safe-buffer": "^5.1.2",
+            "yallist": "^3.0.0"
+          }
+        },
+        "minizlib": {
+          "version": "1.2.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "minipass": "^2.2.1"
+          }
+        },
+        "mkdirp": {
+          "version": "0.5.1",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "minimist": "0.0.8"
+          }
+        },
+        "ms": {
+          "version": "2.1.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "needle": {
+          "version": "2.3.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "debug": "^4.1.0",
+            "iconv-lite": "^0.4.4",
+            "sax": "^1.2.4"
+          }
+        },
+        "node-pre-gyp": {
+          "version": "0.12.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "detect-libc": "^1.0.2",
+            "mkdirp": "^0.5.1",
+            "needle": "^2.2.1",
+            "nopt": "^4.0.1",
+            "npm-packlist": "^1.1.6",
+            "npmlog": "^4.0.2",
+            "rc": "^1.2.7",
+            "rimraf": "^2.6.1",
+            "semver": "^5.3.0",
+            "tar": "^4"
+          }
+        },
+        "nopt": {
+          "version": "4.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "abbrev": "1",
+            "osenv": "^0.1.4"
+          }
+        },
+        "npm-bundled": {
+          "version": "1.0.6",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "npm-packlist": {
+          "version": "1.4.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ignore-walk": "^3.0.1",
+            "npm-bundled": "^1.0.1"
+          }
+        },
+        "npmlog": {
+          "version": "4.1.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "are-we-there-yet": "~1.1.2",
+            "console-control-strings": "~1.1.0",
+            "gauge": "~2.7.3",
+            "set-blocking": "~2.0.0"
+          }
+        },
+        "number-is-nan": {
+          "version": "1.0.1",
+          "bundled": true,
+          "dev": true
+        },
+        "object-assign": {
+          "version": "4.1.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "once": {
+          "version": "1.4.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "wrappy": "1"
+          }
+        },
+        "os-homedir": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "os-tmpdir": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "osenv": {
+          "version": "0.1.5",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "os-homedir": "^1.0.0",
+            "os-tmpdir": "^1.0.0"
+          }
+        },
+        "path-is-absolute": {
+          "version": "1.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "process-nextick-args": {
+          "version": "2.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "rc": {
+          "version": "1.2.8",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "deep-extend": "^0.6.0",
+            "ini": "~1.3.0",
+            "minimist": "^1.2.0",
+            "strip-json-comments": "~2.0.1"
+          },
+          "dependencies": {
+            "minimist": {
+              "version": "1.2.0",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            }
+          }
+        },
+        "readable-stream": {
+          "version": "2.3.6",
+          "bundled": true,
+          "dev": true,
+          "optional": 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"
+          }
+        },
+        "rimraf": {
+          "version": "2.6.3",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        },
+        "safe-buffer": {
+          "version": "5.1.2",
+          "bundled": true,
+          "dev": true
+        },
+        "safer-buffer": {
+          "version": "2.1.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "sax": {
+          "version": "1.2.4",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "semver": {
+          "version": "5.7.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "set-blocking": {
+          "version": "2.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "signal-exit": {
+          "version": "3.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "string-width": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "code-point-at": "^1.0.0",
+            "is-fullwidth-code-point": "^1.0.0",
+            "strip-ansi": "^3.0.0"
+          }
+        },
+        "string_decoder": {
+          "version": "1.1.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "safe-buffer": "~5.1.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        },
+        "strip-json-comments": {
+          "version": "2.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "tar": {
+          "version": "4.4.8",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "chownr": "^1.1.1",
+            "fs-minipass": "^1.2.5",
+            "minipass": "^2.3.4",
+            "minizlib": "^1.1.1",
+            "mkdirp": "^0.5.0",
+            "safe-buffer": "^5.1.2",
+            "yallist": "^3.0.2"
+          }
+        },
+        "util-deprecate": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "wide-align": {
+          "version": "1.1.3",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "string-width": "^1.0.2 || 2"
+          }
+        },
+        "wrappy": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true
+        },
+        "yallist": {
+          "version": "3.0.3",
+          "bundled": true,
+          "dev": true
+        }
+      }
+    },
+    "fstream": {
+      "version": "1.0.11",
+      "resolved": "https://registry.npm.taobao.org/fstream/download/fstream-1.0.11.tgz",
+      "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "inherits": "~2.0.0",
+        "mkdirp": ">=0.5 0",
+        "rimraf": "2"
+      }
+    },
+    "function-bind": {
+      "version": "1.1.1",
+      "resolved": "http://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz",
+      "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=",
+      "dev": true
+    },
+    "functional-red-black-tree": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz",
+      "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+      "dev": true
+    },
+    "gauge": {
+      "version": "2.7.4",
+      "resolved": "https://registry.npm.taobao.org/gauge/download/gauge-2.7.4.tgz",
+      "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+      "dev": true,
+      "requires": {
+        "aproba": "^1.0.3",
+        "console-control-strings": "^1.0.0",
+        "has-unicode": "^2.0.0",
+        "object-assign": "^4.1.0",
+        "signal-exit": "^3.0.0",
+        "string-width": "^1.0.1",
+        "strip-ansi": "^3.0.1",
+        "wide-align": "^1.1.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz",
+          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz",
+          "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+          "dev": true,
+          "requires": {
+            "number-is-nan": "^1.0.0"
+          }
+        },
+        "string-width": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-1.0.2.tgz",
+          "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+          "dev": true,
+          "requires": {
+            "code-point-at": "^1.0.0",
+            "is-fullwidth-code-point": "^1.0.0",
+            "strip-ansi": "^3.0.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz",
+          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        }
+      }
+    },
+    "gaze": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npm.taobao.org/gaze/download/gaze-1.1.3.tgz",
+      "integrity": "sha1-xEFzPhO5J6yMD/C0w7Az8ogSkko=",
+      "dev": true,
+      "requires": {
+        "globule": "^1.0.0"
+      }
+    },
+    "get-caller-file": {
+      "version": "1.0.3",
+      "resolved": "http://registry.npm.taobao.org/get-caller-file/download/get-caller-file-1.0.3.tgz",
+      "integrity": "sha1-+Xj6TJDR3+f/LWvtoqUV5xO9z0o=",
+      "dev": true
+    },
+    "get-stdin": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npm.taobao.org/get-stdin/download/get-stdin-4.0.1.tgz",
+      "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
+      "dev": true
+    },
+    "get-stream": {
+      "version": "4.1.0",
+      "resolved": "http://registry.npm.taobao.org/get-stream/download/get-stream-4.1.0.tgz",
+      "integrity": "sha1-wbJVV189wh1Zv8ec09K0axw6VLU=",
+      "dev": true,
+      "requires": {
+        "pump": "^3.0.0"
+      }
+    },
+    "get-value": {
+      "version": "2.0.6",
+      "resolved": "http://registry.npm.taobao.org/get-value/download/get-value-2.0.6.tgz",
+      "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+      "dev": true
+    },
+    "getpass": {
+      "version": "0.1.7",
+      "resolved": "http://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz",
+      "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0"
+      }
+    },
+    "glob": {
+      "version": "7.1.3",
+      "resolved": "http://registry.npm.taobao.org/glob/download/glob-7.1.3.tgz",
+      "integrity": "sha1-OWCDLT8VdBCDQtr9OmezMsCWnfE=",
+      "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",
+      "resolved": "http://registry.npm.taobao.org/glob-parent/download/glob-parent-3.1.0.tgz",
+      "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+      "dev": true,
+      "requires": {
+        "is-glob": "^3.1.0",
+        "path-dirname": "^1.0.0"
+      },
+      "dependencies": {
+        "is-glob": {
+          "version": "3.1.0",
+          "resolved": "http://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz",
+          "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^2.1.0"
+          }
+        }
+      }
+    },
+    "glob-to-regexp": {
+      "version": "0.3.0",
+      "resolved": "http://registry.npm.taobao.org/glob-to-regexp/download/glob-to-regexp-0.3.0.tgz",
+      "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=",
+      "dev": true
+    },
+    "globals": {
+      "version": "11.11.0",
+      "resolved": "http://registry.npm.taobao.org/globals/download/globals-11.11.0.tgz",
+      "integrity": "sha1-3Pk3V/ot5Uhvvu1xGFOK33ienC4=",
+      "dev": true
+    },
+    "globby": {
+      "version": "9.2.0",
+      "resolved": "https://registry.npm.taobao.org/globby/download/globby-9.2.0.tgz",
+      "integrity": "sha1-/QKacGxwPSm90XD0tts6P3p8tj0=",
+      "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": {
+        "ignore": {
+          "version": "4.0.6",
+          "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-4.0.6.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fignore%2Fdownload%2Fignore-4.0.6.tgz",
+          "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=",
+          "dev": true
+        }
+      }
+    },
+    "globule": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npm.taobao.org/globule/download/globule-1.2.1.tgz",
+      "integrity": "sha1-Xf+xsZHyLSB5epNptJ6rTpg5aW0=",
+      "dev": true,
+      "requires": {
+        "glob": "~7.1.1",
+        "lodash": "~4.17.10",
+        "minimatch": "~3.0.2"
+      }
+    },
+    "graceful-fs": {
+      "version": "4.1.15",
+      "resolved": "http://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.1.15.tgz",
+      "integrity": "sha1-/7cD4QZuig7qpMi4C6klPu77+wA=",
+      "dev": true
+    },
+    "gzip-size": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npm.taobao.org/gzip-size/download/gzip-size-5.1.1.tgz",
+      "integrity": "sha1-y5vuaS+HwGErIyhAqHOQTkwTUnQ=",
+      "dev": true,
+      "requires": {
+        "duplexer": "^0.1.1",
+        "pify": "^4.0.1"
+      }
+    },
+    "handle-thing": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/handle-thing/download/handle-thing-2.0.0.tgz",
+      "integrity": "sha1-DgOWlf9QyT/CiFV9aW88HcZ3Z1Q=",
+      "dev": true
+    },
+    "har-schema": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz",
+      "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
+      "dev": true
+    },
+    "har-validator": {
+      "version": "5.1.3",
+      "resolved": "http://registry.npm.taobao.org/har-validator/download/har-validator-5.1.3.tgz",
+      "integrity": "sha1-HvievT5JllV2de7ZiTEQ3DUPoIA=",
+      "dev": true,
+      "requires": {
+        "ajv": "^6.5.5",
+        "har-schema": "^2.0.0"
+      }
+    },
+    "has": {
+      "version": "1.0.3",
+      "resolved": "http://registry.npm.taobao.org/has/download/has-1.0.3.tgz",
+      "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=",
+      "dev": true,
+      "requires": {
+        "function-bind": "^1.1.1"
+      }
+    },
+    "has-ansi": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/has-ansi/download/has-ansi-2.0.0.tgz",
+      "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+      "dev": true,
+      "requires": {
+        "ansi-regex": "^2.0.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "2.1.1",
+          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz",
+          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+          "dev": true
+        }
+      }
+    },
+    "has-flag": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz",
+      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+      "dev": true
+    },
+    "has-symbols": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.0.tgz",
+      "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
+      "dev": true
+    },
+    "has-unicode": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/has-unicode/download/has-unicode-2.0.1.tgz",
+      "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
+      "dev": true
+    },
+    "has-value": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/has-value/download/has-value-1.0.0.tgz",
+      "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+      "dev": true,
+      "requires": {
+        "get-value": "^2.0.6",
+        "has-values": "^1.0.0",
+        "isobject": "^3.0.0"
+      }
+    },
+    "has-values": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/has-values/download/has-values-1.0.0.tgz",
+      "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+      "dev": true,
+      "requires": {
+        "is-number": "^3.0.0",
+        "kind-of": "^4.0.0"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "4.0.0",
+          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-4.0.0.tgz",
+          "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "hash-base": {
+      "version": "3.0.4",
+      "resolved": "http://registry.npm.taobao.org/hash-base/download/hash-base-3.0.4.tgz",
+      "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "hash-sum": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz",
+      "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=",
+      "dev": true
+    },
+    "hash.js": {
+      "version": "1.1.7",
+      "resolved": "http://registry.npm.taobao.org/hash.js/download/hash.js-1.1.7.tgz",
+      "integrity": "sha1-C6vKU46NTuSg+JiNaIZlN6ADz0I=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.3",
+        "minimalistic-assert": "^1.0.1"
+      }
+    },
+    "he": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/he/download/he-1.2.0.tgz",
+      "integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8=",
+      "dev": true
+    },
+    "hex-color-regex": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/hex-color-regex/download/hex-color-regex-1.1.0.tgz",
+      "integrity": "sha1-TAb8y0YC/iYCs8k9+C1+fb8aio4=",
+      "dev": true
+    },
+    "highlight.js": {
+      "version": "9.15.8",
+      "resolved": "https://registry.npm.taobao.org/highlight.js/download/highlight.js-9.15.8.tgz",
+      "integrity": "sha1-80T9oSPzbxplSQ6TLPkFaeSZmXE=",
+      "dev": true
+    },
+    "hmac-drbg": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/hmac-drbg/download/hmac-drbg-1.0.1.tgz",
+      "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+      "dev": true,
+      "requires": {
+        "hash.js": "^1.0.3",
+        "minimalistic-assert": "^1.0.0",
+        "minimalistic-crypto-utils": "^1.0.1"
+      }
+    },
+    "hoopy": {
+      "version": "0.1.4",
+      "resolved": "http://registry.npm.taobao.org/hoopy/download/hoopy-0.1.4.tgz",
+      "integrity": "sha1-YJIH1mEQADOpqUAq096mdzgcGx0=",
+      "dev": true
+    },
+    "hosted-git-info": {
+      "version": "2.7.1",
+      "resolved": "http://registry.npm.taobao.org/hosted-git-info/download/hosted-git-info-2.7.1.tgz",
+      "integrity": "sha1-l/I2l3vW4SVAiTD/bePuxigewEc=",
+      "dev": true
+    },
+    "hpack.js": {
+      "version": "2.1.6",
+      "resolved": "http://registry.npm.taobao.org/hpack.js/download/hpack.js-2.1.6.tgz",
+      "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
+      "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",
+      "resolved": "http://registry.npm.taobao.org/hsl-regex/download/hsl-regex-1.0.0.tgz",
+      "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=",
+      "dev": true
+    },
+    "hsla-regex": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/hsla-regex/download/hsla-regex-1.0.0.tgz",
+      "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=",
+      "dev": true
+    },
+    "html-comment-regex": {
+      "version": "1.1.2",
+      "resolved": "http://registry.npm.taobao.org/html-comment-regex/download/html-comment-regex-1.1.2.tgz",
+      "integrity": "sha1-l9RoiutcgYhqNk+qDK0d2hTUM6c=",
+      "dev": true
+    },
+    "html-entities": {
+      "version": "1.2.1",
+      "resolved": "http://registry.npm.taobao.org/html-entities/download/html-entities-1.2.1.tgz",
+      "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=",
+      "dev": true
+    },
+    "html-minifier": {
+      "version": "3.5.21",
+      "resolved": "http://registry.npm.taobao.org/html-minifier/download/html-minifier-3.5.21.tgz",
+      "integrity": "sha1-0AQOBUcw41TbAIRjWTGUAVIS0gw=",
+      "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",
+          "resolved": "http://registry.npm.taobao.org/commander/download/commander-2.17.1.tgz",
+          "integrity": "sha1-vXerfebelCBc6sxy8XFtKfIKd78=",
+          "dev": true
+        }
+      }
+    },
+    "html-tags": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/html-tags/download/html-tags-2.0.0.tgz",
+      "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=",
+      "dev": true
+    },
+    "html-webpack-plugin": {
+      "version": "3.2.0",
+      "resolved": "http://registry.npm.taobao.org/html-webpack-plugin/download/html-webpack-plugin-3.2.0.tgz",
+      "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=",
+      "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",
+          "resolved": "http://registry.npm.taobao.org/big.js/download/big.js-3.2.0.tgz",
+          "integrity": "sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4=",
+          "dev": true
+        },
+        "json5": {
+          "version": "0.5.1",
+          "resolved": "http://registry.npm.taobao.org/json5/download/json5-0.5.1.tgz",
+          "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
+          "dev": true
+        },
+        "loader-utils": {
+          "version": "0.2.17",
+          "resolved": "http://registry.npm.taobao.org/loader-utils/download/loader-utils-0.2.17.tgz?cache=0&other_urls=http%3A%2F%2Fregistry.npm.taobao.org%2Floader-utils%2Fdownload%2Floader-utils-0.2.17.tgz",
+          "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
+          "dev": true,
+          "requires": {
+            "big.js": "^3.1.3",
+            "emojis-list": "^2.0.0",
+            "json5": "^0.5.0",
+            "object-assign": "^4.0.1"
+          }
+        }
+      }
+    },
+    "htmlparser2": {
+      "version": "3.10.1",
+      "resolved": "http://registry.npm.taobao.org/htmlparser2/download/htmlparser2-3.10.1.tgz",
+      "integrity": "sha1-vWedw/WYl7ajS7EHSchVu1OpOS8=",
+      "dev": true,
+      "requires": {
+        "domelementtype": "^1.3.1",
+        "domhandler": "^2.3.0",
+        "domutils": "^1.5.1",
+        "entities": "^1.1.1",
+        "inherits": "^2.0.1",
+        "readable-stream": "^3.1.1"
+      },
+      "dependencies": {
+        "readable-stream": {
+          "version": "3.3.0",
+          "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-3.3.0.tgz",
+          "integrity": "sha1-y4ARqtAC63F78EApH+uoVpyYb7k=",
+          "dev": true,
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        }
+      }
+    },
+    "http-deceiver": {
+      "version": "1.2.7",
+      "resolved": "http://registry.npm.taobao.org/http-deceiver/download/http-deceiver-1.2.7.tgz",
+      "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=",
+      "dev": true
+    },
+    "http-errors": {
+      "version": "1.7.2",
+      "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.2.tgz",
+      "integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=",
+      "dev": true,
+      "requires": {
+        "depd": "~1.1.2",
+        "inherits": "2.0.3",
+        "setprototypeof": "1.1.1",
+        "statuses": ">= 1.5.0 < 2",
+        "toidentifier": "1.0.0"
+      }
+    },
+    "http-parser-js": {
+      "version": "0.4.10",
+      "resolved": "https://registry.npm.taobao.org/http-parser-js/download/http-parser-js-0.4.10.tgz",
+      "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=",
+      "dev": true
+    },
+    "http-proxy": {
+      "version": "1.17.0",
+      "resolved": "http://registry.npm.taobao.org/http-proxy/download/http-proxy-1.17.0.tgz",
+      "integrity": "sha1-etOElGWPhGBeL220Q230EPTlvpo=",
+      "dev": true,
+      "requires": {
+        "eventemitter3": "^3.0.0",
+        "follow-redirects": "^1.0.0",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "http-proxy-middleware": {
+      "version": "0.19.1",
+      "resolved": "https://registry.npm.taobao.org/http-proxy-middleware/download/http-proxy-middleware-0.19.1.tgz",
+      "integrity": "sha1-GDx9xKoUeRUDBkmMIQza+WCApDo=",
+      "dev": true,
+      "requires": {
+        "http-proxy": "^1.17.0",
+        "is-glob": "^4.0.0",
+        "lodash": "^4.17.11",
+        "micromatch": "^3.1.10"
+      }
+    },
+    "http-signature": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz",
+      "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0",
+        "jsprim": "^1.2.2",
+        "sshpk": "^1.7.0"
+      }
+    },
+    "https-browserify": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/https-browserify/download/https-browserify-1.0.0.tgz",
+      "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
+      "dev": true
+    },
+    "iconv-lite": {
+      "version": "0.4.24",
+      "resolved": "http://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.24.tgz",
+      "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=",
+      "dev": true,
+      "requires": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      }
+    },
+    "icss-replace-symbols": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/icss-replace-symbols/download/icss-replace-symbols-1.1.0.tgz",
+      "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=",
+      "dev": true
+    },
+    "icss-utils": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/icss-utils/download/icss-utils-2.1.0.tgz",
+      "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=",
+      "dev": true,
+      "requires": {
+        "postcss": "^6.0.1"
+      },
+      "dependencies": {
+        "postcss": {
+          "version": "6.0.23",
+          "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-6.0.23.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss%2Fdownload%2Fpostcss-6.0.23.tgz",
+          "integrity": "sha1-YcgswyisYOZ3ZF+XkFTrmLwOMyQ=",
+          "dev": true,
+          "requires": {
+            "chalk": "^2.4.1",
+            "source-map": "^0.6.1",
+            "supports-color": "^5.4.0"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        }
+      }
+    },
+    "ieee754": {
+      "version": "1.1.13",
+      "resolved": "http://registry.npm.taobao.org/ieee754/download/ieee754-1.1.13.tgz",
+      "integrity": "sha1-7BaFWOlaoYH9h9N/VcMrvLZwi4Q=",
+      "dev": true
+    },
+    "iferr": {
+      "version": "0.1.5",
+      "resolved": "http://registry.npm.taobao.org/iferr/download/iferr-0.1.5.tgz",
+      "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
+      "dev": true
+    },
+    "ignore": {
+      "version": "3.3.10",
+      "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-3.3.10.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fignore%2Fdownload%2Fignore-3.3.10.tgz",
+      "integrity": "sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM=",
+      "dev": true
+    },
+    "image-size": {
+      "version": "0.5.5",
+      "resolved": "https://registry.npm.taobao.org/image-size/download/image-size-0.5.5.tgz",
+      "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
+      "dev": true
+    },
+    "import-cwd": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/import-cwd/download/import-cwd-2.1.0.tgz",
+      "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=",
+      "dev": true,
+      "requires": {
+        "import-from": "^2.1.0"
+      }
+    },
+    "import-fresh": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/import-fresh/download/import-fresh-2.0.0.tgz?cache=0&sync_timestamp=1561888919431&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimport-fresh%2Fdownload%2Fimport-fresh-2.0.0.tgz",
+      "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=",
+      "dev": true,
+      "requires": {
+        "caller-path": "^2.0.0",
+        "resolve-from": "^3.0.0"
+      },
+      "dependencies": {
+        "caller-path": {
+          "version": "2.0.0",
+          "resolved": "http://registry.npm.taobao.org/caller-path/download/caller-path-2.0.0.tgz",
+          "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
+          "dev": true,
+          "requires": {
+            "caller-callsite": "^2.0.0"
+          }
+        },
+        "resolve-from": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-3.0.0.tgz",
+          "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+          "dev": true
+        }
+      }
+    },
+    "import-from": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/import-from/download/import-from-2.1.0.tgz",
+      "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=",
+      "dev": true,
+      "requires": {
+        "resolve-from": "^3.0.0"
+      },
+      "dependencies": {
+        "resolve-from": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-3.0.0.tgz",
+          "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+          "dev": true
+        }
+      }
+    },
+    "import-local": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/import-local/download/import-local-2.0.0.tgz",
+      "integrity": "sha1-VQcL44pZk88Y72236WH1vuXFoJ0=",
+      "dev": true,
+      "requires": {
+        "pkg-dir": "^3.0.0",
+        "resolve-cwd": "^2.0.0"
+      }
+    },
+    "imurmurhash": {
+      "version": "0.1.4",
+      "resolved": "http://registry.npm.taobao.org/imurmurhash/download/imurmurhash-0.1.4.tgz",
+      "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+      "dev": true
+    },
+    "in-publish": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/in-publish/download/in-publish-2.0.0.tgz",
+      "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=",
+      "dev": true
+    },
+    "indent-string": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/indent-string/download/indent-string-2.1.0.tgz",
+      "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+      "dev": true,
+      "requires": {
+        "repeating": "^2.0.0"
+      }
+    },
+    "indexes-of": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/indexes-of/download/indexes-of-1.0.1.tgz",
+      "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
+      "dev": true
+    },
+    "inflight": {
+      "version": "1.0.6",
+      "resolved": "http://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz",
+      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+      "dev": true,
+      "requires": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "inherits": {
+      "version": "2.0.3",
+      "resolved": "http://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz",
+      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+      "dev": true
+    },
+    "inquirer": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npm.taobao.org/inquirer/download/inquirer-3.3.0.tgz?cache=0&sync_timestamp=1562820422760&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finquirer%2Fdownload%2Finquirer-3.3.0.tgz",
+      "integrity": "sha1-ndLyrXZdyrH/BEO0kUQqILoifck=",
+      "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"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "dev": true,
+          "optional": true
+        },
+        "strip-ansi": {
+          "version": "4.0.0",
+          "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz",
+          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ansi-regex": "^3.0.0"
+          }
+        }
+      }
+    },
+    "internal-ip": {
+      "version": "4.3.0",
+      "resolved": "http://registry.npm.taobao.org/internal-ip/download/internal-ip-4.3.0.tgz",
+      "integrity": "sha1-hFRSuq2dLKO2nGNaE3rLmg2tCQc=",
+      "dev": true,
+      "requires": {
+        "default-gateway": "^4.2.0",
+        "ipaddr.js": "^1.9.0"
+      },
+      "dependencies": {
+        "default-gateway": {
+          "version": "4.2.0",
+          "resolved": "https://registry.npm.taobao.org/default-gateway/download/default-gateway-4.2.0.tgz",
+          "integrity": "sha1-FnEEx1AMIRX23WmwpTa7jtcgVSs=",
+          "dev": true,
+          "requires": {
+            "execa": "^1.0.0",
+            "ip-regex": "^2.1.0"
+          }
+        }
+      }
+    },
+    "invariant": {
+      "version": "2.2.4",
+      "resolved": "http://registry.npm.taobao.org/invariant/download/invariant-2.2.4.tgz",
+      "integrity": "sha1-YQ88ksk1nOHbYW5TgAjSP/NRWOY=",
+      "dev": true,
+      "requires": {
+        "loose-envify": "^1.0.0"
+      }
+    },
+    "invert-kv": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/invert-kv/download/invert-kv-2.0.0.tgz",
+      "integrity": "sha1-c5P1r6Weyf9fZ6J2INEcIm4+7AI=",
+      "dev": true
+    },
+    "ip": {
+      "version": "1.1.5",
+      "resolved": "http://registry.npm.taobao.org/ip/download/ip-1.1.5.tgz",
+      "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
+      "dev": true
+    },
+    "ip-regex": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/ip-regex/download/ip-regex-2.1.0.tgz",
+      "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=",
+      "dev": true
+    },
+    "ipaddr.js": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npm.taobao.org/ipaddr.js/download/ipaddr.js-1.9.0.tgz",
+      "integrity": "sha1-N9905DCg5HVQ/lSi3v4w2KzZX2U=",
+      "dev": true
+    },
+    "is-absolute-url": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-2.1.0.tgz",
+      "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=",
+      "dev": true
+    },
+    "is-accessor-descriptor": {
+      "version": "0.1.6",
+      "resolved": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz",
+      "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "is-arrayish": {
+      "version": "0.2.1",
+      "resolved": "http://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.2.1.tgz",
+      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+      "dev": true
+    },
+    "is-binary-path": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz",
+      "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+      "dev": true,
+      "requires": {
+        "binary-extensions": "^1.0.0"
+      }
+    },
+    "is-buffer": {
+      "version": "1.1.6",
+      "resolved": "http://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz",
+      "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=",
+      "dev": true
+    },
+    "is-callable": {
+      "version": "1.1.4",
+      "resolved": "http://registry.npm.taobao.org/is-callable/download/is-callable-1.1.4.tgz",
+      "integrity": "sha1-HhrfIZ4e62hNaR+dagX/DTCiTXU=",
+      "dev": true
+    },
+    "is-ci": {
+      "version": "1.2.1",
+      "resolved": "http://registry.npm.taobao.org/is-ci/download/is-ci-1.2.1.tgz",
+      "integrity": "sha1-43ecjuF/zPQoSI9uKBGH8uYyhBw=",
+      "dev": true,
+      "requires": {
+        "ci-info": "^1.5.0"
+      }
+    },
+    "is-color-stop": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/is-color-stop/download/is-color-stop-1.1.0.tgz",
+      "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=",
+      "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-data-descriptor": {
+      "version": "0.1.4",
+      "resolved": "http://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz",
+      "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "is-date-object": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/is-date-object/download/is-date-object-1.0.1.tgz",
+      "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
+      "dev": true
+    },
+    "is-descriptor": {
+      "version": "0.1.6",
+      "resolved": "http://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz",
+      "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=",
+      "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",
+          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-5.1.0.tgz",
+          "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=",
+          "dev": true
+        }
+      }
+    },
+    "is-directory": {
+      "version": "0.3.1",
+      "resolved": "http://registry.npm.taobao.org/is-directory/download/is-directory-0.3.1.tgz",
+      "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
+      "dev": true
+    },
+    "is-extendable": {
+      "version": "0.1.1",
+      "resolved": "http://registry.npm.taobao.org/is-extendable/download/is-extendable-0.1.1.tgz",
+      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+      "dev": true
+    },
+    "is-extglob": {
+      "version": "2.1.1",
+      "resolved": "http://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz",
+      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+      "dev": true
+    },
+    "is-finite": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/is-finite/download/is-finite-1.0.2.tgz",
+      "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+      "dev": true,
+      "requires": {
+        "number-is-nan": "^1.0.0"
+      }
+    },
+    "is-fullwidth-code-point": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz",
+      "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+      "dev": true
+    },
+    "is-glob": {
+      "version": "4.0.1",
+      "resolved": "http://registry.npm.taobao.org/is-glob/download/is-glob-4.0.1.tgz",
+      "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=",
+      "dev": true,
+      "requires": {
+        "is-extglob": "^2.1.1"
+      }
+    },
+    "is-number": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz",
+      "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "is-obj": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/is-obj/download/is-obj-1.0.1.tgz",
+      "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
+      "dev": true
+    },
+    "is-path-cwd": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npm.taobao.org/is-path-cwd/download/is-path-cwd-2.2.0.tgz?cache=0&sync_timestamp=1562347283002&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-path-cwd%2Fdownload%2Fis-path-cwd-2.2.0.tgz",
+      "integrity": "sha1-Z9Q7gmZKe1GR/ZEZEn6zAASKn9s=",
+      "dev": true
+    },
+    "is-path-in-cwd": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/is-path-in-cwd/download/is-path-in-cwd-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-path-in-cwd%2Fdownload%2Fis-path-in-cwd-2.1.0.tgz",
+      "integrity": "sha1-v+Lcomxp85cmWkAJljYCk1oFOss=",
+      "dev": true,
+      "requires": {
+        "is-path-inside": "^2.1.0"
+      }
+    },
+    "is-path-inside": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/is-path-inside/download/is-path-inside-2.1.0.tgz",
+      "integrity": "sha1-fJgQWH1lmkDSe8201WFuqwWUlLI=",
+      "dev": true,
+      "requires": {
+        "path-is-inside": "^1.0.2"
+      }
+    },
+    "is-plain-obj": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/is-plain-obj/download/is-plain-obj-1.1.0.tgz",
+      "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+      "dev": true
+    },
+    "is-plain-object": {
+      "version": "2.0.4",
+      "resolved": "http://registry.npm.taobao.org/is-plain-object/download/is-plain-object-2.0.4.tgz",
+      "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=",
+      "dev": true,
+      "requires": {
+        "isobject": "^3.0.1"
+      }
+    },
+    "is-promise": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/is-promise/download/is-promise-2.1.0.tgz",
+      "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
+      "dev": true
+    },
+    "is-regex": {
+      "version": "1.0.4",
+      "resolved": "http://registry.npm.taobao.org/is-regex/download/is-regex-1.0.4.tgz",
+      "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+      "dev": true,
+      "requires": {
+        "has": "^1.0.1"
+      }
+    },
+    "is-resolvable": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/is-resolvable/download/is-resolvable-1.1.0.tgz",
+      "integrity": "sha1-+xj4fOH+uSUWnJpAfBkxijIG7Yg=",
+      "dev": true
+    },
+    "is-stream": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/is-stream/download/is-stream-1.1.0.tgz",
+      "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+      "dev": true
+    },
+    "is-svg": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/is-svg/download/is-svg-3.0.0.tgz",
+      "integrity": "sha1-kyHb0pwhLlypnE+peUxxS8r6L3U=",
+      "dev": true,
+      "requires": {
+        "html-comment-regex": "^1.1.0"
+      }
+    },
+    "is-symbol": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/is-symbol/download/is-symbol-1.0.2.tgz",
+      "integrity": "sha1-oFX2rlcZLK7jKeeoYBGLSXqVDzg=",
+      "dev": true,
+      "requires": {
+        "has-symbols": "^1.0.0"
+      }
+    },
+    "is-typedarray": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz",
+      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+      "dev": true
+    },
+    "is-utf8": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npm.taobao.org/is-utf8/download/is-utf8-0.2.1.tgz",
+      "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+      "dev": true
+    },
+    "is-windows": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz",
+      "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=",
+      "dev": true
+    },
+    "is-wsl": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/is-wsl/download/is-wsl-1.1.0.tgz",
+      "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+      "dev": true
+    },
+    "isarray": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz",
+      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+      "dev": true
+    },
+    "isexe": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz",
+      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+      "dev": true
+    },
+    "isobject": {
+      "version": "3.0.1",
+      "resolved": "http://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz",
+      "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+      "dev": true
+    },
+    "isstream": {
+      "version": "0.1.2",
+      "resolved": "http://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz",
+      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+      "dev": true
+    },
+    "javascript-stringify": {
+      "version": "1.6.0",
+      "resolved": "http://registry.npm.taobao.org/javascript-stringify/download/javascript-stringify-1.6.0.tgz",
+      "integrity": "sha1-FC0RHzpuPa6PSpr9d9RYVbWpzOM=",
+      "dev": true
+    },
+    "js-base64": {
+      "version": "2.5.1",
+      "resolved": "https://registry.npm.taobao.org/js-base64/download/js-base64-2.5.1.tgz",
+      "integrity": "sha1-Hvo57yxfeYC7F4St5KivLeMpESE=",
+      "dev": true
+    },
+    "js-cookie": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npm.taobao.org/js-cookie/download/js-cookie-2.2.0.tgz",
+      "integrity": "sha1-Gywnmm7s44ChIWi5JIUmWzWx7/s="
+    },
+    "js-levenshtein": {
+      "version": "1.1.6",
+      "resolved": "http://registry.npm.taobao.org/js-levenshtein/download/js-levenshtein-1.1.6.tgz",
+      "integrity": "sha1-xs7ljrNVA3LfjeuF+tXOZs4B1Z0=",
+      "dev": true
+    },
+    "js-message": {
+      "version": "1.0.5",
+      "resolved": "http://registry.npm.taobao.org/js-message/download/js-message-1.0.5.tgz",
+      "integrity": "sha1-IwDSSxrwjondCVvBpMnJz8uJLRU=",
+      "dev": true
+    },
+    "js-queue": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/js-queue/download/js-queue-2.0.0.tgz",
+      "integrity": "sha1-NiITz4YPRo8BJfxslqvBdCUx+Ug=",
+      "dev": true,
+      "requires": {
+        "easy-stack": "^1.0.0"
+      }
+    },
+    "js-tokens": {
+      "version": "4.0.0",
+      "resolved": "http://registry.npm.taobao.org/js-tokens/download/js-tokens-4.0.0.tgz",
+      "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=",
+      "dev": true
+    },
+    "js-yaml": {
+      "version": "3.13.1",
+      "resolved": "http://registry.npm.taobao.org/js-yaml/download/js-yaml-3.13.1.tgz?cache=0&other_urls=http%3A%2F%2Fregistry.npm.taobao.org%2Fjs-yaml%2Fdownload%2Fjs-yaml-3.13.1.tgz",
+      "integrity": "sha1-r/FRswv9+o5J4F2iLnQV6d+jeEc=",
+      "dev": true,
+      "requires": {
+        "argparse": "^1.0.7",
+        "esprima": "^4.0.0"
+      }
+    },
+    "jsbn": {
+      "version": "0.1.1",
+      "resolved": "http://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz",
+      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+      "dev": true
+    },
+    "jsesc": {
+      "version": "2.5.2",
+      "resolved": "http://registry.npm.taobao.org/jsesc/download/jsesc-2.5.2.tgz",
+      "integrity": "sha1-gFZNLkg9rPbo7yCWUKZ98/DCg6Q=",
+      "dev": true
+    },
+    "json-parse-better-errors": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/json-parse-better-errors/download/json-parse-better-errors-1.0.2.tgz",
+      "integrity": "sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk=",
+      "dev": true
+    },
+    "json-schema": {
+      "version": "0.2.3",
+      "resolved": "http://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz",
+      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+      "dev": true
+    },
+    "json-schema-traverse": {
+      "version": "0.4.1",
+      "resolved": "http://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=",
+      "dev": true
+    },
+    "json-stable-stringify-without-jsonify": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/json-stable-stringify-without-jsonify/download/json-stable-stringify-without-jsonify-1.0.1.tgz",
+      "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
+      "dev": true
+    },
+    "json-stringify-safe": {
+      "version": "5.0.1",
+      "resolved": "http://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz",
+      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+      "dev": true
+    },
+    "json3": {
+      "version": "3.3.3",
+      "resolved": "https://registry.npm.taobao.org/json3/download/json3-3.3.3.tgz",
+      "integrity": "sha1-f8EON1/FrkLEcFpcwKpvYr4wW4E=",
+      "dev": true
+    },
+    "json5": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/json5/download/json5-2.1.0.tgz",
+      "integrity": "sha1-56DGLEgoXGKNIKELhcibuAfDKFA=",
+      "dev": true,
+      "requires": {
+        "minimist": "^1.2.0"
+      }
+    },
+    "jsonfile": {
+      "version": "4.0.0",
+      "resolved": "http://registry.npm.taobao.org/jsonfile/download/jsonfile-4.0.0.tgz",
+      "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.6"
+      }
+    },
+    "jsonify": {
+      "version": "0.0.0",
+      "resolved": "http://registry.npm.taobao.org/jsonify/download/jsonify-0.0.0.tgz",
+      "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
+      "dev": true
+    },
+    "jsprim": {
+      "version": "1.4.1",
+      "resolved": "http://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz",
+      "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "1.0.0",
+        "extsprintf": "1.3.0",
+        "json-schema": "0.2.3",
+        "verror": "1.10.0"
+      }
+    },
+    "killable": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/killable/download/killable-1.0.1.tgz",
+      "integrity": "sha1-TIzkQRh6Bhx0dPuHygjipjgZSJI=",
+      "dev": true
+    },
+    "kind-of": {
+      "version": "6.0.2",
+      "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-6.0.2.tgz",
+      "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=",
+      "dev": true
+    },
+    "launch-editor": {
+      "version": "2.2.1",
+      "resolved": "http://registry.npm.taobao.org/launch-editor/download/launch-editor-2.2.1.tgz",
+      "integrity": "sha1-hxtaPuOdZoD8wm03kwtu7aidsMo=",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.3.0",
+        "shell-quote": "^1.6.1"
+      }
+    },
+    "launch-editor-middleware": {
+      "version": "2.2.1",
+      "resolved": "http://registry.npm.taobao.org/launch-editor-middleware/download/launch-editor-middleware-2.2.1.tgz",
+      "integrity": "sha1-4UsH5scVSwpLhqD9NFeE5FgEwVc=",
+      "dev": true,
+      "requires": {
+        "launch-editor": "^2.2.1"
+      }
+    },
+    "lcid": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/lcid/download/lcid-2.0.0.tgz",
+      "integrity": "sha1-bvXS32DlL4LrIopMNz6NHzlyU88=",
+      "dev": true,
+      "requires": {
+        "invert-kv": "^2.0.0"
+      }
+    },
+    "levn": {
+      "version": "0.3.0",
+      "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz",
+      "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+      "dev": true,
+      "requires": {
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2"
+      }
+    },
+    "lines-and-columns": {
+      "version": "1.1.6",
+      "resolved": "https://registry.npm.taobao.org/lines-and-columns/download/lines-and-columns-1.1.6.tgz",
+      "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
+      "dev": true
+    },
+    "load-json-file": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/load-json-file/download/load-json-file-2.0.0.tgz",
+      "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "parse-json": "^2.2.0",
+        "pify": "^2.0.0",
+        "strip-bom": "^3.0.0"
+      },
+      "dependencies": {
+        "parse-json": {
+          "version": "2.2.0",
+          "resolved": "http://registry.npm.taobao.org/parse-json/download/parse-json-2.2.0.tgz",
+          "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+          "dev": true,
+          "requires": {
+            "error-ex": "^1.2.0"
+          }
+        },
+        "pify": {
+          "version": "2.3.0",
+          "resolved": "http://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz",
+          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+          "dev": true
+        }
+      }
+    },
+    "loader-fs-cache": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/loader-fs-cache/download/loader-fs-cache-1.0.2.tgz",
+      "integrity": "sha1-VM7fa3J+F3n9jwEgXwX26IcG8IY=",
+      "dev": true,
+      "requires": {
+        "find-cache-dir": "^0.1.1",
+        "mkdirp": "0.5.1"
+      },
+      "dependencies": {
+        "find-cache-dir": {
+          "version": "0.1.1",
+          "resolved": "http://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-0.1.1.tgz",
+          "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=",
+          "dev": true,
+          "requires": {
+            "commondir": "^1.0.1",
+            "mkdirp": "^0.5.1",
+            "pkg-dir": "^1.0.0"
+          }
+        },
+        "find-up": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-1.1.2.tgz",
+          "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+          "dev": true,
+          "requires": {
+            "path-exists": "^2.0.0",
+            "pinkie-promise": "^2.0.0"
+          }
+        },
+        "path-exists": {
+          "version": "2.1.0",
+          "resolved": "http://registry.npm.taobao.org/path-exists/download/path-exists-2.1.0.tgz",
+          "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+          "dev": true,
+          "requires": {
+            "pinkie-promise": "^2.0.0"
+          }
+        },
+        "pkg-dir": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-1.0.0.tgz",
+          "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
+          "dev": true,
+          "requires": {
+            "find-up": "^1.0.0"
+          }
+        }
+      }
+    },
+    "loader-runner": {
+      "version": "2.4.0",
+      "resolved": "http://registry.npm.taobao.org/loader-runner/download/loader-runner-2.4.0.tgz",
+      "integrity": "sha1-7UcGa/5TTX6ExMe5mYwqdWB9k1c=",
+      "dev": true
+    },
+    "loader-utils": {
+      "version": "1.2.3",
+      "resolved": "http://registry.npm.taobao.org/loader-utils/download/loader-utils-1.2.3.tgz?cache=0&other_urls=http%3A%2F%2Fregistry.npm.taobao.org%2Floader-utils%2Fdownload%2Floader-utils-1.2.3.tgz",
+      "integrity": "sha1-H/XcaRHJ8KBiUxpMBLYJQGEIwsc=",
+      "dev": true,
+      "requires": {
+        "big.js": "^5.2.2",
+        "emojis-list": "^2.0.0",
+        "json5": "^1.0.1"
+      },
+      "dependencies": {
+        "json5": {
+          "version": "1.0.1",
+          "resolved": "http://registry.npm.taobao.org/json5/download/json5-1.0.1.tgz",
+          "integrity": "sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4=",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        }
+      }
+    },
+    "locate-path": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-2.0.0.tgz",
+      "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+      "dev": true,
+      "requires": {
+        "p-locate": "^2.0.0",
+        "path-exists": "^3.0.0"
+      }
+    },
+    "lodash": {
+      "version": "4.17.11",
+      "resolved": "http://registry.npm.taobao.org/lodash/download/lodash-4.17.11.tgz",
+      "integrity": "sha1-s56mIp72B+zYniyN8SU2iRysm40=",
+      "dev": true
+    },
+    "lodash.defaultsdeep": {
+      "version": "4.6.1",
+      "resolved": "https://registry.npm.taobao.org/lodash.defaultsdeep/download/lodash.defaultsdeep-4.6.1.tgz?cache=0&sync_timestamp=1562718178896&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash.defaultsdeep%2Fdownload%2Flodash.defaultsdeep-4.6.1.tgz",
+      "integrity": "sha1-US6b1yHSctlOPTpjZT+hdRZ0HKY=",
+      "dev": true
+    },
+    "lodash.kebabcase": {
+      "version": "4.1.1",
+      "resolved": "http://registry.npm.taobao.org/lodash.kebabcase/download/lodash.kebabcase-4.1.1.tgz",
+      "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=",
+      "dev": true
+    },
+    "lodash.mapvalues": {
+      "version": "4.6.0",
+      "resolved": "http://registry.npm.taobao.org/lodash.mapvalues/download/lodash.mapvalues-4.6.0.tgz",
+      "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=",
+      "dev": true
+    },
+    "lodash.memoize": {
+      "version": "4.1.2",
+      "resolved": "http://registry.npm.taobao.org/lodash.memoize/download/lodash.memoize-4.1.2.tgz",
+      "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
+      "dev": true
+    },
+    "lodash.tail": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npm.taobao.org/lodash.tail/download/lodash.tail-4.1.1.tgz",
+      "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=",
+      "dev": true
+    },
+    "lodash.transform": {
+      "version": "4.6.0",
+      "resolved": "http://registry.npm.taobao.org/lodash.transform/download/lodash.transform-4.6.0.tgz",
+      "integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=",
+      "dev": true
+    },
+    "lodash.uniq": {
+      "version": "4.5.0",
+      "resolved": "http://registry.npm.taobao.org/lodash.uniq/download/lodash.uniq-4.5.0.tgz",
+      "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
+      "dev": true
+    },
+    "log-symbols": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npm.taobao.org/log-symbols/download/log-symbols-2.2.0.tgz",
+      "integrity": "sha1-V0Dhxdbw39pK2TI7UzIQfva0xAo=",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.0.1"
+      }
+    },
+    "loglevel": {
+      "version": "1.6.3",
+      "resolved": "https://registry.npm.taobao.org/loglevel/download/loglevel-1.6.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Floglevel%2Fdownload%2Floglevel-1.6.3.tgz",
+      "integrity": "sha1-d/LrZL5VpATJ/QStFtV8HW1rEoA=",
+      "dev": true
+    },
+    "loose-envify": {
+      "version": "1.4.0",
+      "resolved": "http://registry.npm.taobao.org/loose-envify/download/loose-envify-1.4.0.tgz",
+      "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=",
+      "dev": true,
+      "requires": {
+        "js-tokens": "^3.0.0 || ^4.0.0"
+      }
+    },
+    "loud-rejection": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npm.taobao.org/loud-rejection/download/loud-rejection-1.6.0.tgz",
+      "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+      "dev": true,
+      "requires": {
+        "currently-unhandled": "^0.4.1",
+        "signal-exit": "^3.0.0"
+      }
+    },
+    "lower-case": {
+      "version": "1.1.4",
+      "resolved": "http://registry.npm.taobao.org/lower-case/download/lower-case-1.1.4.tgz",
+      "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=",
+      "dev": true
+    },
+    "lru-cache": {
+      "version": "5.1.1",
+      "resolved": "http://registry.npm.taobao.org/lru-cache/download/lru-cache-5.1.1.tgz",
+      "integrity": "sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA=",
+      "dev": true,
+      "requires": {
+        "yallist": "^3.0.2"
+      }
+    },
+    "make-dir": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz?cache=0&other_urls=http%3A%2F%2Fregistry.npm.taobao.org%2Fmake-dir%2Fdownload%2Fmake-dir-2.1.0.tgz",
+      "integrity": "sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=",
+      "dev": true,
+      "requires": {
+        "pify": "^4.0.1",
+        "semver": "^5.6.0"
+      }
+    },
+    "map-age-cleaner": {
+      "version": "0.1.3",
+      "resolved": "http://registry.npm.taobao.org/map-age-cleaner/download/map-age-cleaner-0.1.3.tgz",
+      "integrity": "sha1-fVg6cwZDTAVf5HSw9FB45uG0uSo=",
+      "dev": true,
+      "requires": {
+        "p-defer": "^1.0.0"
+      }
+    },
+    "map-cache": {
+      "version": "0.2.2",
+      "resolved": "http://registry.npm.taobao.org/map-cache/download/map-cache-0.2.2.tgz",
+      "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+      "dev": true
+    },
+    "map-obj": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/map-obj/download/map-obj-1.0.1.tgz",
+      "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+      "dev": true
+    },
+    "map-visit": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/map-visit/download/map-visit-1.0.0.tgz",
+      "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+      "dev": true,
+      "requires": {
+        "object-visit": "^1.0.0"
+      }
+    },
+    "md5.js": {
+      "version": "1.3.5",
+      "resolved": "http://registry.npm.taobao.org/md5.js/download/md5.js-1.3.5.tgz",
+      "integrity": "sha1-tdB7jjIW4+J81yjXL3DR5qNCAF8=",
+      "dev": true,
+      "requires": {
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      }
+    },
+    "mdn-data": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npm.taobao.org/mdn-data/download/mdn-data-2.0.4.tgz?cache=0&sync_timestamp=1562673334420&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmdn-data%2Fdownload%2Fmdn-data-2.0.4.tgz",
+      "integrity": "sha1-aZs8OKxvHXKAkaZGULZdOIUC/Vs=",
+      "dev": true
+    },
+    "media-typer": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz",
+      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
+      "dev": true
+    },
+    "mem": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npm.taobao.org/mem/download/mem-4.3.0.tgz",
+      "integrity": "sha1-Rhr0l7xK4JYIzbLmDu+2m/90QXg=",
+      "dev": true,
+      "requires": {
+        "map-age-cleaner": "^0.1.1",
+        "mimic-fn": "^2.0.0",
+        "p-is-promise": "^2.0.0"
+      },
+      "dependencies": {
+        "mimic-fn": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz?cache=0&sync_timestamp=1560442058146&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmimic-fn%2Fdownload%2Fmimic-fn-2.1.0.tgz",
+          "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=",
+          "dev": true
+        }
+      }
+    },
+    "memory-fs": {
+      "version": "0.4.1",
+      "resolved": "http://registry.npm.taobao.org/memory-fs/download/memory-fs-0.4.1.tgz",
+      "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+      "dev": true,
+      "requires": {
+        "errno": "^0.1.3",
+        "readable-stream": "^2.0.1"
+      }
+    },
+    "meow": {
+      "version": "3.7.0",
+      "resolved": "https://registry.npm.taobao.org/meow/download/meow-3.7.0.tgz",
+      "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+      "dev": true,
+      "requires": {
+        "camelcase-keys": "^2.0.0",
+        "decamelize": "^1.1.2",
+        "loud-rejection": "^1.0.0",
+        "map-obj": "^1.0.1",
+        "minimist": "^1.1.3",
+        "normalize-package-data": "^2.3.4",
+        "object-assign": "^4.0.1",
+        "read-pkg-up": "^1.0.1",
+        "redent": "^1.0.0",
+        "trim-newlines": "^1.0.0"
+      },
+      "dependencies": {
+        "find-up": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-1.1.2.tgz",
+          "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+          "dev": true,
+          "requires": {
+            "path-exists": "^2.0.0",
+            "pinkie-promise": "^2.0.0"
+          }
+        },
+        "load-json-file": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npm.taobao.org/load-json-file/download/load-json-file-1.1.0.tgz",
+          "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.2",
+            "parse-json": "^2.2.0",
+            "pify": "^2.0.0",
+            "pinkie-promise": "^2.0.0",
+            "strip-bom": "^2.0.0"
+          }
+        },
+        "parse-json": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-2.2.0.tgz",
+          "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+          "dev": true,
+          "requires": {
+            "error-ex": "^1.2.0"
+          }
+        },
+        "path-exists": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-2.1.0.tgz",
+          "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+          "dev": true,
+          "requires": {
+            "pinkie-promise": "^2.0.0"
+          }
+        },
+        "path-type": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npm.taobao.org/path-type/download/path-type-1.1.0.tgz",
+          "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.2",
+            "pify": "^2.0.0",
+            "pinkie-promise": "^2.0.0"
+          }
+        },
+        "pify": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-2.3.0.tgz",
+          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+          "dev": true
+        },
+        "read-pkg": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npm.taobao.org/read-pkg/download/read-pkg-1.1.0.tgz",
+          "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+          "dev": true,
+          "requires": {
+            "load-json-file": "^1.0.0",
+            "normalize-package-data": "^2.3.2",
+            "path-type": "^1.0.0"
+          }
+        },
+        "read-pkg-up": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npm.taobao.org/read-pkg-up/download/read-pkg-up-1.0.1.tgz",
+          "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+          "dev": true,
+          "requires": {
+            "find-up": "^1.0.0",
+            "read-pkg": "^1.0.0"
+          }
+        },
+        "strip-bom": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npm.taobao.org/strip-bom/download/strip-bom-2.0.0.tgz",
+          "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+          "dev": true,
+          "requires": {
+            "is-utf8": "^0.2.0"
+          }
+        }
+      }
+    },
+    "merge-descriptors": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz",
+      "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
+      "dev": true
+    },
+    "merge-options": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/merge-options/download/merge-options-1.0.1.tgz",
+      "integrity": "sha1-KmSyRFe+zU5NxggoMkfpTOWJqjI=",
+      "dev": true,
+      "requires": {
+        "is-plain-obj": "^1.1"
+      }
+    },
+    "merge-source-map": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/merge-source-map/download/merge-source-map-1.1.0.tgz",
+      "integrity": "sha1-L93n5gIJOfcJBqaPLXrmheTIxkY=",
+      "dev": true,
+      "requires": {
+        "source-map": "^0.6.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        }
+      }
+    },
+    "merge2": {
+      "version": "1.2.3",
+      "resolved": "http://registry.npm.taobao.org/merge2/download/merge2-1.2.3.tgz",
+      "integrity": "sha1-fumdvWm7ZIFoklPwGEiKG5ArDtU=",
+      "dev": true
+    },
+    "methods": {
+      "version": "1.1.2",
+      "resolved": "http://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz",
+      "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
+      "dev": true
+    },
+    "micromatch": {
+      "version": "3.1.10",
+      "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-3.1.10.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-3.1.10.tgz",
+      "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=",
+      "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",
+      "resolved": "http://registry.npm.taobao.org/miller-rabin/download/miller-rabin-4.0.1.tgz",
+      "integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.0.0",
+        "brorand": "^1.0.1"
+      }
+    },
+    "mime": {
+      "version": "2.4.4",
+      "resolved": "https://registry.npm.taobao.org/mime/download/mime-2.4.4.tgz",
+      "integrity": "sha1-vXuRE1/GsBzePpuuM9ZZtj2IV+U=",
+      "dev": true
+    },
+    "mime-db": {
+      "version": "1.38.0",
+      "resolved": "http://registry.npm.taobao.org/mime-db/download/mime-db-1.38.0.tgz",
+      "integrity": "sha1-GiqrFtqesWe0nG5N8tnGjWPY4q0=",
+      "dev": true
+    },
+    "mime-types": {
+      "version": "2.1.22",
+      "resolved": "http://registry.npm.taobao.org/mime-types/download/mime-types-2.1.22.tgz",
+      "integrity": "sha1-/ms1WhkJJqt2mMmgVWoRGZshmb0=",
+      "dev": true,
+      "requires": {
+        "mime-db": "~1.38.0"
+      }
+    },
+    "mimic-fn": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/mimic-fn/download/mimic-fn-1.2.0.tgz",
+      "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=",
+      "dev": true
+    },
+    "mini-css-extract-plugin": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npm.taobao.org/mini-css-extract-plugin/download/mini-css-extract-plugin-0.6.0.tgz?cache=0&sync_timestamp=1563310974743&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmini-css-extract-plugin%2Fdownload%2Fmini-css-extract-plugin-0.6.0.tgz",
+      "integrity": "sha1-o/Ezctb83pEvPuTNA5ZlcEgB47k=",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.1.0",
+        "normalize-url": "^2.0.1",
+        "schema-utils": "^1.0.0",
+        "webpack-sources": "^1.1.0"
+      },
+      "dependencies": {
+        "normalize-url": {
+          "version": "2.0.1",
+          "resolved": "http://registry.npm.taobao.org/normalize-url/download/normalize-url-2.0.1.tgz",
+          "integrity": "sha1-g1qdoVUfom9w6SMpBpojqmV01+Y=",
+          "dev": true,
+          "requires": {
+            "prepend-http": "^2.0.0",
+            "query-string": "^5.0.1",
+            "sort-keys": "^2.0.0"
+          }
+        },
+        "query-string": {
+          "version": "5.1.1",
+          "resolved": "https://registry.npm.taobao.org/query-string/download/query-string-5.1.1.tgz?cache=0&sync_timestamp=1561123421668&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fquery-string%2Fdownload%2Fquery-string-5.1.1.tgz",
+          "integrity": "sha1-p4wBK3HBfgXy4/ojGd0zBoLvs8s=",
+          "dev": true,
+          "requires": {
+            "decode-uri-component": "^0.2.0",
+            "object-assign": "^4.1.0",
+            "strict-uri-encode": "^1.0.0"
+          }
+        },
+        "schema-utils": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz",
+          "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=",
+          "dev": true,
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        }
+      }
+    },
+    "minimalistic-assert": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/minimalistic-assert/download/minimalistic-assert-1.0.1.tgz",
+      "integrity": "sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc=",
+      "dev": true
+    },
+    "minimalistic-crypto-utils": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/minimalistic-crypto-utils/download/minimalistic-crypto-utils-1.0.1.tgz",
+      "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
+      "dev": true
+    },
+    "minimatch": {
+      "version": "3.0.4",
+      "resolved": "http://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz",
+      "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
+      "dev": true,
+      "requires": {
+        "brace-expansion": "^1.1.7"
+      }
+    },
+    "minimist": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/minimist/download/minimist-1.2.0.tgz",
+      "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+      "dev": true
+    },
+    "mississippi": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/mississippi/download/mississippi-3.0.0.tgz",
+      "integrity": "sha1-6goykfl+C16HdrNj1fChLZTGcCI=",
+      "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"
+      }
+    },
+    "mitt": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/mitt/download/mitt-1.1.2.tgz",
+      "integrity": "sha1-OA5hSA1qYVtmDwertg1R4KTkvtY=",
+      "dev": true
+    },
+    "mixin-deep": {
+      "version": "1.3.1",
+      "resolved": "http://registry.npm.taobao.org/mixin-deep/download/mixin-deep-1.3.1.tgz",
+      "integrity": "sha1-pJ5yaNzhoNlpjkUybFYm3zVD0P4=",
+      "dev": true,
+      "requires": {
+        "for-in": "^1.0.2",
+        "is-extendable": "^1.0.1"
+      },
+      "dependencies": {
+        "is-extendable": {
+          "version": "1.0.1",
+          "resolved": "http://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz",
+          "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=",
+          "dev": true,
+          "requires": {
+            "is-plain-object": "^2.0.4"
+          }
+        }
+      }
+    },
+    "mixin-object": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/mixin-object/download/mixin-object-2.0.1.tgz",
+      "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=",
+      "dev": true,
+      "requires": {
+        "for-in": "^0.1.3",
+        "is-extendable": "^0.1.1"
+      },
+      "dependencies": {
+        "for-in": {
+          "version": "0.1.8",
+          "resolved": "https://registry.npm.taobao.org/for-in/download/for-in-0.1.8.tgz",
+          "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=",
+          "dev": true
+        }
+      }
+    },
+    "mkdirp": {
+      "version": "0.5.1",
+      "resolved": "http://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.1.tgz",
+      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+      "dev": true,
+      "requires": {
+        "minimist": "0.0.8"
+      },
+      "dependencies": {
+        "minimist": {
+          "version": "0.0.8",
+          "resolved": "http://registry.npm.taobao.org/minimist/download/minimist-0.0.8.tgz",
+          "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+          "dev": true
+        }
+      }
+    },
+    "move-concurrently": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/move-concurrently/download/move-concurrently-1.0.1.tgz",
+      "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
+      "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"
+      }
+    },
+    "ms": {
+      "version": "2.1.1",
+      "resolved": "http://registry.npm.taobao.org/ms/download/ms-2.1.1.tgz",
+      "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=",
+      "dev": true
+    },
+    "multicast-dns": {
+      "version": "6.2.3",
+      "resolved": "http://registry.npm.taobao.org/multicast-dns/download/multicast-dns-6.2.3.tgz",
+      "integrity": "sha1-oOx72QVcQoL3kMPIL04o2zsxsik=",
+      "dev": true,
+      "requires": {
+        "dns-packet": "^1.3.1",
+        "thunky": "^1.0.2"
+      }
+    },
+    "multicast-dns-service-types": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/multicast-dns-service-types/download/multicast-dns-service-types-1.1.0.tgz",
+      "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
+      "dev": true
+    },
+    "mute-stream": {
+      "version": "0.0.7",
+      "resolved": "http://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.7.tgz",
+      "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
+      "dev": true
+    },
+    "mz": {
+      "version": "2.7.0",
+      "resolved": "https://registry.npm.taobao.org/mz/download/mz-2.7.0.tgz",
+      "integrity": "sha1-lQCAV6Vsr63CvGPd5/n/aVWUjjI=",
+      "dev": true,
+      "requires": {
+        "any-promise": "^1.0.0",
+        "object-assign": "^4.0.1",
+        "thenify-all": "^1.0.0"
+      }
+    },
+    "nan": {
+      "version": "2.13.2",
+      "resolved": "http://registry.npm.taobao.org/nan/download/nan-2.13.2.tgz",
+      "integrity": "sha1-9R3Hrma6fV1V4ebU2AkugCya7+c=",
+      "dev": true
+    },
+    "nanomatch": {
+      "version": "1.2.13",
+      "resolved": "http://registry.npm.taobao.org/nanomatch/download/nanomatch-1.2.13.tgz",
+      "integrity": "sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk=",
+      "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"
+      }
+    },
+    "natural-compare": {
+      "version": "1.4.0",
+      "resolved": "http://registry.npm.taobao.org/natural-compare/download/natural-compare-1.4.0.tgz",
+      "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+      "dev": true
+    },
+    "negotiator": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz",
+      "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=",
+      "dev": true
+    },
+    "neo-async": {
+      "version": "2.6.0",
+      "resolved": "http://registry.npm.taobao.org/neo-async/download/neo-async-2.6.0.tgz",
+      "integrity": "sha1-udFeTXHGdikIZUtRg+04t1M0CDU=",
+      "dev": true
+    },
+    "nice-try": {
+      "version": "1.0.5",
+      "resolved": "http://registry.npm.taobao.org/nice-try/download/nice-try-1.0.5.tgz",
+      "integrity": "sha1-ozeKdpbOfSI+iPybdkvX7xCJ42Y=",
+      "dev": true
+    },
+    "no-case": {
+      "version": "2.3.2",
+      "resolved": "http://registry.npm.taobao.org/no-case/download/no-case-2.3.2.tgz",
+      "integrity": "sha1-YLgTOWvjmz8SiKTB7V0efSi0ZKw=",
+      "dev": true,
+      "requires": {
+        "lower-case": "^1.1.1"
+      }
+    },
+    "node-forge": {
+      "version": "0.7.5",
+      "resolved": "https://registry.npm.taobao.org/node-forge/download/node-forge-0.7.5.tgz",
+      "integrity": "sha1-bBUsNFzhHFL0ZcKr2VfoY5zWdN8=",
+      "dev": true
+    },
+    "node-gyp": {
+      "version": "3.8.0",
+      "resolved": "https://registry.npm.taobao.org/node-gyp/download/node-gyp-3.8.0.tgz",
+      "integrity": "sha1-VAMEJhwzDoDQ1e3OJTpoyzlkIYw=",
+      "dev": true,
+      "requires": {
+        "fstream": "^1.0.0",
+        "glob": "^7.0.3",
+        "graceful-fs": "^4.1.2",
+        "mkdirp": "^0.5.0",
+        "nopt": "2 || 3",
+        "npmlog": "0 || 1 || 2 || 3 || 4",
+        "osenv": "0",
+        "request": "^2.87.0",
+        "rimraf": "2",
+        "semver": "~5.3.0",
+        "tar": "^2.0.0",
+        "which": "1"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "5.3.0",
+          "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.3.0.tgz",
+          "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
+          "dev": true
+        }
+      }
+    },
+    "node-ipc": {
+      "version": "9.1.1",
+      "resolved": "http://registry.npm.taobao.org/node-ipc/download/node-ipc-9.1.1.tgz",
+      "integrity": "sha1-TiRe1pOOZRAOWV68XcNLFujdXWk=",
+      "dev": true,
+      "requires": {
+        "event-pubsub": "4.3.0",
+        "js-message": "1.0.5",
+        "js-queue": "2.0.0"
+      }
+    },
+    "node-libs-browser": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npm.taobao.org/node-libs-browser/download/node-libs-browser-2.2.1.tgz",
+      "integrity": "sha1-tk9RPRgzhiX5A0bSew0jXmMfZCU=",
+      "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",
+          "resolved": "http://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz",
+          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+          "dev": true
+        }
+      }
+    },
+    "node-releases": {
+      "version": "1.1.25",
+      "resolved": "https://registry.npm.taobao.org/node-releases/download/node-releases-1.1.25.tgz",
+      "integrity": "sha1-DC19vH/tMPvgKp7jAHuMkL8BM9M=",
+      "dev": true,
+      "requires": {
+        "semver": "^5.3.0"
+      }
+    },
+    "node-sass": {
+      "version": "4.12.0",
+      "resolved": "https://registry.npm.taobao.org/node-sass/download/node-sass-4.12.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-sass%2Fdownload%2Fnode-sass-4.12.0.tgz",
+      "integrity": "sha1-CRT1MZMjgBFKMMxfpPpjIzol8Bc=",
+      "dev": true,
+      "requires": {
+        "async-foreach": "^0.1.3",
+        "chalk": "^1.1.1",
+        "cross-spawn": "^3.0.0",
+        "gaze": "^1.0.0",
+        "get-stdin": "^4.0.1",
+        "glob": "^7.0.3",
+        "in-publish": "^2.0.0",
+        "lodash": "^4.17.11",
+        "meow": "^3.7.0",
+        "mkdirp": "^0.5.1",
+        "nan": "^2.13.2",
+        "node-gyp": "^3.8.0",
+        "npmlog": "^4.0.0",
+        "request": "^2.88.0",
+        "sass-graph": "^2.2.4",
+        "stdout-stream": "^1.4.0",
+        "true-case-path": "^1.0.2"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz",
+          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          }
+        },
+        "cross-spawn": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-3.0.1.tgz",
+          "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^4.0.1",
+            "which": "^1.2.9"
+          }
+        },
+        "lru-cache": {
+          "version": "4.1.5",
+          "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz",
+          "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=",
+          "dev": true,
+          "requires": {
+            "pseudomap": "^1.0.2",
+            "yallist": "^2.1.2"
+          }
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz",
+          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        },
+        "supports-color": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz",
+          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+          "dev": true
+        },
+        "yallist": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz",
+          "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+          "dev": true
+        }
+      }
+    },
+    "nopt": {
+      "version": "3.0.6",
+      "resolved": "https://registry.npm.taobao.org/nopt/download/nopt-3.0.6.tgz",
+      "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
+      "dev": true,
+      "requires": {
+        "abbrev": "1"
+      }
+    },
+    "normalize-package-data": {
+      "version": "2.5.0",
+      "resolved": "http://registry.npm.taobao.org/normalize-package-data/download/normalize-package-data-2.5.0.tgz",
+      "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=",
+      "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"
+      }
+    },
+    "normalize-path": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/normalize-path/download/normalize-path-3.0.0.tgz",
+      "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=",
+      "dev": true
+    },
+    "normalize-range": {
+      "version": "0.1.2",
+      "resolved": "http://registry.npm.taobao.org/normalize-range/download/normalize-range-0.1.2.tgz",
+      "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
+      "dev": true
+    },
+    "normalize-url": {
+      "version": "3.3.0",
+      "resolved": "http://registry.npm.taobao.org/normalize-url/download/normalize-url-3.3.0.tgz",
+      "integrity": "sha1-suHE3E98bVd0PfczpPWXjRhlBVk=",
+      "dev": true
+    },
+    "normalize-wheel": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/normalize-wheel/download/normalize-wheel-1.0.1.tgz",
+      "integrity": "sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU="
+    },
+    "normalize.css": {
+      "version": "8.0.1",
+      "resolved": "https://registry.npm.taobao.org/normalize.css/download/normalize.css-8.0.1.tgz",
+      "integrity": "sha1-m5iiCHOLnMJjTKrLxC0THJdIe/M="
+    },
+    "npm-run-path": {
+      "version": "2.0.2",
+      "resolved": "http://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz",
+      "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+      "dev": true,
+      "requires": {
+        "path-key": "^2.0.0"
+      }
+    },
+    "npmlog": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npm.taobao.org/npmlog/download/npmlog-4.1.2.tgz",
+      "integrity": "sha1-CKfyqL9zRgR3mp76StXMcXq7lUs=",
+      "dev": true,
+      "requires": {
+        "are-we-there-yet": "~1.1.2",
+        "console-control-strings": "~1.1.0",
+        "gauge": "~2.7.3",
+        "set-blocking": "~2.0.0"
+      }
+    },
+    "nprogress": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npm.taobao.org/nprogress/download/nprogress-0.2.0.tgz",
+      "integrity": "sha1-y480xTIT2JVyP8urkH6UIq28r7E="
+    },
+    "nth-check": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/nth-check/download/nth-check-1.0.2.tgz",
+      "integrity": "sha1-sr0pXDfj3VijvwcAN2Zjuk2c8Fw=",
+      "dev": true,
+      "requires": {
+        "boolbase": "~1.0.0"
+      }
+    },
+    "num2fraction": {
+      "version": "1.2.2",
+      "resolved": "http://registry.npm.taobao.org/num2fraction/download/num2fraction-1.2.2.tgz",
+      "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
+      "dev": true
+    },
+    "number-is-nan": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/number-is-nan/download/number-is-nan-1.0.1.tgz",
+      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+      "dev": true
+    },
+    "oauth-sign": {
+      "version": "0.9.0",
+      "resolved": "http://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz",
+      "integrity": "sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU=",
+      "dev": true
+    },
+    "object-assign": {
+      "version": "4.1.1",
+      "resolved": "http://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz",
+      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+      "dev": true
+    },
+    "object-copy": {
+      "version": "0.1.0",
+      "resolved": "http://registry.npm.taobao.org/object-copy/download/object-copy-0.1.0.tgz",
+      "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+      "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",
+          "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "object-hash": {
+      "version": "1.3.1",
+      "resolved": "http://registry.npm.taobao.org/object-hash/download/object-hash-1.3.1.tgz",
+      "integrity": "sha1-/eRSCYqVHLFF8Dm7fUVUSd3BJt8=",
+      "dev": true
+    },
+    "object-keys": {
+      "version": "1.1.1",
+      "resolved": "http://registry.npm.taobao.org/object-keys/download/object-keys-1.1.1.tgz",
+      "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4=",
+      "dev": true
+    },
+    "object-visit": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/object-visit/download/object-visit-1.0.1.tgz",
+      "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+      "dev": true,
+      "requires": {
+        "isobject": "^3.0.0"
+      }
+    },
+    "object.assign": {
+      "version": "4.1.0",
+      "resolved": "http://registry.npm.taobao.org/object.assign/download/object.assign-4.1.0.tgz",
+      "integrity": "sha1-lovxEA15Vrs8oIbwBvhGs7xACNo=",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.2",
+        "function-bind": "^1.1.1",
+        "has-symbols": "^1.0.0",
+        "object-keys": "^1.0.11"
+      }
+    },
+    "object.getownpropertydescriptors": {
+      "version": "2.0.3",
+      "resolved": "http://registry.npm.taobao.org/object.getownpropertydescriptors/download/object.getownpropertydescriptors-2.0.3.tgz",
+      "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.2",
+        "es-abstract": "^1.5.1"
+      }
+    },
+    "object.pick": {
+      "version": "1.3.0",
+      "resolved": "http://registry.npm.taobao.org/object.pick/download/object.pick-1.3.0.tgz",
+      "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+      "dev": true,
+      "requires": {
+        "isobject": "^3.0.1"
+      }
+    },
+    "object.values": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/object.values/download/object.values-1.1.0.tgz",
+      "integrity": "sha1-v2gQ712j5TJXkOqqK+IT6oRiTak=",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.12.0",
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3"
+      }
+    },
+    "obuf": {
+      "version": "1.1.2",
+      "resolved": "http://registry.npm.taobao.org/obuf/download/obuf-1.1.2.tgz",
+      "integrity": "sha1-Cb6jND1BhZ69RGKS0RydTbYZCE4=",
+      "dev": true
+    },
+    "on-finished": {
+      "version": "2.3.0",
+      "resolved": "http://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz",
+      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+      "dev": true,
+      "requires": {
+        "ee-first": "1.1.1"
+      }
+    },
+    "on-headers": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/on-headers/download/on-headers-1.0.2.tgz",
+      "integrity": "sha1-dysK5qqlJcOZ5Imt+tkMQD6zwo8=",
+      "dev": true
+    },
+    "once": {
+      "version": "1.4.0",
+      "resolved": "http://registry.npm.taobao.org/once/download/once-1.4.0.tgz",
+      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+      "dev": true,
+      "requires": {
+        "wrappy": "1"
+      }
+    },
+    "onetime": {
+      "version": "2.0.1",
+      "resolved": "http://registry.npm.taobao.org/onetime/download/onetime-2.0.1.tgz",
+      "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+      "dev": true,
+      "requires": {
+        "mimic-fn": "^1.0.0"
+      }
+    },
+    "open": {
+      "version": "6.4.0",
+      "resolved": "https://registry.npm.taobao.org/open/download/open-6.4.0.tgz",
+      "integrity": "sha1-XBPpbQ3IlGhhZPGJZez+iJ7PyKk=",
+      "dev": true,
+      "requires": {
+        "is-wsl": "^1.1.0"
+      }
+    },
+    "opener": {
+      "version": "1.5.1",
+      "resolved": "http://registry.npm.taobao.org/opener/download/opener-1.5.1.tgz",
+      "integrity": "sha1-bS8Od/GgrwAyrKcWwsH7uOfoq+0=",
+      "dev": true
+    },
+    "opn": {
+      "version": "5.5.0",
+      "resolved": "http://registry.npm.taobao.org/opn/download/opn-5.5.0.tgz",
+      "integrity": "sha1-/HFk+rVtI1kExRw7J9pnWMo7m/w=",
+      "dev": true,
+      "requires": {
+        "is-wsl": "^1.1.0"
+      }
+    },
+    "optionator": {
+      "version": "0.8.2",
+      "resolved": "http://registry.npm.taobao.org/optionator/download/optionator-0.8.2.tgz",
+      "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+      "dev": true,
+      "requires": {
+        "deep-is": "~0.1.3",
+        "fast-levenshtein": "~2.0.4",
+        "levn": "~0.3.0",
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2",
+        "wordwrap": "~1.0.0"
+      }
+    },
+    "ora": {
+      "version": "3.4.0",
+      "resolved": "http://registry.npm.taobao.org/ora/download/ora-3.4.0.tgz",
+      "integrity": "sha1-vwdSSRBZo+8+1MhQl1Md6f280xg=",
+      "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"
+      }
+    },
+    "original": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/original/download/original-1.0.2.tgz",
+      "integrity": "sha1-5EKmHP/hxf0gpl8yYcJmY7MD8l8=",
+      "dev": true,
+      "requires": {
+        "url-parse": "^1.4.3"
+      }
+    },
+    "os-browserify": {
+      "version": "0.3.0",
+      "resolved": "http://registry.npm.taobao.org/os-browserify/download/os-browserify-0.3.0.tgz",
+      "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
+      "dev": true
+    },
+    "os-homedir": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/os-homedir/download/os-homedir-1.0.2.tgz",
+      "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+      "dev": true
+    },
+    "os-locale": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npm.taobao.org/os-locale/download/os-locale-3.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fos-locale%2Fdownload%2Fos-locale-3.1.0.tgz",
+      "integrity": "sha1-qAKm7hfyTBBIOrmTVxnO9O0Wvxo=",
+      "dev": true,
+      "requires": {
+        "execa": "^1.0.0",
+        "lcid": "^2.0.0",
+        "mem": "^4.0.0"
+      }
+    },
+    "os-tmpdir": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/os-tmpdir/download/os-tmpdir-1.0.2.tgz",
+      "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+      "dev": true
+    },
+    "osenv": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npm.taobao.org/osenv/download/osenv-0.1.5.tgz",
+      "integrity": "sha1-hc36+uso6Gd/QW4odZK18/SepBA=",
+      "dev": true,
+      "requires": {
+        "os-homedir": "^1.0.0",
+        "os-tmpdir": "^1.0.0"
+      }
+    },
+    "p-defer": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/p-defer/download/p-defer-1.0.0.tgz",
+      "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
+      "dev": true
+    },
+    "p-finally": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/p-finally/download/p-finally-1.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-finally%2Fdownload%2Fp-finally-1.0.0.tgz",
+      "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+      "dev": true
+    },
+    "p-is-promise": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/p-is-promise/download/p-is-promise-2.1.0.tgz",
+      "integrity": "sha1-kYzrrqJIpiz3/6uOO8qMX4gvxC4=",
+      "dev": true
+    },
+    "p-limit": {
+      "version": "1.3.0",
+      "resolved": "http://registry.npm.taobao.org/p-limit/download/p-limit-1.3.0.tgz",
+      "integrity": "sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=",
+      "dev": true,
+      "requires": {
+        "p-try": "^1.0.0"
+      }
+    },
+    "p-locate": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/p-locate/download/p-locate-2.0.0.tgz",
+      "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+      "dev": true,
+      "requires": {
+        "p-limit": "^1.1.0"
+      }
+    },
+    "p-map": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/p-map/download/p-map-2.1.0.tgz",
+      "integrity": "sha1-MQko/u+cnsxltosXaTAYpmXOoXU=",
+      "dev": true
+    },
+    "p-retry": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npm.taobao.org/p-retry/download/p-retry-3.0.1.tgz",
+      "integrity": "sha1-MWtMiJPiyNwc+okfQGxLQivr8yg=",
+      "dev": true,
+      "requires": {
+        "retry": "^0.12.0"
+      }
+    },
+    "p-try": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/p-try/download/p-try-1.0.0.tgz",
+      "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+      "dev": true
+    },
+    "pako": {
+      "version": "1.0.10",
+      "resolved": "http://registry.npm.taobao.org/pako/download/pako-1.0.10.tgz",
+      "integrity": "sha1-Qyi621CGpCaqkPVBl31JVdpclzI=",
+      "dev": true
+    },
+    "parallel-transform": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/parallel-transform/download/parallel-transform-1.1.0.tgz",
+      "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=",
+      "dev": true,
+      "requires": {
+        "cyclist": "~0.2.2",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.1.5"
+      }
+    },
+    "param-case": {
+      "version": "2.1.1",
+      "resolved": "http://registry.npm.taobao.org/param-case/download/param-case-2.1.1.tgz",
+      "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=",
+      "dev": true,
+      "requires": {
+        "no-case": "^2.2.0"
+      }
+    },
+    "parent-module": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/parent-module/download/parent-module-1.0.1.tgz",
+      "integrity": "sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI=",
+      "dev": true,
+      "requires": {
+        "callsites": "^3.0.0"
+      },
+      "dependencies": {
+        "callsites": {
+          "version": "3.1.0",
+          "resolved": "http://registry.npm.taobao.org/callsites/download/callsites-3.1.0.tgz",
+          "integrity": "sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M=",
+          "dev": true
+        }
+      }
+    },
+    "parse-asn1": {
+      "version": "5.1.4",
+      "resolved": "http://registry.npm.taobao.org/parse-asn1/download/parse-asn1-5.1.4.tgz",
+      "integrity": "sha1-N/Zij4I/vesic7TVQENKIvPvH8w=",
+      "dev": true,
+      "requires": {
+        "asn1.js": "^4.0.0",
+        "browserify-aes": "^1.0.0",
+        "create-hash": "^1.1.0",
+        "evp_bytestokey": "^1.0.0",
+        "pbkdf2": "^3.0.3",
+        "safe-buffer": "^5.1.1"
+      }
+    },
+    "parse-json": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-4.0.0.tgz",
+      "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+      "dev": true,
+      "requires": {
+        "error-ex": "^1.3.1",
+        "json-parse-better-errors": "^1.0.1"
+      }
+    },
+    "parse5": {
+      "version": "4.0.0",
+      "resolved": "http://registry.npm.taobao.org/parse5/download/parse5-4.0.0.tgz",
+      "integrity": "sha1-bXhlbj2o14tOwLkG98CO8d/j9gg=",
+      "dev": true
+    },
+    "parseurl": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz",
+      "integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=",
+      "dev": true
+    },
+    "pascalcase": {
+      "version": "0.1.1",
+      "resolved": "http://registry.npm.taobao.org/pascalcase/download/pascalcase-0.1.1.tgz",
+      "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+      "dev": true
+    },
+    "path-browserify": {
+      "version": "0.0.1",
+      "resolved": "http://registry.npm.taobao.org/path-browserify/download/path-browserify-0.0.1.tgz",
+      "integrity": "sha1-5sTd1+06onxoogzE5Q4aTug7vEo=",
+      "dev": true
+    },
+    "path-dirname": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/path-dirname/download/path-dirname-1.0.2.tgz",
+      "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+      "dev": true
+    },
+    "path-exists": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz",
+      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+      "dev": true
+    },
+    "path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+      "dev": true
+    },
+    "path-is-inside": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/path-is-inside/download/path-is-inside-1.0.2.tgz",
+      "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+      "dev": true
+    },
+    "path-key": {
+      "version": "2.0.1",
+      "resolved": "http://registry.npm.taobao.org/path-key/download/path-key-2.0.1.tgz",
+      "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+      "dev": true
+    },
+    "path-parse": {
+      "version": "1.0.6",
+      "resolved": "http://registry.npm.taobao.org/path-parse/download/path-parse-1.0.6.tgz",
+      "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=",
+      "dev": true
+    },
+    "path-to-regexp": {
+      "version": "0.1.7",
+      "resolved": "http://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz",
+      "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
+      "dev": true
+    },
+    "path-type": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/path-type/download/path-type-3.0.0.tgz",
+      "integrity": "sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=",
+      "dev": true,
+      "requires": {
+        "pify": "^3.0.0"
+      },
+      "dependencies": {
+        "pify": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz",
+          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+          "dev": true
+        }
+      }
+    },
+    "pbkdf2": {
+      "version": "3.0.17",
+      "resolved": "http://registry.npm.taobao.org/pbkdf2/download/pbkdf2-3.0.17.tgz",
+      "integrity": "sha1-l2wgZTBhexTrsyEUI597CTNuk6Y=",
+      "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",
+      "resolved": "http://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz",
+      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
+      "dev": true
+    },
+    "pify": {
+      "version": "4.0.1",
+      "resolved": "http://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz",
+      "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=",
+      "dev": true
+    },
+    "pinkie": {
+      "version": "2.0.4",
+      "resolved": "http://registry.npm.taobao.org/pinkie/download/pinkie-2.0.4.tgz",
+      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+      "dev": true
+    },
+    "pinkie-promise": {
+      "version": "2.0.1",
+      "resolved": "http://registry.npm.taobao.org/pinkie-promise/download/pinkie-promise-2.0.1.tgz",
+      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+      "dev": true,
+      "requires": {
+        "pinkie": "^2.0.0"
+      }
+    },
+    "pkg-dir": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-3.0.0.tgz",
+      "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=",
+      "dev": true,
+      "requires": {
+        "find-up": "^3.0.0"
+      },
+      "dependencies": {
+        "find-up": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz",
+          "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=",
+          "dev": true,
+          "requires": {
+            "locate-path": "^3.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz",
+          "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=",
+          "dev": true,
+          "requires": {
+            "p-locate": "^3.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "p-limit": {
+          "version": "2.2.0",
+          "resolved": "http://registry.npm.taobao.org/p-limit/download/p-limit-2.2.0.tgz",
+          "integrity": "sha1-QXyZQeYCepq8ulCS3SkE4lW1+8I=",
+          "dev": true,
+          "requires": {
+            "p-try": "^2.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz",
+          "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=",
+          "dev": true,
+          "requires": {
+            "p-limit": "^2.0.0"
+          }
+        },
+        "p-try": {
+          "version": "2.2.0",
+          "resolved": "http://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz",
+          "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=",
+          "dev": true
+        }
+      }
+    },
+    "pkg-up": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/pkg-up/download/pkg-up-2.0.0.tgz",
+      "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=",
+      "dev": true,
+      "requires": {
+        "find-up": "^2.1.0"
+      }
+    },
+    "pluralize": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npm.taobao.org/pluralize/download/pluralize-7.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpluralize%2Fdownload%2Fpluralize-7.0.0.tgz",
+      "integrity": "sha1-KYuJ34uTsCIdv0Ia0rGx6iP8Z3c=",
+      "dev": true,
+      "optional": true
+    },
+    "portfinder": {
+      "version": "1.0.21",
+      "resolved": "https://registry.npm.taobao.org/portfinder/download/portfinder-1.0.21.tgz?cache=0&sync_timestamp=1562941556574&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fportfinder%2Fdownload%2Fportfinder-1.0.21.tgz",
+      "integrity": "sha1-YOE5e5WsFwdJ23ADTs4wa5on4yQ=",
+      "dev": true,
+      "requires": {
+        "async": "^1.5.2",
+        "debug": "^2.2.0",
+        "mkdirp": "0.5.x"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz",
+          "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        }
+      }
+    },
+    "posix-character-classes": {
+      "version": "0.1.1",
+      "resolved": "http://registry.npm.taobao.org/posix-character-classes/download/posix-character-classes-0.1.1.tgz",
+      "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+      "dev": true
+    },
+    "postcss": {
+      "version": "7.0.14",
+      "resolved": "http://registry.npm.taobao.org/postcss/download/postcss-7.0.14.tgz",
+      "integrity": "sha1-RSftaxyg2CxTzl7BogQcI0a71uU=",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.4.2",
+        "source-map": "^0.6.1",
+        "supports-color": "^6.1.0"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "6.1.0",
+          "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz",
+          "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        }
+      }
+    },
+    "postcss-calc": {
+      "version": "7.0.1",
+      "resolved": "http://registry.npm.taobao.org/postcss-calc/download/postcss-calc-7.0.1.tgz",
+      "integrity": "sha1-Ntd7qwI7Dsu5eJ2E3LI8SUEUVDY=",
+      "dev": true,
+      "requires": {
+        "css-unit-converter": "^1.1.1",
+        "postcss": "^7.0.5",
+        "postcss-selector-parser": "^5.0.0-rc.4",
+        "postcss-value-parser": "^3.3.1"
+      }
+    },
+    "postcss-colormin": {
+      "version": "4.0.3",
+      "resolved": "http://registry.npm.taobao.org/postcss-colormin/download/postcss-colormin-4.0.3.tgz",
+      "integrity": "sha1-rgYLzpPteUrHEmTwgTLVUJVr04E=",
+      "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"
+      }
+    },
+    "postcss-convert-values": {
+      "version": "4.0.1",
+      "resolved": "http://registry.npm.taobao.org/postcss-convert-values/download/postcss-convert-values-4.0.1.tgz",
+      "integrity": "sha1-yjgT7U2g+BL51DcDWE5Enr4Ymn8=",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      }
+    },
+    "postcss-discard-comments": {
+      "version": "4.0.2",
+      "resolved": "http://registry.npm.taobao.org/postcss-discard-comments/download/postcss-discard-comments-4.0.2.tgz",
+      "integrity": "sha1-H7q9LCRr/2qq15l7KwkY9NevQDM=",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-discard-duplicates": {
+      "version": "4.0.2",
+      "resolved": "http://registry.npm.taobao.org/postcss-discard-duplicates/download/postcss-discard-duplicates-4.0.2.tgz",
+      "integrity": "sha1-P+EzzTyCKC5VD8myORdqkge3hOs=",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-discard-empty": {
+      "version": "4.0.1",
+      "resolved": "http://registry.npm.taobao.org/postcss-discard-empty/download/postcss-discard-empty-4.0.1.tgz",
+      "integrity": "sha1-yMlR6fc+2UKAGUWERKAq2Qu592U=",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-discard-overridden": {
+      "version": "4.0.1",
+      "resolved": "http://registry.npm.taobao.org/postcss-discard-overridden/download/postcss-discard-overridden-4.0.1.tgz",
+      "integrity": "sha1-ZSrvipZybwKfXj4AFG7npOdV/1c=",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-load-config": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/postcss-load-config/download/postcss-load-config-2.1.0.tgz",
+      "integrity": "sha1-yE1pK3u3tB3c7ZTuYuirMbQXsAM=",
+      "dev": true,
+      "requires": {
+        "cosmiconfig": "^5.0.0",
+        "import-cwd": "^2.0.0"
+      }
+    },
+    "postcss-loader": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/postcss-loader/download/postcss-loader-3.0.0.tgz",
+      "integrity": "sha1-a5eUPkfHLYRfqeA/Jzdz1OjdbC0=",
+      "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",
+          "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz",
+          "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=",
+          "dev": true,
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        }
+      }
+    },
+    "postcss-merge-longhand": {
+      "version": "4.0.11",
+      "resolved": "http://registry.npm.taobao.org/postcss-merge-longhand/download/postcss-merge-longhand-4.0.11.tgz",
+      "integrity": "sha1-YvSaE+Sg7gTnuY9CuxYGLKJUniQ=",
+      "dev": true,
+      "requires": {
+        "css-color-names": "0.0.4",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0",
+        "stylehacks": "^4.0.0"
+      }
+    },
+    "postcss-merge-rules": {
+      "version": "4.0.3",
+      "resolved": "http://registry.npm.taobao.org/postcss-merge-rules/download/postcss-merge-rules-4.0.3.tgz",
+      "integrity": "sha1-NivqT/Wh+Y5AdacTxsslrv75plA=",
+      "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.1",
+          "resolved": "http://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.1.tgz",
+          "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=",
+          "dev": true,
+          "requires": {
+            "dot-prop": "^4.1.1",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        }
+      }
+    },
+    "postcss-minify-font-values": {
+      "version": "4.0.2",
+      "resolved": "http://registry.npm.taobao.org/postcss-minify-font-values/download/postcss-minify-font-values-4.0.2.tgz",
+      "integrity": "sha1-zUw0TM5HQ0P6xdgiBqssvLiv1aY=",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      }
+    },
+    "postcss-minify-gradients": {
+      "version": "4.0.2",
+      "resolved": "http://registry.npm.taobao.org/postcss-minify-gradients/download/postcss-minify-gradients-4.0.2.tgz",
+      "integrity": "sha1-k7KcL/UJnFNe7NpWxKpuZlpmNHE=",
+      "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"
+      }
+    },
+    "postcss-minify-params": {
+      "version": "4.0.2",
+      "resolved": "http://registry.npm.taobao.org/postcss-minify-params/download/postcss-minify-params-4.0.2.tgz",
+      "integrity": "sha1-a5zvAwwR41Jh+V9hjJADbWgNuHQ=",
+      "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"
+      }
+    },
+    "postcss-minify-selectors": {
+      "version": "4.0.2",
+      "resolved": "http://registry.npm.taobao.org/postcss-minify-selectors/download/postcss-minify-selectors-4.0.2.tgz",
+      "integrity": "sha1-4uXrQL/uUA0M2SQ1APX46kJi+9g=",
+      "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.1",
+          "resolved": "http://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.1.tgz",
+          "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=",
+          "dev": true,
+          "requires": {
+            "dot-prop": "^4.1.1",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        }
+      }
+    },
+    "postcss-modules-extract-imports": {
+      "version": "1.2.1",
+      "resolved": "http://registry.npm.taobao.org/postcss-modules-extract-imports/download/postcss-modules-extract-imports-1.2.1.tgz",
+      "integrity": "sha1-3IfjQUjsfqtfeR981YSYMzdbdBo=",
+      "dev": true,
+      "requires": {
+        "postcss": "^6.0.1"
+      },
+      "dependencies": {
+        "postcss": {
+          "version": "6.0.23",
+          "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-6.0.23.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss%2Fdownload%2Fpostcss-6.0.23.tgz",
+          "integrity": "sha1-YcgswyisYOZ3ZF+XkFTrmLwOMyQ=",
+          "dev": true,
+          "requires": {
+            "chalk": "^2.4.1",
+            "source-map": "^0.6.1",
+            "supports-color": "^5.4.0"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        }
+      }
+    },
+    "postcss-modules-local-by-default": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/postcss-modules-local-by-default/download/postcss-modules-local-by-default-1.2.0.tgz",
+      "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=",
+      "dev": true,
+      "requires": {
+        "css-selector-tokenizer": "^0.7.0",
+        "postcss": "^6.0.1"
+      },
+      "dependencies": {
+        "postcss": {
+          "version": "6.0.23",
+          "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-6.0.23.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss%2Fdownload%2Fpostcss-6.0.23.tgz",
+          "integrity": "sha1-YcgswyisYOZ3ZF+XkFTrmLwOMyQ=",
+          "dev": true,
+          "requires": {
+            "chalk": "^2.4.1",
+            "source-map": "^0.6.1",
+            "supports-color": "^5.4.0"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        }
+      }
+    },
+    "postcss-modules-scope": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/postcss-modules-scope/download/postcss-modules-scope-1.1.0.tgz",
+      "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=",
+      "dev": true,
+      "requires": {
+        "css-selector-tokenizer": "^0.7.0",
+        "postcss": "^6.0.1"
+      },
+      "dependencies": {
+        "postcss": {
+          "version": "6.0.23",
+          "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-6.0.23.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss%2Fdownload%2Fpostcss-6.0.23.tgz",
+          "integrity": "sha1-YcgswyisYOZ3ZF+XkFTrmLwOMyQ=",
+          "dev": true,
+          "requires": {
+            "chalk": "^2.4.1",
+            "source-map": "^0.6.1",
+            "supports-color": "^5.4.0"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        }
+      }
+    },
+    "postcss-modules-values": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npm.taobao.org/postcss-modules-values/download/postcss-modules-values-1.3.0.tgz",
+      "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=",
+      "dev": true,
+      "requires": {
+        "icss-replace-symbols": "^1.1.0",
+        "postcss": "^6.0.1"
+      },
+      "dependencies": {
+        "postcss": {
+          "version": "6.0.23",
+          "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-6.0.23.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss%2Fdownload%2Fpostcss-6.0.23.tgz",
+          "integrity": "sha1-YcgswyisYOZ3ZF+XkFTrmLwOMyQ=",
+          "dev": true,
+          "requires": {
+            "chalk": "^2.4.1",
+            "source-map": "^0.6.1",
+            "supports-color": "^5.4.0"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-charset": {
+      "version": "4.0.1",
+      "resolved": "http://registry.npm.taobao.org/postcss-normalize-charset/download/postcss-normalize-charset-4.0.1.tgz",
+      "integrity": "sha1-izWt067oOhNrBHHg1ZvlilAoXdQ=",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-normalize-display-values": {
+      "version": "4.0.2",
+      "resolved": "http://registry.npm.taobao.org/postcss-normalize-display-values/download/postcss-normalize-display-values-4.0.2.tgz",
+      "integrity": "sha1-Db4EpM6QY9RmftK+R2u4MMglk1o=",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-match": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      }
+    },
+    "postcss-normalize-positions": {
+      "version": "4.0.2",
+      "resolved": "http://registry.npm.taobao.org/postcss-normalize-positions/download/postcss-normalize-positions-4.0.2.tgz",
+      "integrity": "sha1-BfdX+E8mBDc3g2ipH4ky1LECkX8=",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      }
+    },
+    "postcss-normalize-repeat-style": {
+      "version": "4.0.2",
+      "resolved": "http://registry.npm.taobao.org/postcss-normalize-repeat-style/download/postcss-normalize-repeat-style-4.0.2.tgz",
+      "integrity": "sha1-xOu8KJ85kaAo1EdRy90RkYsXkQw=",
+      "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"
+      }
+    },
+    "postcss-normalize-string": {
+      "version": "4.0.2",
+      "resolved": "http://registry.npm.taobao.org/postcss-normalize-string/download/postcss-normalize-string-4.0.2.tgz",
+      "integrity": "sha1-zUTECrB6DHo23F6Zqs4eyk7CaQw=",
+      "dev": true,
+      "requires": {
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      }
+    },
+    "postcss-normalize-timing-functions": {
+      "version": "4.0.2",
+      "resolved": "http://registry.npm.taobao.org/postcss-normalize-timing-functions/download/postcss-normalize-timing-functions-4.0.2.tgz",
+      "integrity": "sha1-jgCcoqOUnNr4rSPmtquZy159KNk=",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-match": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      }
+    },
+    "postcss-normalize-unicode": {
+      "version": "4.0.1",
+      "resolved": "http://registry.npm.taobao.org/postcss-normalize-unicode/download/postcss-normalize-unicode-4.0.1.tgz",
+      "integrity": "sha1-hBvUj9zzAZrUuqdJOj02O1KuHPs=",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      }
+    },
+    "postcss-normalize-url": {
+      "version": "4.0.1",
+      "resolved": "http://registry.npm.taobao.org/postcss-normalize-url/download/postcss-normalize-url-4.0.1.tgz",
+      "integrity": "sha1-EOQ3+GvHx+WPe5ZS7YeNqqlfquE=",
+      "dev": true,
+      "requires": {
+        "is-absolute-url": "^2.0.0",
+        "normalize-url": "^3.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      }
+    },
+    "postcss-normalize-whitespace": {
+      "version": "4.0.2",
+      "resolved": "http://registry.npm.taobao.org/postcss-normalize-whitespace/download/postcss-normalize-whitespace-4.0.2.tgz",
+      "integrity": "sha1-vx1AcP5Pzqh9E0joJdjMDF+qfYI=",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      }
+    },
+    "postcss-ordered-values": {
+      "version": "4.1.2",
+      "resolved": "http://registry.npm.taobao.org/postcss-ordered-values/download/postcss-ordered-values-4.1.2.tgz",
+      "integrity": "sha1-DPdcgg7H1cTSgBiVWeC1ceusDu4=",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      }
+    },
+    "postcss-prefix-selector": {
+      "version": "1.7.1",
+      "resolved": "https://registry.npm.taobao.org/postcss-prefix-selector/download/postcss-prefix-selector-1.7.1.tgz",
+      "integrity": "sha1-xfiD4jZqgjvWi+6Ef4cxTWuLo9s=",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-reduce-initial": {
+      "version": "4.0.3",
+      "resolved": "http://registry.npm.taobao.org/postcss-reduce-initial/download/postcss-reduce-initial-4.0.3.tgz",
+      "integrity": "sha1-f9QuvqXpyBRgljniwuhK4nC6SN8=",
+      "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",
+      "resolved": "http://registry.npm.taobao.org/postcss-reduce-transforms/download/postcss-reduce-transforms-4.0.2.tgz",
+      "integrity": "sha1-F++kBerMbge+NBSlyi0QdGgdTik=",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-match": "^4.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      }
+    },
+    "postcss-selector-parser": {
+      "version": "5.0.0",
+      "resolved": "http://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-5.0.0.tgz",
+      "integrity": "sha1-JJBENWaXsztk8aj3yAki3d7nGVw=",
+      "dev": true,
+      "requires": {
+        "cssesc": "^2.0.0",
+        "indexes-of": "^1.0.1",
+        "uniq": "^1.0.1"
+      }
+    },
+    "postcss-svgo": {
+      "version": "4.0.2",
+      "resolved": "http://registry.npm.taobao.org/postcss-svgo/download/postcss-svgo-4.0.2.tgz",
+      "integrity": "sha1-F7mXvHEbMzurFDqu07jT1uPTglg=",
+      "dev": true,
+      "requires": {
+        "is-svg": "^3.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0",
+        "svgo": "^1.0.0"
+      }
+    },
+    "postcss-unique-selectors": {
+      "version": "4.0.1",
+      "resolved": "http://registry.npm.taobao.org/postcss-unique-selectors/download/postcss-unique-selectors-4.0.1.tgz",
+      "integrity": "sha1-lEaRHzKJv9ZMbWgPBzwDsfnuS6w=",
+      "dev": true,
+      "requires": {
+        "alphanum-sort": "^1.0.0",
+        "postcss": "^7.0.0",
+        "uniqs": "^2.0.0"
+      }
+    },
+    "postcss-value-parser": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+      "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+      "dev": true
+    },
+    "posthtml": {
+      "version": "0.9.2",
+      "resolved": "https://registry.npm.taobao.org/posthtml/download/posthtml-0.9.2.tgz",
+      "integrity": "sha1-9MBtufZ7Yf0XxOJW5+PZUVv3Jv0=",
+      "dev": true,
+      "requires": {
+        "posthtml-parser": "^0.2.0",
+        "posthtml-render": "^1.0.5"
+      }
+    },
+    "posthtml-parser": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npm.taobao.org/posthtml-parser/download/posthtml-parser-0.2.1.tgz",
+      "integrity": "sha1-NdUw3jhnQMK6JP8usvrznM3ycd0=",
+      "dev": true,
+      "requires": {
+        "htmlparser2": "^3.8.3",
+        "isobject": "^2.1.0"
+      },
+      "dependencies": {
+        "isobject": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npm.taobao.org/isobject/download/isobject-2.1.0.tgz",
+          "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+          "dev": true,
+          "requires": {
+            "isarray": "1.0.0"
+          }
+        }
+      }
+    },
+    "posthtml-rename-id": {
+      "version": "1.0.11",
+      "resolved": "https://registry.npm.taobao.org/posthtml-rename-id/download/posthtml-rename-id-1.0.11.tgz",
+      "integrity": "sha1-AigaHkSCqjyMMPeYz5qIjjLZJ1w=",
+      "dev": true,
+      "requires": {
+        "escape-string-regexp": "1.0.5"
+      }
+    },
+    "posthtml-render": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npm.taobao.org/posthtml-render/download/posthtml-render-1.1.5.tgz",
+      "integrity": "sha1-OHk06FQ4o953CF+8fSZO+wC9Dg8=",
+      "dev": true
+    },
+    "posthtml-svg-mode": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npm.taobao.org/posthtml-svg-mode/download/posthtml-svg-mode-1.0.3.tgz",
+      "integrity": "sha1-q9VU+s6BIjyrDLNn4Y5O/SpOdLA=",
+      "dev": true,
+      "requires": {
+        "merge-options": "1.0.1",
+        "posthtml": "^0.9.2",
+        "posthtml-parser": "^0.2.1",
+        "posthtml-render": "^1.0.6"
+      }
+    },
+    "prelude-ls": {
+      "version": "1.1.2",
+      "resolved": "http://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz",
+      "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+      "dev": true
+    },
+    "prepend-http": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/prepend-http/download/prepend-http-2.0.0.tgz",
+      "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=",
+      "dev": true
+    },
+    "prettier": {
+      "version": "1.16.3",
+      "resolved": "https://registry.npm.taobao.org/prettier/download/prettier-1.16.3.tgz",
+      "integrity": "sha1-jGIWhFO63vcC80tFtu6JlXSmpl0=",
+      "dev": true
+    },
+    "pretty-error": {
+      "version": "2.1.1",
+      "resolved": "http://registry.npm.taobao.org/pretty-error/download/pretty-error-2.1.1.tgz",
+      "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=",
+      "dev": true,
+      "requires": {
+        "renderkid": "^2.0.1",
+        "utila": "~0.4"
+      }
+    },
+    "private": {
+      "version": "0.1.8",
+      "resolved": "http://registry.npm.taobao.org/private/download/private-0.1.8.tgz",
+      "integrity": "sha1-I4Hts2ifelPWUxkAYPz4ItLzaP8=",
+      "dev": true
+    },
+    "process": {
+      "version": "0.11.10",
+      "resolved": "http://registry.npm.taobao.org/process/download/process-0.11.10.tgz",
+      "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+      "dev": true
+    },
+    "process-nextick-args": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.0.tgz",
+      "integrity": "sha1-o31zL0JxtKsa0HDTVQjoKQeI/6o=",
+      "dev": true
+    },
+    "progress": {
+      "version": "2.0.3",
+      "resolved": "http://registry.npm.taobao.org/progress/download/progress-2.0.3.tgz",
+      "integrity": "sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=",
+      "dev": true
+    },
+    "promise-inflight": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/promise-inflight/download/promise-inflight-1.0.1.tgz",
+      "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
+      "dev": true
+    },
+    "proxy-addr": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npm.taobao.org/proxy-addr/download/proxy-addr-2.0.5.tgz",
+      "integrity": "sha1-NMvWSi2B9LH9IedvnwbIpFKZ7jQ=",
+      "dev": true,
+      "requires": {
+        "forwarded": "~0.1.2",
+        "ipaddr.js": "1.9.0"
+      }
+    },
+    "prr": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/prr/download/prr-1.0.1.tgz",
+      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
+      "dev": true
+    },
+    "pseudomap": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/pseudomap/download/pseudomap-1.0.2.tgz",
+      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+      "dev": true
+    },
+    "psl": {
+      "version": "1.1.31",
+      "resolved": "http://registry.npm.taobao.org/psl/download/psl-1.1.31.tgz",
+      "integrity": "sha1-6aqG0BAbWxBcvpOsa3hM1UcnYYQ=",
+      "dev": true
+    },
+    "public-encrypt": {
+      "version": "4.0.3",
+      "resolved": "http://registry.npm.taobao.org/public-encrypt/download/public-encrypt-4.0.3.tgz",
+      "integrity": "sha1-T8ydd6B+SLp1J+fL4N4z0HATMeA=",
+      "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"
+      }
+    },
+    "pump": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/pump/download/pump-3.0.0.tgz",
+      "integrity": "sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=",
+      "dev": true,
+      "requires": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "pumpify": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npm.taobao.org/pumpify/download/pumpify-1.5.1.tgz",
+      "integrity": "sha1-NlE74karJ1cLGjdKXOJ4v9dDcM4=",
+      "dev": true,
+      "requires": {
+        "duplexify": "^3.6.0",
+        "inherits": "^2.0.3",
+        "pump": "^2.0.0"
+      },
+      "dependencies": {
+        "pump": {
+          "version": "2.0.1",
+          "resolved": "http://registry.npm.taobao.org/pump/download/pump-2.0.1.tgz",
+          "integrity": "sha1-Ejma3W5M91Jtlzy8i1zi4pCLOQk=",
+          "dev": true,
+          "requires": {
+            "end-of-stream": "^1.1.0",
+            "once": "^1.3.1"
+          }
+        }
+      }
+    },
+    "punycode": {
+      "version": "2.1.1",
+      "resolved": "http://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz",
+      "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=",
+      "dev": true
+    },
+    "q": {
+      "version": "1.5.1",
+      "resolved": "http://registry.npm.taobao.org/q/download/q-1.5.1.tgz",
+      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+      "dev": true
+    },
+    "qs": {
+      "version": "6.5.2",
+      "resolved": "http://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz?cache=0&other_urls=http%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.5.2.tgz",
+      "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=",
+      "dev": true
+    },
+    "query-string": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npm.taobao.org/query-string/download/query-string-4.3.4.tgz",
+      "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=",
+      "dev": true,
+      "requires": {
+        "object-assign": "^4.1.0",
+        "strict-uri-encode": "^1.0.0"
+      }
+    },
+    "querystring": {
+      "version": "0.2.0",
+      "resolved": "http://registry.npm.taobao.org/querystring/download/querystring-0.2.0.tgz",
+      "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
+      "dev": true
+    },
+    "querystring-es3": {
+      "version": "0.2.1",
+      "resolved": "http://registry.npm.taobao.org/querystring-es3/download/querystring-es3-0.2.1.tgz",
+      "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
+      "dev": true
+    },
+    "querystringify": {
+      "version": "2.1.1",
+      "resolved": "http://registry.npm.taobao.org/querystringify/download/querystringify-2.1.1.tgz",
+      "integrity": "sha1-YOWl/WSn+L+k0qsu1v30yFutFU4=",
+      "dev": true
+    },
+    "randombytes": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/randombytes/download/randombytes-2.1.0.tgz",
+      "integrity": "sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo=",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "randomfill": {
+      "version": "1.0.4",
+      "resolved": "http://registry.npm.taobao.org/randomfill/download/randomfill-1.0.4.tgz",
+      "integrity": "sha1-ySGW/IarQr6YPxvzF3giSTHWFFg=",
+      "dev": true,
+      "requires": {
+        "randombytes": "^2.0.5",
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "range-parser": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npm.taobao.org/range-parser/download/range-parser-1.2.1.tgz",
+      "integrity": "sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE=",
+      "dev": true
+    },
+    "raw-body": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npm.taobao.org/raw-body/download/raw-body-2.4.0.tgz",
+      "integrity": "sha1-oc5vucm8NWylLoklarWQWeE9AzI=",
+      "dev": true,
+      "requires": {
+        "bytes": "3.1.0",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
+        "unpipe": "1.0.0"
+      }
+    },
+    "read-pkg": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npm.taobao.org/read-pkg/download/read-pkg-5.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fread-pkg%2Fdownload%2Fread-pkg-5.2.0.tgz",
+      "integrity": "sha1-e/KVQ4yloz5WzTDgU7NO5yUMk8w=",
+      "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.0.0",
+          "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-5.0.0.tgz",
+          "integrity": "sha1-c+URTJhtFD76NxLU6iTbmkJm9g8=",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.0.0",
+            "error-ex": "^1.3.1",
+            "json-parse-better-errors": "^1.0.1",
+            "lines-and-columns": "^1.1.6"
+          }
+        }
+      }
+    },
+    "read-pkg-up": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/read-pkg-up/download/read-pkg-up-2.0.0.tgz",
+      "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+      "dev": true,
+      "requires": {
+        "find-up": "^2.0.0",
+        "read-pkg": "^2.0.0"
+      },
+      "dependencies": {
+        "find-up": {
+          "version": "2.1.0",
+          "resolved": "http://registry.npm.taobao.org/find-up/download/find-up-2.1.0.tgz",
+          "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+          "dev": true,
+          "requires": {
+            "locate-path": "^2.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "2.0.0",
+          "resolved": "http://registry.npm.taobao.org/locate-path/download/locate-path-2.0.0.tgz",
+          "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+          "dev": true,
+          "requires": {
+            "p-locate": "^2.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "p-limit": {
+          "version": "1.3.0",
+          "resolved": "http://registry.npm.taobao.org/p-limit/download/p-limit-1.3.0.tgz",
+          "integrity": "sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=",
+          "dev": true,
+          "requires": {
+            "p-try": "^1.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "2.0.0",
+          "resolved": "http://registry.npm.taobao.org/p-locate/download/p-locate-2.0.0.tgz",
+          "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+          "dev": true,
+          "requires": {
+            "p-limit": "^1.1.0"
+          }
+        },
+        "p-try": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/p-try/download/p-try-1.0.0.tgz",
+          "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+          "dev": true
+        },
+        "path-type": {
+          "version": "2.0.0",
+          "resolved": "http://registry.npm.taobao.org/path-type/download/path-type-2.0.0.tgz",
+          "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+          "dev": true,
+          "requires": {
+            "pify": "^2.0.0"
+          }
+        },
+        "pify": {
+          "version": "2.3.0",
+          "resolved": "http://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz",
+          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+          "dev": true
+        },
+        "read-pkg": {
+          "version": "2.0.0",
+          "resolved": "http://registry.npm.taobao.org/read-pkg/download/read-pkg-2.0.0.tgz",
+          "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+          "dev": true,
+          "requires": {
+            "load-json-file": "^2.0.0",
+            "normalize-package-data": "^2.3.2",
+            "path-type": "^2.0.0"
+          }
+        }
+      }
+    },
+    "readable-stream": {
+      "version": "2.3.6",
+      "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz",
+      "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=",
+      "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",
+      "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-2.2.1.tgz",
+      "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.11",
+        "micromatch": "^3.1.10",
+        "readable-stream": "^2.0.2"
+      }
+    },
+    "redent": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/redent/download/redent-1.0.0.tgz",
+      "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+      "dev": true,
+      "requires": {
+        "indent-string": "^2.1.0",
+        "strip-indent": "^1.0.1"
+      },
+      "dependencies": {
+        "strip-indent": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npm.taobao.org/strip-indent/download/strip-indent-1.0.1.tgz",
+          "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+          "dev": true,
+          "requires": {
+            "get-stdin": "^4.0.1"
+          }
+        }
+      }
+    },
+    "regenerate": {
+      "version": "1.4.0",
+      "resolved": "http://registry.npm.taobao.org/regenerate/download/regenerate-1.4.0.tgz",
+      "integrity": "sha1-SoVuxLVuQHfFV1icroXnpMiGmhE=",
+      "dev": true
+    },
+    "regenerate-unicode-properties": {
+      "version": "8.1.0",
+      "resolved": "https://registry.npm.taobao.org/regenerate-unicode-properties/download/regenerate-unicode-properties-8.1.0.tgz",
+      "integrity": "sha1-71Hg8OpK1CS3e/fLQfPgFccKPw4=",
+      "dev": true,
+      "requires": {
+        "regenerate": "^1.4.0"
+      }
+    },
+    "regenerator-runtime": {
+      "version": "0.11.1",
+      "resolved": "http://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.11.1.tgz",
+      "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk="
+    },
+    "regenerator-transform": {
+      "version": "0.14.1",
+      "resolved": "https://registry.npm.taobao.org/regenerator-transform/download/regenerator-transform-0.14.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerator-transform%2Fdownload%2Fregenerator-transform-0.14.1.tgz",
+      "integrity": "sha1-Oy/OThq3cywI9mXf2zFHScfd0vs=",
+      "dev": true,
+      "requires": {
+        "private": "^0.1.6"
+      }
+    },
+    "regex-not": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/regex-not/download/regex-not-1.0.2.tgz",
+      "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^3.0.2",
+        "safe-regex": "^1.1.0"
+      }
+    },
+    "regexp-tree": {
+      "version": "0.1.11",
+      "resolved": "https://registry.npm.taobao.org/regexp-tree/download/regexp-tree-0.1.11.tgz",
+      "integrity": "sha1-ycfwD89yLgpWxzkJg6emPdbCcvM=",
+      "dev": true
+    },
+    "regexpp": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/regexpp/download/regexpp-1.1.0.tgz",
+      "integrity": "sha1-DjUW3Qt5BPQT0tQZPc5GGMOmias=",
+      "dev": true,
+      "optional": true
+    },
+    "regexpu-core": {
+      "version": "4.5.4",
+      "resolved": "http://registry.npm.taobao.org/regexpu-core/download/regexpu-core-4.5.4.tgz",
+      "integrity": "sha1-CA2dAiiaqH/hZnpPUTa8mKauuq4=",
+      "dev": true,
+      "requires": {
+        "regenerate": "^1.4.0",
+        "regenerate-unicode-properties": "^8.0.2",
+        "regjsgen": "^0.5.0",
+        "regjsparser": "^0.6.0",
+        "unicode-match-property-ecmascript": "^1.0.4",
+        "unicode-match-property-value-ecmascript": "^1.1.0"
+      }
+    },
+    "regjsgen": {
+      "version": "0.5.0",
+      "resolved": "http://registry.npm.taobao.org/regjsgen/download/regjsgen-0.5.0.tgz",
+      "integrity": "sha1-p2NNwI+JIJwgSa3aNSVxH7lyZd0=",
+      "dev": true
+    },
+    "regjsparser": {
+      "version": "0.6.0",
+      "resolved": "http://registry.npm.taobao.org/regjsparser/download/regjsparser-0.6.0.tgz",
+      "integrity": "sha1-8eaui32iuulsmTmbhozWyTOiupw=",
+      "dev": true,
+      "requires": {
+        "jsesc": "~0.5.0"
+      },
+      "dependencies": {
+        "jsesc": {
+          "version": "0.5.0",
+          "resolved": "http://registry.npm.taobao.org/jsesc/download/jsesc-0.5.0.tgz",
+          "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
+          "dev": true
+        }
+      }
+    },
+    "relateurl": {
+      "version": "0.2.7",
+      "resolved": "http://registry.npm.taobao.org/relateurl/download/relateurl-0.2.7.tgz",
+      "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
+      "dev": true
+    },
+    "remove-trailing-separator": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/remove-trailing-separator/download/remove-trailing-separator-1.1.0.tgz",
+      "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+      "dev": true
+    },
+    "renderkid": {
+      "version": "2.0.3",
+      "resolved": "http://registry.npm.taobao.org/renderkid/download/renderkid-2.0.3.tgz",
+      "integrity": "sha1-OAF5wv9a4TZcUivy/Pz/AcW3QUk=",
+      "dev": true,
+      "requires": {
+        "css-select": "^1.1.0",
+        "dom-converter": "^0.2",
+        "htmlparser2": "^3.3.0",
+        "strip-ansi": "^3.0.0",
+        "utila": "^0.4.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "2.1.1",
+          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz",
+          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+          "dev": true
+        },
+        "css-select": {
+          "version": "1.2.0",
+          "resolved": "http://registry.npm.taobao.org/css-select/download/css-select-1.2.0.tgz",
+          "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
+          "dev": true,
+          "requires": {
+            "boolbase": "~1.0.0",
+            "css-what": "2.1",
+            "domutils": "1.5.1",
+            "nth-check": "~1.0.1"
+          }
+        },
+        "domutils": {
+          "version": "1.5.1",
+          "resolved": "http://registry.npm.taobao.org/domutils/download/domutils-1.5.1.tgz",
+          "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
+          "dev": true,
+          "requires": {
+            "dom-serializer": "0",
+            "domelementtype": "1"
+          }
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz",
+          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        }
+      }
+    },
+    "repeat-element": {
+      "version": "1.1.3",
+      "resolved": "http://registry.npm.taobao.org/repeat-element/download/repeat-element-1.1.3.tgz",
+      "integrity": "sha1-eC4NglwMWjuzlzH4Tv7mt0Lmsc4=",
+      "dev": true
+    },
+    "repeat-string": {
+      "version": "1.6.1",
+      "resolved": "http://registry.npm.taobao.org/repeat-string/download/repeat-string-1.6.1.tgz",
+      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+      "dev": true
+    },
+    "repeating": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/repeating/download/repeating-2.0.1.tgz",
+      "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+      "dev": true,
+      "requires": {
+        "is-finite": "^1.0.0"
+      }
+    },
+    "request": {
+      "version": "2.88.0",
+      "resolved": "http://registry.npm.taobao.org/request/download/request-2.88.0.tgz",
+      "integrity": "sha1-nC/KT301tZLv5Xx/ClXoEFIST+8=",
+      "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.0",
+        "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.4.3",
+        "tunnel-agent": "^0.6.0",
+        "uuid": "^3.3.2"
+      }
+    },
+    "request-promise-core": {
+      "version": "1.1.2",
+      "resolved": "http://registry.npm.taobao.org/request-promise-core/download/request-promise-core-1.1.2.tgz",
+      "integrity": "sha1-M59qq6vK/bMceZ/xWHADNjAdM0Y=",
+      "dev": true,
+      "requires": {
+        "lodash": "^4.17.11"
+      }
+    },
+    "request-promise-native": {
+      "version": "1.0.7",
+      "resolved": "http://registry.npm.taobao.org/request-promise-native/download/request-promise-native-1.0.7.tgz",
+      "integrity": "sha1-pJhopiS96lBp8SUdCoNuDYmqLFk=",
+      "dev": true,
+      "requires": {
+        "request-promise-core": "1.1.2",
+        "stealthy-require": "^1.1.1",
+        "tough-cookie": "^2.3.3"
+      }
+    },
+    "require-directory": {
+      "version": "2.1.1",
+      "resolved": "http://registry.npm.taobao.org/require-directory/download/require-directory-2.1.1.tgz",
+      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+      "dev": true
+    },
+    "require-main-filename": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/require-main-filename/download/require-main-filename-1.0.1.tgz",
+      "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+      "dev": true
+    },
+    "require-uncached": {
+      "version": "1.0.3",
+      "resolved": "http://registry.npm.taobao.org/require-uncached/download/require-uncached-1.0.3.tgz",
+      "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "caller-path": "^0.1.0",
+        "resolve-from": "^1.0.0"
+      }
+    },
+    "requires-port": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz",
+      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
+      "dev": true
+    },
+    "reselect": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npm.taobao.org/reselect/download/reselect-3.0.1.tgz",
+      "integrity": "sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc=",
+      "dev": true
+    },
+    "resize-observer-polyfill": {
+      "version": "1.5.1",
+      "resolved": "http://registry.npm.taobao.org/resize-observer-polyfill/download/resize-observer-polyfill-1.5.1.tgz",
+      "integrity": "sha1-DpAg3T0hAkRY1OvSfiPkAmmBBGQ="
+    },
+    "resolve": {
+      "version": "1.10.0",
+      "resolved": "http://registry.npm.taobao.org/resolve/download/resolve-1.10.0.tgz",
+      "integrity": "sha1-O9qur0XMB/N1ZW39LlTtCBCxAbo=",
+      "dev": true,
+      "requires": {
+        "path-parse": "^1.0.6"
+      }
+    },
+    "resolve-cwd": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/resolve-cwd/download/resolve-cwd-2.0.0.tgz",
+      "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
+      "dev": true,
+      "requires": {
+        "resolve-from": "^3.0.0"
+      },
+      "dependencies": {
+        "resolve-from": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-3.0.0.tgz",
+          "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+          "dev": true
+        }
+      }
+    },
+    "resolve-from": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-1.0.1.tgz",
+      "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=",
+      "dev": true,
+      "optional": true
+    },
+    "resolve-url": {
+      "version": "0.2.1",
+      "resolved": "http://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz",
+      "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+      "dev": true
+    },
+    "restore-cursor": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/restore-cursor/download/restore-cursor-2.0.0.tgz",
+      "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+      "dev": true,
+      "requires": {
+        "onetime": "^2.0.0",
+        "signal-exit": "^3.0.2"
+      }
+    },
+    "ret": {
+      "version": "0.1.15",
+      "resolved": "http://registry.npm.taobao.org/ret/download/ret-0.1.15.tgz",
+      "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=",
+      "dev": true
+    },
+    "retry": {
+      "version": "0.12.0",
+      "resolved": "http://registry.npm.taobao.org/retry/download/retry-0.12.0.tgz",
+      "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=",
+      "dev": true
+    },
+    "rgb-regex": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/rgb-regex/download/rgb-regex-1.0.1.tgz",
+      "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=",
+      "dev": true
+    },
+    "rgba-regex": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/rgba-regex/download/rgba-regex-1.0.0.tgz",
+      "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=",
+      "dev": true
+    },
+    "rimraf": {
+      "version": "2.6.3",
+      "resolved": "http://registry.npm.taobao.org/rimraf/download/rimraf-2.6.3.tgz?cache=0&other_urls=http%3A%2F%2Fregistry.npm.taobao.org%2Frimraf%2Fdownload%2Frimraf-2.6.3.tgz",
+      "integrity": "sha1-stEE/g2Psnz54KHNqCYt04M8bKs=",
+      "dev": true,
+      "requires": {
+        "glob": "^7.1.3"
+      }
+    },
+    "ripemd160": {
+      "version": "2.0.2",
+      "resolved": "http://registry.npm.taobao.org/ripemd160/download/ripemd160-2.0.2.tgz",
+      "integrity": "sha1-ocGm9iR1FXe6XQeRTLyShQWFiQw=",
+      "dev": true,
+      "requires": {
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1"
+      }
+    },
+    "run-async": {
+      "version": "2.3.0",
+      "resolved": "http://registry.npm.taobao.org/run-async/download/run-async-2.3.0.tgz",
+      "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
+      "dev": true,
+      "requires": {
+        "is-promise": "^2.1.0"
+      }
+    },
+    "run-queue": {
+      "version": "1.0.3",
+      "resolved": "http://registry.npm.taobao.org/run-queue/download/run-queue-1.0.3.tgz",
+      "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
+      "dev": true,
+      "requires": {
+        "aproba": "^1.1.1"
+      }
+    },
+    "rx-lite": {
+      "version": "4.0.8",
+      "resolved": "http://registry.npm.taobao.org/rx-lite/download/rx-lite-4.0.8.tgz",
+      "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=",
+      "dev": true
+    },
+    "rx-lite-aggregates": {
+      "version": "4.0.8",
+      "resolved": "http://registry.npm.taobao.org/rx-lite-aggregates/download/rx-lite-aggregates-4.0.8.tgz",
+      "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "rx-lite": "*"
+      }
+    },
+    "rxjs": {
+      "version": "6.5.2",
+      "resolved": "https://registry.npm.taobao.org/rxjs/download/rxjs-6.5.2.tgz",
+      "integrity": "sha1-LjXOgVzUbYTQKiCftOWSHgUdvsc=",
+      "dev": true,
+      "requires": {
+        "tslib": "^1.9.0"
+      }
+    },
+    "safe-buffer": {
+      "version": "5.1.2",
+      "resolved": "http://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz",
+      "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=",
+      "dev": true
+    },
+    "safe-regex": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/safe-regex/download/safe-regex-1.1.0.tgz",
+      "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+      "dev": true,
+      "requires": {
+        "ret": "~0.1.10"
+      }
+    },
+    "safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "http://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz",
+      "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=",
+      "dev": true
+    },
+    "sass-graph": {
+      "version": "2.2.4",
+      "resolved": "https://registry.npm.taobao.org/sass-graph/download/sass-graph-2.2.4.tgz",
+      "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=",
+      "dev": true,
+      "requires": {
+        "glob": "^7.0.0",
+        "lodash": "^4.0.0",
+        "scss-tokenizer": "^0.2.3",
+        "yargs": "^7.0.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz",
+          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+          "dev": true
+        },
+        "camelcase": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-3.0.0.tgz",
+          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
+          "dev": true
+        },
+        "cliui": {
+          "version": "3.2.0",
+          "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-3.2.0.tgz",
+          "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+          "dev": true,
+          "requires": {
+            "string-width": "^1.0.1",
+            "strip-ansi": "^3.0.1",
+            "wrap-ansi": "^2.0.0"
+          }
+        },
+        "find-up": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-1.1.2.tgz",
+          "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+          "dev": true,
+          "requires": {
+            "path-exists": "^2.0.0",
+            "pinkie-promise": "^2.0.0"
+          }
+        },
+        "invert-kv": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npm.taobao.org/invert-kv/download/invert-kv-1.0.0.tgz",
+          "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz",
+          "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+          "dev": true,
+          "requires": {
+            "number-is-nan": "^1.0.0"
+          }
+        },
+        "lcid": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npm.taobao.org/lcid/download/lcid-1.0.0.tgz",
+          "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+          "dev": true,
+          "requires": {
+            "invert-kv": "^1.0.0"
+          }
+        },
+        "load-json-file": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npm.taobao.org/load-json-file/download/load-json-file-1.1.0.tgz",
+          "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.2",
+            "parse-json": "^2.2.0",
+            "pify": "^2.0.0",
+            "pinkie-promise": "^2.0.0",
+            "strip-bom": "^2.0.0"
+          }
+        },
+        "os-locale": {
+          "version": "1.4.0",
+          "resolved": "https://registry.npm.taobao.org/os-locale/download/os-locale-1.4.0.tgz",
+          "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+          "dev": true,
+          "requires": {
+            "lcid": "^1.0.0"
+          }
+        },
+        "parse-json": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-2.2.0.tgz",
+          "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+          "dev": true,
+          "requires": {
+            "error-ex": "^1.2.0"
+          }
+        },
+        "path-exists": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-2.1.0.tgz",
+          "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+          "dev": true,
+          "requires": {
+            "pinkie-promise": "^2.0.0"
+          }
+        },
+        "path-type": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npm.taobao.org/path-type/download/path-type-1.1.0.tgz",
+          "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.2",
+            "pify": "^2.0.0",
+            "pinkie-promise": "^2.0.0"
+          }
+        },
+        "pify": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-2.3.0.tgz",
+          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+          "dev": true
+        },
+        "read-pkg": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npm.taobao.org/read-pkg/download/read-pkg-1.1.0.tgz",
+          "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+          "dev": true,
+          "requires": {
+            "load-json-file": "^1.0.0",
+            "normalize-package-data": "^2.3.2",
+            "path-type": "^1.0.0"
+          }
+        },
+        "read-pkg-up": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npm.taobao.org/read-pkg-up/download/read-pkg-up-1.0.1.tgz",
+          "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+          "dev": true,
+          "requires": {
+            "find-up": "^1.0.0",
+            "read-pkg": "^1.0.0"
+          }
+        },
+        "string-width": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-1.0.2.tgz",
+          "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+          "dev": true,
+          "requires": {
+            "code-point-at": "^1.0.0",
+            "is-fullwidth-code-point": "^1.0.0",
+            "strip-ansi": "^3.0.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz",
+          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        },
+        "strip-bom": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npm.taobao.org/strip-bom/download/strip-bom-2.0.0.tgz",
+          "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+          "dev": true,
+          "requires": {
+            "is-utf8": "^0.2.0"
+          }
+        },
+        "which-module": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npm.taobao.org/which-module/download/which-module-1.0.0.tgz",
+          "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
+          "dev": true
+        },
+        "y18n": {
+          "version": "3.2.1",
+          "resolved": "https://registry.npm.taobao.org/y18n/download/y18n-3.2.1.tgz",
+          "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
+          "dev": true
+        },
+        "yargs": {
+          "version": "7.1.0",
+          "resolved": "https://registry.npm.taobao.org/yargs/download/yargs-7.1.0.tgz",
+          "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
+          "dev": true,
+          "requires": {
+            "camelcase": "^3.0.0",
+            "cliui": "^3.2.0",
+            "decamelize": "^1.1.1",
+            "get-caller-file": "^1.0.1",
+            "os-locale": "^1.4.0",
+            "read-pkg-up": "^1.0.1",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^1.0.1",
+            "set-blocking": "^2.0.0",
+            "string-width": "^1.0.2",
+            "which-module": "^1.0.0",
+            "y18n": "^3.2.1",
+            "yargs-parser": "^5.0.0"
+          }
+        },
+        "yargs-parser": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-5.0.0.tgz",
+          "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=",
+          "dev": true,
+          "requires": {
+            "camelcase": "^3.0.0"
+          }
+        }
+      }
+    },
+    "sass-loader": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npm.taobao.org/sass-loader/download/sass-loader-7.1.0.tgz",
+      "integrity": "sha1-Fv1ROMuLQkv4p1lSihly1yqtBp0=",
+      "dev": true,
+      "requires": {
+        "clone-deep": "^2.0.1",
+        "loader-utils": "^1.0.1",
+        "lodash.tail": "^4.1.1",
+        "neo-async": "^2.5.0",
+        "pify": "^3.0.0",
+        "semver": "^5.5.0"
+      },
+      "dependencies": {
+        "pify": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-3.0.0.tgz",
+          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+          "dev": true
+        }
+      }
+    },
+    "sax": {
+      "version": "1.2.4",
+      "resolved": "http://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz",
+      "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=",
+      "dev": true
+    },
+    "schema-utils": {
+      "version": "0.4.7",
+      "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-0.4.7.tgz",
+      "integrity": "sha1-unT1l9K+LqiAExdG7hfQoJPGgYc=",
+      "dev": true,
+      "requires": {
+        "ajv": "^6.1.0",
+        "ajv-keywords": "^3.1.0"
+      }
+    },
+    "scss-tokenizer": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npm.taobao.org/scss-tokenizer/download/scss-tokenizer-0.2.3.tgz",
+      "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
+      "dev": true,
+      "requires": {
+        "js-base64": "^2.1.8",
+        "source-map": "^0.4.2"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.4.4",
+          "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.4.4.tgz",
+          "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+          "dev": true,
+          "requires": {
+            "amdefine": ">=0.0.4"
+          }
+        }
+      }
+    },
+    "select-hose": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/select-hose/download/select-hose-2.0.0.tgz",
+      "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=",
+      "dev": true
+    },
+    "selfsigned": {
+      "version": "1.10.4",
+      "resolved": "http://registry.npm.taobao.org/selfsigned/download/selfsigned-1.10.4.tgz",
+      "integrity": "sha1-zdfsz8pO12NdR6CL8tXTB0CS4s0=",
+      "dev": true,
+      "requires": {
+        "node-forge": "0.7.5"
+      }
+    },
+    "semver": {
+      "version": "5.7.0",
+      "resolved": "http://registry.npm.taobao.org/semver/download/semver-5.7.0.tgz",
+      "integrity": "sha1-eQp89v6lRZuslhELKbYEEtyP+Ws=",
+      "dev": true
+    },
+    "send": {
+      "version": "0.17.1",
+      "resolved": "https://registry.npm.taobao.org/send/download/send-0.17.1.tgz",
+      "integrity": "sha1-wdiwWfeQD3Rm3Uk4vcROEd2zdsg=",
+      "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.7.2",
+        "mime": "1.6.0",
+        "ms": "2.1.1",
+        "on-finished": "~2.3.0",
+        "range-parser": "~1.2.1",
+        "statuses": "~1.5.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz",
+          "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          },
+          "dependencies": {
+            "ms": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz",
+              "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+              "dev": true
+            }
+          }
+        },
+        "mime": {
+          "version": "1.6.0",
+          "resolved": "https://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz",
+          "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=",
+          "dev": true
+        }
+      }
+    },
+    "serialize-javascript": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npm.taobao.org/serialize-javascript/download/serialize-javascript-1.7.0.tgz",
+      "integrity": "sha1-1uDfsqODKoyURo5usduX5VoZKmU=",
+      "dev": true
+    },
+    "serve-index": {
+      "version": "1.9.1",
+      "resolved": "http://registry.npm.taobao.org/serve-index/download/serve-index-1.9.1.tgz",
+      "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
+      "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",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz",
+          "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "http-errors": {
+          "version": "1.6.3",
+          "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.6.3.tgz",
+          "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
+          "dev": true,
+          "requires": {
+            "depd": "~1.1.2",
+            "inherits": "2.0.3",
+            "setprototypeof": "1.1.0",
+            "statuses": ">= 1.4.0 < 2"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        },
+        "setprototypeof": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.0.tgz",
+          "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=",
+          "dev": true
+        }
+      }
+    },
+    "serve-static": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npm.taobao.org/serve-static/download/serve-static-1.14.1.tgz",
+      "integrity": "sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk=",
+      "dev": true,
+      "requires": {
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "parseurl": "~1.3.3",
+        "send": "0.17.1"
+      }
+    },
+    "set-blocking": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/set-blocking/download/set-blocking-2.0.0.tgz",
+      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+      "dev": true
+    },
+    "set-value": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/set-value/download/set-value-2.0.0.tgz",
+      "integrity": "sha1-ca5KiPD+77v1LR6mBPP7MV67YnQ=",
+      "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",
+          "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "setimmediate": {
+      "version": "1.0.5",
+      "resolved": "http://registry.npm.taobao.org/setimmediate/download/setimmediate-1.0.5.tgz",
+      "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
+      "dev": true
+    },
+    "setprototypeof": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz",
+      "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM=",
+      "dev": true
+    },
+    "sha.js": {
+      "version": "2.4.11",
+      "resolved": "http://registry.npm.taobao.org/sha.js/download/sha.js-2.4.11.tgz",
+      "integrity": "sha1-N6XPC4HsvGlD3hCbopYNGyZYSuc=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "shallow-clone": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/shallow-clone/download/shallow-clone-1.0.0.tgz",
+      "integrity": "sha1-RIDNBuiC72iyrYij6lSDLixItXE=",
+      "dev": true,
+      "requires": {
+        "is-extendable": "^0.1.1",
+        "kind-of": "^5.0.0",
+        "mixin-object": "^2.0.1"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-5.1.0.tgz",
+          "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=",
+          "dev": true
+        }
+      }
+    },
+    "shebang-command": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/shebang-command/download/shebang-command-1.2.0.tgz",
+      "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+      "dev": true,
+      "requires": {
+        "shebang-regex": "^1.0.0"
+      }
+    },
+    "shebang-regex": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/shebang-regex/download/shebang-regex-1.0.0.tgz",
+      "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+      "dev": true
+    },
+    "shell-quote": {
+      "version": "1.6.1",
+      "resolved": "http://registry.npm.taobao.org/shell-quote/download/shell-quote-1.6.1.tgz",
+      "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
+      "dev": true,
+      "requires": {
+        "array-filter": "~0.0.0",
+        "array-map": "~0.0.0",
+        "array-reduce": "~0.0.0",
+        "jsonify": "~0.0.0"
+      }
+    },
+    "signal-exit": {
+      "version": "3.0.2",
+      "resolved": "http://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.2.tgz",
+      "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+      "dev": true
+    },
+    "simple-swizzle": {
+      "version": "0.2.2",
+      "resolved": "http://registry.npm.taobao.org/simple-swizzle/download/simple-swizzle-0.2.2.tgz",
+      "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
+      "dev": true,
+      "requires": {
+        "is-arrayish": "^0.3.1"
+      },
+      "dependencies": {
+        "is-arrayish": {
+          "version": "0.3.2",
+          "resolved": "http://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.3.2.tgz",
+          "integrity": "sha1-RXSirlb3qyBolvtDHq7tBm/fjwM=",
+          "dev": true
+        }
+      }
+    },
+    "slash": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/slash/download/slash-2.0.0.tgz",
+      "integrity": "sha1-3lUoUaF1nfOo8gZTVEL17E3eq0Q=",
+      "dev": true
+    },
+    "slice-ansi": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/slice-ansi/download/slice-ansi-1.0.0.tgz",
+      "integrity": "sha1-BE8aSdiEL/MHqta1Be0Xi9lQE00=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "is-fullwidth-code-point": "^2.0.0"
+      }
+    },
+    "snapdragon": {
+      "version": "0.8.2",
+      "resolved": "http://registry.npm.taobao.org/snapdragon/download/snapdragon-0.8.2.tgz",
+      "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=",
+      "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",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz",
+          "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "http://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        }
+      }
+    },
+    "snapdragon-node": {
+      "version": "2.1.1",
+      "resolved": "http://registry.npm.taobao.org/snapdragon-node/download/snapdragon-node-2.1.1.tgz",
+      "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=",
+      "dev": true,
+      "requires": {
+        "define-property": "^1.0.0",
+        "isobject": "^3.0.0",
+        "snapdragon-util": "^3.0.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "http://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+          "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
+      }
+    },
+    "snapdragon-util": {
+      "version": "3.0.1",
+      "resolved": "http://registry.npm.taobao.org/snapdragon-util/download/snapdragon-util-3.0.1.tgz",
+      "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.2.0"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "sockjs": {
+      "version": "0.3.19",
+      "resolved": "http://registry.npm.taobao.org/sockjs/download/sockjs-0.3.19.tgz",
+      "integrity": "sha1-2Xa76ACve9IK4IWY1YI5NQiZPA0=",
+      "dev": true,
+      "requires": {
+        "faye-websocket": "^0.10.0",
+        "uuid": "^3.0.1"
+      }
+    },
+    "sockjs-client": {
+      "version": "1.3.0",
+      "resolved": "http://registry.npm.taobao.org/sockjs-client/download/sockjs-client-1.3.0.tgz",
+      "integrity": "sha1-EvydbLZj2lc509xftuhofalcsXc=",
+      "dev": true,
+      "requires": {
+        "debug": "^3.2.5",
+        "eventsource": "^1.0.7",
+        "faye-websocket": "~0.11.1",
+        "inherits": "^2.0.3",
+        "json3": "^3.3.2",
+        "url-parse": "^1.4.3"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.6",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz",
+          "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "faye-websocket": {
+          "version": "0.11.3",
+          "resolved": "https://registry.npm.taobao.org/faye-websocket/download/faye-websocket-0.11.3.tgz",
+          "integrity": "sha1-XA6aiWjokSwoZjn96XeosgnyUI4=",
+          "dev": true,
+          "requires": {
+            "websocket-driver": ">=0.5.1"
+          }
+        }
+      }
+    },
+    "sort-keys": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/sort-keys/download/sort-keys-2.0.0.tgz",
+      "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=",
+      "dev": true,
+      "requires": {
+        "is-plain-obj": "^1.0.0"
+      }
+    },
+    "source-list-map": {
+      "version": "2.0.1",
+      "resolved": "http://registry.npm.taobao.org/source-list-map/download/source-list-map-2.0.1.tgz",
+      "integrity": "sha1-OZO9hzv8SEecyp6jpUeDXHwVSzQ=",
+      "dev": true
+    },
+    "source-map": {
+      "version": "0.5.7",
+      "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz",
+      "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+      "dev": true
+    },
+    "source-map-resolve": {
+      "version": "0.5.2",
+      "resolved": "http://registry.npm.taobao.org/source-map-resolve/download/source-map-resolve-0.5.2.tgz",
+      "integrity": "sha1-cuLMNAlVQ+Q7LGKyxMENSpBU8lk=",
+      "dev": true,
+      "requires": {
+        "atob": "^2.1.1",
+        "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.12",
+      "resolved": "http://registry.npm.taobao.org/source-map-support/download/source-map-support-0.5.12.tgz",
+      "integrity": "sha1-tPOxDVGFelrwE4086AA7IBYT1Zk=",
+      "dev": true,
+      "requires": {
+        "buffer-from": "^1.0.0",
+        "source-map": "^0.6.0"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        }
+      }
+    },
+    "source-map-url": {
+      "version": "0.4.0",
+      "resolved": "http://registry.npm.taobao.org/source-map-url/download/source-map-url-0.4.0.tgz",
+      "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
+      "dev": true
+    },
+    "spdx-correct": {
+      "version": "3.1.0",
+      "resolved": "http://registry.npm.taobao.org/spdx-correct/download/spdx-correct-3.1.0.tgz",
+      "integrity": "sha1-+4PlBERSaPFUsHTiGMh8ADzTHfQ=",
+      "dev": true,
+      "requires": {
+        "spdx-expression-parse": "^3.0.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "spdx-exceptions": {
+      "version": "2.2.0",
+      "resolved": "http://registry.npm.taobao.org/spdx-exceptions/download/spdx-exceptions-2.2.0.tgz",
+      "integrity": "sha1-LqRQrudPKom/uUUZwH/Nb0EyKXc=",
+      "dev": true
+    },
+    "spdx-expression-parse": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/spdx-expression-parse/download/spdx-expression-parse-3.0.0.tgz",
+      "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=",
+      "dev": true,
+      "requires": {
+        "spdx-exceptions": "^2.1.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "spdx-license-ids": {
+      "version": "3.0.4",
+      "resolved": "http://registry.npm.taobao.org/spdx-license-ids/download/spdx-license-ids-3.0.4.tgz",
+      "integrity": "sha1-dezRqI3owYTvAV6vtRtbSL/RG7E=",
+      "dev": true
+    },
+    "spdy": {
+      "version": "4.0.0",
+      "resolved": "http://registry.npm.taobao.org/spdy/download/spdy-4.0.0.tgz",
+      "integrity": "sha1-gfIitadDoymqEs6mo5DmDpthPFI=",
+      "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",
+      "resolved": "http://registry.npm.taobao.org/spdy-transport/download/spdy-transport-3.0.0.tgz",
+      "integrity": "sha1-ANSGOmQArXXfkzYaFghgXl3NzzE=",
+      "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.4.0",
+          "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.4.0.tgz",
+          "integrity": "sha1-pRwmdUZY4KPCHb9ZFjvUW6b0R/w=",
+          "dev": true,
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        }
+      }
+    },
+    "split-string": {
+      "version": "3.1.0",
+      "resolved": "http://registry.npm.taobao.org/split-string/download/split-string-3.1.0.tgz",
+      "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^3.0.0"
+      }
+    },
+    "sprintf-js": {
+      "version": "1.0.3",
+      "resolved": "http://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz",
+      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+      "dev": true
+    },
+    "sshpk": {
+      "version": "1.16.1",
+      "resolved": "http://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz",
+      "integrity": "sha1-+2YcC+8ps520B2nuOfpwCT1vaHc=",
+      "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.1",
+      "resolved": "http://registry.npm.taobao.org/ssri/download/ssri-6.0.1.tgz",
+      "integrity": "sha1-KjxBso3UW2K2Nnbst0ABJlrp7dg=",
+      "dev": true,
+      "requires": {
+        "figgy-pudding": "^3.5.1"
+      }
+    },
+    "stable": {
+      "version": "0.1.8",
+      "resolved": "http://registry.npm.taobao.org/stable/download/stable-0.1.8.tgz",
+      "integrity": "sha1-g26zyDgv4pNv6vVEYxAXzn1Ho88=",
+      "dev": true
+    },
+    "stackframe": {
+      "version": "1.0.4",
+      "resolved": "http://registry.npm.taobao.org/stackframe/download/stackframe-1.0.4.tgz",
+      "integrity": "sha1-NXskqZL5Qny6a1RdlqFO0svKGHs=",
+      "dev": true
+    },
+    "static-extend": {
+      "version": "0.1.2",
+      "resolved": "http://registry.npm.taobao.org/static-extend/download/static-extend-0.1.2.tgz",
+      "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+      "dev": true,
+      "requires": {
+        "define-property": "^0.2.5",
+        "object-copy": "^0.1.0"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        }
+      }
+    },
+    "statuses": {
+      "version": "1.5.0",
+      "resolved": "http://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz",
+      "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
+      "dev": true
+    },
+    "stdout-stream": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npm.taobao.org/stdout-stream/download/stdout-stream-1.4.1.tgz",
+      "integrity": "sha1-WsF0zdXNcmEEqgwLK9g4FdjVNd4=",
+      "dev": true,
+      "requires": {
+        "readable-stream": "^2.0.1"
+      }
+    },
+    "stealthy-require": {
+      "version": "1.1.1",
+      "resolved": "http://registry.npm.taobao.org/stealthy-require/download/stealthy-require-1.1.1.tgz",
+      "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=",
+      "dev": true
+    },
+    "stream-browserify": {
+      "version": "2.0.2",
+      "resolved": "http://registry.npm.taobao.org/stream-browserify/download/stream-browserify-2.0.2.tgz",
+      "integrity": "sha1-h1IdOKRKp+6RzhzSpH3wy0ndZgs=",
+      "dev": true,
+      "requires": {
+        "inherits": "~2.0.1",
+        "readable-stream": "^2.0.2"
+      }
+    },
+    "stream-each": {
+      "version": "1.2.3",
+      "resolved": "http://registry.npm.taobao.org/stream-each/download/stream-each-1.2.3.tgz",
+      "integrity": "sha1-6+J6DDibBPvMIzZClS4Qcxr6m64=",
+      "dev": true,
+      "requires": {
+        "end-of-stream": "^1.1.0",
+        "stream-shift": "^1.0.0"
+      }
+    },
+    "stream-http": {
+      "version": "2.8.3",
+      "resolved": "http://registry.npm.taobao.org/stream-http/download/stream-http-2.8.3.tgz",
+      "integrity": "sha1-stJCRpKIpaJ+xP6JM6z2I95lFPw=",
+      "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.0",
+      "resolved": "http://registry.npm.taobao.org/stream-shift/download/stream-shift-1.0.0.tgz",
+      "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
+      "dev": true
+    },
+    "strict-uri-encode": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/strict-uri-encode/download/strict-uri-encode-1.1.0.tgz",
+      "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
+      "dev": true
+    },
+    "string-width": {
+      "version": "2.1.1",
+      "resolved": "http://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz",
+      "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=",
+      "dev": true,
+      "requires": {
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^4.0.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "dev": true
+        },
+        "strip-ansi": {
+          "version": "4.0.0",
+          "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz",
+          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^3.0.0"
+          }
+        }
+      }
+    },
+    "string.prototype.padend": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/string.prototype.padend/download/string.prototype.padend-3.0.0.tgz",
+      "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.2",
+        "es-abstract": "^1.4.3",
+        "function-bind": "^1.0.2"
+      }
+    },
+    "string.prototype.padstart": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/string.prototype.padstart/download/string.prototype.padstart-3.0.0.tgz",
+      "integrity": "sha1-W8+tOfRkm7LQMSkuGbzwtRDUskI=",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.2",
+        "es-abstract": "^1.4.3",
+        "function-bind": "^1.0.2"
+      }
+    },
+    "string_decoder": {
+      "version": "1.1.1",
+      "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz",
+      "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
+    "strip-ansi": {
+      "version": "5.2.0",
+      "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz",
+      "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=",
+      "dev": true,
+      "requires": {
+        "ansi-regex": "^4.1.0"
+      }
+    },
+    "strip-bom": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/strip-bom/download/strip-bom-3.0.0.tgz",
+      "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+      "dev": true
+    },
+    "strip-eof": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/strip-eof/download/strip-eof-1.0.0.tgz",
+      "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+      "dev": true
+    },
+    "strip-indent": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/strip-indent/download/strip-indent-2.0.0.tgz",
+      "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
+      "dev": true
+    },
+    "strip-json-comments": {
+      "version": "2.0.1",
+      "resolved": "http://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-2.0.1.tgz",
+      "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+      "dev": true
+    },
+    "stylehacks": {
+      "version": "4.0.3",
+      "resolved": "http://registry.npm.taobao.org/stylehacks/download/stylehacks-4.0.3.tgz",
+      "integrity": "sha1-Zxj8r00eB9ihMYaQiB6NlnJqcdU=",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-selector-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-selector-parser": {
+          "version": "3.1.1",
+          "resolved": "http://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.1.tgz",
+          "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=",
+          "dev": true,
+          "requires": {
+            "dot-prop": "^4.1.1",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        }
+      }
+    },
+    "supports-color": {
+      "version": "5.5.0",
+      "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-5.5.0.tgz",
+      "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=",
+      "dev": true,
+      "requires": {
+        "has-flag": "^3.0.0"
+      }
+    },
+    "svg-baker": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npm.taobao.org/svg-baker/download/svg-baker-1.4.1.tgz",
+      "integrity": "sha1-YHHt726ZsSr4fmVQJMFU0GbhrS8=",
+      "dev": true,
+      "requires": {
+        "bluebird": "^3.5.0",
+        "clone": "^2.1.1",
+        "he": "^1.1.1",
+        "image-size": "^0.5.1",
+        "loader-utils": "^1.1.0",
+        "merge-options": "1.0.1",
+        "micromatch": "3.1.0",
+        "postcss": "^5.2.17",
+        "postcss-prefix-selector": "^1.6.0",
+        "posthtml-rename-id": "^1.0",
+        "posthtml-svg-mode": "^1.0.3",
+        "query-string": "^4.3.2",
+        "traverse": "^0.6.6"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz",
+          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          },
+          "dependencies": {
+            "supports-color": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz",
+              "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+              "dev": true
+            }
+          }
+        },
+        "clone": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npm.taobao.org/clone/download/clone-2.1.2.tgz",
+          "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
+          "dev": true
+        },
+        "define-property": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "has-flag": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-1.0.0.tgz",
+          "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+          "dev": true
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "6.0.2",
+              "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-6.0.2.tgz",
+              "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=",
+              "dev": true
+            }
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "6.0.2",
+              "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-6.0.2.tgz",
+              "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=",
+              "dev": true
+            }
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+          "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "6.0.2",
+              "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-6.0.2.tgz",
+              "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=",
+              "dev": true
+            }
+          }
+        },
+        "kind-of": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-5.1.0.tgz",
+          "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=",
+          "dev": true
+        },
+        "micromatch": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-3.1.0.tgz",
+          "integrity": "sha1-UQLU6vILaZfWAI46z+HESj+oFeI=",
+          "dev": true,
+          "requires": {
+            "arr-diff": "^4.0.0",
+            "array-unique": "^0.3.2",
+            "braces": "^2.2.2",
+            "define-property": "^1.0.0",
+            "extend-shallow": "^2.0.1",
+            "extglob": "^2.0.2",
+            "fragment-cache": "^0.2.1",
+            "kind-of": "^5.0.2",
+            "nanomatch": "^1.2.1",
+            "object.pick": "^1.3.0",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.1"
+          }
+        },
+        "postcss": {
+          "version": "5.2.18",
+          "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-5.2.18.tgz",
+          "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=",
+          "dev": true,
+          "requires": {
+            "chalk": "^1.1.3",
+            "js-base64": "^2.1.9",
+            "source-map": "^0.5.6",
+            "supports-color": "^3.2.3"
+          }
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz",
+          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        },
+        "supports-color": {
+          "version": "3.2.3",
+          "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-3.2.3.tgz",
+          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+          "dev": true,
+          "requires": {
+            "has-flag": "^1.0.0"
+          }
+        }
+      }
+    },
+    "svg-baker-runtime": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npm.taobao.org/svg-baker-runtime/download/svg-baker-runtime-1.4.1.tgz",
+      "integrity": "sha1-0/d9/98fGouPHoTvZ9LBtT1g13A=",
+      "dev": true,
+      "requires": {
+        "deepmerge": "1.3.2",
+        "mitt": "1.1.2",
+        "svg-baker": "^1.4.0"
+      },
+      "dependencies": {
+        "deepmerge": {
+          "version": "1.3.2",
+          "resolved": "https://registry.npm.taobao.org/deepmerge/download/deepmerge-1.3.2.tgz",
+          "integrity": "sha1-FmNpFinU2/42T6EqKk8KqGqjoFA=",
+          "dev": true
+        }
+      }
+    },
+    "svg-sprite-loader": {
+      "version": "4.1.6",
+      "resolved": "https://registry.npm.taobao.org/svg-sprite-loader/download/svg-sprite-loader-4.1.6.tgz",
+      "integrity": "sha1-ygPVEgHjJsHAGDicgdWw63jcAd4=",
+      "dev": true,
+      "requires": {
+        "bluebird": "^3.5.0",
+        "deepmerge": "1.3.2",
+        "domready": "1.0.8",
+        "escape-string-regexp": "1.0.5",
+        "html-webpack-plugin": "^3.2.0",
+        "loader-utils": "^1.1.0",
+        "svg-baker": "^1.4.1",
+        "svg-baker-runtime": "1.4.1",
+        "url-slug": "2.0.0"
+      },
+      "dependencies": {
+        "deepmerge": {
+          "version": "1.3.2",
+          "resolved": "https://registry.npm.taobao.org/deepmerge/download/deepmerge-1.3.2.tgz",
+          "integrity": "sha1-FmNpFinU2/42T6EqKk8KqGqjoFA=",
+          "dev": true
+        }
+      }
+    },
+    "svg-tags": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/svg-tags/download/svg-tags-1.0.0.tgz",
+      "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=",
+      "dev": true
+    },
+    "svgo": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npm.taobao.org/svgo/download/svgo-1.3.0.tgz",
+      "integrity": "sha1-uuUbqV3tmjOja3xGzpw1mukVQxM=",
+      "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.33",
+        "csso": "^3.5.1",
+        "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"
+      }
+    },
+    "table": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npm.taobao.org/table/download/table-4.0.2.tgz?cache=0&sync_timestamp=1563286014327&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftable%2Fdownload%2Ftable-4.0.2.tgz",
+      "integrity": "sha1-ozRHN1OR52atNNNIbm4q7chNLjY=",
+      "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"
+      },
+      "dependencies": {
+        "ajv": {
+          "version": "5.5.2",
+          "resolved": "https://registry.npm.taobao.org/ajv/download/ajv-5.5.2.tgz?cache=0&sync_timestamp=1563113786760&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-5.5.2.tgz",
+          "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
+          "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",
+          "resolved": "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-2.1.1.tgz",
+          "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=",
+          "dev": true,
+          "optional": true
+        },
+        "fast-deep-equal": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-1.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-deep-equal%2Fdownload%2Ffast-deep-equal-1.1.0.tgz",
+          "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
+          "dev": true,
+          "optional": true
+        },
+        "json-schema-traverse": {
+          "version": "0.3.1",
+          "resolved": "http://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.3.1.tgz",
+          "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
+          "dev": true,
+          "optional": true
+        }
+      }
+    },
+    "tapable": {
+      "version": "1.1.1",
+      "resolved": "http://registry.npm.taobao.org/tapable/download/tapable-1.1.1.tgz",
+      "integrity": "sha1-TSl5I8WnKkI2DeKrUtrfquwAAY4=",
+      "dev": true
+    },
+    "tar": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npm.taobao.org/tar/download/tar-2.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftar%2Fdownload%2Ftar-2.2.1.tgz",
+      "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
+      "dev": true,
+      "requires": {
+        "block-stream": "*",
+        "fstream": "^1.0.2",
+        "inherits": "2"
+      }
+    },
+    "terser": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npm.taobao.org/terser/download/terser-4.1.2.tgz?cache=0&sync_timestamp=1562580696479&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fterser%2Fdownload%2Fterser-4.1.2.tgz",
+      "integrity": "sha1-smVsilBvfOgFo/MAov9I2wIvo5E=",
+      "dev": true,
+      "requires": {
+        "commander": "^2.20.0",
+        "source-map": "~0.6.1",
+        "source-map-support": "~0.5.12"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        }
+      }
+    },
+    "terser-webpack-plugin": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-1.3.0.tgz",
+      "integrity": "sha1-aaoiQmKZ9LWzd1y+2MssXUGaodQ=",
+      "dev": true,
+      "requires": {
+        "cacache": "^11.3.2",
+        "find-cache-dir": "^2.0.0",
+        "is-wsl": "^1.1.0",
+        "loader-utils": "^1.2.3",
+        "schema-utils": "^1.0.0",
+        "serialize-javascript": "^1.7.0",
+        "source-map": "^0.6.1",
+        "terser": "^4.0.0",
+        "webpack-sources": "^1.3.0",
+        "worker-farm": "^1.7.0"
+      },
+      "dependencies": {
+        "schema-utils": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz",
+          "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=",
+          "dev": true,
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        }
+      }
+    },
+    "text-table": {
+      "version": "0.2.0",
+      "resolved": "http://registry.npm.taobao.org/text-table/download/text-table-0.2.0.tgz",
+      "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+      "dev": true
+    },
+    "thenify": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npm.taobao.org/thenify/download/thenify-3.3.0.tgz",
+      "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=",
+      "dev": true,
+      "requires": {
+        "any-promise": "^1.0.0"
+      }
+    },
+    "thenify-all": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npm.taobao.org/thenify-all/download/thenify-all-1.6.0.tgz",
+      "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=",
+      "dev": true,
+      "requires": {
+        "thenify": ">= 3.1.0 < 4"
+      }
+    },
+    "thread-loader": {
+      "version": "2.1.2",
+      "resolved": "http://registry.npm.taobao.org/thread-loader/download/thread-loader-2.1.2.tgz",
+      "integrity": "sha1-9YXdOOhSx/nN7V0JKZIQgUj16zA=",
+      "dev": true,
+      "requires": {
+        "loader-runner": "^2.3.1",
+        "loader-utils": "^1.1.0",
+        "neo-async": "^2.6.0"
+      }
+    },
+    "throttle-debounce": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/throttle-debounce/download/throttle-debounce-1.1.0.tgz",
+      "integrity": "sha1-UYU9o3vmihVctugns1FKPEIuic0="
+    },
+    "through": {
+      "version": "2.3.8",
+      "resolved": "http://registry.npm.taobao.org/through/download/through-2.3.8.tgz",
+      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+      "dev": true
+    },
+    "through2": {
+      "version": "2.0.5",
+      "resolved": "http://registry.npm.taobao.org/through2/download/through2-2.0.5.tgz",
+      "integrity": "sha1-AcHjnrMdB8t9A6lqcIIyYLIxMs0=",
+      "dev": true,
+      "requires": {
+        "readable-stream": "~2.3.6",
+        "xtend": "~4.0.1"
+      }
+    },
+    "thunky": {
+      "version": "1.0.3",
+      "resolved": "http://registry.npm.taobao.org/thunky/download/thunky-1.0.3.tgz",
+      "integrity": "sha1-9d9zJFNAewkZHa5z4qjMc/OBqCY=",
+      "dev": true
+    },
+    "timers-browserify": {
+      "version": "2.0.10",
+      "resolved": "http://registry.npm.taobao.org/timers-browserify/download/timers-browserify-2.0.10.tgz",
+      "integrity": "sha1-HSjj0qrfHVpZlsTp+VYBzQU0gK4=",
+      "dev": true,
+      "requires": {
+        "setimmediate": "^1.0.4"
+      }
+    },
+    "timsort": {
+      "version": "0.3.0",
+      "resolved": "http://registry.npm.taobao.org/timsort/download/timsort-0.3.0.tgz",
+      "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=",
+      "dev": true
+    },
+    "tmp": {
+      "version": "0.0.33",
+      "resolved": "http://registry.npm.taobao.org/tmp/download/tmp-0.0.33.tgz",
+      "integrity": "sha1-bTQzWIl2jSGyvNoKonfO07G/rfk=",
+      "dev": true,
+      "requires": {
+        "os-tmpdir": "~1.0.2"
+      }
+    },
+    "to-arraybuffer": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/to-arraybuffer/download/to-arraybuffer-1.0.1.tgz",
+      "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
+      "dev": true
+    },
+    "to-fast-properties": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-2.0.0.tgz",
+      "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
+      "dev": true
+    },
+    "to-object-path": {
+      "version": "0.3.0",
+      "resolved": "http://registry.npm.taobao.org/to-object-path/download/to-object-path-0.3.0.tgz",
+      "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "to-regex": {
+      "version": "3.0.2",
+      "resolved": "http://registry.npm.taobao.org/to-regex/download/to-regex-3.0.2.tgz",
+      "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=",
+      "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",
+      "resolved": "http://registry.npm.taobao.org/to-regex-range/download/to-regex-range-2.1.1.tgz",
+      "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+      "dev": true,
+      "requires": {
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1"
+      }
+    },
+    "toidentifier": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/toidentifier/download/toidentifier-1.0.0.tgz",
+      "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM=",
+      "dev": true
+    },
+    "toposort": {
+      "version": "1.0.7",
+      "resolved": "http://registry.npm.taobao.org/toposort/download/toposort-1.0.7.tgz",
+      "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=",
+      "dev": true
+    },
+    "tough-cookie": {
+      "version": "2.4.3",
+      "resolved": "http://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.4.3.tgz",
+      "integrity": "sha1-U/Nto/R3g7CSWvoG/587FlKA94E=",
+      "dev": true,
+      "requires": {
+        "psl": "^1.1.24",
+        "punycode": "^1.4.1"
+      },
+      "dependencies": {
+        "punycode": {
+          "version": "1.4.1",
+          "resolved": "http://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz",
+          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+          "dev": true
+        }
+      }
+    },
+    "traverse": {
+      "version": "0.6.6",
+      "resolved": "https://registry.npm.taobao.org/traverse/download/traverse-0.6.6.tgz",
+      "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=",
+      "dev": true
+    },
+    "trim-newlines": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/trim-newlines/download/trim-newlines-1.0.0.tgz",
+      "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
+      "dev": true
+    },
+    "trim-right": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/trim-right/download/trim-right-1.0.1.tgz",
+      "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
+      "dev": true
+    },
+    "true-case-path": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npm.taobao.org/true-case-path/download/true-case-path-1.0.3.tgz",
+      "integrity": "sha1-+BO1qMhrQNpZYGcisUTjIleZ9H0=",
+      "dev": true,
+      "requires": {
+        "glob": "^7.1.2"
+      }
+    },
+    "tryer": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/tryer/download/tryer-1.0.1.tgz",
+      "integrity": "sha1-8shUBoALmw90yfdGW4HqrSQSUvg=",
+      "dev": true
+    },
+    "tslib": {
+      "version": "1.9.3",
+      "resolved": "http://registry.npm.taobao.org/tslib/download/tslib-1.9.3.tgz",
+      "integrity": "sha1-1+TdeSRdhUKMTX5IIqeZF5VMooY=",
+      "dev": true
+    },
+    "tty-browserify": {
+      "version": "0.0.0",
+      "resolved": "http://registry.npm.taobao.org/tty-browserify/download/tty-browserify-0.0.0.tgz",
+      "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
+      "dev": true
+    },
+    "tunnel-agent": {
+      "version": "0.6.0",
+      "resolved": "http://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz",
+      "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "tweetnacl": {
+      "version": "0.14.5",
+      "resolved": "http://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz",
+      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+      "dev": true
+    },
+    "type-check": {
+      "version": "0.3.2",
+      "resolved": "http://registry.npm.taobao.org/type-check/download/type-check-0.3.2.tgz",
+      "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+      "dev": true,
+      "requires": {
+        "prelude-ls": "~1.1.2"
+      }
+    },
+    "type-fest": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npm.taobao.org/type-fest/download/type-fest-0.6.0.tgz?cache=0&sync_timestamp=1562320018034&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftype-fest%2Fdownload%2Ftype-fest-0.6.0.tgz",
+      "integrity": "sha1-jSojcNPfiG61yQraHFv2GIrPg4s=",
+      "dev": true
+    },
+    "type-is": {
+      "version": "1.6.18",
+      "resolved": "https://registry.npm.taobao.org/type-is/download/type-is-1.6.18.tgz",
+      "integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=",
+      "dev": true,
+      "requires": {
+        "media-typer": "0.3.0",
+        "mime-types": "~2.1.24"
+      },
+      "dependencies": {
+        "mime-db": {
+          "version": "1.40.0",
+          "resolved": "https://registry.npm.taobao.org/mime-db/download/mime-db-1.40.0.tgz",
+          "integrity": "sha1-plBX6ZjbCQ9zKmj2wnbTh9QSbDI=",
+          "dev": true
+        },
+        "mime-types": {
+          "version": "2.1.24",
+          "resolved": "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.24.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-types%2Fdownload%2Fmime-types-2.1.24.tgz",
+          "integrity": "sha1-tvjQs+lR77d97eyhlM/20W9nb4E=",
+          "dev": true,
+          "requires": {
+            "mime-db": "1.40.0"
+          }
+        }
+      }
+    },
+    "typedarray": {
+      "version": "0.0.6",
+      "resolved": "http://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz",
+      "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+      "dev": true
+    },
+    "uglify-js": {
+      "version": "3.4.10",
+      "resolved": "http://registry.npm.taobao.org/uglify-js/download/uglify-js-3.4.10.tgz",
+      "integrity": "sha1-mtlWPY6zrN+404WX0q8dgV9qdV8=",
+      "dev": true,
+      "requires": {
+        "commander": "~2.19.0",
+        "source-map": "~0.6.1"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.19.0",
+          "resolved": "http://registry.npm.taobao.org/commander/download/commander-2.19.0.tgz",
+          "integrity": "sha1-9hmKqE5bg8RgVLlN3tv+1e6f8So=",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        }
+      }
+    },
+    "unicode-canonical-property-names-ecmascript": {
+      "version": "1.0.4",
+      "resolved": "http://registry.npm.taobao.org/unicode-canonical-property-names-ecmascript/download/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
+      "integrity": "sha1-JhmADEyCWADv3YNDr33Zkzy+KBg=",
+      "dev": true
+    },
+    "unicode-match-property-ecmascript": {
+      "version": "1.0.4",
+      "resolved": "http://registry.npm.taobao.org/unicode-match-property-ecmascript/download/unicode-match-property-ecmascript-1.0.4.tgz",
+      "integrity": "sha1-jtKjJWmWG86SJ9Cc0/+7j+1fAgw=",
+      "dev": true,
+      "requires": {
+        "unicode-canonical-property-names-ecmascript": "^1.0.4",
+        "unicode-property-aliases-ecmascript": "^1.0.4"
+      }
+    },
+    "unicode-match-property-value-ecmascript": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/unicode-match-property-value-ecmascript/download/unicode-match-property-value-ecmascript-1.1.0.tgz",
+      "integrity": "sha1-W0tCbgjROoA2Xg1lesemwexGonc=",
+      "dev": true
+    },
+    "unicode-property-aliases-ecmascript": {
+      "version": "1.0.5",
+      "resolved": "http://registry.npm.taobao.org/unicode-property-aliases-ecmascript/download/unicode-property-aliases-ecmascript-1.0.5.tgz",
+      "integrity": "sha1-qcxsx85joKMCP8meNBuUQx1AWlc=",
+      "dev": true
+    },
+    "unidecode": {
+      "version": "0.1.8",
+      "resolved": "https://registry.npm.taobao.org/unidecode/download/unidecode-0.1.8.tgz",
+      "integrity": "sha1-77swFTi8RSRqmsjFWdcvAVMFBT4=",
+      "dev": true
+    },
+    "union-value": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/union-value/download/union-value-1.0.0.tgz",
+      "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
+      "dev": true,
+      "requires": {
+        "arr-union": "^3.1.0",
+        "get-value": "^2.0.6",
+        "is-extendable": "^0.1.1",
+        "set-value": "^0.4.3"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "set-value": {
+          "version": "0.4.3",
+          "resolved": "http://registry.npm.taobao.org/set-value/download/set-value-0.4.3.tgz",
+          "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
+          "dev": true,
+          "requires": {
+            "extend-shallow": "^2.0.1",
+            "is-extendable": "^0.1.1",
+            "is-plain-object": "^2.0.1",
+            "to-object-path": "^0.3.0"
+          }
+        }
+      }
+    },
+    "uniq": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/uniq/download/uniq-1.0.1.tgz",
+      "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
+      "dev": true
+    },
+    "uniqs": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/uniqs/download/uniqs-2.0.0.tgz",
+      "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=",
+      "dev": true
+    },
+    "unique-filename": {
+      "version": "1.1.1",
+      "resolved": "http://registry.npm.taobao.org/unique-filename/download/unique-filename-1.1.1.tgz",
+      "integrity": "sha1-HWl2k2mtoFgxA6HmrodoG1ZXMjA=",
+      "dev": true,
+      "requires": {
+        "unique-slug": "^2.0.0"
+      }
+    },
+    "unique-slug": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npm.taobao.org/unique-slug/download/unique-slug-2.0.2.tgz",
+      "integrity": "sha1-uqvOkQg/xk6UWw861hPiZPfNTmw=",
+      "dev": true,
+      "requires": {
+        "imurmurhash": "^0.1.4"
+      }
+    },
+    "universalify": {
+      "version": "0.1.2",
+      "resolved": "http://registry.npm.taobao.org/universalify/download/universalify-0.1.2.tgz",
+      "integrity": "sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY=",
+      "dev": true
+    },
+    "unpipe": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz",
+      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+      "dev": true
+    },
+    "unquote": {
+      "version": "1.1.1",
+      "resolved": "http://registry.npm.taobao.org/unquote/download/unquote-1.1.1.tgz",
+      "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=",
+      "dev": true
+    },
+    "unset-value": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/unset-value/download/unset-value-1.0.0.tgz",
+      "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+      "dev": true,
+      "requires": {
+        "has-value": "^0.3.1",
+        "isobject": "^3.0.0"
+      },
+      "dependencies": {
+        "has-value": {
+          "version": "0.3.1",
+          "resolved": "http://registry.npm.taobao.org/has-value/download/has-value-0.3.1.tgz",
+          "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+          "dev": true,
+          "requires": {
+            "get-value": "^2.0.3",
+            "has-values": "^0.1.4",
+            "isobject": "^2.0.0"
+          },
+          "dependencies": {
+            "isobject": {
+              "version": "2.1.0",
+              "resolved": "http://registry.npm.taobao.org/isobject/download/isobject-2.1.0.tgz",
+              "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+              "dev": true,
+              "requires": {
+                "isarray": "1.0.0"
+              }
+            }
+          }
+        },
+        "has-values": {
+          "version": "0.1.4",
+          "resolved": "http://registry.npm.taobao.org/has-values/download/has-values-0.1.4.tgz",
+          "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+          "dev": true
+        }
+      }
+    },
+    "upath": {
+      "version": "1.1.2",
+      "resolved": "http://registry.npm.taobao.org/upath/download/upath-1.1.2.tgz",
+      "integrity": "sha1-PbZYYA7a7sy+bbXmhNZ+6MKs0Gg=",
+      "dev": true
+    },
+    "upper-case": {
+      "version": "1.1.3",
+      "resolved": "http://registry.npm.taobao.org/upper-case/download/upper-case-1.1.3.tgz",
+      "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=",
+      "dev": true
+    },
+    "uri-js": {
+      "version": "4.2.2",
+      "resolved": "http://registry.npm.taobao.org/uri-js/download/uri-js-4.2.2.tgz",
+      "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=",
+      "dev": true,
+      "requires": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "urix": {
+      "version": "0.1.0",
+      "resolved": "http://registry.npm.taobao.org/urix/download/urix-0.1.0.tgz",
+      "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+      "dev": true
+    },
+    "url": {
+      "version": "0.11.0",
+      "resolved": "http://registry.npm.taobao.org/url/download/url-0.11.0.tgz",
+      "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+      "dev": true,
+      "requires": {
+        "punycode": "1.3.2",
+        "querystring": "0.2.0"
+      },
+      "dependencies": {
+        "punycode": {
+          "version": "1.3.2",
+          "resolved": "http://registry.npm.taobao.org/punycode/download/punycode-1.3.2.tgz",
+          "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+          "dev": true
+        }
+      }
+    },
+    "url-loader": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/url-loader/download/url-loader-1.1.2.tgz",
+      "integrity": "sha1-uXHRkbg69pPF4/6kBkvp4fLX+Ng=",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.1.0",
+        "mime": "^2.0.3",
+        "schema-utils": "^1.0.0"
+      },
+      "dependencies": {
+        "schema-utils": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz",
+          "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=",
+          "dev": true,
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        }
+      }
+    },
+    "url-parse": {
+      "version": "1.4.7",
+      "resolved": "https://registry.npm.taobao.org/url-parse/download/url-parse-1.4.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Furl-parse%2Fdownload%2Furl-parse-1.4.7.tgz",
+      "integrity": "sha1-qKg1NejACjFuQDpdtKwbm4U64ng=",
+      "dev": true,
+      "requires": {
+        "querystringify": "^2.1.1",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "url-slug": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/url-slug/download/url-slug-2.0.0.tgz",
+      "integrity": "sha1-p4nVrtSZXA2VrzM3etHVxo1NcCc=",
+      "dev": true,
+      "requires": {
+        "unidecode": "0.1.8"
+      }
+    },
+    "use": {
+      "version": "3.1.1",
+      "resolved": "http://registry.npm.taobao.org/use/download/use-3.1.1.tgz",
+      "integrity": "sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8=",
+      "dev": true
+    },
+    "util": {
+      "version": "0.11.1",
+      "resolved": "https://registry.npm.taobao.org/util/download/util-0.11.1.tgz",
+      "integrity": "sha1-MjZzNyDsZLsn9uJvQhqqLhtYjWE=",
+      "dev": true,
+      "requires": {
+        "inherits": "2.0.3"
+      }
+    },
+    "util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz",
+      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+      "dev": true
+    },
+    "util.promisify": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/util.promisify/download/util.promisify-1.0.0.tgz",
+      "integrity": "sha1-RA9xZaRZyaFtwUXrjnLzVocJcDA=",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.2",
+        "object.getownpropertydescriptors": "^2.0.3"
+      }
+    },
+    "utila": {
+      "version": "0.4.0",
+      "resolved": "http://registry.npm.taobao.org/utila/download/utila-0.4.0.tgz",
+      "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=",
+      "dev": true
+    },
+    "utils-merge": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/utils-merge/download/utils-merge-1.0.1.tgz",
+      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
+      "dev": true
+    },
+    "uuid": {
+      "version": "3.3.2",
+      "resolved": "http://registry.npm.taobao.org/uuid/download/uuid-3.3.2.tgz",
+      "integrity": "sha1-G0r0lV6zB3xQHCOHL8ZROBFYcTE=",
+      "dev": true
+    },
+    "validate-npm-package-license": {
+      "version": "3.0.4",
+      "resolved": "http://registry.npm.taobao.org/validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz",
+      "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=",
+      "dev": true,
+      "requires": {
+        "spdx-correct": "^3.0.0",
+        "spdx-expression-parse": "^3.0.0"
+      }
+    },
+    "vary": {
+      "version": "1.1.2",
+      "resolved": "http://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz",
+      "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
+      "dev": true
+    },
+    "vendors": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npm.taobao.org/vendors/download/vendors-1.0.3.tgz",
+      "integrity": "sha1-pkZ3gavTZiF8BQ+CAuflDMnu+MA=",
+      "dev": true
+    },
+    "verror": {
+      "version": "1.10.0",
+      "resolved": "http://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz",
+      "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0",
+        "core-util-is": "1.0.2",
+        "extsprintf": "^1.2.0"
+      }
+    },
+    "vm-browserify": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/vm-browserify/download/vm-browserify-1.1.0.tgz",
+      "integrity": "sha1-vXbWojMj4sqP+hICjcBFWcdfkBk=",
+      "dev": true
+    },
+    "vue": {
+      "version": "2.6.10",
+      "resolved": "http://registry.npm.taobao.org/vue/download/vue-2.6.10.tgz?cache=0&other_urls=http%3A%2F%2Fregistry.npm.taobao.org%2Fvue%2Fdownload%2Fvue-2.6.10.tgz",
+      "integrity": "sha1-pysaQqTYKnIepDjRtr9V5mGVxjc="
+    },
+    "vue-eslint-parser": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npm.taobao.org/vue-eslint-parser/download/vue-eslint-parser-2.0.3.tgz",
+      "integrity": "sha1-wmjJbG2Uz+PZOKX3WTlZsMozYNE=",
+      "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"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.6",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz",
+          "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "eslint-scope": {
+          "version": "3.7.3",
+          "resolved": "http://registry.npm.taobao.org/eslint-scope/download/eslint-scope-3.7.3.tgz",
+          "integrity": "sha1-u1ByANPRf2AkdjYWC0gmKEsQhTU=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "esrecurse": "^4.1.0",
+            "estraverse": "^4.1.1"
+          }
+        }
+      }
+    },
+    "vue-hot-reload-api": {
+      "version": "2.3.3",
+      "resolved": "http://registry.npm.taobao.org/vue-hot-reload-api/download/vue-hot-reload-api-2.3.3.tgz",
+      "integrity": "sha1-J1b0bLMlgFTF9HI96K5+hzAqHM8=",
+      "dev": true
+    },
+    "vue-i18n": {
+      "version": "8.15.3",
+      "resolved": "https://registry.npm.taobao.org/vue-i18n/download/vue-i18n-8.15.3.tgz?cache=0&sync_timestamp=1576684265396&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-i18n%2Fdownload%2Fvue-i18n-8.15.3.tgz",
+      "integrity": "sha1-n5R4Atm3NPy5LiznJNplTy+fwPQ="
+    },
+    "vue-loader": {
+      "version": "15.7.1",
+      "resolved": "https://registry.npm.taobao.org/vue-loader/download/vue-loader-15.7.1.tgz?cache=0&sync_timestamp=1563435501637&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-loader%2Fdownload%2Fvue-loader-15.7.1.tgz",
+      "integrity": "sha1-bMrNQSKqgPabqqwI/ylaYuOu/P0=",
+      "dev": true,
+      "requires": {
+        "@vue/component-compiler-utils": "^3.0.0",
+        "hash-sum": "^1.0.2",
+        "loader-utils": "^1.1.0",
+        "vue-hot-reload-api": "^2.3.0",
+        "vue-style-loader": "^4.1.0"
+      },
+      "dependencies": {
+        "@vue/component-compiler-utils": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/@vue/component-compiler-utils/download/@vue/component-compiler-utils-3.0.0.tgz",
+          "integrity": "sha1-0W+ia4NsBt9bqutF89gK/EfjVjQ=",
+          "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.14",
+            "postcss-selector-parser": "^5.0.0",
+            "prettier": "1.16.3",
+            "source-map": "~0.6.1",
+            "vue-template-es2015-compiler": "^1.9.0"
+          }
+        },
+        "lru-cache": {
+          "version": "4.1.5",
+          "resolved": "http://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz",
+          "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=",
+          "dev": true,
+          "requires": {
+            "pseudomap": "^1.0.2",
+            "yallist": "^2.1.2"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        },
+        "yallist": {
+          "version": "2.1.2",
+          "resolved": "http://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz",
+          "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+          "dev": true
+        }
+      }
+    },
+    "vue-router": {
+      "version": "3.0.6",
+      "resolved": "https://registry.npm.taobao.org/vue-router/download/vue-router-3.0.6.tgz",
+      "integrity": "sha1-Lk8PnLsLltAgWrJpDP5YiTUTasM="
+    },
+    "vue-style-loader": {
+      "version": "4.1.2",
+      "resolved": "http://registry.npm.taobao.org/vue-style-loader/download/vue-style-loader-4.1.2.tgz",
+      "integrity": "sha1-3t80mAbyXOtOZPOtfApE+6c1/Pg=",
+      "dev": true,
+      "requires": {
+        "hash-sum": "^1.0.2",
+        "loader-utils": "^1.0.2"
+      }
+    },
+    "vue-template-compiler": {
+      "version": "2.6.10",
+      "resolved": "http://registry.npm.taobao.org/vue-template-compiler/download/vue-template-compiler-2.6.10.tgz",
+      "integrity": "sha1-MjtPNJXwT6o1AzN6gvXWUHeZycw=",
+      "dev": true,
+      "requires": {
+        "de-indent": "^1.0.2",
+        "he": "^1.1.0"
+      }
+    },
+    "vue-template-es2015-compiler": {
+      "version": "1.9.1",
+      "resolved": "http://registry.npm.taobao.org/vue-template-es2015-compiler/download/vue-template-es2015-compiler-1.9.1.tgz",
+      "integrity": "sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=",
+      "dev": true
+    },
+    "vuex": {
+      "version": "3.1.0",
+      "resolved": "http://registry.npm.taobao.org/vuex/download/vuex-3.1.0.tgz?cache=0&other_urls=http%3A%2F%2Fregistry.npm.taobao.org%2Fvuex%2Fdownload%2Fvuex-3.1.0.tgz",
+      "integrity": "sha1-Y0uBUVzwz+l2vR/+lgF1XlH4Q7k="
+    },
+    "watchpack": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npm.taobao.org/watchpack/download/watchpack-1.6.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwatchpack%2Fdownload%2Fwatchpack-1.6.0.tgz",
+      "integrity": "sha1-S8EsLr6KonenHx0/FNaFx7RGzQA=",
+      "dev": true,
+      "requires": {
+        "chokidar": "^2.0.2",
+        "graceful-fs": "^4.1.2",
+        "neo-async": "^2.5.0"
+      }
+    },
+    "wbuf": {
+      "version": "1.7.3",
+      "resolved": "http://registry.npm.taobao.org/wbuf/download/wbuf-1.7.3.tgz",
+      "integrity": "sha1-wdjRSTFtPqhShIiVy2oL/oh7h98=",
+      "dev": true,
+      "requires": {
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "wcwidth": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/wcwidth/download/wcwidth-1.0.1.tgz",
+      "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
+      "dev": true,
+      "requires": {
+        "defaults": "^1.0.3"
+      }
+    },
+    "webpack": {
+      "version": "4.28.4",
+      "resolved": "https://registry.npm.taobao.org/webpack/download/webpack-4.28.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack%2Fdownload%2Fwebpack-4.28.4.tgz",
+      "integrity": "sha1-HdrmyJiH1++3Uq3ww80yubB+rNA=",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.7.11",
+        "@webassemblyjs/helper-module-context": "1.7.11",
+        "@webassemblyjs/wasm-edit": "1.7.11",
+        "@webassemblyjs/wasm-parser": "1.7.11",
+        "acorn": "^5.6.2",
+        "acorn-dynamic-import": "^3.0.0",
+        "ajv": "^6.1.0",
+        "ajv-keywords": "^3.1.0",
+        "chrome-trace-event": "^1.0.0",
+        "enhanced-resolve": "^4.1.0",
+        "eslint-scope": "^4.0.0",
+        "json-parse-better-errors": "^1.0.2",
+        "loader-runner": "^2.3.0",
+        "loader-utils": "^1.1.0",
+        "memory-fs": "~0.4.1",
+        "micromatch": "^3.1.8",
+        "mkdirp": "~0.5.0",
+        "neo-async": "^2.5.0",
+        "node-libs-browser": "^2.0.0",
+        "schema-utils": "^0.4.4",
+        "tapable": "^1.1.0",
+        "terser-webpack-plugin": "^1.1.0",
+        "watchpack": "^1.5.0",
+        "webpack-sources": "^1.3.0"
+      }
+    },
+    "webpack-bundle-analyzer": {
+      "version": "3.3.2",
+      "resolved": "https://registry.npm.taobao.org/webpack-bundle-analyzer/download/webpack-bundle-analyzer-3.3.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-bundle-analyzer%2Fdownload%2Fwebpack-bundle-analyzer-3.3.2.tgz",
+      "integrity": "sha1-PaczqQD1FZFOcp/OvNTEDd5x/G8=",
+      "dev": true,
+      "requires": {
+        "acorn": "^6.0.7",
+        "acorn-walk": "^6.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.10",
+        "mkdirp": "^0.5.1",
+        "opener": "^1.5.1",
+        "ws": "^6.0.0"
+      },
+      "dependencies": {
+        "acorn": {
+          "version": "6.2.0",
+          "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-6.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-6.2.0.tgz",
+          "integrity": "sha1-Z/DaL8M51s+11vskT9RJ8zzYu+M=",
+          "dev": true
+        }
+      }
+    },
+    "webpack-chain": {
+      "version": "4.12.1",
+      "resolved": "https://registry.npm.taobao.org/webpack-chain/download/webpack-chain-4.12.1.tgz",
+      "integrity": "sha1-bIQ5u7KrVQlS1g4eqTGRQZBsAqY=",
+      "dev": true,
+      "requires": {
+        "deepmerge": "^1.5.2",
+        "javascript-stringify": "^1.6.0"
+      }
+    },
+    "webpack-dev-middleware": {
+      "version": "3.7.0",
+      "resolved": "https://registry.npm.taobao.org/webpack-dev-middleware/download/webpack-dev-middleware-3.7.0.tgz",
+      "integrity": "sha1-73UdJfTppcijXaYAxf2jWCtcbP8=",
+      "dev": true,
+      "requires": {
+        "memory-fs": "^0.4.1",
+        "mime": "^2.4.2",
+        "range-parser": "^1.2.1",
+        "webpack-log": "^2.0.0"
+      }
+    },
+    "webpack-dev-server": {
+      "version": "3.7.2",
+      "resolved": "https://registry.npm.taobao.org/webpack-dev-server/download/webpack-dev-server-3.7.2.tgz?cache=0&sync_timestamp=1560844041188&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-dev-server%2Fdownload%2Fwebpack-dev-server-3.7.2.tgz",
+      "integrity": "sha1-95yqWXS3+LYyaO9UISIqhIbXkvU=",
+      "dev": true,
+      "requires": {
+        "ansi-html": "0.0.7",
+        "bonjour": "^3.5.0",
+        "chokidar": "^2.1.6",
+        "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.2.1",
+        "http-proxy-middleware": "^0.19.1",
+        "import-local": "^2.0.0",
+        "internal-ip": "^4.3.0",
+        "ip": "^1.1.5",
+        "killable": "^1.0.1",
+        "loglevel": "^1.6.3",
+        "opn": "^5.5.0",
+        "p-retry": "^3.0.1",
+        "portfinder": "^1.0.20",
+        "schema-utils": "^1.0.0",
+        "selfsigned": "^1.10.4",
+        "semver": "^6.1.1",
+        "serve-index": "^1.9.1",
+        "sockjs": "0.3.19",
+        "sockjs-client": "1.3.0",
+        "spdy": "^4.0.0",
+        "strip-ansi": "^3.0.1",
+        "supports-color": "^6.1.0",
+        "url": "^0.11.0",
+        "webpack-dev-middleware": "^3.7.0",
+        "webpack-log": "^2.0.0",
+        "yargs": "12.0.5"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "2.1.1",
+          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz",
+          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+          "dev": true
+        },
+        "cliui": {
+          "version": "4.1.0",
+          "resolved": "http://registry.npm.taobao.org/cliui/download/cliui-4.1.0.tgz",
+          "integrity": "sha1-NIQi2+gtgAswIu709qwQvy5NG0k=",
+          "dev": true,
+          "requires": {
+            "string-width": "^2.1.1",
+            "strip-ansi": "^4.0.0",
+            "wrap-ansi": "^2.0.0"
+          },
+          "dependencies": {
+            "ansi-regex": {
+              "version": "3.0.0",
+              "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+              "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+              "dev": true
+            },
+            "strip-ansi": {
+              "version": "4.0.0",
+              "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz",
+              "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^3.0.0"
+              }
+            }
+          }
+        },
+        "find-up": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz",
+          "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=",
+          "dev": true,
+          "requires": {
+            "locate-path": "^3.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz",
+          "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=",
+          "dev": true,
+          "requires": {
+            "p-locate": "^3.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "p-limit": {
+          "version": "2.2.0",
+          "resolved": "http://registry.npm.taobao.org/p-limit/download/p-limit-2.2.0.tgz",
+          "integrity": "sha1-QXyZQeYCepq8ulCS3SkE4lW1+8I=",
+          "dev": true,
+          "requires": {
+            "p-try": "^2.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz",
+          "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=",
+          "dev": true,
+          "requires": {
+            "p-limit": "^2.0.0"
+          }
+        },
+        "p-try": {
+          "version": "2.2.0",
+          "resolved": "http://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz",
+          "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=",
+          "dev": true
+        },
+        "schema-utils": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz",
+          "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=",
+          "dev": true,
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        },
+        "semver": {
+          "version": "6.2.0",
+          "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.2.0.tgz",
+          "integrity": "sha1-TYE9lZCq+KkZJpPWyFuTRN5ZAds=",
+          "dev": true
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz",
+          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        },
+        "supports-color": {
+          "version": "6.1.0",
+          "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz",
+          "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        },
+        "yargs": {
+          "version": "12.0.5",
+          "resolved": "https://registry.npm.taobao.org/yargs/download/yargs-12.0.5.tgz",
+          "integrity": "sha1-BfWZe2CWR7ZPZrgeO0sQo2jnrRM=",
+          "dev": true,
+          "requires": {
+            "cliui": "^4.0.0",
+            "decamelize": "^1.2.0",
+            "find-up": "^3.0.0",
+            "get-caller-file": "^1.0.1",
+            "os-locale": "^3.0.0",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^1.0.1",
+            "set-blocking": "^2.0.0",
+            "string-width": "^2.0.0",
+            "which-module": "^2.0.0",
+            "y18n": "^3.2.1 || ^4.0.0",
+            "yargs-parser": "^11.1.1"
+          }
+        },
+        "yargs-parser": {
+          "version": "11.1.1",
+          "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-11.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-11.1.1.tgz",
+          "integrity": "sha1-h5oIZZc7yp9rq1y987HGfsfTvPQ=",
+          "dev": true,
+          "requires": {
+            "camelcase": "^5.0.0",
+            "decamelize": "^1.2.0"
+          }
+        }
+      }
+    },
+    "webpack-log": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/webpack-log/download/webpack-log-2.0.0.tgz",
+      "integrity": "sha1-W3ko4GN1k/EZ0y9iJ8HgrDHhtH8=",
+      "dev": true,
+      "requires": {
+        "ansi-colors": "^3.0.0",
+        "uuid": "^3.3.2"
+      }
+    },
+    "webpack-merge": {
+      "version": "4.2.1",
+      "resolved": "http://registry.npm.taobao.org/webpack-merge/download/webpack-merge-4.2.1.tgz",
+      "integrity": "sha1-XpI8+ALqKs5P1a8dMkc2imM0ibQ=",
+      "dev": true,
+      "requires": {
+        "lodash": "^4.17.5"
+      }
+    },
+    "webpack-sources": {
+      "version": "1.3.0",
+      "resolved": "http://registry.npm.taobao.org/webpack-sources/download/webpack-sources-1.3.0.tgz?cache=0&other_urls=http%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-sources%2Fdownload%2Fwebpack-sources-1.3.0.tgz",
+      "integrity": "sha1-KijcufH0X+lg2PFJMlK17mUw+oU=",
+      "dev": true,
+      "requires": {
+        "source-list-map": "^2.0.0",
+        "source-map": "~0.6.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        }
+      }
+    },
+    "websocket-driver": {
+      "version": "0.7.3",
+      "resolved": "https://registry.npm.taobao.org/websocket-driver/download/websocket-driver-0.7.3.tgz",
+      "integrity": "sha1-otTg1PTxFvHmKX66WLBdQwEA6fk=",
+      "dev": true,
+      "requires": {
+        "http-parser-js": ">=0.4.0 <0.4.11",
+        "safe-buffer": ">=5.1.0",
+        "websocket-extensions": ">=0.1.1"
+      }
+    },
+    "websocket-extensions": {
+      "version": "0.1.3",
+      "resolved": "http://registry.npm.taobao.org/websocket-extensions/download/websocket-extensions-0.1.3.tgz",
+      "integrity": "sha1-XS/yKXcAPsaHpLhwc9+7rBRszyk=",
+      "dev": true
+    },
+    "which": {
+      "version": "1.3.1",
+      "resolved": "http://registry.npm.taobao.org/which/download/which-1.3.1.tgz",
+      "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=",
+      "dev": true,
+      "requires": {
+        "isexe": "^2.0.0"
+      }
+    },
+    "which-module": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/which-module/download/which-module-2.0.0.tgz",
+      "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+      "dev": true
+    },
+    "wide-align": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npm.taobao.org/wide-align/download/wide-align-1.1.3.tgz",
+      "integrity": "sha1-rgdOa9wMFKQx6ATmJFScYzsABFc=",
+      "dev": true,
+      "requires": {
+        "string-width": "^1.0.2 || 2"
+      }
+    },
+    "wordwrap": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/wordwrap/download/wordwrap-1.0.0.tgz",
+      "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+      "dev": true
+    },
+    "worker-farm": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npm.taobao.org/worker-farm/download/worker-farm-1.7.0.tgz",
+      "integrity": "sha1-JqlMU5G7ypJhUgAvabhKS/dy5ag=",
+      "dev": true,
+      "requires": {
+        "errno": "~0.1.7"
+      }
+    },
+    "wrap-ansi": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-2.1.0.tgz",
+      "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+      "dev": true,
+      "requires": {
+        "string-width": "^1.0.1",
+        "strip-ansi": "^3.0.1"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "2.1.1",
+          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz",
+          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz",
+          "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+          "dev": true,
+          "requires": {
+            "number-is-nan": "^1.0.0"
+          }
+        },
+        "string-width": {
+          "version": "1.0.2",
+          "resolved": "http://registry.npm.taobao.org/string-width/download/string-width-1.0.2.tgz",
+          "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+          "dev": true,
+          "requires": {
+            "code-point-at": "^1.0.0",
+            "is-fullwidth-code-point": "^1.0.0",
+            "strip-ansi": "^3.0.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz",
+          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        }
+      }
+    },
+    "wrappy": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz",
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+      "dev": true
+    },
+    "write": {
+      "version": "0.2.1",
+      "resolved": "http://registry.npm.taobao.org/write/download/write-0.2.1.tgz",
+      "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "mkdirp": "^0.5.1"
+      }
+    },
+    "ws": {
+      "version": "6.2.1",
+      "resolved": "https://registry.npm.taobao.org/ws/download/ws-6.2.1.tgz",
+      "integrity": "sha1-RC/fCkftZPWbal2P8TD0dI7VJPs=",
+      "dev": true,
+      "requires": {
+        "async-limiter": "~1.0.0"
+      }
+    },
+    "xtend": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz",
+      "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=",
+      "dev": true
+    },
+    "y18n": {
+      "version": "4.0.0",
+      "resolved": "http://registry.npm.taobao.org/y18n/download/y18n-4.0.0.tgz",
+      "integrity": "sha1-le+U+F7MgdAHwmThkKEg8KPIVms=",
+      "dev": true
+    },
+    "yallist": {
+      "version": "3.0.3",
+      "resolved": "http://registry.npm.taobao.org/yallist/download/yallist-3.0.3.tgz",
+      "integrity": "sha1-tLBJ4xS+VF486AIjbWzSLNkcPek=",
+      "dev": true
+    },
+    "yargs": {
+      "version": "13.3.0",
+      "resolved": "https://registry.npm.taobao.org/yargs/download/yargs-13.3.0.tgz",
+      "integrity": "sha1-TGV6VeB+Xyz5R/ijZlZ8BKDe3IM=",
+      "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.1"
+      },
+      "dependencies": {
+        "find-up": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz",
+          "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=",
+          "dev": true,
+          "requires": {
+            "locate-path": "^3.0.0"
+          }
+        },
+        "get-caller-file": {
+          "version": "2.0.5",
+          "resolved": "http://registry.npm.taobao.org/get-caller-file/download/get-caller-file-2.0.5.tgz",
+          "integrity": "sha1-T5RBKoLbMvNuOwuXQfipf+sDH34=",
+          "dev": true
+        },
+        "locate-path": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz",
+          "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=",
+          "dev": true,
+          "requires": {
+            "p-locate": "^3.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "p-limit": {
+          "version": "2.2.0",
+          "resolved": "http://registry.npm.taobao.org/p-limit/download/p-limit-2.2.0.tgz",
+          "integrity": "sha1-QXyZQeYCepq8ulCS3SkE4lW1+8I=",
+          "dev": true,
+          "requires": {
+            "p-try": "^2.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz",
+          "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=",
+          "dev": true,
+          "requires": {
+            "p-limit": "^2.0.0"
+          }
+        },
+        "p-try": {
+          "version": "2.2.0",
+          "resolved": "http://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz",
+          "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=",
+          "dev": true
+        },
+        "require-main-filename": {
+          "version": "2.0.0",
+          "resolved": "http://registry.npm.taobao.org/require-main-filename/download/require-main-filename-2.0.0.tgz",
+          "integrity": "sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs=",
+          "dev": true
+        },
+        "string-width": {
+          "version": "3.1.0",
+          "resolved": "http://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz",
+          "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^7.0.1",
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^5.1.0"
+          }
+        }
+      }
+    },
+    "yargs-parser": {
+      "version": "13.1.1",
+      "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-13.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-13.1.1.tgz",
+      "integrity": "sha1-0mBYUyqgbTZf4JH2ofwGsvfl7KA=",
+      "dev": true,
+      "requires": {
+        "camelcase": "^5.0.0",
+        "decamelize": "^1.2.0"
+      }
+    },
+    "yorkie": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/yorkie/download/yorkie-2.0.0.tgz",
+      "integrity": "sha1-kkEZEtQ1IU4SxRwq4Qk+VLa7g9k=",
+      "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",
+          "resolved": "http://registry.npm.taobao.org/cross-spawn/download/cross-spawn-5.1.0.tgz",
+          "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^4.0.1",
+            "shebang-command": "^1.2.0",
+            "which": "^1.2.9"
+          }
+        },
+        "execa": {
+          "version": "0.8.0",
+          "resolved": "https://registry.npm.taobao.org/execa/download/execa-0.8.0.tgz",
+          "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=",
+          "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",
+          "resolved": "http://registry.npm.taobao.org/get-stream/download/get-stream-3.0.0.tgz",
+          "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+          "dev": true
+        },
+        "lru-cache": {
+          "version": "4.1.5",
+          "resolved": "http://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz",
+          "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=",
+          "dev": true,
+          "requires": {
+            "pseudomap": "^1.0.2",
+            "yallist": "^2.1.2"
+          }
+        },
+        "normalize-path": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/normalize-path/download/normalize-path-1.0.0.tgz",
+          "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=",
+          "dev": true
+        },
+        "yallist": {
+          "version": "2.1.2",
+          "resolved": "http://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz",
+          "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+          "dev": true
+        }
+      }
+    }
+  }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..a774a23
--- /dev/null
+++ b/package.json
@@ -0,0 +1,44 @@
+{
+  "name": "exam-student",
+  "version": "2.0.1",
+  "author": "alvis",
+  "description": "OTS娴嬭瘎绯荤粺",
+  "license": "MIT",
+  "private": true,
+  "scripts": {
+    "serve": "vue-cli-service serve --mode dev",
+    "build": "vue-cli-service build --mode prod",
+    "build:dev": "vue-cli-service build --mode dev",
+    "build:test": "vue-cli-service build --mode test",
+    "build:pre": "vue-cli-service build --mode pre",
+    "build:prod": "vue-cli-service build --mode prod",
+    "lint": "vue-cli-service lint"
+  },
+  "dependencies": {
+    "axios": "^0.19.0",
+    "core-js": "^2.6.9",
+    "element-ui": "^2.10.1",
+    "es6-promise": "^4.2.8",
+    "js-cookie": "2.2.0",
+    "normalize.css": "8.0.1",
+    "nprogress": "0.2.0",
+    "vue": "2.6.10",
+    "vue-i18n": "^8.15.3",
+    "vue-router": "^3.0.3",
+    "vuex": "3.1.0"
+  },
+  "devDependencies": {
+    "@vue/cli-plugin-babel": "^3.9.0",
+    "@vue/cli-plugin-eslint": "^3.9.0",
+    "@vue/cli-service": "^3.9.0",
+    "@vue/eslint-config-standard": "^4.0.0",
+    "babel-eslint": "^10.0.1",
+    "babel-polyfill": "^6.26.0",
+    "eslint": "^5.16.0",
+    "eslint-plugin-vue": "5.2.2",
+    "node-sass": "^4.12.0",
+    "sass-loader": "^7.1.0",
+    "svg-sprite-loader": "4.1.6",
+    "vue-template-compiler": "^2.6.10"
+  }
+}
diff --git a/postcss.config.js b/postcss.config.js
new file mode 100644
index 0000000..961986e
--- /dev/null
+++ b/postcss.config.js
@@ -0,0 +1,5 @@
+module.exports = {
+  plugins: {
+    autoprefixer: {}
+  }
+}
diff --git a/public/favicon.ico b/public/favicon.ico
new file mode 100644
index 0000000..beac70c
--- /dev/null
+++ b/public/favicon.ico
Binary files differ
diff --git a/public/index.html b/public/index.html
new file mode 100644
index 0000000..4df846a
--- /dev/null
+++ b/public/index.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
+<meta http-equiv="Pragma" content="no-cache" />
+<meta http-equiv="Expires" content="0" />
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width,initial-scale=1.0">
+    <meta name="google" content="notranslate" />
+    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
+    <title></title>
+    <style>
+        html {
+            height: 100%;
+            width: 100%;
+        }
+
+        body {
+            padding: 0;
+            margin: 0;
+            height: 100%;
+            width: 100%;
+        }
+    </style>
+
+    <!--  <script src='<%= BASE_URL %>/student/components/echarts/echarts.min.js'></script>
+      <script src='<%= BASE_URL %>/student/components/echarts/theme/macarons.js'></script>
+
+      <script src='<%= BASE_URL %>/student/components/ueditor/ueditor.config.js'></script>
+      <script src='<%= BASE_URL %>/student/components/ueditor/ueditor.all.min.js'></script>
+      <script src='<%= BASE_URL %>/student/components/ueditor/lang/zh-cn/zh-cn.js'></script>
+      <script src='<%= BASE_URL %>/student/components/ueditor/kityformula-plugin/addKityFormulaDialog.js'></script>
+      <script src='<%= BASE_URL %>/student/components/ueditor/kityformula-plugin/getKfContent.js'></script>
+      <script src='<%= BASE_URL %>/student/components/ueditor/kityformula-plugin/defaultFilterFix.js'></script>-->
+
+    <script>
+      var _hmt = _hmt || [];
+      (function () {
+        var hm = document.createElement('script')
+        // hm.src = 'https://hm.baidu.com/hm.js?cd8218cd51f800ed2b73e5751cb3f4f9'
+        var s = document.getElementsByTagName('script')[0]
+        s.parentNode.insertBefore(hm, s)
+      })()
+    </script>
+
+</head>
+<body>
+<noscript>
+    <strong>We're sorry but vue-demo 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>
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 0000000..a111e7d
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,19 @@
+<template>
+  <div id="app">
+    <router-view />
+    <back-to-top :visibility-height="100" :back-position="0" transition-name="fade" ref="backTop"/>
+  </div>
+
+</template>
+
+<script>
+
+import BackToTop from '@/components/BackToTop'
+
+export default {
+  name: 'App',
+  components: {
+    BackToTop
+  }
+}
+</script>
diff --git a/src/api/dashboard.js b/src/api/dashboard.js
new file mode 100644
index 0000000..119ea23
--- /dev/null
+++ b/src/api/dashboard.js
@@ -0,0 +1,8 @@
+import { post, postOts } from '@/utils/request'
+
+export default {
+  // index: () => post('/api/student/dashboard/index'),
+  index: () => postOts('/api/exam/dashboard/index'),
+  // task: () => post('/api/student/dashboard/task')
+  task: () => postOts('/api/exam/dashboard/task')
+}
diff --git a/src/api/demography.js b/src/api/demography.js
new file mode 100644
index 0000000..9f70530
--- /dev/null
+++ b/src/api/demography.js
@@ -0,0 +1,54 @@
+import { getOts, postOts } from '@/utils/request'
+
+// const otsUlr = '/remote/member'
+export default {
+  demography: (token, langType, query) => getOts(`/remote/member/param/` + token + `/` + langType, query),
+  submitDemography: (saveParam, langType, query) => postOts(`/remote/member/save/` + saveParam + '/' + langType, query),
+  queryDemographyParamInfo: (token, query) => getOts(`/remote/member/paramInfo/` + token, query),
+  queryLangList: (token, reportTemplateId, query) => getOts(`/remote/member/langList/` + token + `/` + reportTemplateId, query),
+  queryCreate: function (langType) {
+    // 鍏堟煡璇汉鍙e鏄惁宸茬粡濉畬
+    let _this = this
+    _this.demography(_this.paraMemberToken, langType)
+      .then(re => {
+        if (re.code !== 1) {
+          _this.$message.error(re.message + 'setMemberTocken')
+          return
+        }
+        if (re.response == null || re.response.length === 0) {
+          _this.$router.push({path: '/exam/' + _this.doUrl})
+          return
+        }
+        for (let i = 0; i < re.response.length; i++) {
+          if (re.response[i].paramValue === null) {
+            re.response[i].paramValue = ''
+          }
+        }
+        _this.demographyMenber.data = re.response
+        _this.demographyApi.queryDemographyParamInfo(_this.paraMemberToken).then(
+          re => {
+            if (re.code !== 1) {
+              _this.$router.push({path: '/demography/fill/index', query: {demographyMenber: _this.demographyMenber, isStart: false}})
+            }
+
+            if (re.response.length === _this.demographyMenber.data.length) {
+              _this.$router.push({ path: '/exam/' + _this.doUrl })
+              return
+            }
+            for (let i = 0; i < re.response.length; i++) {
+              _this.parasInfoIds[re.response[i].paramId] = re.response[i]
+            }
+            for (let i = 0; i < _this.demographyMenber.data.length; i++) {
+              if (_this.parasInfoIds[_this.demographyMenber.data[i].paramId] !== undefined) {
+                _this.demographyMenber.data[i].paramValue = _this.parasInfoIds[_this.demographyMenber.data[i].paramId].paramValue
+              }
+            }
+            _this.$router.push({ path: '/demography/fill/index', query: { demographyMenber: _this.demographyMenber, isStart: false } })
+          }
+        ).catch(e => {
+        })
+      }).catch(e => {
+        _this.$message.error(_this.$t('userinfoErro'))
+      })
+  }
+}
diff --git a/src/api/examPaper.js b/src/api/examPaper.js
new file mode 100644
index 0000000..a8ed906
--- /dev/null
+++ b/src/api/examPaper.js
@@ -0,0 +1,10 @@
+import { post, postOts } from '@/utils/request'
+
+export default {
+  // select: id => post('/api/student/exam/paper/select/' + id),
+  select: (tokenId, langType) => postOts('/api/exam/paper/select/' + tokenId + '/' + langType),
+  selectTokenId: tokenId => postOts('/api/exam/paper/selectTokenId/' + tokenId),
+  recordLogininfor: tokenId => postOts('/api/exam/paper/recordLogininfor/' + tokenId),
+  pageList: query => post('/api/student/exam/paper/pageList', query),
+  updateTestMemberStatus: tokenId => postOts('/api/exam/exampaper/answer/updateTestMemberStatus/' + tokenId)
+}
diff --git a/src/api/examPaperAnswer.js b/src/api/examPaperAnswer.js
new file mode 100644
index 0000000..0af2d14
--- /dev/null
+++ b/src/api/examPaperAnswer.js
@@ -0,0 +1,10 @@
+import { post, postOts } from '@/utils/request'
+
+export default {
+  // pageList: query => post('/api/student/exampaper/answer/pageList', query),
+  pageList: query => postOts('/api/exam/exampaper/answer/pageList', query),
+  // answerSubmit: form => post('/api/student/exampaper/answer/answerSubmit', form),
+  answerSubmit: (form, tokenId) => postOts('/api/exam/exampaper/answer/answerSubmit/' + tokenId, form),
+  read: id => post('/api/student/exampaper/answer/read/' + id),
+  edit: form => post('/api/student/exampaper/answer/edit', form)
+}
diff --git a/src/api/login.js b/src/api/login.js
new file mode 100644
index 0000000..f9b3ac5
--- /dev/null
+++ b/src/api/login.js
@@ -0,0 +1,7 @@
+import { post, postWithLoadTip, postWithLoadTipOts } from '@/utils/request'
+
+export default {
+  // login: query => postWithLoadTip(`/api/user/login`, query),
+  login: query => postWithLoadTipOts(`/api/exam/examUser/login`, query),
+  logout: query => post(`/api/user/logout`, query)
+}
diff --git a/src/api/question.js b/src/api/question.js
new file mode 100644
index 0000000..4976fa2
--- /dev/null
+++ b/src/api/question.js
@@ -0,0 +1,4 @@
+import { post } from '@/utils/request'
+
+export default {
+}
diff --git a/src/api/questionAnswer.js b/src/api/questionAnswer.js
new file mode 100644
index 0000000..0e25e43
--- /dev/null
+++ b/src/api/questionAnswer.js
@@ -0,0 +1,6 @@
+import { post } from '@/utils/request'
+
+export default {
+  pageList: query => post('/api/student/question/answer/page', query),
+  select: id => post('/api/student/question/answer/select/' + id)
+}
diff --git a/src/api/register.js b/src/api/register.js
new file mode 100644
index 0000000..13e8a2b
--- /dev/null
+++ b/src/api/register.js
@@ -0,0 +1,5 @@
+import { postWithLoadTip } from '@/utils/request'
+
+export default {
+  register: query => postWithLoadTip(`/api/student/user/register`, query)
+}
diff --git a/src/api/subject.js b/src/api/subject.js
new file mode 100644
index 0000000..699bdc6
--- /dev/null
+++ b/src/api/subject.js
@@ -0,0 +1,6 @@
+import { post } from '@/utils/request'
+
+export default {
+  list: query => post('/api/student/education/subject/list'),
+  select: id => post('/api/student/education/subject/select/' + id)
+}
diff --git a/src/api/user.js b/src/api/user.js
new file mode 100644
index 0000000..61b15a9
--- /dev/null
+++ b/src/api/user.js
@@ -0,0 +1,12 @@
+import { post, postOts } from '@/utils/request'
+
+export default {
+  createUser: query => post('/api/student/user/edit', query),
+  getCurrentUser: () => postOts('/api/exam/examUser/current'),
+  getUserEvent: () => post('/api/student/user/log'),
+  update: query => post('/api/student/user/update', query),
+  messagePageList: query => post('/api/student/user/message/page', query),
+  read: id => post('/api/student/user/message/read/' + id),
+  // getMessageCount: () => post('/api/student/user/message/unreadCount')
+  getMessageCount: () => postOts('/api/exam/examUser/message/unreadCount')
+}
diff --git a/src/assets/401_images/401.gif b/src/assets/401_images/401.gif
new file mode 100644
index 0000000..cd6e0d9
--- /dev/null
+++ b/src/assets/401_images/401.gif
Binary files differ
diff --git a/src/assets/404_images/404.png b/src/assets/404_images/404.png
new file mode 100644
index 0000000..3d8e230
--- /dev/null
+++ b/src/assets/404_images/404.png
Binary files differ
diff --git a/src/assets/404_images/404_cloud.png b/src/assets/404_images/404_cloud.png
new file mode 100644
index 0000000..c6281d0
--- /dev/null
+++ b/src/assets/404_images/404_cloud.png
Binary files differ
diff --git a/src/assets/WechatIMG2896.jpeg b/src/assets/WechatIMG2896.jpeg
new file mode 100644
index 0000000..ceba950
--- /dev/null
+++ b/src/assets/WechatIMG2896.jpeg
Binary files differ
diff --git a/src/assets/avatar.png b/src/assets/avatar.png
new file mode 100644
index 0000000..e16488e
--- /dev/null
+++ b/src/assets/avatar.png
Binary files differ
diff --git a/src/assets/carousel/1.png b/src/assets/carousel/1.png
new file mode 100644
index 0000000..159de98
--- /dev/null
+++ b/src/assets/carousel/1.png
Binary files differ
diff --git a/src/assets/carousel/2.png b/src/assets/carousel/2.png
new file mode 100644
index 0000000..276f4c7
--- /dev/null
+++ b/src/assets/carousel/2.png
Binary files differ
diff --git a/src/assets/carousel/3.png b/src/assets/carousel/3.png
new file mode 100644
index 0000000..8c41a3f
--- /dev/null
+++ b/src/assets/carousel/3.png
Binary files differ
diff --git a/src/assets/carousel/4.png b/src/assets/carousel/4.png
new file mode 100644
index 0000000..1b19721
--- /dev/null
+++ b/src/assets/carousel/4.png
Binary files differ
diff --git a/src/assets/custom-theme/fonts/element-icons.ttf b/src/assets/custom-theme/fonts/element-icons.ttf
new file mode 100644
index 0000000..570a3e1
--- /dev/null
+++ b/src/assets/custom-theme/fonts/element-icons.ttf
Binary files differ
diff --git a/src/assets/custom-theme/fonts/element-icons.woff b/src/assets/custom-theme/fonts/element-icons.woff
new file mode 100644
index 0000000..c2bcc00
--- /dev/null
+++ b/src/assets/custom-theme/fonts/element-icons.woff
Binary files differ
diff --git a/src/assets/custom-theme/index.css b/src/assets/custom-theme/index.css
new file mode 100644
index 0000000..0455afd
--- /dev/null
+++ b/src/assets/custom-theme/index.css
@@ -0,0 +1,14738 @@
+@charset "UTF-8";
+.el-pager, .el-table th {
+    -moz-user-select: none;
+    -ms-user-select: none
+}
+
+.el-pagination--small .arrow.disabled, .el-table .hidden-columns, .el-table td.is-hidden > *, .el-table th.is-hidden > *, .el-table--hidden {
+    visibility: hidden
+}
+
+.el-input__suffix, .el-tree.is-dragging .el-tree-node__content * {
+    pointer-events: none
+}
+
+.el-dropdown .el-dropdown-selfdefine:focus:active, .el-dropdown .el-dropdown-selfdefine:focus:not(.focusing), .el-message__closeBtn:focus, .el-message__content:focus, .el-popover:focus, .el-popover:focus:active, .el-popover__reference:focus:hover, .el-popover__reference:focus:not(.focusing), .el-rate:active, .el-rate:focus, .el-tooltip:focus:hover, .el-tooltip:focus:not(.focusing), .el-upload-list__item.is-success:active, .el-upload-list__item.is-success:not(.focusing):focus {
+    outline-width: 0
+}
+
+@font-face {
+    font-family: element-icons;
+    src: url(fonts/element-icons.woff) format("woff"), url(fonts/element-icons.ttf) format("truetype");
+    font-weight: 400;
+    font-style: normal
+}
+
+[class*=" el-icon-"], [class^=el-icon-] {
+    font-family: element-icons !important;
+    speak: none;
+    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
+}
+
+.el-icon-ice-cream-round:before {
+    content: "\e6a0"
+}
+
+.el-icon-ice-cream-square:before {
+    content: "\e6a3"
+}
+
+.el-icon-lollipop:before {
+    content: "\e6a4"
+}
+
+.el-icon-potato-strips:before {
+    content: "\e6a5"
+}
+
+.el-icon-milk-tea:before {
+    content: "\e6a6"
+}
+
+.el-icon-ice-drink:before {
+    content: "\e6a7"
+}
+
+.el-icon-ice-tea:before {
+    content: "\e6a9"
+}
+
+.el-icon-coffee:before {
+    content: "\e6aa"
+}
+
+.el-icon-orange:before {
+    content: "\e6ab"
+}
+
+.el-icon-pear:before {
+    content: "\e6ac"
+}
+
+.el-icon-apple:before {
+    content: "\e6ad"
+}
+
+.el-icon-cherry:before {
+    content: "\e6ae"
+}
+
+.el-icon-watermelon:before {
+    content: "\e6af"
+}
+
+.el-icon-grape:before {
+    content: "\e6b0"
+}
+
+.el-icon-refrigerator:before {
+    content: "\e6b1"
+}
+
+.el-icon-goblet-square-full:before {
+    content: "\e6b2"
+}
+
+.el-icon-goblet-square:before {
+    content: "\e6b3"
+}
+
+.el-icon-goblet-full:before {
+    content: "\e6b4"
+}
+
+.el-icon-goblet:before {
+    content: "\e6b5"
+}
+
+.el-icon-cold-drink:before {
+    content: "\e6b6"
+}
+
+.el-icon-coffee-cup:before {
+    content: "\e6b8"
+}
+
+.el-icon-water-cup:before {
+    content: "\e6b9"
+}
+
+.el-icon-hot-water:before {
+    content: "\e6ba"
+}
+
+.el-icon-ice-cream:before {
+    content: "\e6bb"
+}
+
+.el-icon-dessert:before {
+    content: "\e6bc"
+}
+
+.el-icon-sugar:before {
+    content: "\e6bd"
+}
+
+.el-icon-tableware:before {
+    content: "\e6be"
+}
+
+.el-icon-burger:before {
+    content: "\e6bf"
+}
+
+.el-icon-knife-fork:before {
+    content: "\e6c1"
+}
+
+.el-icon-fork-spoon:before {
+    content: "\e6c2"
+}
+
+.el-icon-chicken:before {
+    content: "\e6c3"
+}
+
+.el-icon-food:before {
+    content: "\e6c4"
+}
+
+.el-icon-dish-1:before {
+    content: "\e6c5"
+}
+
+.el-icon-dish:before {
+    content: "\e6c6"
+}
+
+.el-icon-moon-night:before {
+    content: "\e6ee"
+}
+
+.el-icon-moon:before {
+    content: "\e6f0"
+}
+
+.el-icon-cloudy-and-sunny:before {
+    content: "\e6f1"
+}
+
+.el-icon-partly-cloudy:before {
+    content: "\e6f2"
+}
+
+.el-icon-cloudy:before {
+    content: "\e6f3"
+}
+
+.el-icon-sunny:before {
+    content: "\e6f6"
+}
+
+.el-icon-sunset:before {
+    content: "\e6f7"
+}
+
+.el-icon-sunrise-1:before {
+    content: "\e6f8"
+}
+
+.el-icon-sunrise:before {
+    content: "\e6f9"
+}
+
+.el-icon-heavy-rain:before {
+    content: "\e6fa"
+}
+
+.el-icon-lightning:before {
+    content: "\e6fb"
+}
+
+.el-icon-light-rain:before {
+    content: "\e6fc"
+}
+
+.el-icon-wind-power:before {
+    content: "\e6fd"
+}
+
+.el-icon-baseball:before {
+    content: "\e712"
+}
+
+.el-icon-soccer:before {
+    content: "\e713"
+}
+
+.el-icon-football:before {
+    content: "\e715"
+}
+
+.el-icon-basketball:before {
+    content: "\e716"
+}
+
+.el-icon-ship:before {
+    content: "\e73f"
+}
+
+.el-icon-truck:before {
+    content: "\e740"
+}
+
+.el-icon-bicycle:before {
+    content: "\e741"
+}
+
+.el-icon-mobile-phone:before {
+    content: "\e6d3"
+}
+
+.el-icon-service:before {
+    content: "\e6d4"
+}
+
+.el-icon-key:before {
+    content: "\e6e2"
+}
+
+.el-icon-unlock:before {
+    content: "\e6e4"
+}
+
+.el-icon-lock:before {
+    content: "\e6e5"
+}
+
+.el-icon-watch:before {
+    content: "\e6fe"
+}
+
+.el-icon-watch-1:before {
+    content: "\e6ff"
+}
+
+.el-icon-timer:before {
+    content: "\e702"
+}
+
+.el-icon-alarm-clock:before {
+    content: "\e703"
+}
+
+.el-icon-map-location:before {
+    content: "\e704"
+}
+
+.el-icon-delete-location:before {
+    content: "\e705"
+}
+
+.el-icon-add-location:before {
+    content: "\e706"
+}
+
+.el-icon-location-information:before {
+    content: "\e707"
+}
+
+.el-icon-location-outline:before {
+    content: "\e708"
+}
+
+.el-icon-location:before {
+    content: "\e79e"
+}
+
+.el-icon-place:before {
+    content: "\e709"
+}
+
+.el-icon-discover:before {
+    content: "\e70a"
+}
+
+.el-icon-first-aid-kit:before {
+    content: "\e70b"
+}
+
+.el-icon-trophy-1:before {
+    content: "\e70c"
+}
+
+.el-icon-trophy:before {
+    content: "\e70d"
+}
+
+.el-icon-medal:before {
+    content: "\e70e"
+}
+
+.el-icon-medal-1:before {
+    content: "\e70f"
+}
+
+.el-icon-stopwatch:before {
+    content: "\e710"
+}
+
+.el-icon-mic:before {
+    content: "\e711"
+}
+
+.el-icon-copy-document:before {
+    content: "\e718"
+}
+
+.el-icon-full-screen:before {
+    content: "\e719"
+}
+
+.el-icon-switch-button:before {
+    content: "\e71b"
+}
+
+.el-icon-aim:before {
+    content: "\e71c"
+}
+
+.el-icon-crop:before {
+    content: "\e71d"
+}
+
+.el-icon-odometer:before {
+    content: "\e71e"
+}
+
+.el-icon-time:before {
+    content: "\e71f"
+}
+
+.el-icon-bangzhu:before {
+    content: "\e724"
+}
+
+.el-icon-close-notification:before {
+    content: "\e726"
+}
+
+.el-icon-microphone:before {
+    content: "\e727"
+}
+
+.el-icon-turn-off-microphone:before {
+    content: "\e728"
+}
+
+.el-icon-position:before {
+    content: "\e729"
+}
+
+.el-icon-postcard:before {
+    content: "\e72a"
+}
+
+.el-icon-message:before {
+    content: "\e72b"
+}
+
+.el-icon-chat-line-square:before {
+    content: "\e72d"
+}
+
+.el-icon-chat-dot-square:before {
+    content: "\e72e"
+}
+
+.el-icon-chat-dot-round:before {
+    content: "\e72f"
+}
+
+.el-icon-chat-square:before {
+    content: "\e730"
+}
+
+.el-icon-chat-line-round:before {
+    content: "\e731"
+}
+
+.el-icon-chat-round:before {
+    content: "\e732"
+}
+
+.el-icon-set-up:before {
+    content: "\e733"
+}
+
+.el-icon-turn-off:before {
+    content: "\e734"
+}
+
+.el-icon-open:before {
+    content: "\e735"
+}
+
+.el-icon-connection:before {
+    content: "\e736"
+}
+
+.el-icon-link:before {
+    content: "\e737"
+}
+
+.el-icon-cpu:before {
+    content: "\e738"
+}
+
+.el-icon-thumb:before {
+    content: "\e739"
+}
+
+.el-icon-female:before {
+    content: "\e73a"
+}
+
+.el-icon-male:before {
+    content: "\e73b"
+}
+
+.el-icon-guide:before {
+    content: "\e73c"
+}
+
+.el-icon-news:before {
+    content: "\e73e"
+}
+
+.el-icon-price-tag:before {
+    content: "\e744"
+}
+
+.el-icon-discount:before {
+    content: "\e745"
+}
+
+.el-icon-wallet:before {
+    content: "\e747"
+}
+
+.el-icon-coin:before {
+    content: "\e748"
+}
+
+.el-icon-money:before {
+    content: "\e749"
+}
+
+.el-icon-bank-card:before {
+    content: "\e74a"
+}
+
+.el-icon-box:before {
+    content: "\e74b"
+}
+
+.el-icon-present:before {
+    content: "\e74c"
+}
+
+.el-icon-sell:before {
+    content: "\e6d5"
+}
+
+.el-icon-sold-out:before {
+    content: "\e6d6"
+}
+
+.el-icon-shopping-bag-2:before {
+    content: "\e74d"
+}
+
+.el-icon-shopping-bag-1:before {
+    content: "\e74e"
+}
+
+.el-icon-shopping-cart-2:before {
+    content: "\e74f"
+}
+
+.el-icon-shopping-cart-1:before {
+    content: "\e750"
+}
+
+.el-icon-shopping-cart-full:before {
+    content: "\e751"
+}
+
+.el-icon-smoking:before {
+    content: "\e752"
+}
+
+.el-icon-no-smoking:before {
+    content: "\e753"
+}
+
+.el-icon-house:before {
+    content: "\e754"
+}
+
+.el-icon-table-lamp:before {
+    content: "\e755"
+}
+
+.el-icon-school:before {
+    content: "\e756"
+}
+
+.el-icon-office-building:before {
+    content: "\e757"
+}
+
+.el-icon-toilet-paper:before {
+    content: "\e758"
+}
+
+.el-icon-notebook-2:before {
+    content: "\e759"
+}
+
+.el-icon-notebook-1:before {
+    content: "\e75a"
+}
+
+.el-icon-files:before {
+    content: "\e75b"
+}
+
+.el-icon-collection:before {
+    content: "\e75c"
+}
+
+.el-icon-receiving:before {
+    content: "\e75d"
+}
+
+.el-icon-suitcase-1:before {
+    content: "\e760"
+}
+
+.el-icon-suitcase:before {
+    content: "\e761"
+}
+
+.el-icon-film:before {
+    content: "\e763"
+}
+
+.el-icon-collection-tag:before {
+    content: "\e765"
+}
+
+.el-icon-data-analysis:before {
+    content: "\e766"
+}
+
+.el-icon-pie-chart:before {
+    content: "\e767"
+}
+
+.el-icon-data-board:before {
+    content: "\e768"
+}
+
+.el-icon-data-line:before {
+    content: "\e76d"
+}
+
+.el-icon-reading:before {
+    content: "\e769"
+}
+
+.el-icon-magic-stick:before {
+    content: "\e76a"
+}
+
+.el-icon-coordinate:before {
+    content: "\e76b"
+}
+
+.el-icon-mouse:before {
+    content: "\e76c"
+}
+
+.el-icon-brush:before {
+    content: "\e76e"
+}
+
+.el-icon-headset:before {
+    content: "\e76f"
+}
+
+.el-icon-umbrella:before {
+    content: "\e770"
+}
+
+.el-icon-scissors:before {
+    content: "\e771"
+}
+
+.el-icon-mobile:before {
+    content: "\e773"
+}
+
+.el-icon-attract:before {
+    content: "\e774"
+}
+
+.el-icon-monitor:before {
+    content: "\e775"
+}
+
+.el-icon-search:before {
+    content: "\e778"
+}
+
+.el-icon-takeaway-box:before {
+    content: "\e77a"
+}
+
+.el-icon-paperclip:before {
+    content: "\e77d"
+}
+
+.el-icon-printer:before {
+    content: "\e77e"
+}
+
+.el-icon-document-add:before {
+    content: "\e782"
+}
+
+.el-icon-document:before {
+    content: "\e785"
+}
+
+.el-icon-document-checked:before {
+    content: "\e786"
+}
+
+.el-icon-document-copy:before {
+    content: "\e787"
+}
+
+.el-icon-document-delete:before {
+    content: "\e788"
+}
+
+.el-icon-document-remove:before {
+    content: "\e789"
+}
+
+.el-icon-tickets:before {
+    content: "\e78b"
+}
+
+.el-icon-folder-checked:before {
+    content: "\e77f"
+}
+
+.el-icon-folder-delete:before {
+    content: "\e780"
+}
+
+.el-icon-folder-remove:before {
+    content: "\e781"
+}
+
+.el-icon-folder-add:before {
+    content: "\e783"
+}
+
+.el-icon-folder-opened:before {
+    content: "\e784"
+}
+
+.el-icon-folder:before {
+    content: "\e78a"
+}
+
+.el-icon-edit-outline:before {
+    content: "\e764"
+}
+
+.el-icon-edit:before {
+    content: "\e78c"
+}
+
+.el-icon-date:before {
+    content: "\e78e"
+}
+
+.el-icon-c-scale-to-original:before {
+    content: "\e7c6"
+}
+
+.el-icon-view:before {
+    content: "\e6ce"
+}
+
+.el-icon-loading:before {
+    content: "\e6cf"
+}
+
+.el-icon-rank:before {
+    content: "\e6d1"
+}
+
+.el-icon-sort-down:before {
+    content: "\e7c4"
+}
+
+.el-icon-sort-up:before {
+    content: "\e7c5"
+}
+
+.el-icon-sort:before {
+    content: "\e6d2"
+}
+
+.el-icon-finished:before {
+    content: "\e6cd"
+}
+
+.el-icon-refresh-left:before {
+    content: "\e6c7"
+}
+
+.el-icon-refresh-right:before {
+    content: "\e6c8"
+}
+
+.el-icon-refresh:before {
+    content: "\e6d0"
+}
+
+.el-icon-video-play:before {
+    content: "\e7c0"
+}
+
+.el-icon-video-pause:before {
+    content: "\e7c1"
+}
+
+.el-icon-d-arrow-right:before {
+    content: "\e6dc"
+}
+
+.el-icon-d-arrow-left:before {
+    content: "\e6dd"
+}
+
+.el-icon-arrow-up:before {
+    content: "\e6e1"
+}
+
+.el-icon-arrow-down:before {
+    content: "\e6df"
+}
+
+.el-icon-arrow-right:before {
+    content: "\e6e0"
+}
+
+.el-icon-arrow-left:before {
+    content: "\e6de"
+}
+
+.el-icon-top-right:before {
+    content: "\e6e7"
+}
+
+.el-icon-top-left:before {
+    content: "\e6e8"
+}
+
+.el-icon-top:before {
+    content: "\e6e6"
+}
+
+.el-icon-bottom:before {
+    content: "\e6eb"
+}
+
+.el-icon-right:before {
+    content: "\e6e9"
+}
+
+.el-icon-back:before {
+    content: "\e6ea"
+}
+
+.el-icon-bottom-right:before {
+    content: "\e6ec"
+}
+
+.el-icon-bottom-left:before {
+    content: "\e6ed"
+}
+
+.el-icon-caret-top:before {
+    content: "\e78f"
+}
+
+.el-icon-caret-bottom:before {
+    content: "\e790"
+}
+
+.el-icon-caret-right:before {
+    content: "\e791"
+}
+
+.el-icon-caret-left:before {
+    content: "\e792"
+}
+
+.el-icon-d-caret:before {
+    content: "\e79a"
+}
+
+.el-icon-share:before {
+    content: "\e793"
+}
+
+.el-icon-menu:before {
+    content: "\e798"
+}
+
+.el-icon-s-grid:before {
+    content: "\e7a6"
+}
+
+.el-icon-s-check:before {
+    content: "\e7a7"
+}
+
+.el-icon-s-data:before {
+    content: "\e7a8"
+}
+
+.el-icon-s-opportunity:before {
+    content: "\e7aa"
+}
+
+.el-icon-s-custom:before {
+    content: "\e7ab"
+}
+
+.el-icon-s-claim:before {
+    content: "\e7ad"
+}
+
+.el-icon-s-finance:before {
+    content: "\e7ae"
+}
+
+.el-icon-s-comment:before {
+    content: "\e7af"
+}
+
+.el-icon-s-flag:before {
+    content: "\e7b0"
+}
+
+.el-icon-s-marketing:before {
+    content: "\e7b1"
+}
+
+.el-icon-s-shop:before {
+    content: "\e7b4"
+}
+
+.el-icon-s-open:before {
+    content: "\e7b5"
+}
+
+.el-icon-s-management:before {
+    content: "\e7b6"
+}
+
+.el-icon-s-ticket:before {
+    content: "\e7b7"
+}
+
+.el-icon-s-release:before {
+    content: "\e7b8"
+}
+
+.el-icon-s-home:before {
+    content: "\e7b9"
+}
+
+.el-icon-s-promotion:before {
+    content: "\e7ba"
+}
+
+.el-icon-s-operation:before {
+    content: "\e7bb"
+}
+
+.el-icon-s-unfold:before {
+    content: "\e7bc"
+}
+
+.el-icon-s-fold:before {
+    content: "\e7a9"
+}
+
+.el-icon-s-platform:before {
+    content: "\e7bd"
+}
+
+.el-icon-s-order:before {
+    content: "\e7be"
+}
+
+.el-icon-s-cooperation:before {
+    content: "\e7bf"
+}
+
+.el-icon-bell:before {
+    content: "\e725"
+}
+
+.el-icon-message-solid:before {
+    content: "\e799"
+}
+
+.el-icon-video-camera:before {
+    content: "\e772"
+}
+
+.el-icon-video-camera-solid:before {
+    content: "\e796"
+}
+
+.el-icon-camera:before {
+    content: "\e779"
+}
+
+.el-icon-camera-solid:before {
+    content: "\e79b"
+}
+
+.el-icon-download:before {
+    content: "\e77c"
+}
+
+.el-icon-upload2:before {
+    content: "\e77b"
+}
+
+.el-icon-upload:before {
+    content: "\e7c3"
+}
+
+.el-icon-picture-outline-round:before {
+    content: "\e75f"
+}
+
+.el-icon-picture-outline:before {
+    content: "\e75e"
+}
+
+.el-icon-picture:before {
+    content: "\e79f"
+}
+
+.el-icon-close:before {
+    content: "\e6db"
+}
+
+.el-icon-check:before {
+    content: "\e6da"
+}
+
+.el-icon-plus:before {
+    content: "\e6d9"
+}
+
+.el-icon-minus:before {
+    content: "\e6d8"
+}
+
+.el-icon-help:before {
+    content: "\e73d"
+}
+
+.el-icon-s-help:before {
+    content: "\e7b3"
+}
+
+.el-icon-circle-close:before {
+    content: "\e78d"
+}
+
+.el-icon-circle-check:before {
+    content: "\e720"
+}
+
+.el-icon-circle-plus-outline:before {
+    content: "\e723"
+}
+
+.el-icon-remove-outline:before {
+    content: "\e722"
+}
+
+.el-icon-zoom-out:before {
+    content: "\e776"
+}
+
+.el-icon-zoom-in:before {
+    content: "\e777"
+}
+
+.el-icon-error:before {
+    content: "\e79d"
+}
+
+.el-icon-success:before {
+    content: "\e79c"
+}
+
+.el-icon-circle-plus:before {
+    content: "\e7a0"
+}
+
+.el-icon-remove:before {
+    content: "\e7a2"
+}
+
+.el-icon-info:before {
+    content: "\e7a1"
+}
+
+.el-icon-question:before {
+    content: "\e7a4"
+}
+
+.el-icon-warning-outline:before {
+    content: "\e6c9"
+}
+
+.el-icon-warning:before {
+    content: "\e7a3"
+}
+
+.el-icon-goods:before {
+    content: "\e7c2"
+}
+
+.el-icon-s-goods:before {
+    content: "\e7b2"
+}
+
+.el-icon-star-off:before {
+    content: "\e717"
+}
+
+.el-icon-star-on:before {
+    content: "\e797"
+}
+
+.el-icon-more-outline:before {
+    content: "\e6cc"
+}
+
+.el-icon-more:before {
+    content: "\e794"
+}
+
+.el-icon-phone-outline:before {
+    content: "\e6cb"
+}
+
+.el-icon-phone:before {
+    content: "\e795"
+}
+
+.el-icon-user:before {
+    content: "\e6e3"
+}
+
+.el-icon-user-solid:before {
+    content: "\e7a5"
+}
+
+.el-icon-setting:before {
+    content: "\e6ca"
+}
+
+.el-icon-s-tools:before {
+    content: "\e7ac"
+}
+
+.el-icon-delete:before {
+    content: "\e6d7"
+}
+
+.el-icon-delete-solid:before {
+    content: "\e7c9"
+}
+
+.el-icon-eleme:before {
+    content: "\e7c7"
+}
+
+.el-icon-platform-eleme:before {
+    content: "\e7ca"
+}
+
+.el-icon-loading {
+    -webkit-animation: rotating 2s linear infinite;
+    animation: rotating 2s linear infinite
+}
+
+.el-icon--right {
+    margin-left: 5px
+}
+
+.el-icon--left {
+    margin-right: 5px
+}
+
+@-webkit-keyframes rotating {
+    0% {
+        -webkit-transform: rotateZ(0);
+        transform: rotateZ(0)
+    }
+    100% {
+        -webkit-transform: rotateZ(360deg);
+        transform: rotateZ(360deg)
+    }
+}
+
+@keyframes rotating {
+    0% {
+        -webkit-transform: rotateZ(0);
+        transform: rotateZ(0)
+    }
+    100% {
+        -webkit-transform: rotateZ(360deg);
+        transform: rotateZ(360deg)
+    }
+}
+
+.el-pagination {
+    white-space: nowrap;
+    padding: 2px 5px;
+    color: #303133;
+    font-weight: 700
+}
+
+.el-pagination::after, .el-pagination::before {
+    display: table;
+    content: ""
+}
+
+.el-pagination::after {
+    clear: both
+}
+
+.el-pagination button, .el-pagination span:not([class*=suffix]) {
+    display: inline-block;
+    font-size: 13px;
+    min-width: 35.5px;
+    height: 28px;
+    line-height: 28px;
+    vertical-align: top;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+.el-pagination .el-input__inner {
+    text-align: center;
+    -moz-appearance: textfield;
+    line-height: normal
+}
+
+.el-pagination .el-input__suffix {
+    right: 0;
+    -webkit-transform: scale(.8);
+    transform: scale(.8)
+}
+
+.el-pagination .el-select .el-input {
+    width: 100px;
+    margin: 0 5px
+}
+
+.el-pagination .el-select .el-input .el-input__inner {
+    padding-right: 25px;
+    border-radius: 3px
+}
+
+.el-pagination button {
+    border: none;
+    padding: 0 6px;
+    background: 0 0
+}
+
+.el-pagination button:focus {
+    outline: 0
+}
+
+.el-pagination button:hover {
+    color: #409EFF
+}
+
+.el-pagination button:disabled {
+    color: #C0C4CC;
+    background-color: #FFF;
+    cursor: not-allowed
+}
+
+.el-pagination .btn-next, .el-pagination .btn-prev {
+    background: center center no-repeat #FFF;
+    background-size: 16px;
+    cursor: pointer;
+    margin: 0;
+    color: #303133
+}
+
+.el-pagination .btn-next .el-icon, .el-pagination .btn-prev .el-icon {
+    display: block;
+    font-size: 12px;
+    font-weight: 700
+}
+
+.el-pagination .btn-prev {
+    padding-right: 12px
+}
+
+.el-pagination .btn-next {
+    padding-left: 12px
+}
+
+.el-pagination .el-pager li.disabled {
+    color: #C0C4CC;
+    cursor: not-allowed
+}
+
+.el-pager li, .el-pager li.btn-quicknext:hover, .el-pager li.btn-quickprev:hover {
+    cursor: pointer
+}
+
+.el-pagination--small .btn-next, .el-pagination--small .btn-prev, .el-pagination--small .el-pager li, .el-pagination--small .el-pager li.btn-quicknext, .el-pagination--small .el-pager li.btn-quickprev, .el-pagination--small .el-pager li:last-child {
+    border-color: transparent;
+    font-size: 12px;
+    line-height: 22px;
+    height: 22px;
+    min-width: 22px
+}
+
+.el-pagination--small .more::before, .el-pagination--small li.more::before {
+    line-height: 24px
+}
+
+.el-pagination--small button, .el-pagination--small span:not([class*=suffix]) {
+    height: 22px;
+    line-height: 22px
+}
+
+.el-pagination--small .el-pagination__editor, .el-pagination--small .el-pagination__editor.el-input .el-input__inner {
+    height: 22px
+}
+
+.el-pagination__sizes {
+    margin: 0 10px 0 0;
+    font-weight: 400;
+    color: #606266
+}
+
+.el-pagination__sizes .el-input .el-input__inner {
+    font-size: 13px;
+    padding-left: 8px
+}
+
+.el-pagination__sizes .el-input .el-input__inner:hover {
+    border-color: #409EFF
+}
+
+.el-pagination__total {
+    margin-right: 10px;
+    font-weight: 400;
+    color: #606266
+}
+
+.el-pagination__jump {
+    margin-left: 24px;
+    font-weight: 400;
+    color: #606266
+}
+
+.el-pagination__jump .el-input__inner {
+    padding: 0 3px
+}
+
+.el-pagination__rightwrapper {
+    float: right
+}
+
+.el-pagination__editor {
+    line-height: 18px;
+    padding: 0 2px;
+    height: 28px;
+    text-align: center;
+    margin: 0 2px;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    border-radius: 3px
+}
+
+.el-pager, .el-pagination.is-background .btn-next, .el-pagination.is-background .btn-prev {
+    padding: 0
+}
+
+.el-pagination__editor.el-input {
+    width: 50px
+}
+
+.el-pagination__editor.el-input .el-input__inner {
+    height: 28px
+}
+
+.el-pagination__editor .el-input__inner::-webkit-inner-spin-button, .el-pagination__editor .el-input__inner::-webkit-outer-spin-button {
+    -webkit-appearance: none;
+    margin: 0
+}
+
+.el-pagination.is-background .btn-next, .el-pagination.is-background .btn-prev, .el-pagination.is-background .el-pager li {
+    margin: 0 5px;
+    background-color: #f4f4f5;
+    color: #606266;
+    min-width: 30px;
+    border-radius: 2px
+}
+
+.el-pagination.is-background .btn-next.disabled, .el-pagination.is-background .btn-next:disabled, .el-pagination.is-background .btn-prev.disabled, .el-pagination.is-background .btn-prev:disabled, .el-pagination.is-background .el-pager li.disabled {
+    color: #C0C4CC
+}
+
+.el-pagination.is-background .el-pager li:not(.disabled):hover {
+    color: #409EFF
+}
+
+.el-pagination.is-background .el-pager li:not(.disabled).active {
+    background-color: #409EFF;
+    color: #FFF
+}
+
+.el-dialog, .el-pager li {
+    background: #FFF;
+    -webkit-box-sizing: border-box
+}
+
+.el-pagination.is-background.el-pagination--small .btn-next, .el-pagination.is-background.el-pagination--small .btn-prev, .el-pagination.is-background.el-pagination--small .el-pager li {
+    margin: 0 3px;
+    min-width: 22px
+}
+
+.el-pager, .el-pager li {
+    vertical-align: top;
+    margin: 0;
+    display: inline-block
+}
+
+.el-pager {
+    -webkit-user-select: none;
+    user-select: none;
+    list-style: none;
+    font-size: 0
+}
+
+.el-pager .more::before {
+    line-height: 30px
+}
+
+.el-pager li {
+    padding: 0 4px;
+    font-size: 13px;
+    min-width: 35.5px;
+    height: 28px;
+    line-height: 28px;
+    box-sizing: border-box;
+    text-align: center
+}
+
+.el-menu--collapse .el-menu .el-submenu, .el-menu--popup {
+    min-width: 200px
+}
+
+.el-pager li.btn-quicknext, .el-pager li.btn-quickprev {
+    line-height: 28px;
+    color: #303133
+}
+
+.el-pager li.btn-quicknext.disabled, .el-pager li.btn-quickprev.disabled {
+    color: #C0C4CC
+}
+
+.el-pager li.active + li {
+    border-left: 0
+}
+
+.el-pager li:hover {
+    color: #409EFF
+}
+
+.el-pager li.active {
+    color: #409EFF;
+    cursor: default
+}
+
+@-webkit-keyframes v-modal-in {
+    0% {
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes v-modal-out {
+    100% {
+        opacity: 0
+    }
+}
+
+.el-dialog {
+    position: relative;
+    margin: 0 auto 50px;
+    border-radius: 2px;
+    -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, .3);
+    box-shadow: 0 1px 3px rgba(0, 0, 0, .3);
+    box-sizing: border-box;
+    width: 50%
+}
+
+.el-dialog.is-fullscreen {
+    width: 100%;
+    margin-top: 0;
+    margin-bottom: 0;
+    height: 100%;
+    overflow: auto
+}
+
+.el-dialog__wrapper {
+    position: fixed;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    overflow: auto;
+    margin: 0
+}
+
+.el-dialog__header {
+    padding: 20px 20px 10px
+}
+
+.el-dialog__headerbtn {
+    position: absolute;
+    top: 20px;
+    right: 20px;
+    padding: 0;
+    background: 0 0;
+    border: none;
+    outline: 0;
+    cursor: pointer;
+    font-size: 16px
+}
+
+.el-dialog__headerbtn .el-dialog__close {
+    color: #909399
+}
+
+.el-dialog__headerbtn:focus .el-dialog__close, .el-dialog__headerbtn:hover .el-dialog__close {
+    color: #409EFF
+}
+
+.el-dialog__title {
+    line-height: 24px;
+    font-size: 18px;
+    color: #303133
+}
+
+.el-dialog__body {
+    padding: 30px 20px;
+    color: #606266;
+    font-size: 14px;
+    word-break: break-all
+}
+
+.el-dialog__footer {
+    padding: 10px 20px 20px;
+    text-align: right;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+.el-dialog--center {
+    text-align: center
+}
+
+.el-dialog--center .el-dialog__body {
+    text-align: initial;
+    padding: 25px 25px 30px
+}
+
+.el-dialog--center .el-dialog__footer {
+    text-align: inherit
+}
+
+.dialog-fade-enter-active {
+    -webkit-animation: dialog-fade-in .3s;
+    animation: dialog-fade-in .3s
+}
+
+.dialog-fade-leave-active {
+    -webkit-animation: dialog-fade-out .3s;
+    animation: dialog-fade-out .3s
+}
+
+@-webkit-keyframes dialog-fade-in {
+    0% {
+        -webkit-transform: translate3d(0, -20px, 0);
+        transform: translate3d(0, -20px, 0);
+        opacity: 0
+    }
+    100% {
+        -webkit-transform: translate3d(0, 0, 0);
+        transform: translate3d(0, 0, 0);
+        opacity: 1
+    }
+}
+
+@keyframes dialog-fade-in {
+    0% {
+        -webkit-transform: translate3d(0, -20px, 0);
+        transform: translate3d(0, -20px, 0);
+        opacity: 0
+    }
+    100% {
+        -webkit-transform: translate3d(0, 0, 0);
+        transform: translate3d(0, 0, 0);
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes dialog-fade-out {
+    0% {
+        -webkit-transform: translate3d(0, 0, 0);
+        transform: translate3d(0, 0, 0);
+        opacity: 1
+    }
+    100% {
+        -webkit-transform: translate3d(0, -20px, 0);
+        transform: translate3d(0, -20px, 0);
+        opacity: 0
+    }
+}
+
+@keyframes dialog-fade-out {
+    0% {
+        -webkit-transform: translate3d(0, 0, 0);
+        transform: translate3d(0, 0, 0);
+        opacity: 1
+    }
+    100% {
+        -webkit-transform: translate3d(0, -20px, 0);
+        transform: translate3d(0, -20px, 0);
+        opacity: 0
+    }
+}
+
+.el-autocomplete {
+    position: relative;
+    display: inline-block
+}
+
+.el-autocomplete-suggestion {
+    margin: 5px 0;
+    -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+    box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+    border-radius: 4px;
+    border: 1px solid #E4E7ED;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    background-color: #FFF
+}
+
+.el-dropdown-menu, .el-menu--collapse .el-submenu .el-menu {
+    z-index: 10;
+    -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1)
+}
+
+.el-autocomplete-suggestion__wrap {
+    max-height: 280px;
+    padding: 10px 0;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+.el-autocomplete-suggestion__list {
+    margin: 0;
+    padding: 0
+}
+
+.el-autocomplete-suggestion li {
+    padding: 0 20px;
+    margin: 0;
+    line-height: 34px;
+    cursor: pointer;
+    color: #606266;
+    font-size: 14px;
+    list-style: none;
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis
+}
+
+.el-autocomplete-suggestion li.highlighted, .el-autocomplete-suggestion li:hover {
+    background-color: #F5F7FA
+}
+
+.el-autocomplete-suggestion li.divider {
+    margin-top: 6px;
+    border-top: 1px solid #000
+}
+
+.el-autocomplete-suggestion li.divider:last-child {
+    margin-bottom: -6px
+}
+
+.el-autocomplete-suggestion.is-loading li {
+    text-align: center;
+    height: 100px;
+    line-height: 100px;
+    font-size: 20px;
+    color: #999
+}
+
+.el-autocomplete-suggestion.is-loading li::after {
+    display: inline-block;
+    content: "";
+    height: 100%;
+    vertical-align: middle
+}
+
+.el-autocomplete-suggestion.is-loading li:hover {
+    background-color: #FFF
+}
+
+.el-autocomplete-suggestion.is-loading .el-icon-loading {
+    vertical-align: middle
+}
+
+.el-dropdown {
+    display: inline-block;
+    position: relative;
+    color: #606266;
+    font-size: 14px
+}
+
+.el-dropdown .el-button-group {
+    display: block
+}
+
+.el-dropdown .el-button-group .el-button {
+    float: none
+}
+
+.el-dropdown .el-dropdown__caret-button {
+    padding-left: 5px;
+    padding-right: 5px;
+    position: relative;
+    border-left: none
+}
+
+.el-dropdown .el-dropdown__caret-button::before {
+    content: '';
+    position: absolute;
+    display: block;
+    width: 1px;
+    top: 5px;
+    bottom: 5px;
+    left: 0;
+    background: rgba(255, 255, 255, .5)
+}
+
+.el-dropdown .el-dropdown__caret-button:hover::before {
+    top: 0;
+    bottom: 0
+}
+
+.el-dropdown .el-dropdown__caret-button .el-dropdown__icon {
+    padding-left: 0
+}
+
+.el-dropdown__icon {
+    font-size: 12px;
+    margin: 0 3px
+}
+
+.el-dropdown-menu {
+    position: absolute;
+    top: 0;
+    left: 0;
+    padding: 10px 0;
+    margin: 5px 0;
+    background-color: #FFF;
+    border: 1px solid #EBEEF5;
+    border-radius: 4px;
+    box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1)
+}
+
+.el-dropdown-menu__item {
+    list-style: none;
+    line-height: 36px;
+    padding: 0 20px;
+    margin: 0;
+    font-size: 14px;
+    color: #606266;
+    cursor: pointer;
+    outline: 0
+}
+
+.el-dropdown-menu__item:focus, .el-dropdown-menu__item:not(.is-disabled):hover {
+    background-color: #ecf5ff;
+    color: #66b1ff
+}
+
+.el-dropdown-menu__item i {
+    margin-right: 5px
+}
+
+.el-dropdown-menu__item--divided {
+    position: relative;
+    margin-top: 6px;
+    border-top: 1px solid #EBEEF5
+}
+
+.el-dropdown-menu__item--divided:before {
+    content: '';
+    height: 6px;
+    display: block;
+    margin: 0 -20px;
+    background-color: #FFF
+}
+
+.el-dropdown-menu__item.is-disabled {
+    cursor: default;
+    color: #bbb;
+    pointer-events: none
+}
+
+.el-dropdown-menu--medium {
+    padding: 6px 0
+}
+
+.el-dropdown-menu--medium .el-dropdown-menu__item {
+    line-height: 30px;
+    padding: 0 17px;
+    font-size: 14px
+}
+
+.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided {
+    margin-top: 6px
+}
+
+.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before {
+    height: 6px;
+    margin: 0 -17px
+}
+
+.el-dropdown-menu--small {
+    padding: 6px 0
+}
+
+.el-dropdown-menu--small .el-dropdown-menu__item {
+    line-height: 27px;
+    padding: 0 15px;
+    font-size: 13px
+}
+
+.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided {
+    margin-top: 4px
+}
+
+.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before {
+    height: 4px;
+    margin: 0 -15px
+}
+
+.el-dropdown-menu--mini {
+    padding: 3px 0
+}
+
+.el-dropdown-menu--mini .el-dropdown-menu__item {
+    line-height: 24px;
+    padding: 0 10px;
+    font-size: 12px
+}
+
+.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided {
+    margin-top: 3px
+}
+
+.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before {
+    height: 3px;
+    margin: 0 -10px
+}
+
+.el-menu {
+    border-right: solid 1px #e6e6e6;
+    list-style: none;
+    position: relative;
+    margin: 0;
+    padding-left: 0;
+    background-color: #FFF
+}
+
+.el-menu--horizontal > .el-menu-item:not(.is-disabled):focus, .el-menu--horizontal > .el-menu-item:not(.is-disabled):hover, .el-menu--horizontal > .el-submenu .el-submenu__title:hover {
+    background-color: #fff
+}
+
+.el-menu::after, .el-menu::before {
+    display: table;
+    content: ""
+}
+
+.el-menu::after {
+    clear: both
+}
+
+.el-menu.el-menu--horizontal {
+    border-bottom: solid 1px #e6e6e6
+}
+
+.el-menu--horizontal {
+    border-right: none
+}
+
+.el-menu--horizontal > .el-menu-item {
+    float: left;
+    height: 60px;
+    line-height: 60px;
+    margin: 0;
+    border-bottom: 2px solid transparent;
+    color: #909399
+}
+
+.el-menu--horizontal > .el-menu-item a, .el-menu--horizontal > .el-menu-item a:hover {
+    color: inherit
+}
+
+.el-menu--horizontal > .el-submenu {
+    float: left
+}
+
+.el-menu--horizontal > .el-submenu:focus, .el-menu--horizontal > .el-submenu:hover {
+    outline: 0
+}
+
+.el-menu--horizontal > .el-submenu:focus .el-submenu__title, .el-menu--horizontal > .el-submenu:hover .el-submenu__title {
+    color: #303133
+}
+
+.el-menu--horizontal > .el-submenu.is-active .el-submenu__title {
+    border-bottom: 2px solid #409EFF;
+    color: #303133
+}
+
+.el-menu--horizontal > .el-submenu .el-submenu__title {
+    height: 60px;
+    line-height: 60px;
+    border-bottom: 2px solid transparent;
+    color: #909399
+}
+
+.el-menu--horizontal > .el-submenu .el-submenu__icon-arrow {
+    position: static;
+    vertical-align: middle;
+    margin-left: 8px;
+    margin-top: -3px
+}
+
+.el-menu--horizontal .el-menu .el-menu-item, .el-menu--horizontal .el-menu .el-submenu__title {
+    background-color: #FFF;
+    float: none;
+    height: 36px;
+    line-height: 36px;
+    padding: 0 10px;
+    color: #909399
+}
+
+.el-menu--horizontal .el-menu .el-menu-item.is-active, .el-menu--horizontal .el-menu .el-submenu.is-active > .el-submenu__title {
+    color: #303133
+}
+
+.el-menu--horizontal .el-menu-item:not(.is-disabled):focus, .el-menu--horizontal .el-menu-item:not(.is-disabled):hover {
+    outline: 0;
+    color: #303133
+}
+
+.el-menu--horizontal > .el-menu-item.is-active {
+    border-bottom: 2px solid #409EFF;
+    color: #303133
+}
+
+.el-menu--collapse {
+    width: 64px
+}
+
+.el-menu--collapse > .el-menu-item [class^=el-icon-], .el-menu--collapse > .el-submenu > .el-submenu__title [class^=el-icon-] {
+    margin: 0;
+    vertical-align: middle;
+    width: 24px;
+    text-align: center
+}
+
+.el-menu--collapse > .el-menu-item .el-submenu__icon-arrow, .el-menu--collapse > .el-submenu > .el-submenu__title .el-submenu__icon-arrow {
+    display: none
+}
+
+.el-menu--collapse > .el-menu-item span, .el-menu--collapse > .el-submenu > .el-submenu__title span {
+    height: 0;
+    width: 0;
+    overflow: hidden;
+    visibility: hidden;
+    display: inline-block
+}
+
+.el-menu--collapse > .el-menu-item.is-active i {
+    color: inherit
+}
+
+.el-menu--collapse .el-submenu {
+    position: relative
+}
+
+.el-menu--collapse .el-submenu .el-menu {
+    position: absolute;
+    margin-left: 5px;
+    top: 0;
+    left: 100%;
+    border: 1px solid #E4E7ED;
+    border-radius: 2px;
+    box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1)
+}
+
+.el-menu-item, .el-submenu__title {
+    height: 56px;
+    line-height: 56px;
+    position: relative;
+    -webkit-box-sizing: border-box;
+    white-space: nowrap;
+    list-style: none
+}
+
+.el-menu--collapse .el-submenu.is-opened > .el-submenu__title .el-submenu__icon-arrow {
+    -webkit-transform: none;
+    transform: none
+}
+
+.el-menu--popup {
+    z-index: 100;
+    border: none;
+    padding: 5px 0;
+    border-radius: 2px;
+    -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+    box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1)
+}
+
+.el-menu--popup-bottom-start {
+    margin-top: 5px
+}
+
+.el-menu--popup-right-start {
+    margin-left: 5px;
+    margin-right: 5px
+}
+
+.el-menu-item {
+    font-size: 14px;
+    color: #303133;
+    padding: 0 20px;
+    cursor: pointer;
+    -webkit-transition: border-color .3s, background-color .3s, color .3s;
+    transition: border-color .3s, background-color .3s, color .3s;
+    box-sizing: border-box
+}
+
+.el-menu-item * {
+    vertical-align: middle
+}
+
+.el-menu-item i {
+    color: #909399
+}
+
+.el-menu-item:focus, .el-menu-item:hover {
+    outline: 0;
+    background-color: #ecf5ff
+}
+
+.el-menu-item.is-disabled {
+    opacity: .25;
+    cursor: not-allowed;
+    background: 0 0 !important
+}
+
+.el-menu-item [class^=el-icon-] {
+    margin-right: 5px;
+    width: 24px;
+    text-align: center;
+    font-size: 18px;
+    vertical-align: middle
+}
+
+.el-menu-item.is-active {
+    color: #409EFF
+}
+
+.el-menu-item.is-active i {
+    color: inherit
+}
+
+.el-submenu {
+    list-style: none;
+    margin: 0;
+    padding-left: 0
+}
+
+.el-submenu__title {
+    font-size: 14px;
+    color: #303133;
+    padding: 0 20px;
+    cursor: pointer;
+    -webkit-transition: border-color .3s, background-color .3s, color .3s;
+    transition: border-color .3s, background-color .3s, color .3s;
+    box-sizing: border-box
+}
+
+.el-submenu__title * {
+    vertical-align: middle
+}
+
+.el-submenu__title i {
+    color: #909399
+}
+
+.el-submenu__title:focus, .el-submenu__title:hover {
+    outline: 0;
+    background-color: #ecf5ff
+}
+
+.el-submenu__title.is-disabled {
+    opacity: .25;
+    cursor: not-allowed;
+    background: 0 0 !important
+}
+
+.el-submenu__title:hover {
+    background-color: #ecf5ff
+}
+
+.el-submenu .el-menu {
+    border: none
+}
+
+.el-submenu .el-menu-item {
+    height: 50px;
+    line-height: 50px;
+    padding: 0 45px;
+    min-width: 200px
+}
+
+.el-submenu__icon-arrow {
+    position: absolute;
+    top: 50%;
+    right: 20px;
+    margin-top: -7px;
+    -webkit-transition: -webkit-transform .3s;
+    transition: -webkit-transform .3s;
+    transition: transform .3s;
+    transition: transform .3s, -webkit-transform .3s;
+    font-size: 12px
+}
+
+.el-submenu.is-active .el-submenu__title {
+    border-bottom-color: #409EFF
+}
+
+.el-submenu.is-opened > .el-submenu__title .el-submenu__icon-arrow {
+    -webkit-transform: rotateZ(180deg);
+    transform: rotateZ(180deg)
+}
+
+.el-submenu.is-disabled .el-menu-item, .el-submenu.is-disabled .el-submenu__title {
+    opacity: .25;
+    cursor: not-allowed;
+    background: 0 0 !important
+}
+
+.el-submenu [class^=el-icon-] {
+    vertical-align: middle;
+    margin-right: 5px;
+    width: 24px;
+    text-align: center;
+    font-size: 18px
+}
+
+.el-menu-item-group > ul {
+    padding: 0
+}
+
+.el-menu-item-group__title {
+    padding: 7px 0 7px 20px;
+    line-height: normal;
+    font-size: 12px;
+    color: #909399
+}
+
+.el-radio-button__inner, .el-radio-group {
+    display: inline-block;
+    line-height: 1;
+    vertical-align: middle
+}
+
+.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow {
+    -webkit-transition: .2s;
+    transition: .2s;
+    opacity: 0
+}
+
+.el-radio-group {
+    font-size: 0
+}
+
+.el-radio-button {
+    position: relative;
+    display: inline-block;
+    outline: 0
+}
+
+.el-radio-button__inner {
+    white-space: nowrap;
+    background: #FFF;
+    border: 1px solid #DCDFE6;
+    font-weight: 500;
+    border-left: 0;
+    color: #606266;
+    -webkit-appearance: none;
+    text-align: center;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    outline: 0;
+    margin: 0;
+    position: relative;
+    cursor: pointer;
+    -webkit-transition: all .3s cubic-bezier(.645, .045, .355, 1);
+    transition: all .3s cubic-bezier(.645, .045, .355, 1);
+    padding: 12px 20px;
+    font-size: 14px;
+    border-radius: 0
+}
+
+.el-radio-button__inner.is-round {
+    padding: 12px 20px
+}
+
+.el-radio-button__inner:hover {
+    color: #409EFF
+}
+
+.el-radio-button__inner [class*=el-icon-] {
+    line-height: .9
+}
+
+.el-radio-button__inner [class*=el-icon-] + span {
+    margin-left: 5px
+}
+
+.el-radio-button:first-child .el-radio-button__inner {
+    border-left: 1px solid #DCDFE6;
+    border-radius: 4px 0 0 4px;
+    -webkit-box-shadow: none !important;
+    box-shadow: none !important
+}
+
+.el-radio-button__orig-radio {
+    opacity: 0;
+    outline: 0;
+    position: absolute;
+    z-index: -1
+}
+
+.el-radio-button__orig-radio:checked + .el-radio-button__inner {
+    color: #FFF;
+    background-color: #409EFF;
+    border-color: #409EFF;
+    -webkit-box-shadow: -1px 0 0 0 #409EFF;
+    box-shadow: -1px 0 0 0 #409EFF
+}
+
+.el-radio-button__orig-radio:disabled + .el-radio-button__inner {
+    color: #C0C4CC;
+    cursor: not-allowed;
+    background-image: none;
+    background-color: #FFF;
+    border-color: #EBEEF5;
+    -webkit-box-shadow: none;
+    box-shadow: none
+}
+
+.el-radio-button__orig-radio:disabled:checked + .el-radio-button__inner {
+    background-color: #F2F6FC
+}
+
+.el-radio-button:last-child .el-radio-button__inner {
+    border-radius: 0 4px 4px 0
+}
+
+.el-popover, .el-radio-button:first-child:last-child .el-radio-button__inner {
+    border-radius: 4px
+}
+
+.el-radio-button--medium .el-radio-button__inner {
+    padding: 10px 20px;
+    font-size: 14px;
+    border-radius: 0
+}
+
+.el-radio-button--medium .el-radio-button__inner.is-round {
+    padding: 10px 20px
+}
+
+.el-radio-button--small .el-radio-button__inner {
+    padding: 9px 15px;
+    font-size: 12px;
+    border-radius: 0
+}
+
+.el-radio-button--small .el-radio-button__inner.is-round {
+    padding: 9px 15px
+}
+
+.el-radio-button--mini .el-radio-button__inner {
+    padding: 7px 15px;
+    font-size: 12px;
+    border-radius: 0
+}
+
+.el-radio-button--mini .el-radio-button__inner.is-round {
+    padding: 7px 15px
+}
+
+.el-radio-button:focus:not(.is-focus):not(:active):not(.is-disabled) {
+    -webkit-box-shadow: 0 0 2px 2px #409EFF;
+    box-shadow: 0 0 2px 2px #409EFF
+}
+
+.el-switch {
+    display: -webkit-inline-box;
+    display: -ms-inline-flexbox;
+    display: inline-flex;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center;
+    position: relative;
+    font-size: 14px;
+    line-height: 20px;
+    height: 20px;
+    vertical-align: middle
+}
+
+.el-switch__core, .el-switch__label {
+    display: inline-block;
+    cursor: pointer
+}
+
+.el-switch.is-disabled .el-switch__core, .el-switch.is-disabled .el-switch__label {
+    cursor: not-allowed
+}
+
+.el-switch__label {
+    -webkit-transition: .2s;
+    transition: .2s;
+    height: 20px;
+    font-size: 14px;
+    font-weight: 500;
+    vertical-align: middle;
+    color: #303133
+}
+
+.el-switch__label.is-active {
+    color: #409EFF
+}
+
+.el-switch__label--left {
+    margin-right: 10px
+}
+
+.el-switch__label--right {
+    margin-left: 10px
+}
+
+.el-switch__label * {
+    line-height: 1;
+    font-size: 14px;
+    display: inline-block
+}
+
+.el-switch__input {
+    position: absolute;
+    width: 0;
+    height: 0;
+    opacity: 0;
+    margin: 0
+}
+
+.el-switch__core {
+    margin: 0;
+    position: relative;
+    width: 40px;
+    height: 20px;
+    border: 1px solid #DCDFE6;
+    outline: 0;
+    border-radius: 10px;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    background: #DCDFE6;
+    -webkit-transition: border-color .3s, background-color .3s;
+    transition: border-color .3s, background-color .3s;
+    vertical-align: middle
+}
+
+.el-switch__core:after {
+    content: "";
+    position: absolute;
+    top: 1px;
+    left: 1px;
+    border-radius: 100%;
+    -webkit-transition: all .3s;
+    transition: all .3s;
+    width: 16px;
+    height: 16px;
+    background-color: #FFF
+}
+
+.el-switch.is-checked .el-switch__core {
+    border-color: #409EFF;
+    background-color: #409EFF
+}
+
+.el-switch.is-checked .el-switch__core::after {
+    left: 100%;
+    margin-left: -17px
+}
+
+.el-switch.is-disabled {
+    opacity: .6
+}
+
+.el-switch--wide .el-switch__label.el-switch__label--left span {
+    left: 10px
+}
+
+.el-switch--wide .el-switch__label.el-switch__label--right span {
+    right: 10px
+}
+
+.el-switch .label-fade-enter, .el-switch .label-fade-leave-active {
+    opacity: 0
+}
+
+.el-select-dropdown {
+    position: absolute;
+    z-index: 1001;
+    border: 1px solid #E4E7ED;
+    border-radius: 4px;
+    background-color: #FFF;
+    -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+    box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 5px 0
+}
+
+.el-select-dropdown.is-multiple .el-select-dropdown__item.selected {
+    color: #409EFF;
+    background-color: #FFF
+}
+
+.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover {
+    background-color: #F5F7FA
+}
+
+.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after {
+    position: absolute;
+    right: 20px;
+    font-family: element-icons;
+    content: "\e6da";
+    font-size: 12px;
+    font-weight: 700;
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale
+}
+
+.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list {
+    padding: 0
+}
+
+.el-select-dropdown__empty {
+    padding: 10px 0;
+    margin: 0;
+    text-align: center;
+    color: #999;
+    font-size: 14px
+}
+
+.el-select-dropdown__wrap {
+    max-height: 274px
+}
+
+.el-select-dropdown__list {
+    list-style: none;
+    padding: 6px 0;
+    margin: 0;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+.el-select-dropdown__item {
+    font-size: 14px;
+    padding: 0 20px;
+    position: relative;
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    color: #606266;
+    height: 34px;
+    line-height: 34px;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    cursor: pointer
+}
+
+.el-select .el-tag, .el-table {
+    -webkit-box-sizing: border-box
+}
+
+.el-select-dropdown__item.is-disabled {
+    color: #C0C4CC;
+    cursor: not-allowed
+}
+
+.el-select-dropdown__item.is-disabled:hover {
+    background-color: #FFF
+}
+
+.el-select-dropdown__item.hover, .el-select-dropdown__item:hover {
+    background-color: #F5F7FA
+}
+
+.el-select-dropdown__item.selected {
+    color: #409EFF;
+    font-weight: 700
+}
+
+.el-select-group {
+    margin: 0;
+    padding: 0
+}
+
+.el-select-group__wrap {
+    position: relative;
+    list-style: none;
+    margin: 0;
+    padding: 0
+}
+
+.el-select-group__wrap:not(:last-of-type) {
+    padding-bottom: 24px
+}
+
+.el-select-group__wrap:not(:last-of-type)::after {
+    content: '';
+    position: absolute;
+    display: block;
+    left: 20px;
+    right: 20px;
+    bottom: 12px;
+    height: 1px;
+    background: #E4E7ED
+}
+
+.el-select-group__title {
+    padding-left: 20px;
+    font-size: 12px;
+    color: #909399;
+    line-height: 30px
+}
+
+.el-select-group .el-select-dropdown__item {
+    padding-left: 20px
+}
+
+.el-select {
+    display: inline-block;
+    position: relative
+}
+
+.el-select .el-select__tags > span {
+    display: contents
+}
+
+.el-select:hover .el-input__inner {
+    border-color: #C0C4CC
+}
+
+.el-select .el-input__inner {
+    cursor: pointer;
+    padding-right: 35px
+}
+
+.el-select .el-input__inner:focus {
+    border-color: #409EFF
+}
+
+.el-select .el-input .el-select__caret {
+    color: #C0C4CC;
+    font-size: 14px;
+    -webkit-transition: -webkit-transform .3s;
+    transition: -webkit-transform .3s;
+    transition: transform .3s;
+    transition: transform .3s, -webkit-transform .3s;
+    -webkit-transform: rotateZ(180deg);
+    transform: rotateZ(180deg);
+    cursor: pointer
+}
+
+.el-select .el-input .el-select__caret.is-reverse {
+    -webkit-transform: rotateZ(0);
+    transform: rotateZ(0)
+}
+
+.el-select .el-input .el-select__caret.is-show-close {
+    font-size: 14px;
+    text-align: center;
+    -webkit-transform: rotateZ(180deg);
+    transform: rotateZ(180deg);
+    border-radius: 100%;
+    color: #C0C4CC;
+    -webkit-transition: color .2s cubic-bezier(.645, .045, .355, 1);
+    transition: color .2s cubic-bezier(.645, .045, .355, 1)
+}
+
+.el-select .el-input .el-select__caret.is-show-close:hover {
+    color: #909399
+}
+
+.el-select .el-input.is-disabled .el-input__inner {
+    cursor: not-allowed
+}
+
+.el-select .el-input.is-disabled .el-input__inner:hover {
+    border-color: #E4E7ED
+}
+
+.el-select .el-input.is-focus .el-input__inner {
+    border-color: #409EFF
+}
+
+.el-select > .el-input {
+    display: block
+}
+
+.el-select__input {
+    border: none;
+    outline: 0;
+    padding: 0;
+    margin-left: 15px;
+    color: #666;
+    font-size: 14px;
+    -webkit-appearance: none;
+    -moz-appearance: none;
+    appearance: none;
+    height: 28px;
+    background-color: transparent
+}
+
+.el-select__input.is-mini {
+    height: 14px
+}
+
+.el-select__close {
+    cursor: pointer;
+    position: absolute;
+    top: 8px;
+    z-index: 1000;
+    right: 25px;
+    color: #C0C4CC;
+    line-height: 18px;
+    font-size: 14px
+}
+
+.el-select__close:hover {
+    color: #909399
+}
+
+.el-select__tags {
+    position: absolute;
+    line-height: normal;
+    white-space: normal;
+    z-index: 1;
+    top: 50%;
+    -webkit-transform: translateY(-50%);
+    transform: translateY(-50%);
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center;
+    -ms-flex-wrap: wrap;
+    flex-wrap: wrap
+}
+
+.el-select .el-tag__close {
+    margin-top: -2px
+}
+
+.el-select .el-tag {
+    box-sizing: border-box;
+    border-color: transparent;
+    margin: 2px 0 2px 6px;
+    background-color: #f0f2f5
+}
+
+.el-select .el-tag__close.el-icon-close {
+    background-color: #C0C4CC;
+    right: -7px;
+    top: 0;
+    color: #FFF
+}
+
+.el-select .el-tag__close.el-icon-close:hover {
+    background-color: #909399
+}
+
+.el-table, .el-table__expanded-cell {
+    background-color: #FFF
+}
+
+.el-select .el-tag__close.el-icon-close::before {
+    display: block;
+    -webkit-transform: translate(0, .5px);
+    transform: translate(0, .5px)
+}
+
+.el-table {
+    position: relative;
+    overflow: hidden;
+    box-sizing: border-box;
+    -webkit-box-flex: 1;
+    -ms-flex: 1;
+    flex: 1;
+    width: 100%;
+    max-width: 100%;
+    font-size: 14px;
+    color: #606266
+}
+
+.el-table--mini, .el-table--small, .el-table__expand-icon {
+    font-size: 12px
+}
+
+.el-table__empty-block {
+    min-height: 60px;
+    text-align: center;
+    width: 100%;
+    height: 100%;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-pack: center;
+    -ms-flex-pack: center;
+    justify-content: center;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center
+}
+
+.el-table__empty-text {
+    line-height: 60px;
+    width: 50%;
+    color: #909399
+}
+
+.el-table__expand-column .cell {
+    padding: 0;
+    text-align: center
+}
+
+.el-table__expand-icon {
+    position: relative;
+    cursor: pointer;
+    color: #666;
+    -webkit-transition: -webkit-transform .2s ease-in-out;
+    transition: -webkit-transform .2s ease-in-out;
+    transition: transform .2s ease-in-out;
+    transition: transform .2s ease-in-out, -webkit-transform .2s ease-in-out;
+    height: 20px
+}
+
+.el-table__expand-icon--expanded {
+    -webkit-transform: rotate(90deg);
+    transform: rotate(90deg)
+}
+
+.el-table__expand-icon > .el-icon {
+    position: absolute;
+    left: 50%;
+    top: 50%;
+    margin-left: -5px;
+    margin-top: -5px
+}
+
+.el-table__expanded-cell[class*=cell] {
+    padding: 20px 50px
+}
+
+.el-table__expanded-cell:hover {
+    background-color: transparent !important
+}
+
+.el-table__placeholder {
+    display: inline-block;
+    width: 20px
+}
+
+.el-table__append-wrapper {
+    overflow: hidden
+}
+
+.el-table--fit {
+    border-right: 0;
+    border-bottom: 0
+}
+
+.el-table--fit td.gutter, .el-table--fit th.gutter {
+    border-right-width: 1px
+}
+
+.el-table--scrollable-x .el-table__body-wrapper {
+    overflow-x: auto
+}
+
+.el-table--scrollable-y .el-table__body-wrapper {
+    overflow-y: auto
+}
+
+.el-table thead {
+    color: #909399;
+    font-weight: 500
+}
+
+.el-table thead.is-group th {
+    background: #F5F7FA
+}
+
+.el-table th, .el-table tr {
+    background-color: #FFF
+}
+
+.el-table td, .el-table th {
+    padding: 12px 0;
+    min-width: 0;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    text-overflow: ellipsis;
+    vertical-align: middle;
+    position: relative;
+    text-align: left
+}
+
+.el-table td.is-center, .el-table th.is-center {
+    text-align: center
+}
+
+.el-table td.is-right, .el-table th.is-right {
+    text-align: right
+}
+
+.el-table td.gutter, .el-table th.gutter {
+    width: 15px;
+    border-right-width: 0;
+    border-bottom-width: 0;
+    padding: 0
+}
+
+.el-table--medium td, .el-table--medium th {
+    padding: 10px 0
+}
+
+.el-table--small td, .el-table--small th {
+    padding: 8px 0
+}
+
+.el-table--mini td, .el-table--mini th {
+    padding: 6px 0
+}
+
+.el-table .cell, .el-table th div {
+    padding-right: 10px;
+    overflow: hidden;
+    text-overflow: ellipsis
+}
+
+.el-table .cell, .el-table th div, .el-table--border td:first-child .cell, .el-table--border th:first-child .cell {
+    padding-left: 10px
+}
+
+.el-table tr input[type=checkbox] {
+    margin: 0
+}
+
+.el-table td, .el-table th.is-leaf {
+    border-bottom: 1px solid #EBEEF5
+}
+
+.el-table th.is-sortable {
+    cursor: pointer
+}
+
+.el-table th {
+    white-space: nowrap;
+    overflow: hidden;
+    -webkit-user-select: none;
+    user-select: none
+}
+
+.el-slider__button-wrapper, .el-time-panel {
+    -ms-user-select: none;
+    -webkit-user-select: none
+}
+
+.el-table th div {
+    display: inline-block;
+    line-height: 40px;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    white-space: nowrap
+}
+
+.el-table th > .cell {
+    position: relative;
+    word-wrap: normal;
+    text-overflow: ellipsis;
+    display: inline-block;
+    vertical-align: middle;
+    width: 100%;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+.el-table th > .cell.highlight {
+    color: #409EFF
+}
+
+.el-table th.required > div::before {
+    display: inline-block;
+    content: "";
+    width: 8px;
+    height: 8px;
+    border-radius: 50%;
+    background: #ff4d51;
+    margin-right: 5px;
+    vertical-align: middle
+}
+
+.el-table td div {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+.el-table td.gutter {
+    width: 0
+}
+
+.el-table .cell {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    white-space: normal;
+    word-break: break-all;
+    line-height: 23px
+}
+
+.el-table .cell.el-tooltip {
+    white-space: nowrap;
+    min-width: 50px
+}
+
+.el-table--border, .el-table--group {
+    border: 1px solid #EBEEF5
+}
+
+.el-table--border::after, .el-table--group::after, .el-table::before {
+    content: '';
+    position: absolute;
+    background-color: #EBEEF5;
+    z-index: 1
+}
+
+.el-table--border::after, .el-table--group::after {
+    top: 0;
+    right: 0;
+    width: 1px;
+    height: 100%
+}
+
+.el-table::before {
+    left: 0;
+    bottom: 0;
+    width: 100%;
+    height: 1px
+}
+
+.el-table--border {
+    border-right: none;
+    border-bottom: none
+}
+
+.el-table--border.el-loading-parent--relative {
+    border-color: transparent
+}
+
+.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 #EBEEF5
+}
+
+.el-table--border th.gutter:last-of-type {
+    border-bottom: 1px solid #EBEEF5;
+    border-bottom-width: 1px
+}
+
+.el-table--border th, .el-table__fixed-right-patch {
+    border-bottom: 1px solid #EBEEF5
+}
+
+.el-table__fixed, .el-table__fixed-right {
+    position: absolute;
+    top: 0;
+    left: 0;
+    overflow-x: hidden;
+    overflow-y: hidden;
+    -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, .12);
+    box-shadow: 0 0 10px rgba(0, 0, 0, .12)
+}
+
+.el-table__fixed-right::before, .el-table__fixed::before {
+    content: '';
+    position: absolute;
+    left: 0;
+    bottom: 0;
+    width: 100%;
+    height: 1px;
+    background-color: #EBEEF5;
+    z-index: 4
+}
+
+.el-table__fixed-right-patch {
+    position: absolute;
+    top: -1px;
+    right: 0;
+    background-color: #FFF
+}
+
+.el-table__fixed-right {
+    top: 0;
+    left: auto;
+    right: 0
+}
+
+.el-table__fixed-right .el-table__fixed-body-wrapper, .el-table__fixed-right .el-table__fixed-footer-wrapper, .el-table__fixed-right .el-table__fixed-header-wrapper {
+    left: auto;
+    right: 0
+}
+
+.el-table__fixed-header-wrapper {
+    position: absolute;
+    left: 0;
+    top: 0;
+    z-index: 3
+}
+
+.el-table__fixed-footer-wrapper {
+    position: absolute;
+    left: 0;
+    bottom: 0;
+    z-index: 3
+}
+
+.el-table__fixed-footer-wrapper tbody td {
+    border-top: 1px solid #EBEEF5;
+    background-color: #F5F7FA;
+    color: #606266
+}
+
+.el-table__fixed-body-wrapper {
+    position: absolute;
+    left: 0;
+    top: 37px;
+    overflow: hidden;
+    z-index: 3
+}
+
+.el-table__body-wrapper, .el-table__footer-wrapper, .el-table__header-wrapper {
+    width: 100%
+}
+
+.el-table__footer-wrapper {
+    margin-top: -1px
+}
+
+.el-table__footer-wrapper td {
+    border-top: 1px solid #EBEEF5
+}
+
+.el-table__body, .el-table__footer, .el-table__header {
+    table-layout: fixed;
+    border-collapse: separate
+}
+
+.el-table__footer-wrapper, .el-table__header-wrapper {
+    overflow: hidden
+}
+
+.el-table__footer-wrapper tbody td, .el-table__header-wrapper tbody td {
+    background-color: #F5F7FA;
+    color: #606266
+}
+
+.el-table__body-wrapper {
+    overflow: hidden;
+    position: relative
+}
+
+.el-table__body-wrapper.is-scrolling-left ~ .el-table__fixed, .el-table__body-wrapper.is-scrolling-none ~ .el-table__fixed, .el-table__body-wrapper.is-scrolling-none ~ .el-table__fixed-right, .el-table__body-wrapper.is-scrolling-right ~ .el-table__fixed-right {
+    -webkit-box-shadow: none;
+    box-shadow: none
+}
+
+.el-picker-panel, .el-table-filter {
+    -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1)
+}
+
+.el-table__body-wrapper .el-table--border.is-scrolling-right ~ .el-table__fixed-right {
+    border-left: 1px solid #EBEEF5
+}
+
+.el-table .caret-wrapper {
+    display: -webkit-inline-box;
+    display: -ms-inline-flexbox;
+    display: inline-flex;
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -ms-flex-direction: column;
+    flex-direction: column;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center;
+    height: 34px;
+    width: 24px;
+    vertical-align: middle;
+    cursor: pointer;
+    overflow: initial;
+    position: relative
+}
+
+.el-table .sort-caret {
+    width: 0;
+    height: 0;
+    border: 5px solid transparent;
+    position: absolute;
+    left: 7px
+}
+
+.el-table .sort-caret.ascending {
+    border-bottom-color: #C0C4CC;
+    top: 5px
+}
+
+.el-table .sort-caret.descending {
+    border-top-color: #C0C4CC;
+    bottom: 7px
+}
+
+.el-table .ascending .sort-caret.ascending {
+    border-bottom-color: #409EFF
+}
+
+.el-table .descending .sort-caret.descending {
+    border-top-color: #409EFF
+}
+
+.el-table .hidden-columns {
+    position: absolute;
+    z-index: -1
+}
+
+.el-table--striped .el-table__body tr.el-table__row--striped td {
+    background: #FAFAFA
+}
+
+.el-table--striped .el-table__body tr.el-table__row--striped.current-row td {
+    background-color: #ecf5ff
+}
+
+.el-table__body tr.hover-row.current-row > td, .el-table__body tr.hover-row.el-table__row--striped.current-row > td, .el-table__body tr.hover-row.el-table__row--striped > td, .el-table__body tr.hover-row > td {
+    background-color: #F5F7FA
+}
+
+.el-table__body tr.current-row > td {
+    background-color: #ecf5ff
+}
+
+.el-table__column-resize-proxy {
+    position: absolute;
+    left: 200px;
+    top: 0;
+    bottom: 0;
+    width: 0;
+    border-left: 1px solid #EBEEF5;
+    z-index: 10
+}
+
+.el-table__column-filter-trigger {
+    display: inline-block;
+    line-height: 34px;
+    cursor: pointer
+}
+
+.el-table__column-filter-trigger i {
+    color: #909399;
+    font-size: 12px;
+    -webkit-transform: scale(.75);
+    transform: scale(.75)
+}
+
+.el-table--enable-row-transition .el-table__body td {
+    -webkit-transition: background-color .25s ease;
+    transition: background-color .25s ease
+}
+
+.el-table--enable-row-hover .el-table__body tr:hover > td {
+    background-color: #F5F7FA
+}
+
+.el-table--fluid-height .el-table__fixed, .el-table--fluid-height .el-table__fixed-right {
+    bottom: 0;
+    overflow: hidden
+}
+
+.el-table [class*=el-table__row--level] .el-table__expand-icon {
+    display: inline-block;
+    width: 20px;
+    line-height: 20px;
+    height: 20px;
+    text-align: center;
+    margin-right: 3px
+}
+
+.el-table-column--selection .cell {
+    padding-left: 14px;
+    padding-right: 14px
+}
+
+.el-table-filter {
+    border: 1px solid #EBEEF5;
+    border-radius: 2px;
+    background-color: #FFF;
+    box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 2px 0
+}
+
+.el-date-table td, .el-date-table td div {
+    height: 30px;
+    -webkit-box-sizing: border-box
+}
+
+.el-table-filter__list {
+    padding: 5px 0;
+    margin: 0;
+    list-style: none;
+    min-width: 100px
+}
+
+.el-table-filter__list-item {
+    line-height: 36px;
+    padding: 0 10px;
+    cursor: pointer;
+    font-size: 14px
+}
+
+.el-table-filter__list-item:hover {
+    background-color: #ecf5ff;
+    color: #66b1ff
+}
+
+.el-table-filter__list-item.is-active {
+    background-color: #409EFF;
+    color: #FFF
+}
+
+.el-table-filter__content {
+    min-width: 100px
+}
+
+.el-table-filter__bottom {
+    border-top: 1px solid #EBEEF5;
+    padding: 8px
+}
+
+.el-table-filter__bottom button {
+    background: 0 0;
+    border: none;
+    color: #606266;
+    cursor: pointer;
+    font-size: 13px;
+    padding: 0 3px
+}
+
+.el-date-table td.in-range div, .el-date-table td.in-range div:hover, .el-date-table.is-week-mode .el-date-table__row.current div, .el-date-table.is-week-mode .el-date-table__row:hover div {
+    background-color: #F2F6FC
+}
+
+.el-table-filter__bottom button:hover {
+    color: #409EFF
+}
+
+.el-table-filter__bottom button:focus {
+    outline: 0
+}
+
+.el-table-filter__bottom button.is-disabled {
+    color: #C0C4CC;
+    cursor: not-allowed
+}
+
+.el-table-filter__wrap {
+    max-height: 280px
+}
+
+.el-table-filter__checkbox-group {
+    padding: 10px
+}
+
+.el-table-filter__checkbox-group label.el-checkbox {
+    display: block;
+    margin-right: 5px;
+    margin-bottom: 8px;
+    margin-left: 5px
+}
+
+.el-table-filter__checkbox-group .el-checkbox:last-child {
+    margin-bottom: 0
+}
+
+.el-date-table {
+    font-size: 12px;
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none
+}
+
+.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover {
+    color: #606266
+}
+
+.el-date-table.is-week-mode .el-date-table__row:hover td:first-child div {
+    margin-left: 5px;
+    border-top-left-radius: 15px;
+    border-bottom-left-radius: 15px
+}
+
+.el-date-table.is-week-mode .el-date-table__row:hover td:last-child div {
+    margin-right: 5px;
+    border-top-right-radius: 15px;
+    border-bottom-right-radius: 15px
+}
+
+.el-date-table td {
+    width: 32px;
+    padding: 4px 0;
+    box-sizing: border-box;
+    text-align: center;
+    cursor: pointer;
+    position: relative
+}
+
+.el-date-table td div {
+    padding: 3px 0;
+    box-sizing: border-box
+}
+
+.el-date-table td span {
+    width: 24px;
+    height: 24px;
+    display: block;
+    margin: 0 auto;
+    line-height: 24px;
+    position: absolute;
+    left: 50%;
+    -webkit-transform: translateX(-50%);
+    transform: translateX(-50%);
+    border-radius: 50%
+}
+
+.el-date-table td.next-month, .el-date-table td.prev-month {
+    color: #C0C4CC
+}
+
+.el-date-table td.today {
+    position: relative
+}
+
+.el-date-table td.today span {
+    color: #409EFF;
+    font-weight: 700
+}
+
+.el-date-table td.today.end-date span, .el-date-table td.today.start-date span {
+    color: #FFF
+}
+
+.el-date-table td.available:hover {
+    color: #409EFF
+}
+
+.el-date-table td.current:not(.disabled) span {
+    color: #FFF;
+    background-color: #409EFF
+}
+
+.el-date-table td.end-date div, .el-date-table td.start-date div {
+    color: #FFF
+}
+
+.el-date-table td.end-date span, .el-date-table td.start-date span {
+    background-color: #409EFF
+}
+
+.el-date-table td.start-date div {
+    margin-left: 5px;
+    border-top-left-radius: 15px;
+    border-bottom-left-radius: 15px
+}
+
+.el-date-table td.end-date div {
+    margin-right: 5px;
+    border-top-right-radius: 15px;
+    border-bottom-right-radius: 15px
+}
+
+.el-date-table td.disabled div {
+    background-color: #F5F7FA;
+    opacity: 1;
+    cursor: not-allowed;
+    color: #C0C4CC
+}
+
+.el-date-table td.selected div {
+    margin-left: 5px;
+    margin-right: 5px;
+    background-color: #F2F6FC;
+    border-radius: 15px
+}
+
+.el-date-table td.selected div:hover {
+    background-color: #F2F6FC
+}
+
+.el-date-table td.selected span {
+    background-color: #409EFF;
+    color: #FFF;
+    border-radius: 15px
+}
+
+.el-date-table td.week {
+    font-size: 80%;
+    color: #606266
+}
+
+.el-month-table, .el-year-table {
+    font-size: 12px;
+    border-collapse: collapse
+}
+
+.el-date-table th {
+    padding: 5px;
+    color: #606266;
+    font-weight: 400;
+    border-bottom: solid 1px #EBEEF5
+}
+
+.el-month-table {
+    margin: -1px
+}
+
+.el-month-table td {
+    text-align: center;
+    padding: 8px 0;
+    cursor: pointer
+}
+
+.el-month-table td div {
+    height: 48px;
+    padding: 6px 0;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+.el-month-table td.today .cell {
+    color: #409EFF;
+    font-weight: 700
+}
+
+.el-month-table td.today.end-date .cell, .el-month-table td.today.start-date .cell {
+    color: #FFF
+}
+
+.el-month-table td.disabled .cell {
+    background-color: #F5F7FA;
+    cursor: not-allowed;
+    color: #C0C4CC
+}
+
+.el-month-table td.disabled .cell:hover {
+    color: #C0C4CC
+}
+
+.el-month-table td .cell {
+    width: 60px;
+    height: 36px;
+    display: block;
+    line-height: 36px;
+    color: #606266;
+    margin: 0 auto;
+    border-radius: 18px
+}
+
+.el-month-table td .cell:hover {
+    color: #409EFF
+}
+
+.el-month-table td.in-range div, .el-month-table td.in-range div:hover {
+    background-color: #F2F6FC
+}
+
+.el-month-table td.end-date div, .el-month-table td.start-date div {
+    color: #FFF
+}
+
+.el-month-table td.end-date .cell, .el-month-table td.start-date .cell {
+    color: #FFF;
+    background-color: #409EFF
+}
+
+.el-month-table td.start-date div {
+    border-top-left-radius: 24px;
+    border-bottom-left-radius: 24px
+}
+
+.el-month-table td.end-date div {
+    border-top-right-radius: 24px;
+    border-bottom-right-radius: 24px
+}
+
+.el-month-table td.current:not(.disabled) .cell {
+    color: #409EFF
+}
+
+.el-year-table {
+    margin: -1px
+}
+
+.el-year-table .el-icon {
+    color: #303133
+}
+
+.el-year-table td {
+    text-align: center;
+    padding: 20px 3px;
+    cursor: pointer
+}
+
+.el-year-table td.today .cell {
+    color: #409EFF;
+    font-weight: 700
+}
+
+.el-year-table td.disabled .cell {
+    background-color: #F5F7FA;
+    cursor: not-allowed;
+    color: #C0C4CC
+}
+
+.el-year-table td.disabled .cell:hover {
+    color: #C0C4CC
+}
+
+.el-year-table td .cell {
+    width: 48px;
+    height: 32px;
+    display: block;
+    line-height: 32px;
+    color: #606266;
+    margin: 0 auto
+}
+
+.el-year-table td .cell:hover, .el-year-table td.current:not(.disabled) .cell {
+    color: #409EFF
+}
+
+.el-date-range-picker {
+    width: 646px
+}
+
+.el-date-range-picker.has-sidebar {
+    width: 756px
+}
+
+.el-date-range-picker table {
+    table-layout: fixed;
+    width: 100%
+}
+
+.el-date-range-picker .el-picker-panel__body {
+    min-width: 513px
+}
+
+.el-date-range-picker .el-picker-panel__content {
+    margin: 0
+}
+
+.el-date-range-picker__header {
+    position: relative;
+    text-align: center;
+    height: 28px
+}
+
+.el-date-range-picker__header [class*=arrow-left] {
+    float: left
+}
+
+.el-date-range-picker__header [class*=arrow-right] {
+    float: right
+}
+
+.el-date-range-picker__header div {
+    font-size: 16px;
+    font-weight: 500;
+    margin-right: 50px
+}
+
+.el-date-range-picker__content {
+    float: left;
+    width: 50%;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 16px
+}
+
+.el-date-range-picker__content.is-left {
+    border-right: 1px solid #e4e4e4
+}
+
+.el-date-range-picker__content .el-date-range-picker__header div {
+    margin-left: 50px;
+    margin-right: 50px
+}
+
+.el-date-range-picker__editors-wrap {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    display: table-cell
+}
+
+.el-date-range-picker__editors-wrap.is-right {
+    text-align: right
+}
+
+.el-date-range-picker__time-header {
+    position: relative;
+    border-bottom: 1px solid #e4e4e4;
+    font-size: 12px;
+    padding: 8px 5px 5px;
+    display: table;
+    width: 100%;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+.el-date-range-picker__time-header > .el-icon-arrow-right {
+    font-size: 20px;
+    vertical-align: middle;
+    display: table-cell;
+    color: #303133
+}
+
+.el-date-range-picker__time-picker-wrap {
+    position: relative;
+    display: table-cell;
+    padding: 0 5px
+}
+
+.el-date-range-picker__time-picker-wrap .el-picker-panel {
+    position: absolute;
+    top: 13px;
+    right: 0;
+    z-index: 1;
+    background: #FFF
+}
+
+.el-date-picker {
+    width: 322px
+}
+
+.el-date-picker.has-sidebar.has-time {
+    width: 434px
+}
+
+.el-date-picker.has-sidebar {
+    width: 438px
+}
+
+.el-date-picker.has-time .el-picker-panel__body-wrapper {
+    position: relative
+}
+
+.el-date-picker .el-picker-panel__content {
+    width: 292px
+}
+
+.el-date-picker table {
+    table-layout: fixed;
+    width: 100%
+}
+
+.el-date-picker__editor-wrap {
+    position: relative;
+    display: table-cell;
+    padding: 0 5px
+}
+
+.el-date-picker__time-header {
+    position: relative;
+    border-bottom: 1px solid #e4e4e4;
+    font-size: 12px;
+    padding: 8px 5px 5px;
+    display: table;
+    width: 100%;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+.el-date-picker__header {
+    margin: 12px;
+    text-align: center
+}
+
+.el-date-picker__header--bordered {
+    margin-bottom: 0;
+    padding-bottom: 12px;
+    border-bottom: solid 1px #EBEEF5
+}
+
+.el-date-picker__header--bordered + .el-picker-panel__content {
+    margin-top: 0
+}
+
+.el-date-picker__header-label {
+    font-size: 16px;
+    font-weight: 500;
+    padding: 0 5px;
+    line-height: 22px;
+    text-align: center;
+    cursor: pointer;
+    color: #606266
+}
+
+.el-date-picker__header-label.active, .el-date-picker__header-label:hover {
+    color: #409EFF
+}
+
+.el-date-picker__prev-btn {
+    float: left
+}
+
+.el-date-picker__next-btn {
+    float: right
+}
+
+.el-date-picker__time-wrap {
+    padding: 10px;
+    text-align: center
+}
+
+.el-date-picker__time-label {
+    float: left;
+    cursor: pointer;
+    line-height: 30px;
+    margin-left: 10px
+}
+
+.time-select {
+    margin: 5px 0;
+    min-width: 0
+}
+
+.time-select .el-picker-panel__content {
+    max-height: 200px;
+    margin: 0
+}
+
+.time-select-item {
+    padding: 8px 10px;
+    font-size: 14px;
+    line-height: 20px
+}
+
+.time-select-item.selected:not(.disabled) {
+    color: #409EFF;
+    font-weight: 700
+}
+
+.time-select-item.disabled {
+    color: #E4E7ED;
+    cursor: not-allowed
+}
+
+.time-select-item:hover {
+    background-color: #F5F7FA;
+    font-weight: 700;
+    cursor: pointer
+}
+
+.el-date-editor {
+    position: relative;
+    display: inline-block;
+    text-align: left
+}
+
+.el-date-editor.el-input, .el-date-editor.el-input__inner {
+    width: 220px
+}
+
+.el-date-editor--monthrange.el-input, .el-date-editor--monthrange.el-input__inner {
+    width: 300px
+}
+
+.el-date-editor--daterange.el-input, .el-date-editor--daterange.el-input__inner, .el-date-editor--timerange.el-input, .el-date-editor--timerange.el-input__inner {
+    width: 350px
+}
+
+.el-date-editor--datetimerange.el-input, .el-date-editor--datetimerange.el-input__inner {
+    width: 400px
+}
+
+.el-date-editor--dates .el-input__inner {
+    text-overflow: ellipsis;
+    white-space: nowrap
+}
+
+.el-date-editor .el-icon-circle-close {
+    cursor: pointer
+}
+
+.el-date-editor .el-range__icon {
+    font-size: 14px;
+    margin-left: -5px;
+    color: #C0C4CC;
+    float: left;
+    line-height: 32px
+}
+
+.el-date-editor .el-range-input, .el-date-editor .el-range-separator {
+    height: 100%;
+    margin: 0;
+    text-align: center;
+    display: inline-block;
+    font-size: 14px
+}
+
+.el-date-editor .el-range-input {
+    -webkit-appearance: none;
+    -moz-appearance: none;
+    appearance: none;
+    border: none;
+    outline: 0;
+    padding: 0;
+    width: 39%;
+    color: #606266
+}
+
+.el-date-editor .el-range-input::-webkit-input-placeholder {
+    color: #C0C4CC
+}
+
+.el-date-editor .el-range-input:-ms-input-placeholder {
+    color: #C0C4CC
+}
+
+.el-date-editor .el-range-input::-ms-input-placeholder {
+    color: #C0C4CC
+}
+
+.el-date-editor .el-range-input::placeholder {
+    color: #C0C4CC
+}
+
+.el-date-editor .el-range-separator {
+    padding: 0 5px;
+    line-height: 32px;
+    width: 5%;
+    color: #303133
+}
+
+.el-date-editor .el-range__close-icon {
+    font-size: 14px;
+    color: #C0C4CC;
+    width: 25px;
+    display: inline-block;
+    float: right;
+    line-height: 32px
+}
+
+.el-range-editor.el-input__inner {
+    display: -webkit-inline-box;
+    display: -ms-inline-flexbox;
+    display: inline-flex;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center;
+    padding: 3px 10px
+}
+
+.el-range-editor .el-range-input {
+    line-height: 1
+}
+
+.el-range-editor.is-active, .el-range-editor.is-active:hover {
+    border-color: #409EFF
+}
+
+.el-range-editor--medium.el-input__inner {
+    height: 36px
+}
+
+.el-range-editor--medium .el-range-separator {
+    line-height: 28px;
+    font-size: 14px
+}
+
+.el-range-editor--medium .el-range-input {
+    font-size: 14px
+}
+
+.el-range-editor--medium .el-range__close-icon, .el-range-editor--medium .el-range__icon {
+    line-height: 28px
+}
+
+.el-range-editor--small.el-input__inner {
+    height: 32px
+}
+
+.el-range-editor--small .el-range-separator {
+    line-height: 24px;
+    font-size: 13px
+}
+
+.el-range-editor--small .el-range-input {
+    font-size: 13px
+}
+
+.el-range-editor--small .el-range__close-icon, .el-range-editor--small .el-range__icon {
+    line-height: 24px
+}
+
+.el-range-editor--mini.el-input__inner {
+    height: 28px
+}
+
+.el-range-editor--mini .el-range-separator {
+    line-height: 20px;
+    font-size: 12px
+}
+
+.el-range-editor--mini .el-range-input {
+    font-size: 12px
+}
+
+.el-range-editor--mini .el-range__close-icon, .el-range-editor--mini .el-range__icon {
+    line-height: 20px
+}
+
+.el-range-editor.is-disabled {
+    background-color: #F5F7FA;
+    border-color: #E4E7ED;
+    color: #C0C4CC;
+    cursor: not-allowed
+}
+
+.el-range-editor.is-disabled:focus, .el-range-editor.is-disabled:hover {
+    border-color: #E4E7ED
+}
+
+.el-range-editor.is-disabled input {
+    background-color: #F5F7FA;
+    color: #C0C4CC;
+    cursor: not-allowed
+}
+
+.el-range-editor.is-disabled input::-webkit-input-placeholder {
+    color: #C0C4CC
+}
+
+.el-range-editor.is-disabled input:-ms-input-placeholder {
+    color: #C0C4CC
+}
+
+.el-range-editor.is-disabled input::-ms-input-placeholder {
+    color: #C0C4CC
+}
+
+.el-range-editor.is-disabled input::placeholder {
+    color: #C0C4CC
+}
+
+.el-range-editor.is-disabled .el-range-separator {
+    color: #C0C4CC
+}
+
+.el-picker-panel {
+    color: #606266;
+    border: 1px solid #E4E7ED;
+    box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+    background: #FFF;
+    border-radius: 4px;
+    line-height: 30px;
+    margin: 5px 0
+}
+
+.el-popover, .el-time-panel {
+    -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1)
+}
+
+.el-picker-panel__body-wrapper::after, .el-picker-panel__body::after {
+    content: "";
+    display: table;
+    clear: both
+}
+
+.el-picker-panel__content {
+    position: relative;
+    margin: 15px
+}
+
+.el-picker-panel__footer {
+    border-top: 1px solid #e4e4e4;
+    padding: 4px;
+    text-align: right;
+    background-color: #FFF;
+    position: relative;
+    font-size: 0
+}
+
+.el-picker-panel__shortcut {
+    display: block;
+    width: 100%;
+    border: 0;
+    background-color: transparent;
+    line-height: 28px;
+    font-size: 14px;
+    color: #606266;
+    padding-left: 12px;
+    text-align: left;
+    outline: 0;
+    cursor: pointer
+}
+
+.el-picker-panel__shortcut:hover {
+    color: #409EFF
+}
+
+.el-picker-panel__shortcut.active {
+    background-color: #e6f1fe;
+    color: #409EFF
+}
+
+.el-picker-panel__btn {
+    border: 1px solid #dcdcdc;
+    color: #333;
+    line-height: 24px;
+    border-radius: 2px;
+    padding: 0 20px;
+    cursor: pointer;
+    background-color: transparent;
+    outline: 0;
+    font-size: 12px
+}
+
+.el-picker-panel__btn[disabled] {
+    color: #ccc;
+    cursor: not-allowed
+}
+
+.el-picker-panel__icon-btn {
+    font-size: 12px;
+    color: #303133;
+    border: 0;
+    background: 0 0;
+    cursor: pointer;
+    outline: 0;
+    margin-top: 8px
+}
+
+.el-picker-panel__icon-btn:hover {
+    color: #409EFF
+}
+
+.el-picker-panel__icon-btn.is-disabled {
+    color: #bbb
+}
+
+.el-picker-panel__icon-btn.is-disabled:hover {
+    cursor: not-allowed
+}
+
+.el-picker-panel__link-btn {
+    vertical-align: middle
+}
+
+.el-picker-panel [slot=sidebar], .el-picker-panel__sidebar {
+    position: absolute;
+    top: 0;
+    bottom: 0;
+    width: 110px;
+    border-right: 1px solid #e4e4e4;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    padding-top: 6px;
+    background-color: #FFF;
+    overflow: auto
+}
+
+.el-picker-panel [slot=sidebar] + .el-picker-panel__body, .el-picker-panel__sidebar + .el-picker-panel__body {
+    margin-left: 110px
+}
+
+.el-time-spinner.has-seconds .el-time-spinner__wrapper {
+    width: 33.3%
+}
+
+.el-time-spinner__wrapper {
+    max-height: 190px;
+    overflow: auto;
+    display: inline-block;
+    width: 50%;
+    vertical-align: top;
+    position: relative
+}
+
+.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default) {
+    padding-bottom: 15px
+}
+
+.el-time-spinner__input.el-input .el-input__inner, .el-time-spinner__list {
+    padding: 0;
+    text-align: center
+}
+
+.el-time-spinner__wrapper.is-arrow {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    text-align: center;
+    overflow: hidden
+}
+
+.el-time-spinner__wrapper.is-arrow .el-time-spinner__list {
+    -webkit-transform: translateY(-32px);
+    transform: translateY(-32px)
+}
+
+.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active) {
+    background: #FFF;
+    cursor: default
+}
+
+.el-time-spinner__arrow {
+    font-size: 12px;
+    color: #909399;
+    position: absolute;
+    left: 0;
+    width: 100%;
+    z-index: 1;
+    text-align: center;
+    height: 30px;
+    line-height: 30px;
+    cursor: pointer
+}
+
+.el-time-spinner__arrow:hover {
+    color: #409EFF
+}
+
+.el-time-spinner__arrow.el-icon-arrow-up {
+    top: 10px
+}
+
+.el-time-spinner__arrow.el-icon-arrow-down {
+    bottom: 10px
+}
+
+.el-time-spinner__input.el-input {
+    width: 70%
+}
+
+.el-time-spinner__list {
+    margin: 0;
+    list-style: none
+}
+
+.el-time-spinner__list::after, .el-time-spinner__list::before {
+    content: '';
+    display: block;
+    width: 100%;
+    height: 80px
+}
+
+.el-time-spinner__item {
+    height: 32px;
+    line-height: 32px;
+    font-size: 12px;
+    color: #606266
+}
+
+.el-time-spinner__item:hover:not(.disabled):not(.active) {
+    background: #F5F7FA;
+    cursor: pointer
+}
+
+.el-time-spinner__item.active:not(.disabled) {
+    color: #303133;
+    font-weight: 700
+}
+
+.el-time-spinner__item.disabled {
+    color: #C0C4CC;
+    cursor: not-allowed
+}
+
+.el-time-panel {
+    margin: 5px 0;
+    border: 1px solid #E4E7ED;
+    background-color: #FFF;
+    box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+    border-radius: 2px;
+    position: absolute;
+    width: 180px;
+    left: 0;
+    z-index: 1000;
+    -moz-user-select: none;
+    user-select: none;
+    -webkit-box-sizing: content-box;
+    box-sizing: content-box
+}
+
+.el-time-panel__content {
+    font-size: 0;
+    position: relative;
+    overflow: hidden
+}
+
+.el-time-panel__content::after, .el-time-panel__content::before {
+    content: "";
+    top: 50%;
+    position: absolute;
+    margin-top: -15px;
+    height: 32px;
+    z-index: -1;
+    left: 0;
+    right: 0;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    padding-top: 6px;
+    text-align: left;
+    border-top: 1px solid #E4E7ED;
+    border-bottom: 1px solid #E4E7ED
+}
+
+.el-time-panel__content::after {
+    left: 50%;
+    margin-left: 12%;
+    margin-right: 12%
+}
+
+.el-time-panel__content::before {
+    padding-left: 50%;
+    margin-right: 12%;
+    margin-left: 12%
+}
+
+.el-time-panel__content.has-seconds::after {
+    left: calc(100% / 3 * 2)
+}
+
+.el-time-panel__content.has-seconds::before {
+    padding-left: calc(100% / 3)
+}
+
+.el-time-panel__footer {
+    border-top: 1px solid #e4e4e4;
+    padding: 4px;
+    height: 36px;
+    line-height: 25px;
+    text-align: right;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+.el-time-panel__btn {
+    border: none;
+    line-height: 28px;
+    padding: 0 5px;
+    margin: 0 5px;
+    cursor: pointer;
+    background-color: transparent;
+    outline: 0;
+    font-size: 12px;
+    color: #303133
+}
+
+.el-time-panel__btn.confirm {
+    font-weight: 800;
+    color: #409EFF
+}
+
+.el-time-range-picker {
+    width: 354px;
+    overflow: visible
+}
+
+.el-time-range-picker__content {
+    position: relative;
+    text-align: center;
+    padding: 10px
+}
+
+.el-time-range-picker__cell {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 4px 7px 7px;
+    width: 50%;
+    display: inline-block
+}
+
+.el-time-range-picker__header {
+    margin-bottom: 5px;
+    text-align: center;
+    font-size: 14px
+}
+
+.el-time-range-picker__body {
+    border-radius: 2px;
+    border: 1px solid #E4E7ED
+}
+
+.el-popover {
+    position: absolute;
+    background: #FFF;
+    min-width: 150px;
+    border: 1px solid #EBEEF5;
+    padding: 12px;
+    z-index: 2000;
+    color: #606266;
+    line-height: 1.4;
+    text-align: justify;
+    font-size: 14px;
+    box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+    word-break: break-all
+}
+
+.el-popover--plain {
+    padding: 18px 20px
+}
+
+.el-popover__title {
+    color: #303133;
+    font-size: 16px;
+    line-height: 1;
+    margin-bottom: 12px
+}
+
+.v-modal-enter {
+    -webkit-animation: v-modal-in .2s ease;
+    animation: v-modal-in .2s ease
+}
+
+.v-modal-leave {
+    -webkit-animation: v-modal-out .2s ease forwards;
+    animation: v-modal-out .2s ease forwards
+}
+
+@keyframes v-modal-in {
+    0% {
+        opacity: 0
+    }
+}
+
+@keyframes v-modal-out {
+    100% {
+        opacity: 0
+    }
+}
+
+.v-modal {
+    position: fixed;
+    left: 0;
+    top: 0;
+    width: 100%;
+    height: 100%;
+    opacity: .5;
+    background: #000
+}
+
+.el-popup-parent--hidden {
+    overflow: hidden
+}
+
+.el-message-box {
+    display: inline-block;
+    width: 90%;
+    padding-bottom: 10px;
+    vertical-align: middle;
+    background-color: #FFF;
+    border-radius: 4px;
+    border: 1px solid #EBEEF5;
+    font-size: 18px;
+    -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+    box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+    text-align: left;
+    overflow: hidden;
+    -webkit-backface-visibility: hidden;
+    backface-visibility: hidden
+}
+
+.el-message-box__wrapper {
+    position: fixed;
+    top: 0;
+    bottom: 0;
+    left: 0;
+    right: 0;
+    text-align: center
+}
+
+.el-message-box__wrapper::after {
+    content: "";
+    display: inline-block;
+    height: 100%;
+    width: 0;
+    vertical-align: middle
+}
+
+.el-message-box__header {
+    position: relative;
+    padding: 15px 15px 10px
+}
+
+.el-message-box__title {
+    padding-left: 0;
+    margin-bottom: 0;
+    font-size: 18px;
+    line-height: 1;
+    color: #303133
+}
+
+.el-message-box__headerbtn {
+    position: absolute;
+    top: 15px;
+    right: 15px;
+    padding: 0;
+    border: none;
+    outline: 0;
+    background: 0 0;
+    font-size: 16px;
+    cursor: pointer
+}
+
+.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, .el-message-box__input input.invalid, .el-message-box__input input.invalid:focus {
+    border-color: #F56C6C
+}
+
+.el-message-box__headerbtn .el-message-box__close {
+    color: #909399
+}
+
+.el-message-box__headerbtn:focus .el-message-box__close, .el-message-box__headerbtn:hover .el-message-box__close {
+    color: #409EFF
+}
+
+.el-message-box__content {
+    position: relative;
+    padding: 10px 15px;
+    color: #606266;
+    font-size: 14px
+}
+
+.el-message-box__input {
+    padding-top: 15px
+}
+
+.el-message-box__status {
+    position: absolute;
+    top: 50%;
+    -webkit-transform: translateY(-50%);
+    transform: translateY(-50%);
+    font-size: 24px !important
+}
+
+.el-message-box__status::before {
+    padding-left: 1px
+}
+
+.el-message-box__status + .el-message-box__message {
+    padding-left: 36px;
+    padding-right: 12px
+}
+
+.el-message-box__status.el-icon-success {
+    color: #67C23A
+}
+
+.el-message-box__status.el-icon-info {
+    color: #909399
+}
+
+.el-message-box__status.el-icon-warning {
+    color: #E6A23C
+}
+
+.el-message-box__status.el-icon-error {
+    color: #F56C6C
+}
+
+.el-message-box__message {
+    margin: 0
+}
+
+.el-message-box__message p {
+    margin: 0;
+    line-height: 24px
+}
+
+.el-message-box__errormsg {
+    color: #F56C6C;
+    font-size: 12px;
+    min-height: 18px;
+    margin-top: 2px
+}
+
+.el-message-box__btns {
+    padding: 5px 15px 0;
+    text-align: right
+}
+
+.el-message-box__btns button:nth-child(2) {
+    margin-left: 10px
+}
+
+.el-message-box__btns-reverse {
+    -webkit-box-orient: horizontal;
+    -webkit-box-direction: reverse;
+    -ms-flex-direction: row-reverse;
+    flex-direction: row-reverse
+}
+
+.el-container, .el-container.is-vertical, .el-link, .el-steps--vertical {
+    -webkit-box-direction: normal
+}
+
+.el-message-box--center {
+    padding-bottom: 30px
+}
+
+.el-message-box--center .el-message-box__header {
+    padding-top: 30px
+}
+
+.el-message-box--center .el-message-box__title {
+    position: relative;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center;
+    -webkit-box-pack: center;
+    -ms-flex-pack: center;
+    justify-content: center
+}
+
+.el-message-box--center .el-message-box__status {
+    position: relative;
+    top: auto;
+    padding-right: 5px;
+    text-align: center;
+    -webkit-transform: translateY(-1px);
+    transform: translateY(-1px)
+}
+
+.el-message-box--center .el-message-box__message {
+    margin-left: 0
+}
+
+.el-message-box--center .el-message-box__btns, .el-message-box--center .el-message-box__content {
+    text-align: center
+}
+
+.el-message-box--center .el-message-box__content {
+    padding-left: 27px;
+    padding-right: 27px
+}
+
+.msgbox-fade-enter-active {
+    -webkit-animation: msgbox-fade-in .3s;
+    animation: msgbox-fade-in .3s
+}
+
+.msgbox-fade-leave-active {
+    -webkit-animation: msgbox-fade-out .3s;
+    animation: msgbox-fade-out .3s
+}
+
+@-webkit-keyframes msgbox-fade-in {
+    0% {
+        -webkit-transform: translate3d(0, -20px, 0);
+        transform: translate3d(0, -20px, 0);
+        opacity: 0
+    }
+    100% {
+        -webkit-transform: translate3d(0, 0, 0);
+        transform: translate3d(0, 0, 0);
+        opacity: 1
+    }
+}
+
+@keyframes msgbox-fade-in {
+    0% {
+        -webkit-transform: translate3d(0, -20px, 0);
+        transform: translate3d(0, -20px, 0);
+        opacity: 0
+    }
+    100% {
+        -webkit-transform: translate3d(0, 0, 0);
+        transform: translate3d(0, 0, 0);
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes msgbox-fade-out {
+    0% {
+        -webkit-transform: translate3d(0, 0, 0);
+        transform: translate3d(0, 0, 0);
+        opacity: 1
+    }
+    100% {
+        -webkit-transform: translate3d(0, -20px, 0);
+        transform: translate3d(0, -20px, 0);
+        opacity: 0
+    }
+}
+
+@keyframes msgbox-fade-out {
+    0% {
+        -webkit-transform: translate3d(0, 0, 0);
+        transform: translate3d(0, 0, 0);
+        opacity: 1
+    }
+    100% {
+        -webkit-transform: translate3d(0, -20px, 0);
+        transform: translate3d(0, -20px, 0);
+        opacity: 0
+    }
+}
+
+.el-breadcrumb {
+    font-size: 14px;
+    line-height: 1
+}
+
+.el-breadcrumb::after, .el-breadcrumb::before {
+    display: table;
+    content: ""
+}
+
+.el-breadcrumb::after {
+    clear: both
+}
+
+.el-breadcrumb__separator {
+    margin: 0 9px;
+    font-weight: 700;
+    color: #C0C4CC
+}
+
+.el-breadcrumb__separator[class*=icon] {
+    margin: 0 6px;
+    font-weight: 400
+}
+
+.el-breadcrumb__item {
+    float: left
+}
+
+.el-breadcrumb__inner {
+    color: #606266
+}
+
+.el-breadcrumb__inner a, .el-breadcrumb__inner.is-link {
+    font-weight: 700;
+    text-decoration: none;
+    -webkit-transition: color .2s cubic-bezier(.645, .045, .355, 1);
+    transition: color .2s cubic-bezier(.645, .045, .355, 1);
+    color: #303133
+}
+
+.el-breadcrumb__inner a:hover, .el-breadcrumb__inner.is-link:hover {
+    color: #409EFF;
+    cursor: pointer
+}
+
+.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: 400;
+    color: #606266;
+    cursor: text
+}
+
+.el-breadcrumb__item:last-child .el-breadcrumb__separator {
+    display: none
+}
+
+.el-form--label-left .el-form-item__label {
+    text-align: left
+}
+
+.el-form--label-top .el-form-item__label {
+    float: none;
+    display: inline-block;
+    text-align: left;
+    padding: 0 0 10px
+}
+
+.el-form--inline .el-form-item {
+    display: inline-block;
+    margin-right: 10px;
+    vertical-align: top
+}
+
+.el-form--inline .el-form-item__label {
+    float: none;
+    display: inline-block
+}
+
+.el-form--inline .el-form-item__content {
+    display: inline-block;
+    vertical-align: top
+}
+
+.el-form--inline.el-form--label-top .el-form-item__content {
+    display: block
+}
+
+.el-form-item {
+    margin-bottom: 22px
+}
+
+.el-form-item::after, .el-form-item::before {
+    display: table;
+    content: ""
+}
+
+.el-form-item::after {
+    clear: both
+}
+
+.el-form-item .el-form-item {
+    margin-bottom: 0
+}
+
+.el-form-item--mini.el-form-item, .el-form-item--small.el-form-item {
+    margin-bottom: 18px
+}
+
+.el-form-item .el-input__validateIcon {
+    display: none
+}
+
+.el-form-item--medium .el-form-item__content, .el-form-item--medium .el-form-item__label {
+    line-height: 36px
+}
+
+.el-form-item--small .el-form-item__content, .el-form-item--small .el-form-item__label {
+    line-height: 32px
+}
+
+.el-form-item--small .el-form-item__error {
+    padding-top: 2px
+}
+
+.el-form-item--mini .el-form-item__content, .el-form-item--mini .el-form-item__label {
+    line-height: 28px
+}
+
+.el-form-item--mini .el-form-item__error {
+    padding-top: 1px
+}
+
+.el-form-item__label-wrap {
+    float: left
+}
+
+.el-form-item__label-wrap .el-form-item__label {
+    display: inline-block;
+    float: none
+}
+
+.el-form-item__label {
+    text-align: right;
+    vertical-align: middle;
+    float: left;
+    font-size: 14px;
+    color: #606266;
+    line-height: 40px;
+    padding: 0 12px 0 0;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+.el-form-item__content {
+    line-height: 40px;
+    position: relative;
+    font-size: 14px
+}
+
+.el-form-item__content::after, .el-form-item__content::before {
+    display: table;
+    content: ""
+}
+
+.el-form-item__content::after {
+    clear: both
+}
+
+.el-form-item__content .el-input-group {
+    vertical-align: top
+}
+
+.el-form-item__error {
+    color: #F56C6C;
+    font-size: 12px;
+    line-height: 1;
+    padding-top: 4px;
+    position: absolute;
+    top: 100%;
+    left: 0
+}
+
+.el-form-item__error--inline {
+    position: relative;
+    top: auto;
+    left: auto;
+    display: inline-block;
+    margin-left: 10px
+}
+
+.el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap > .el-form-item__label:before, .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label:before {
+    content: '*';
+    color: #F56C6C;
+    margin-right: 4px
+}
+
+.el-form-item.is-error .el-input-group__append .el-input__inner, .el-form-item.is-error .el-input-group__prepend .el-input__inner {
+    border-color: transparent
+}
+
+.el-form-item.is-error .el-input__validateIcon {
+    color: #F56C6C
+}
+
+.el-form-item--feedback .el-input__validateIcon {
+    display: inline-block
+}
+
+.el-tabs__header {
+    padding: 0;
+    position: relative;
+    margin: 0 0 15px
+}
+
+.el-tabs__active-bar {
+    position: absolute;
+    bottom: 0;
+    left: 0;
+    height: 2px;
+    background-color: #409EFF;
+    z-index: 1;
+    -webkit-transition: -webkit-transform .3s cubic-bezier(.645, .045, .355, 1);
+    transition: -webkit-transform .3s cubic-bezier(.645, .045, .355, 1);
+    transition: transform .3s cubic-bezier(.645, .045, .355, 1);
+    transition: transform .3s cubic-bezier(.645, .045, .355, 1), -webkit-transform .3s cubic-bezier(.645, .045, .355, 1);
+    list-style: none
+}
+
+.el-tabs__new-tab {
+    float: right;
+    border: 1px solid #d3dce6;
+    height: 18px;
+    width: 18px;
+    line-height: 18px;
+    margin: 12px 0 9px 10px;
+    border-radius: 3px;
+    text-align: center;
+    font-size: 12px;
+    color: #d3dce6;
+    cursor: pointer;
+    -webkit-transition: all .15s;
+    transition: all .15s
+}
+
+.el-collapse-item__arrow, .el-tabs__nav {
+    -webkit-transition: -webkit-transform .3s
+}
+
+.el-tabs__new-tab .el-icon-plus {
+    -webkit-transform: scale(.8, .8);
+    transform: scale(.8, .8)
+}
+
+.el-tabs__new-tab:hover {
+    color: #409EFF
+}
+
+.el-tabs__nav-wrap {
+    overflow: hidden;
+    margin-bottom: -1px;
+    position: relative
+}
+
+.el-tabs__nav-wrap::after {
+    content: "";
+    position: absolute;
+    left: 0;
+    bottom: 0;
+    width: 100%;
+    height: 2px;
+    background-color: #E4E7ED;
+    z-index: 1
+}
+
+.el-tabs--border-card > .el-tabs__header .el-tabs__nav-wrap::after, .el-tabs--card > .el-tabs__header .el-tabs__nav-wrap::after {
+    content: none
+}
+
+.el-tabs__nav-wrap.is-scrollable {
+    padding: 0 20px;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+.el-tabs__nav-scroll {
+    overflow: hidden
+}
+
+.el-tabs__nav-next, .el-tabs__nav-prev {
+    position: absolute;
+    cursor: pointer;
+    line-height: 44px;
+    font-size: 12px;
+    color: #909399
+}
+
+.el-tabs__nav-next {
+    right: 0
+}
+
+.el-tabs__nav-prev {
+    left: 0
+}
+
+.el-tabs__nav {
+    white-space: nowrap;
+    position: relative;
+    transition: -webkit-transform .3s;
+    transition: transform .3s;
+    transition: transform .3s, -webkit-transform .3s;
+    float: left;
+    z-index: 2
+}
+
+.el-tabs__nav.is-stretch {
+    min-width: 100%;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex
+}
+
+.el-tabs__nav.is-stretch > * {
+    -webkit-box-flex: 1;
+    -ms-flex: 1;
+    flex: 1;
+    text-align: center
+}
+
+.el-tabs__item {
+    padding: 0 20px;
+    height: 40px;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    line-height: 40px;
+    display: inline-block;
+    list-style: none;
+    font-size: 14px;
+    font-weight: 500;
+    color: #303133;
+    position: relative
+}
+
+.el-tabs__item:focus, .el-tabs__item:focus:active {
+    outline: 0
+}
+
+.el-tabs__item:focus.is-active.is-focus:not(:active) {
+    -webkit-box-shadow: 0 0 2px 2px #409EFF inset;
+    box-shadow: 0 0 2px 2px #409EFF inset;
+    border-radius: 3px
+}
+
+.el-tabs__item .el-icon-close {
+    border-radius: 50%;
+    text-align: center;
+    -webkit-transition: all .3s cubic-bezier(.645, .045, .355, 1);
+    transition: all .3s cubic-bezier(.645, .045, .355, 1);
+    margin-left: 5px
+}
+
+.el-tabs__item .el-icon-close:before {
+    -webkit-transform: scale(.9);
+    transform: scale(.9);
+    display: inline-block
+}
+
+.el-tabs__item .el-icon-close:hover {
+    background-color: #C0C4CC;
+    color: #FFF
+}
+
+.el-tabs__item.is-active {
+    color: #409EFF
+}
+
+.el-tabs__item:hover {
+    color: #409EFF;
+    cursor: pointer
+}
+
+.el-tabs__item.is-disabled {
+    color: #C0C4CC;
+    cursor: default
+}
+
+.el-tabs__content {
+    overflow: hidden;
+    position: relative
+}
+
+.el-tabs--card > .el-tabs__header {
+    border-bottom: 1px solid #E4E7ED
+}
+
+.el-tabs--card > .el-tabs__header .el-tabs__nav {
+    border: 1px solid #E4E7ED;
+    border-bottom: none;
+    border-radius: 4px 4px 0 0;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+.el-tabs--card > .el-tabs__header .el-tabs__active-bar {
+    display: none
+}
+
+.el-tabs--card > .el-tabs__header .el-tabs__item .el-icon-close {
+    position: relative;
+    font-size: 12px;
+    width: 0;
+    height: 14px;
+    vertical-align: middle;
+    line-height: 15px;
+    overflow: hidden;
+    top: -1px;
+    right: -2px;
+    -webkit-transform-origin: 100% 50%;
+    transform-origin: 100% 50%
+}
+
+.el-tabs--card > .el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close, .el-tabs--card > .el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close {
+    width: 14px
+}
+
+.el-tabs--card > .el-tabs__header .el-tabs__item {
+    border-bottom: 1px solid transparent;
+    border-left: 1px solid #E4E7ED;
+    -webkit-transition: color .3s cubic-bezier(.645, .045, .355, 1), padding .3s cubic-bezier(.645, .045, .355, 1);
+    transition: color .3s cubic-bezier(.645, .045, .355, 1), padding .3s cubic-bezier(.645, .045, .355, 1)
+}
+
+.el-tabs--card > .el-tabs__header .el-tabs__item:first-child {
+    border-left: none
+}
+
+.el-tabs--card > .el-tabs__header .el-tabs__item.is-closable:hover {
+    padding-left: 13px;
+    padding-right: 13px
+}
+
+.el-tabs--card > .el-tabs__header .el-tabs__item.is-active {
+    border-bottom-color: #FFF
+}
+
+.el-tabs--card > .el-tabs__header .el-tabs__item.is-active.is-closable {
+    padding-left: 20px;
+    padding-right: 20px
+}
+
+.el-tabs--border-card {
+    background: #FFF;
+    border: 1px solid #DCDFE6;
+    -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .12), 0 0 6px 0 rgba(0, 0, 0, .04);
+    box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .12), 0 0 6px 0 rgba(0, 0, 0, .04)
+}
+
+.el-tabs--border-card > .el-tabs__content {
+    padding: 15px
+}
+
+.el-tabs--border-card > .el-tabs__header {
+    background-color: #F5F7FA;
+    border-bottom: 1px solid #E4E7ED;
+    margin: 0
+}
+
+.el-tabs--border-card > .el-tabs__header .el-tabs__item {
+    -webkit-transition: all .3s cubic-bezier(.645, .045, .355, 1);
+    transition: all .3s cubic-bezier(.645, .045, .355, 1);
+    border: 1px solid transparent;
+    margin-top: -1px;
+    color: #909399
+}
+
+.el-tabs--border-card > .el-tabs__header .el-tabs__item + .el-tabs__item, .el-tabs--border-card > .el-tabs__header .el-tabs__item:first-child {
+    margin-left: -1px
+}
+
+.el-tabs--border-card > .el-tabs__header .el-tabs__item.is-active {
+    color: #409EFF;
+    background-color: #FFF;
+    border-right-color: #DCDFE6;
+    border-left-color: #DCDFE6
+}
+
+.el-tabs--border-card > .el-tabs__header .el-tabs__item:not(.is-disabled):hover {
+    color: #409EFF
+}
+
+.el-tabs--border-card > .el-tabs__header .el-tabs__item.is-disabled {
+    color: #C0C4CC
+}
+
+.el-tabs--border-card > .el-tabs__header .is-scrollable .el-tabs__item:first-child {
+    margin-left: 0
+}
+
+.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2), .el-tabs--bottom .el-tabs__item.is-top:nth-child(2), .el-tabs--top .el-tabs__item.is-bottom:nth-child(2), .el-tabs--top .el-tabs__item.is-top:nth-child(2) {
+    padding-left: 0
+}
+
+.el-tabs--bottom .el-tabs__item.is-bottom:last-child, .el-tabs--bottom .el-tabs__item.is-top:last-child, .el-tabs--top .el-tabs__item.is-bottom:last-child, .el-tabs--top .el-tabs__item.is-top:last-child {
+    padding-right: 0
+}
+
+.el-tabs--bottom .el-tabs--left > .el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--bottom .el-tabs--right > .el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--bottom.el-tabs--border-card > .el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--bottom.el-tabs--card > .el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--top .el-tabs--left > .el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--top .el-tabs--right > .el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--top.el-tabs--border-card > .el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--top.el-tabs--card > .el-tabs__header .el-tabs__item:nth-child(2) {
+    padding-left: 20px
+}
+
+.el-tabs--bottom .el-tabs--left > .el-tabs__header .el-tabs__item:last-child, .el-tabs--bottom .el-tabs--right > .el-tabs__header .el-tabs__item:last-child, .el-tabs--bottom.el-tabs--border-card > .el-tabs__header .el-tabs__item:last-child, .el-tabs--bottom.el-tabs--card > .el-tabs__header .el-tabs__item:last-child, .el-tabs--top .el-tabs--left > .el-tabs__header .el-tabs__item:last-child, .el-tabs--top .el-tabs--right > .el-tabs__header .el-tabs__item:last-child, .el-tabs--top.el-tabs--border-card > .el-tabs__header .el-tabs__item:last-child, .el-tabs--top.el-tabs--card > .el-tabs__header .el-tabs__item:last-child {
+    padding-right: 20px
+}
+
+.el-tabs--bottom .el-tabs__header.is-bottom {
+    margin-bottom: 0;
+    margin-top: 10px
+}
+
+.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom {
+    border-bottom: 0;
+    border-top: 1px solid #DCDFE6
+}
+
+.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom {
+    margin-top: -1px;
+    margin-bottom: 0
+}
+
+.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active) {
+    border: 1px solid transparent
+}
+
+.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom {
+    margin: 0 -1px -1px
+}
+
+.el-tabs--left, .el-tabs--right {
+    overflow: hidden
+}
+
+.el-tabs--left .el-tabs__header.is-left, .el-tabs--left .el-tabs__header.is-right, .el-tabs--left .el-tabs__nav-scroll, .el-tabs--left .el-tabs__nav-wrap.is-left, .el-tabs--left .el-tabs__nav-wrap.is-right, .el-tabs--right .el-tabs__header.is-left, .el-tabs--right .el-tabs__header.is-right, .el-tabs--right .el-tabs__nav-scroll, .el-tabs--right .el-tabs__nav-wrap.is-left, .el-tabs--right .el-tabs__nav-wrap.is-right {
+    height: 100%
+}
+
+.el-tabs--left .el-tabs__active-bar.is-left, .el-tabs--left .el-tabs__active-bar.is-right, .el-tabs--right .el-tabs__active-bar.is-left, .el-tabs--right .el-tabs__active-bar.is-right {
+    top: 0;
+    bottom: auto;
+    width: 2px;
+    height: auto
+}
+
+.el-tabs--left .el-tabs__nav-wrap.is-left, .el-tabs--left .el-tabs__nav-wrap.is-right, .el-tabs--right .el-tabs__nav-wrap.is-left, .el-tabs--right .el-tabs__nav-wrap.is-right {
+    margin-bottom: 0
+}
+
+.el-tabs--left .el-tabs__nav-wrap.is-left > .el-tabs__nav-next, .el-tabs--left .el-tabs__nav-wrap.is-left > .el-tabs__nav-prev, .el-tabs--left .el-tabs__nav-wrap.is-right > .el-tabs__nav-next, .el-tabs--left .el-tabs__nav-wrap.is-right > .el-tabs__nav-prev, .el-tabs--right .el-tabs__nav-wrap.is-left > .el-tabs__nav-next, .el-tabs--right .el-tabs__nav-wrap.is-left > .el-tabs__nav-prev, .el-tabs--right .el-tabs__nav-wrap.is-right > .el-tabs__nav-next, .el-tabs--right .el-tabs__nav-wrap.is-right > .el-tabs__nav-prev {
+    height: 30px;
+    line-height: 30px;
+    width: 100%;
+    text-align: center;
+    cursor: pointer
+}
+
+.el-tabs--left .el-tabs__nav-wrap.is-left > .el-tabs__nav-next i, .el-tabs--left .el-tabs__nav-wrap.is-left > .el-tabs__nav-prev i, .el-tabs--left .el-tabs__nav-wrap.is-right > .el-tabs__nav-next i, .el-tabs--left .el-tabs__nav-wrap.is-right > .el-tabs__nav-prev i, .el-tabs--right .el-tabs__nav-wrap.is-left > .el-tabs__nav-next i, .el-tabs--right .el-tabs__nav-wrap.is-left > .el-tabs__nav-prev i, .el-tabs--right .el-tabs__nav-wrap.is-right > .el-tabs__nav-next i, .el-tabs--right .el-tabs__nav-wrap.is-right > .el-tabs__nav-prev i {
+    -webkit-transform: rotateZ(90deg);
+    transform: rotateZ(90deg)
+}
+
+.el-tabs--left .el-tabs__nav-wrap.is-left > .el-tabs__nav-prev, .el-tabs--left .el-tabs__nav-wrap.is-right > .el-tabs__nav-prev, .el-tabs--right .el-tabs__nav-wrap.is-left > .el-tabs__nav-prev, .el-tabs--right .el-tabs__nav-wrap.is-right > .el-tabs__nav-prev {
+    left: auto;
+    top: 0
+}
+
+.el-tabs--left .el-tabs__nav-wrap.is-left > .el-tabs__nav-next, .el-tabs--left .el-tabs__nav-wrap.is-right > .el-tabs__nav-next, .el-tabs--right .el-tabs__nav-wrap.is-left > .el-tabs__nav-next, .el-tabs--right .el-tabs__nav-wrap.is-right > .el-tabs__nav-next {
+    right: auto;
+    bottom: 0
+}
+
+.el-tabs--left .el-tabs__active-bar.is-left, .el-tabs--left .el-tabs__nav-wrap.is-left::after {
+    right: 0;
+    left: auto
+}
+
+.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable, .el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable, .el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable, .el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable {
+    padding: 30px 0
+}
+
+.el-tabs--left .el-tabs__nav-wrap.is-left::after, .el-tabs--left .el-tabs__nav-wrap.is-right::after, .el-tabs--right .el-tabs__nav-wrap.is-left::after, .el-tabs--right .el-tabs__nav-wrap.is-right::after {
+    height: 100%;
+    width: 2px;
+    bottom: auto;
+    top: 0
+}
+
+.el-tabs--left .el-tabs__nav.is-left, .el-tabs--left .el-tabs__nav.is-right, .el-tabs--right .el-tabs__nav.is-left, .el-tabs--right .el-tabs__nav.is-right {
+    float: none
+}
+
+.el-tabs--left .el-tabs__item.is-left, .el-tabs--left .el-tabs__item.is-right, .el-tabs--right .el-tabs__item.is-left, .el-tabs--right .el-tabs__item.is-right {
+    display: block
+}
+
+.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left, .el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right {
+    display: none
+}
+
+.el-tabs--left .el-tabs__header.is-left {
+    float: left;
+    margin-bottom: 0;
+    margin-right: 10px
+}
+
+.el-tabs--left .el-tabs__nav-wrap.is-left {
+    margin-right: -1px
+}
+
+.el-tabs--left .el-tabs__item.is-left {
+    text-align: right
+}
+
+.el-tabs--left.el-tabs--card .el-tabs__item.is-left {
+    border-left: none;
+    border-right: 1px solid #E4E7ED;
+    border-bottom: none;
+    border-top: 1px solid #E4E7ED;
+    text-align: left
+}
+
+.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child {
+    border-right: 1px solid #E4E7ED;
+    border-top: none
+}
+
+.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active {
+    border: 1px solid #E4E7ED;
+    border-right-color: #fff;
+    border-left: none;
+    border-bottom: none
+}
+
+.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child {
+    border-top: none
+}
+
+.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child {
+    border-bottom: none
+}
+
+.el-tabs--left.el-tabs--card .el-tabs__nav {
+    border-radius: 4px 0 0 4px;
+    border-bottom: 1px solid #E4E7ED;
+    border-right: none
+}
+
+.el-tabs--left.el-tabs--card .el-tabs__new-tab {
+    float: none
+}
+
+.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left {
+    border-right: 1px solid #dfe4ed
+}
+
+.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left {
+    border: 1px solid transparent;
+    margin: -1px 0 -1px -1px
+}
+
+.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active {
+    border-color: #d1dbe5 transparent
+}
+
+.el-tabs--right .el-tabs__header.is-right {
+    float: right;
+    margin-bottom: 0;
+    margin-left: 10px
+}
+
+.el-tabs--right .el-tabs__nav-wrap.is-right {
+    margin-left: -1px
+}
+
+.el-tabs--right .el-tabs__nav-wrap.is-right::after {
+    left: 0;
+    right: auto
+}
+
+.el-tabs--right .el-tabs__active-bar.is-right {
+    left: 0
+}
+
+.el-tabs--right.el-tabs--card .el-tabs__item.is-right {
+    border-bottom: none;
+    border-top: 1px solid #E4E7ED
+}
+
+.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child {
+    border-left: 1px solid #E4E7ED;
+    border-top: none
+}
+
+.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active {
+    border: 1px solid #E4E7ED;
+    border-left-color: #fff;
+    border-right: none;
+    border-bottom: none
+}
+
+.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child {
+    border-top: none
+}
+
+.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child {
+    border-bottom: none
+}
+
+.el-tabs--right.el-tabs--card .el-tabs__nav {
+    border-radius: 0 4px 4px 0;
+    border-bottom: 1px solid #E4E7ED;
+    border-left: none
+}
+
+.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right {
+    border-left: 1px solid #dfe4ed
+}
+
+.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right {
+    border: 1px solid transparent;
+    margin: -1px -1px -1px 0
+}
+
+.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active {
+    border-color: #d1dbe5 transparent
+}
+
+.slideInLeft-transition, .slideInRight-transition {
+    display: inline-block
+}
+
+.slideInRight-enter {
+    -webkit-animation: slideInRight-enter .3s;
+    animation: slideInRight-enter .3s
+}
+
+.slideInRight-leave {
+    position: absolute;
+    left: 0;
+    right: 0;
+    -webkit-animation: slideInRight-leave .3s;
+    animation: slideInRight-leave .3s
+}
+
+.slideInLeft-enter {
+    -webkit-animation: slideInLeft-enter .3s;
+    animation: slideInLeft-enter .3s
+}
+
+.slideInLeft-leave {
+    position: absolute;
+    left: 0;
+    right: 0;
+    -webkit-animation: slideInLeft-leave .3s;
+    animation: slideInLeft-leave .3s
+}
+
+@-webkit-keyframes slideInRight-enter {
+    0% {
+        opacity: 0;
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%)
+    }
+    to {
+        opacity: 1;
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        -webkit-transform: translateX(0);
+        transform: translateX(0)
+    }
+}
+
+@keyframes slideInRight-enter {
+    0% {
+        opacity: 0;
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%)
+    }
+    to {
+        opacity: 1;
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        -webkit-transform: translateX(0);
+        transform: translateX(0)
+    }
+}
+
+@-webkit-keyframes slideInRight-leave {
+    0% {
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        opacity: 1
+    }
+    100% {
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        opacity: 0
+    }
+}
+
+@keyframes slideInRight-leave {
+    0% {
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        opacity: 1
+    }
+    100% {
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes slideInLeft-enter {
+    0% {
+        opacity: 0;
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%)
+    }
+    to {
+        opacity: 1;
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        -webkit-transform: translateX(0);
+        transform: translateX(0)
+    }
+}
+
+@keyframes slideInLeft-enter {
+    0% {
+        opacity: 0;
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%)
+    }
+    to {
+        opacity: 1;
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        -webkit-transform: translateX(0);
+        transform: translateX(0)
+    }
+}
+
+@-webkit-keyframes slideInLeft-leave {
+    0% {
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        opacity: 1
+    }
+    100% {
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        opacity: 0
+    }
+}
+
+@keyframes slideInLeft-leave {
+    0% {
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        opacity: 1
+    }
+    100% {
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        opacity: 0
+    }
+}
+
+.el-tree {
+    position: relative;
+    cursor: default;
+    background: #FFF;
+    color: #606266
+}
+
+.el-tree__empty-block {
+    position: relative;
+    min-height: 60px;
+    text-align: center;
+    width: 100%;
+    height: 100%
+}
+
+.el-tree__empty-text {
+    position: absolute;
+    left: 50%;
+    top: 50%;
+    -webkit-transform: translate(-50%, -50%);
+    transform: translate(-50%, -50%);
+    color: #909399
+}
+
+.el-tree__drop-indicator {
+    position: absolute;
+    left: 0;
+    right: 0;
+    height: 1px;
+    background-color: #409EFF
+}
+
+.el-tree-node {
+    white-space: nowrap;
+    outline: 0
+}
+
+.el-tree-node:focus > .el-tree-node__content {
+    background-color: #F5F7FA
+}
+
+.el-tree-node.is-drop-inner > .el-tree-node__content .el-tree-node__label {
+    background-color: #409EFF;
+    color: #fff
+}
+
+.el-tree-node__content {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center;
+    height: 26px;
+    cursor: pointer
+}
+
+.el-tree-node__content > .el-tree-node__expand-icon {
+    padding: 6px
+}
+
+.el-tree-node__content > .el-checkbox {
+    margin-right: 8px
+}
+
+.el-tree-node__content:hover {
+    background-color: #F5F7FA
+}
+
+.el-tree.is-dragging .el-tree-node__content {
+    cursor: move
+}
+
+.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content {
+    cursor: not-allowed
+}
+
+.el-tree-node__expand-icon {
+    cursor: pointer;
+    color: #C0C4CC;
+    font-size: 12px;
+    -webkit-transform: rotate(0);
+    transform: rotate(0);
+    -webkit-transition: -webkit-transform .3s ease-in-out;
+    transition: -webkit-transform .3s ease-in-out;
+    transition: transform .3s ease-in-out;
+    transition: transform .3s ease-in-out, -webkit-transform .3s ease-in-out
+}
+
+.el-tree-node__expand-icon.expanded {
+    -webkit-transform: rotate(90deg);
+    transform: rotate(90deg)
+}
+
+.el-tree-node__expand-icon.is-leaf {
+    color: transparent;
+    cursor: default
+}
+
+.el-tree-node__label {
+    font-size: 14px
+}
+
+.el-tree-node__loading-icon {
+    margin-right: 8px;
+    font-size: 14px;
+    color: #C0C4CC
+}
+
+.el-tree-node > .el-tree-node__children {
+    overflow: hidden;
+    background-color: transparent
+}
+
+.el-tree-node.is-expanded > .el-tree-node__children {
+    display: block
+}
+
+.el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content {
+    background-color: #f0f7ff
+}
+
+.el-alert {
+    width: 100%;
+    padding: 8px 16px;
+    margin: 0;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    border-radius: 4px;
+    position: relative;
+    background-color: #FFF;
+    overflow: hidden;
+    opacity: 1;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center;
+    -webkit-transition: opacity .2s;
+    transition: opacity .2s
+}
+
+.el-alert.is-light .el-alert__closebtn {
+    color: #C0C4CC
+}
+
+.el-alert.is-dark .el-alert__closebtn, .el-alert.is-dark .el-alert__description {
+    color: #FFF
+}
+
+.el-alert.is-center {
+    -webkit-box-pack: center;
+    -ms-flex-pack: center;
+    justify-content: center
+}
+
+.el-alert--success.is-light {
+    background-color: #f0f9eb;
+    color: #67C23A
+}
+
+.el-alert--success.is-light .el-alert__description {
+    color: #67C23A
+}
+
+.el-alert--success.is-dark {
+    background-color: #67C23A;
+    color: #FFF
+}
+
+.el-alert--info.is-light {
+    background-color: #f4f4f5;
+    color: #909399
+}
+
+.el-alert--info.is-dark {
+    background-color: #909399;
+    color: #FFF
+}
+
+.el-alert--info .el-alert__description {
+    color: #909399
+}
+
+.el-alert--warning.is-light {
+    background-color: #fdf6ec;
+    color: #E6A23C
+}
+
+.el-alert--warning.is-light .el-alert__description {
+    color: #E6A23C
+}
+
+.el-alert--warning.is-dark {
+    background-color: #E6A23C;
+    color: #FFF
+}
+
+.el-alert--error.is-light {
+    background-color: #fef0f0;
+    color: #F56C6C
+}
+
+.el-alert--error.is-light .el-alert__description {
+    color: #F56C6C
+}
+
+.el-alert--error.is-dark {
+    background-color: #F56C6C;
+    color: #FFF
+}
+
+.el-alert__content {
+    display: table-cell;
+    padding: 0 8px
+}
+
+.el-alert__icon {
+    font-size: 16px;
+    width: 16px
+}
+
+.el-alert__icon.is-big {
+    font-size: 28px;
+    width: 28px
+}
+
+.el-alert__title {
+    font-size: 13px;
+    line-height: 18px
+}
+
+.el-alert__title.is-bold {
+    font-weight: 700
+}
+
+.el-alert .el-alert__description {
+    font-size: 12px;
+    margin: 5px 0 0
+}
+
+.el-alert__closebtn {
+    font-size: 12px;
+    opacity: 1;
+    position: absolute;
+    top: 12px;
+    right: 15px;
+    cursor: pointer
+}
+
+.el-alert-fade-enter, .el-alert-fade-leave-active, .el-loading-fade-enter, .el-loading-fade-leave-active, .el-notification-fade-leave-active {
+    opacity: 0
+}
+
+.el-alert__closebtn.is-customed {
+    font-style: normal;
+    font-size: 13px;
+    top: 9px
+}
+
+.el-notification {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    width: 330px;
+    padding: 14px 26px 14px 13px;
+    border-radius: 8px;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    border: 1px solid #EBEEF5;
+    position: fixed;
+    background-color: #FFF;
+    -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+    box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+    -webkit-transition: opacity .3s, left .3s, right .3s, top .4s, bottom .3s, -webkit-transform .3s;
+    transition: opacity .3s, left .3s, right .3s, top .4s, bottom .3s, -webkit-transform .3s;
+    transition: opacity .3s, transform .3s, left .3s, right .3s, top .4s, bottom .3s;
+    transition: opacity .3s, transform .3s, left .3s, right .3s, top .4s, bottom .3s, -webkit-transform .3s;
+    overflow: hidden
+}
+
+.el-notification.right {
+    right: 16px
+}
+
+.el-notification.left {
+    left: 16px
+}
+
+.el-notification__group {
+    margin-left: 13px;
+    margin-right: 8px
+}
+
+.el-notification__title {
+    font-weight: 700;
+    font-size: 16px;
+    color: #303133;
+    margin: 0
+}
+
+.el-notification__content {
+    font-size: 14px;
+    line-height: 21px;
+    margin: 6px 0 0;
+    color: #606266;
+    text-align: justify
+}
+
+.el-notification__content p {
+    margin: 0
+}
+
+.el-notification__icon {
+    height: 24px;
+    width: 24px;
+    font-size: 24px
+}
+
+.el-notification__closeBtn {
+    position: absolute;
+    top: 18px;
+    right: 15px;
+    cursor: pointer;
+    color: #909399;
+    font-size: 16px
+}
+
+.el-notification__closeBtn:hover {
+    color: #606266
+}
+
+.el-notification .el-icon-success {
+    color: #67C23A
+}
+
+.el-notification .el-icon-error {
+    color: #F56C6C
+}
+
+.el-notification .el-icon-info {
+    color: #909399
+}
+
+.el-notification .el-icon-warning {
+    color: #E6A23C
+}
+
+.el-notification-fade-enter.right {
+    right: 0;
+    -webkit-transform: translateX(100%);
+    transform: translateX(100%)
+}
+
+.el-notification-fade-enter.left {
+    left: 0;
+    -webkit-transform: translateX(-100%);
+    transform: translateX(-100%)
+}
+
+.el-input-number {
+    position: relative;
+    display: inline-block;
+    width: 180px;
+    line-height: 38px
+}
+
+.el-input-number .el-input {
+    display: block
+}
+
+.el-input-number .el-input__inner {
+    -webkit-appearance: none;
+    padding-left: 50px;
+    padding-right: 50px;
+    text-align: center
+}
+
+.el-input-number__decrease, .el-input-number__increase {
+    position: absolute;
+    z-index: 1;
+    top: 1px;
+    width: 40px;
+    height: auto;
+    text-align: center;
+    background: #F5F7FA;
+    color: #606266;
+    cursor: pointer;
+    font-size: 13px
+}
+
+.el-input-number__decrease:hover, .el-input-number__increase:hover {
+    color: #409EFF
+}
+
+.el-input-number__decrease:hover:not(.is-disabled) ~ .el-input .el-input__inner:not(.is-disabled), .el-input-number__increase:hover:not(.is-disabled) ~ .el-input .el-input__inner:not(.is-disabled) {
+    border-color: #409EFF
+}
+
+.el-input-number__decrease.is-disabled, .el-input-number__increase.is-disabled {
+    color: #C0C4CC;
+    cursor: not-allowed
+}
+
+.el-input-number__increase {
+    right: 1px;
+    border-radius: 0 4px 4px 0;
+    border-left: 1px solid #DCDFE6
+}
+
+.el-input-number__decrease {
+    left: 1px;
+    border-radius: 4px 0 0 4px;
+    border-right: 1px solid #DCDFE6
+}
+
+.el-input-number.is-disabled .el-input-number__decrease, .el-input-number.is-disabled .el-input-number__increase {
+    border-color: #E4E7ED;
+    color: #E4E7ED
+}
+
+.el-input-number.is-disabled .el-input-number__decrease:hover, .el-input-number.is-disabled .el-input-number__increase:hover {
+    color: #E4E7ED;
+    cursor: not-allowed
+}
+
+.el-input-number--medium {
+    width: 200px;
+    line-height: 34px
+}
+
+.el-input-number--medium .el-input-number__decrease, .el-input-number--medium .el-input-number__increase {
+    width: 36px;
+    font-size: 14px
+}
+
+.el-input-number--medium .el-input__inner {
+    padding-left: 43px;
+    padding-right: 43px
+}
+
+.el-input-number--small {
+    width: 130px;
+    line-height: 30px
+}
+
+.el-input-number--small .el-input-number__decrease, .el-input-number--small .el-input-number__increase {
+    width: 32px;
+    font-size: 13px
+}
+
+.el-input-number--small .el-input-number__decrease [class*=el-icon], .el-input-number--small .el-input-number__increase [class*=el-icon] {
+    -webkit-transform: scale(.9);
+    transform: scale(.9)
+}
+
+.el-input-number--small .el-input__inner {
+    padding-left: 39px;
+    padding-right: 39px
+}
+
+.el-input-number--mini {
+    width: 130px;
+    line-height: 26px
+}
+
+.el-input-number--mini .el-input-number__decrease, .el-input-number--mini .el-input-number__increase {
+    width: 28px;
+    font-size: 12px
+}
+
+.el-input-number--mini .el-input-number__decrease [class*=el-icon], .el-input-number--mini .el-input-number__increase [class*=el-icon] {
+    -webkit-transform: scale(.8);
+    transform: scale(.8)
+}
+
+.el-input-number--mini .el-input__inner {
+    padding-left: 35px;
+    padding-right: 35px
+}
+
+.el-input-number.is-without-controls .el-input__inner {
+    padding-left: 15px;
+    padding-right: 15px
+}
+
+.el-input-number.is-controls-right .el-input__inner {
+    padding-left: 15px;
+    padding-right: 50px
+}
+
+.el-input-number.is-controls-right .el-input-number__decrease, .el-input-number.is-controls-right .el-input-number__increase {
+    height: auto;
+    line-height: 19px
+}
+
+.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon], .el-input-number.is-controls-right .el-input-number__increase [class*=el-icon] {
+    -webkit-transform: scale(.8);
+    transform: scale(.8)
+}
+
+.el-input-number.is-controls-right .el-input-number__increase {
+    border-radius: 0 4px 0 0;
+    border-bottom: 1px solid #DCDFE6
+}
+
+.el-input-number.is-controls-right .el-input-number__decrease {
+    right: 1px;
+    bottom: 1px;
+    top: auto;
+    left: auto;
+    border-right: none;
+    border-left: 1px solid #DCDFE6;
+    border-radius: 0 0 4px
+}
+
+.el-input-number.is-controls-right[class*=medium] [class*=decrease], .el-input-number.is-controls-right[class*=medium] [class*=increase] {
+    line-height: 17px
+}
+
+.el-input-number.is-controls-right[class*=small] [class*=decrease], .el-input-number.is-controls-right[class*=small] [class*=increase] {
+    line-height: 15px
+}
+
+.el-input-number.is-controls-right[class*=mini] [class*=decrease], .el-input-number.is-controls-right[class*=mini] [class*=increase] {
+    line-height: 13px
+}
+
+.el-tooltip__popper {
+    position: absolute;
+    border-radius: 4px;
+    padding: 10px;
+    z-index: 2000;
+    font-size: 12px;
+    line-height: 1.2;
+    min-width: 10px;
+    word-wrap: break-word
+}
+
+.el-tooltip__popper .popper__arrow, .el-tooltip__popper .popper__arrow::after {
+    position: absolute;
+    display: block;
+    width: 0;
+    height: 0;
+    border-color: transparent;
+    border-style: solid
+}
+
+.el-tooltip__popper .popper__arrow {
+    border-width: 6px
+}
+
+.el-tooltip__popper .popper__arrow::after {
+    content: " ";
+    border-width: 5px
+}
+
+.el-progress-bar__inner::after, .el-row::after, .el-row::before, .el-slider::after, .el-slider::before, .el-slider__button-wrapper::after, .el-upload-cover::after {
+    content: ""
+}
+
+.el-tooltip__popper[x-placement^=top] {
+    margin-bottom: 12px
+}
+
+.el-tooltip__popper[x-placement^=top] .popper__arrow {
+    bottom: -6px;
+    border-top-color: #303133;
+    border-bottom-width: 0
+}
+
+.el-tooltip__popper[x-placement^=top] .popper__arrow::after {
+    bottom: 1px;
+    margin-left: -5px;
+    border-top-color: #303133;
+    border-bottom-width: 0
+}
+
+.el-tooltip__popper[x-placement^=bottom] {
+    margin-top: 12px
+}
+
+.el-tooltip__popper[x-placement^=bottom] .popper__arrow {
+    top: -6px;
+    border-top-width: 0;
+    border-bottom-color: #303133
+}
+
+.el-tooltip__popper[x-placement^=bottom] .popper__arrow::after {
+    top: 1px;
+    margin-left: -5px;
+    border-top-width: 0;
+    border-bottom-color: #303133
+}
+
+.el-tooltip__popper[x-placement^=right] {
+    margin-left: 12px
+}
+
+.el-tooltip__popper[x-placement^=right] .popper__arrow {
+    left: -6px;
+    border-right-color: #303133;
+    border-left-width: 0
+}
+
+.el-tooltip__popper[x-placement^=right] .popper__arrow::after {
+    bottom: -5px;
+    left: 1px;
+    border-right-color: #303133;
+    border-left-width: 0
+}
+
+.el-tooltip__popper[x-placement^=left] {
+    margin-right: 12px
+}
+
+.el-tooltip__popper[x-placement^=left] .popper__arrow {
+    right: -6px;
+    border-right-width: 0;
+    border-left-color: #303133
+}
+
+.el-tooltip__popper[x-placement^=left] .popper__arrow::after {
+    right: 1px;
+    bottom: -5px;
+    margin-left: -5px;
+    border-right-width: 0;
+    border-left-color: #303133
+}
+
+.el-tooltip__popper.is-dark {
+    background: #303133;
+    color: #FFF
+}
+
+.el-tooltip__popper.is-light {
+    background: #FFF;
+    border: 1px solid #303133
+}
+
+.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow {
+    border-top-color: #303133
+}
+
+.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after {
+    border-top-color: #FFF
+}
+
+.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow {
+    border-bottom-color: #303133
+}
+
+.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after {
+    border-bottom-color: #FFF
+}
+
+.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow {
+    border-left-color: #303133
+}
+
+.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after {
+    border-left-color: #FFF
+}
+
+.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow {
+    border-right-color: #303133
+}
+
+.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after {
+    border-right-color: #FFF
+}
+
+.el-slider::after, .el-slider::before {
+    display: table
+}
+
+.el-slider__button-wrapper .el-tooltip, .el-slider__button-wrapper::after {
+    vertical-align: middle;
+    display: inline-block
+}
+
+.el-slider::after {
+    clear: both
+}
+
+.el-slider__runway {
+    width: 100%;
+    height: 6px;
+    margin: 16px 0;
+    background-color: #E4E7ED;
+    border-radius: 3px;
+    position: relative;
+    cursor: pointer;
+    vertical-align: middle
+}
+
+.el-slider__runway.show-input {
+    margin-right: 160px;
+    width: auto
+}
+
+.el-slider__runway.disabled {
+    cursor: default
+}
+
+.el-slider__runway.disabled .el-slider__bar {
+    background-color: #C0C4CC
+}
+
+.el-slider__runway.disabled .el-slider__button {
+    border-color: #C0C4CC
+}
+
+.el-slider__runway.disabled .el-slider__button-wrapper.dragging, .el-slider__runway.disabled .el-slider__button-wrapper.hover, .el-slider__runway.disabled .el-slider__button-wrapper:hover {
+    cursor: not-allowed
+}
+
+.el-slider__runway.disabled .el-slider__button.dragging, .el-slider__runway.disabled .el-slider__button.hover, .el-slider__runway.disabled .el-slider__button:hover {
+    -webkit-transform: scale(1);
+    transform: scale(1);
+    cursor: not-allowed
+}
+
+.el-slider__button-wrapper, .el-slider__stop {
+    -webkit-transform: translateX(-50%);
+    position: absolute
+}
+
+.el-slider__input {
+    float: right;
+    margin-top: 3px;
+    width: 130px
+}
+
+.el-slider__input.el-input-number--mini {
+    margin-top: 5px
+}
+
+.el-slider__input.el-input-number--medium {
+    margin-top: 0
+}
+
+.el-slider__input.el-input-number--large {
+    margin-top: -2px
+}
+
+.el-slider__bar {
+    height: 6px;
+    background-color: #409EFF;
+    border-top-left-radius: 3px;
+    border-bottom-left-radius: 3px;
+    position: absolute
+}
+
+.el-slider__button-wrapper {
+    height: 36px;
+    width: 36px;
+    z-index: 1001;
+    top: -15px;
+    transform: translateX(-50%);
+    background-color: transparent;
+    text-align: center;
+    -moz-user-select: none;
+    user-select: none;
+    line-height: normal
+}
+
+.el-slider__button, .el-step__icon-inner {
+    -webkit-user-select: none;
+    -ms-user-select: none
+}
+
+.el-slider__button-wrapper::after {
+    height: 100%
+}
+
+.el-slider__button-wrapper.hover, .el-slider__button-wrapper:hover {
+    cursor: -webkit-grab;
+    cursor: grab
+}
+
+.el-slider__button-wrapper.dragging {
+    cursor: -webkit-grabbing;
+    cursor: grabbing
+}
+
+.el-slider__button {
+    width: 16px;
+    height: 16px;
+    border: 2px solid #409EFF;
+    background-color: #FFF;
+    border-radius: 50%;
+    -webkit-transition: .2s;
+    transition: .2s;
+    -moz-user-select: none;
+    user-select: none
+}
+
+.el-slider__button.dragging, .el-slider__button.hover, .el-slider__button:hover {
+    -webkit-transform: scale(1.2);
+    transform: scale(1.2)
+}
+
+.el-slider__button.hover, .el-slider__button:hover {
+    cursor: -webkit-grab;
+    cursor: grab
+}
+
+.el-slider__button.dragging {
+    cursor: -webkit-grabbing;
+    cursor: grabbing
+}
+
+.el-slider__stop {
+    height: 6px;
+    width: 6px;
+    border-radius: 100%;
+    background-color: #FFF;
+    transform: translateX(-50%)
+}
+
+.el-slider__marks {
+    top: 0;
+    left: 12px;
+    width: 18px;
+    height: 100%
+}
+
+.el-slider__marks-text {
+    position: absolute;
+    -webkit-transform: translateX(-50%);
+    transform: translateX(-50%);
+    font-size: 14px;
+    color: #909399;
+    margin-top: 15px
+}
+
+.el-slider.is-vertical {
+    position: relative
+}
+
+.el-slider.is-vertical .el-slider__runway {
+    width: 6px;
+    height: 100%;
+    margin: 0 16px
+}
+
+.el-slider.is-vertical .el-slider__bar {
+    width: 6px;
+    height: auto;
+    border-radius: 0 0 3px 3px
+}
+
+.el-slider.is-vertical .el-slider__button-wrapper {
+    top: auto;
+    left: -15px;
+    -webkit-transform: translateY(50%);
+    transform: translateY(50%)
+}
+
+.el-slider.is-vertical .el-slider__stop {
+    -webkit-transform: translateY(50%);
+    transform: translateY(50%)
+}
+
+.el-slider.is-vertical.el-slider--with-input {
+    padding-bottom: 58px
+}
+
+.el-slider.is-vertical.el-slider--with-input .el-slider__input {
+    overflow: visible;
+    float: none;
+    position: absolute;
+    bottom: 22px;
+    width: 36px;
+    margin-top: 15px
+}
+
+.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner {
+    text-align: center;
+    padding-left: 5px;
+    padding-right: 5px
+}
+
+.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease, .el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase {
+    top: 32px;
+    margin-top: -1px;
+    border: 1px solid #DCDFE6;
+    line-height: 20px;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1);
+    transition: border-color .2s cubic-bezier(.645, .045, .355, 1)
+}
+
+.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease {
+    width: 18px;
+    right: 18px;
+    border-bottom-left-radius: 4px
+}
+
+.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase {
+    width: 19px;
+    border-bottom-right-radius: 4px
+}
+
+.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase ~ .el-input .el-input__inner {
+    border-bottom-left-radius: 0;
+    border-bottom-right-radius: 0
+}
+
+.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease, .el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase {
+    border-color: #C0C4CC
+}
+
+.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease, .el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase {
+    border-color: #409EFF
+}
+
+.el-slider.is-vertical .el-slider__marks-text {
+    margin-top: 0;
+    left: 15px;
+    -webkit-transform: translateY(50%);
+    transform: translateY(50%)
+}
+
+.el-loading-parent--relative {
+    position: relative !important
+}
+
+.el-loading-parent--hidden {
+    overflow: hidden !important
+}
+
+.el-loading-mask {
+    position: absolute;
+    z-index: 2000;
+    background-color: rgba(255, 255, 255, .9);
+    margin: 0;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    -webkit-transition: opacity .3s;
+    transition: opacity .3s
+}
+
+.el-loading-mask.is-fullscreen {
+    position: fixed
+}
+
+.el-loading-mask.is-fullscreen .el-loading-spinner {
+    margin-top: -25px;
+    font-size: x-large;
+}
+
+.el-loading-mask.is-fullscreen .el-loading-spinner .circular {
+    height: 50px;
+    width: 50px
+}
+
+.el-loading-spinner {
+    top: 50%;
+    margin-top: -21px;
+    width: 100%;
+    text-align: center;
+    position: absolute
+}
+
+.el-col-pull-0, .el-col-pull-1, .el-col-pull-10, .el-col-pull-11, .el-col-pull-13, .el-col-pull-14, .el-col-pull-15, .el-col-pull-16, .el-col-pull-17, .el-col-pull-18, .el-col-pull-19, .el-col-pull-2, .el-col-pull-20, .el-col-pull-21, .el-col-pull-22, .el-col-pull-23, .el-col-pull-24, .el-col-pull-3, .el-col-pull-4, .el-col-pull-5, .el-col-pull-6, .el-col-pull-7, .el-col-pull-8, .el-col-pull-9, .el-col-push-0, .el-col-push-1, .el-col-push-10, .el-col-push-11, .el-col-push-12, .el-col-push-13, .el-col-push-14, .el-col-push-15, .el-col-push-16, .el-col-push-17, .el-col-push-18, .el-col-push-19, .el-col-push-2, .el-col-push-20, .el-col-push-21, .el-col-push-22, .el-col-push-23, .el-col-push-24, .el-col-push-3, .el-col-push-4, .el-col-push-5, .el-col-push-6, .el-col-push-7, .el-col-push-8, .el-col-push-9, .el-row {
+    position: relative
+}
+
+.el-loading-spinner .el-loading-text {
+    color: #db4534;
+    margin: 3px 0;
+    font-size: x-large;
+}
+
+.el-loading-spinner .circular {
+    height: 42px;
+    width: 42px;
+    -webkit-animation: loading-rotate 2s linear infinite;
+    animation: loading-rotate 2s linear infinite
+}
+
+.el-loading-spinner .path {
+    -webkit-animation: loading-dash 1.5s ease-in-out infinite;
+    animation: loading-dash 1.5s ease-in-out infinite;
+    stroke-dasharray: 90, 150;
+    stroke-dashoffset: 0;
+    stroke-width: 2;
+    stroke: #409EFF;
+    stroke-linecap: round
+}
+
+.el-loading-spinner i {
+    color: #409EFF
+}
+
+@-webkit-keyframes loading-rotate {
+    100% {
+        -webkit-transform: rotate(360deg);
+        transform: rotate(360deg)
+    }
+}
+
+@keyframes loading-rotate {
+    100% {
+        -webkit-transform: rotate(360deg);
+        transform: rotate(360deg)
+    }
+}
+
+@-webkit-keyframes loading-dash {
+    0% {
+        stroke-dasharray: 1, 200;
+        stroke-dashoffset: 0
+    }
+    50% {
+        stroke-dasharray: 90, 150;
+        stroke-dashoffset: -40px
+    }
+    100% {
+        stroke-dasharray: 90, 150;
+        stroke-dashoffset: -120px
+    }
+}
+
+@keyframes loading-dash {
+    0% {
+        stroke-dasharray: 1, 200;
+        stroke-dashoffset: 0
+    }
+    50% {
+        stroke-dasharray: 90, 150;
+        stroke-dashoffset: -40px
+    }
+    100% {
+        stroke-dasharray: 90, 150;
+        stroke-dashoffset: -120px
+    }
+}
+
+.el-row {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+.el-row::after, .el-row::before {
+    display: table
+}
+
+.el-row::after {
+    clear: both
+}
+
+.el-row--flex {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex
+}
+
+.el-col-0, .el-row--flex:after, .el-row--flex:before {
+    display: none
+}
+
+.el-row--flex.is-justify-center {
+    -webkit-box-pack: center;
+    -ms-flex-pack: center;
+    justify-content: center
+}
+
+.el-row--flex.is-justify-end {
+    -webkit-box-pack: end;
+    -ms-flex-pack: end;
+    justify-content: flex-end
+}
+
+.el-row--flex.is-justify-space-between {
+    -webkit-box-pack: justify;
+    -ms-flex-pack: justify;
+    justify-content: space-between
+}
+
+.el-row--flex.is-justify-space-around {
+    -ms-flex-pack: distribute;
+    justify-content: space-around
+}
+
+.el-row--flex.is-align-middle {
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center
+}
+
+.el-row--flex.is-align-bottom {
+    -webkit-box-align: end;
+    -ms-flex-align: end;
+    align-items: flex-end
+}
+
+[class*=el-col-] {
+    float: left;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+.el-upload--picture-card, .el-upload-dragger {
+    -webkit-box-sizing: border-box;
+    cursor: pointer
+}
+
+.el-col-0 {
+    width: 0%
+}
+
+.el-col-offset-0 {
+    margin-left: 0
+}
+
+.el-col-pull-0 {
+    right: 0
+}
+
+.el-col-push-0 {
+    left: 0
+}
+
+.el-col-1 {
+    width: 4.16667%
+}
+
+.el-col-offset-1 {
+    margin-left: 4.16667%
+}
+
+.el-col-pull-1 {
+    right: 4.16667%
+}
+
+.el-col-push-1 {
+    left: 4.16667%
+}
+
+.el-col-2 {
+    width: 8.33333%
+}
+
+.el-col-offset-2 {
+    margin-left: 8.33333%
+}
+
+.el-col-pull-2 {
+    right: 8.33333%
+}
+
+.el-col-push-2 {
+    left: 8.33333%
+}
+
+.el-col-3 {
+    width: 12.5%
+}
+
+.el-col-offset-3 {
+    margin-left: 12.5%
+}
+
+.el-col-pull-3 {
+    right: 12.5%
+}
+
+.el-col-push-3 {
+    left: 12.5%
+}
+
+.el-col-4 {
+    width: 16.66667%
+}
+
+.el-col-offset-4 {
+    margin-left: 16.66667%
+}
+
+.el-col-pull-4 {
+    right: 16.66667%
+}
+
+.el-col-push-4 {
+    left: 16.66667%
+}
+
+.el-col-5 {
+    width: 20.83333%
+}
+
+.el-col-offset-5 {
+    margin-left: 20.83333%
+}
+
+.el-col-pull-5 {
+    right: 20.83333%
+}
+
+.el-col-push-5 {
+    left: 20.83333%
+}
+
+.el-col-6 {
+    width: 25%
+}
+
+.el-col-offset-6 {
+    margin-left: 25%
+}
+
+.el-col-pull-6 {
+    right: 25%
+}
+
+.el-col-push-6 {
+    left: 25%
+}
+
+.el-col-7 {
+    width: 29.16667%
+}
+
+.el-col-offset-7 {
+    margin-left: 29.16667%
+}
+
+.el-col-pull-7 {
+    right: 29.16667%
+}
+
+.el-col-push-7 {
+    left: 29.16667%
+}
+
+.el-col-8 {
+    width: 33.33333%
+}
+
+.el-col-offset-8 {
+    margin-left: 33.33333%
+}
+
+.el-col-pull-8 {
+    right: 33.33333%
+}
+
+.el-col-push-8 {
+    left: 33.33333%
+}
+
+.el-col-9 {
+    width: 37.5%
+}
+
+.el-col-offset-9 {
+    margin-left: 37.5%
+}
+
+.el-col-pull-9 {
+    right: 37.5%
+}
+
+.el-col-push-9 {
+    left: 37.5%
+}
+
+.el-col-10 {
+    width: 41.66667%
+}
+
+.el-col-offset-10 {
+    margin-left: 41.66667%
+}
+
+.el-col-pull-10 {
+    right: 41.66667%
+}
+
+.el-col-push-10 {
+    left: 41.66667%
+}
+
+.el-col-11 {
+    width: 45.83333%
+}
+
+.el-col-offset-11 {
+    margin-left: 45.83333%
+}
+
+.el-col-pull-11 {
+    right: 45.83333%
+}
+
+.el-col-push-11 {
+    left: 45.83333%
+}
+
+.el-col-12 {
+    width: 50%
+}
+
+.el-col-offset-12 {
+    margin-left: 50%
+}
+
+.el-col-pull-12 {
+    position: relative;
+    right: 50%
+}
+
+.el-col-push-12 {
+    left: 50%
+}
+
+.el-col-13 {
+    width: 54.16667%
+}
+
+.el-col-offset-13 {
+    margin-left: 54.16667%
+}
+
+.el-col-pull-13 {
+    right: 54.16667%
+}
+
+.el-col-push-13 {
+    left: 54.16667%
+}
+
+.el-col-14 {
+    width: 58.33333%
+}
+
+.el-col-offset-14 {
+    margin-left: 58.33333%
+}
+
+.el-col-pull-14 {
+    right: 58.33333%
+}
+
+.el-col-push-14 {
+    left: 58.33333%
+}
+
+.el-col-15 {
+    width: 62.5%
+}
+
+.el-col-offset-15 {
+    margin-left: 62.5%
+}
+
+.el-col-pull-15 {
+    right: 62.5%
+}
+
+.el-col-push-15 {
+    left: 62.5%
+}
+
+.el-col-16 {
+    width: 66.66667%
+}
+
+.el-col-offset-16 {
+    margin-left: 66.66667%
+}
+
+.el-col-pull-16 {
+    right: 66.66667%
+}
+
+.el-col-push-16 {
+    left: 66.66667%
+}
+
+.el-col-17 {
+    width: 70.83333%
+}
+
+.el-col-offset-17 {
+    margin-left: 70.83333%
+}
+
+.el-col-pull-17 {
+    right: 70.83333%
+}
+
+.el-col-push-17 {
+    left: 70.83333%
+}
+
+.el-col-18 {
+    width: 75%
+}
+
+.el-col-offset-18 {
+    margin-left: 75%
+}
+
+.el-col-pull-18 {
+    right: 75%
+}
+
+.el-col-push-18 {
+    left: 75%
+}
+
+.el-col-19 {
+    width: 79.16667%
+}
+
+.el-col-offset-19 {
+    margin-left: 79.16667%
+}
+
+.el-col-pull-19 {
+    right: 79.16667%
+}
+
+.el-col-push-19 {
+    left: 79.16667%
+}
+
+.el-col-20 {
+    width: 83.33333%
+}
+
+.el-col-offset-20 {
+    margin-left: 83.33333%
+}
+
+.el-col-pull-20 {
+    right: 83.33333%
+}
+
+.el-col-push-20 {
+    left: 83.33333%
+}
+
+.el-col-21 {
+    width: 87.5%
+}
+
+.el-col-offset-21 {
+    margin-left: 87.5%
+}
+
+.el-col-pull-21 {
+    right: 87.5%
+}
+
+.el-col-push-21 {
+    left: 87.5%
+}
+
+.el-col-22 {
+    width: 91.66667%
+}
+
+.el-col-offset-22 {
+    margin-left: 91.66667%
+}
+
+.el-col-pull-22 {
+    right: 91.66667%
+}
+
+.el-col-push-22 {
+    left: 91.66667%
+}
+
+.el-col-23 {
+    width: 95.83333%
+}
+
+.el-col-offset-23 {
+    margin-left: 95.83333%
+}
+
+.el-col-pull-23 {
+    right: 95.83333%
+}
+
+.el-col-push-23 {
+    left: 95.83333%
+}
+
+.el-col-24 {
+    width: 100%
+}
+
+.el-col-offset-24 {
+    margin-left: 100%
+}
+
+.el-col-pull-24 {
+    right: 100%
+}
+
+.el-col-push-24 {
+    left: 100%
+}
+
+@media only screen and (max-width: 767px) {
+    .el-col-xs-0 {
+        display: none;
+        width: 0%
+    }
+
+    .el-col-xs-offset-0 {
+        margin-left: 0
+    }
+
+    .el-col-xs-pull-0 {
+        position: relative;
+        right: 0
+    }
+
+    .el-col-xs-push-0 {
+        position: relative;
+        left: 0
+    }
+
+    .el-col-xs-1 {
+        width: 4.16667%
+    }
+
+    .el-col-xs-offset-1 {
+        margin-left: 4.16667%
+    }
+
+    .el-col-xs-pull-1 {
+        position: relative;
+        right: 4.16667%
+    }
+
+    .el-col-xs-push-1 {
+        position: relative;
+        left: 4.16667%
+    }
+
+    .el-col-xs-2 {
+        width: 8.33333%
+    }
+
+    .el-col-xs-offset-2 {
+        margin-left: 8.33333%
+    }
+
+    .el-col-xs-pull-2 {
+        position: relative;
+        right: 8.33333%
+    }
+
+    .el-col-xs-push-2 {
+        position: relative;
+        left: 8.33333%
+    }
+
+    .el-col-xs-3 {
+        width: 12.5%
+    }
+
+    .el-col-xs-offset-3 {
+        margin-left: 12.5%
+    }
+
+    .el-col-xs-pull-3 {
+        position: relative;
+        right: 12.5%
+    }
+
+    .el-col-xs-push-3 {
+        position: relative;
+        left: 12.5%
+    }
+
+    .el-col-xs-4 {
+        width: 16.66667%
+    }
+
+    .el-col-xs-offset-4 {
+        margin-left: 16.66667%
+    }
+
+    .el-col-xs-pull-4 {
+        position: relative;
+        right: 16.66667%
+    }
+
+    .el-col-xs-push-4 {
+        position: relative;
+        left: 16.66667%
+    }
+
+    .el-col-xs-5 {
+        width: 20.83333%
+    }
+
+    .el-col-xs-offset-5 {
+        margin-left: 20.83333%
+    }
+
+    .el-col-xs-pull-5 {
+        position: relative;
+        right: 20.83333%
+    }
+
+    .el-col-xs-push-5 {
+        position: relative;
+        left: 20.83333%
+    }
+
+    .el-col-xs-6 {
+        width: 25%
+    }
+
+    .el-col-xs-offset-6 {
+        margin-left: 25%
+    }
+
+    .el-col-xs-pull-6 {
+        position: relative;
+        right: 25%
+    }
+
+    .el-col-xs-push-6 {
+        position: relative;
+        left: 25%
+    }
+
+    .el-col-xs-7 {
+        width: 29.16667%
+    }
+
+    .el-col-xs-offset-7 {
+        margin-left: 29.16667%
+    }
+
+    .el-col-xs-pull-7 {
+        position: relative;
+        right: 29.16667%
+    }
+
+    .el-col-xs-push-7 {
+        position: relative;
+        left: 29.16667%
+    }
+
+    .el-col-xs-8 {
+        width: 33.33333%
+    }
+
+    .el-col-xs-offset-8 {
+        margin-left: 33.33333%
+    }
+
+    .el-col-xs-pull-8 {
+        position: relative;
+        right: 33.33333%
+    }
+
+    .el-col-xs-push-8 {
+        position: relative;
+        left: 33.33333%
+    }
+
+    .el-col-xs-9 {
+        width: 37.5%
+    }
+
+    .el-col-xs-offset-9 {
+        margin-left: 37.5%
+    }
+
+    .el-col-xs-pull-9 {
+        position: relative;
+        right: 37.5%
+    }
+
+    .el-col-xs-push-9 {
+        position: relative;
+        left: 37.5%
+    }
+
+    .el-col-xs-10 {
+        width: 41.66667%
+    }
+
+    .el-col-xs-offset-10 {
+        margin-left: 41.66667%
+    }
+
+    .el-col-xs-pull-10 {
+        position: relative;
+        right: 41.66667%
+    }
+
+    .el-col-xs-push-10 {
+        position: relative;
+        left: 41.66667%
+    }
+
+    .el-col-xs-11 {
+        width: 45.83333%
+    }
+
+    .el-col-xs-offset-11 {
+        margin-left: 45.83333%
+    }
+
+    .el-col-xs-pull-11 {
+        position: relative;
+        right: 45.83333%
+    }
+
+    .el-col-xs-push-11 {
+        position: relative;
+        left: 45.83333%
+    }
+
+    .el-col-xs-12 {
+        width: 50%
+    }
+
+    .el-col-xs-offset-12 {
+        margin-left: 50%
+    }
+
+    .el-col-xs-pull-12 {
+        position: relative;
+        right: 50%
+    }
+
+    .el-col-xs-push-12 {
+        position: relative;
+        left: 50%
+    }
+
+    .el-col-xs-13 {
+        width: 54.16667%
+    }
+
+    .el-col-xs-offset-13 {
+        margin-left: 54.16667%
+    }
+
+    .el-col-xs-pull-13 {
+        position: relative;
+        right: 54.16667%
+    }
+
+    .el-col-xs-push-13 {
+        position: relative;
+        left: 54.16667%
+    }
+
+    .el-col-xs-14 {
+        width: 58.33333%
+    }
+
+    .el-col-xs-offset-14 {
+        margin-left: 58.33333%
+    }
+
+    .el-col-xs-pull-14 {
+        position: relative;
+        right: 58.33333%
+    }
+
+    .el-col-xs-push-14 {
+        position: relative;
+        left: 58.33333%
+    }
+
+    .el-col-xs-15 {
+        width: 62.5%
+    }
+
+    .el-col-xs-offset-15 {
+        margin-left: 62.5%
+    }
+
+    .el-col-xs-pull-15 {
+        position: relative;
+        right: 62.5%
+    }
+
+    .el-col-xs-push-15 {
+        position: relative;
+        left: 62.5%
+    }
+
+    .el-col-xs-16 {
+        width: 66.66667%
+    }
+
+    .el-col-xs-offset-16 {
+        margin-left: 66.66667%
+    }
+
+    .el-col-xs-pull-16 {
+        position: relative;
+        right: 66.66667%
+    }
+
+    .el-col-xs-push-16 {
+        position: relative;
+        left: 66.66667%
+    }
+
+    .el-col-xs-17 {
+        width: 70.83333%
+    }
+
+    .el-col-xs-offset-17 {
+        margin-left: 70.83333%
+    }
+
+    .el-col-xs-pull-17 {
+        position: relative;
+        right: 70.83333%
+    }
+
+    .el-col-xs-push-17 {
+        position: relative;
+        left: 70.83333%
+    }
+
+    .el-col-xs-18 {
+        width: 75%
+    }
+
+    .el-col-xs-offset-18 {
+        margin-left: 75%
+    }
+
+    .el-col-xs-pull-18 {
+        position: relative;
+        right: 75%
+    }
+
+    .el-col-xs-push-18 {
+        position: relative;
+        left: 75%
+    }
+
+    .el-col-xs-19 {
+        width: 79.16667%
+    }
+
+    .el-col-xs-offset-19 {
+        margin-left: 79.16667%
+    }
+
+    .el-col-xs-pull-19 {
+        position: relative;
+        right: 79.16667%
+    }
+
+    .el-col-xs-push-19 {
+        position: relative;
+        left: 79.16667%
+    }
+
+    .el-col-xs-20 {
+        width: 83.33333%
+    }
+
+    .el-col-xs-offset-20 {
+        margin-left: 83.33333%
+    }
+
+    .el-col-xs-pull-20 {
+        position: relative;
+        right: 83.33333%
+    }
+
+    .el-col-xs-push-20 {
+        position: relative;
+        left: 83.33333%
+    }
+
+    .el-col-xs-21 {
+        width: 87.5%
+    }
+
+    .el-col-xs-offset-21 {
+        margin-left: 87.5%
+    }
+
+    .el-col-xs-pull-21 {
+        position: relative;
+        right: 87.5%
+    }
+
+    .el-col-xs-push-21 {
+        position: relative;
+        left: 87.5%
+    }
+
+    .el-col-xs-22 {
+        width: 91.66667%
+    }
+
+    .el-col-xs-offset-22 {
+        margin-left: 91.66667%
+    }
+
+    .el-col-xs-pull-22 {
+        position: relative;
+        right: 91.66667%
+    }
+
+    .el-col-xs-push-22 {
+        position: relative;
+        left: 91.66667%
+    }
+
+    .el-col-xs-23 {
+        width: 95.83333%
+    }
+
+    .el-col-xs-offset-23 {
+        margin-left: 95.83333%
+    }
+
+    .el-col-xs-pull-23 {
+        position: relative;
+        right: 95.83333%
+    }
+
+    .el-col-xs-push-23 {
+        position: relative;
+        left: 95.83333%
+    }
+
+    .el-col-xs-24 {
+        width: 100%
+    }
+
+    .el-col-xs-offset-24 {
+        margin-left: 100%
+    }
+
+    .el-col-xs-pull-24 {
+        position: relative;
+        right: 100%
+    }
+
+    .el-col-xs-push-24 {
+        position: relative;
+        left: 100%
+    }
+}
+
+@media only screen and (min-width: 768px) {
+    .el-col-sm-0 {
+        display: none;
+        width: 0%
+    }
+
+    .el-col-sm-offset-0 {
+        margin-left: 0
+    }
+
+    .el-col-sm-pull-0 {
+        position: relative;
+        right: 0
+    }
+
+    .el-col-sm-push-0 {
+        position: relative;
+        left: 0
+    }
+
+    .el-col-sm-1 {
+        width: 4.16667%
+    }
+
+    .el-col-sm-offset-1 {
+        margin-left: 4.16667%
+    }
+
+    .el-col-sm-pull-1 {
+        position: relative;
+        right: 4.16667%
+    }
+
+    .el-col-sm-push-1 {
+        position: relative;
+        left: 4.16667%
+    }
+
+    .el-col-sm-2 {
+        width: 8.33333%
+    }
+
+    .el-col-sm-offset-2 {
+        margin-left: 8.33333%
+    }
+
+    .el-col-sm-pull-2 {
+        position: relative;
+        right: 8.33333%
+    }
+
+    .el-col-sm-push-2 {
+        position: relative;
+        left: 8.33333%
+    }
+
+    .el-col-sm-3 {
+        width: 12.5%
+    }
+
+    .el-col-sm-offset-3 {
+        margin-left: 12.5%
+    }
+
+    .el-col-sm-pull-3 {
+        position: relative;
+        right: 12.5%
+    }
+
+    .el-col-sm-push-3 {
+        position: relative;
+        left: 12.5%
+    }
+
+    .el-col-sm-4 {
+        width: 16.66667%
+    }
+
+    .el-col-sm-offset-4 {
+        margin-left: 16.66667%
+    }
+
+    .el-col-sm-pull-4 {
+        position: relative;
+        right: 16.66667%
+    }
+
+    .el-col-sm-push-4 {
+        position: relative;
+        left: 16.66667%
+    }
+
+    .el-col-sm-5 {
+        width: 20.83333%
+    }
+
+    .el-col-sm-offset-5 {
+        margin-left: 20.83333%
+    }
+
+    .el-col-sm-pull-5 {
+        position: relative;
+        right: 20.83333%
+    }
+
+    .el-col-sm-push-5 {
+        position: relative;
+        left: 20.83333%
+    }
+
+    .el-col-sm-6 {
+        width: 25%
+    }
+
+    .el-col-sm-offset-6 {
+        margin-left: 25%
+    }
+
+    .el-col-sm-pull-6 {
+        position: relative;
+        right: 25%
+    }
+
+    .el-col-sm-push-6 {
+        position: relative;
+        left: 25%
+    }
+
+    .el-col-sm-7 {
+        width: 29.16667%
+    }
+
+    .el-col-sm-offset-7 {
+        margin-left: 29.16667%
+    }
+
+    .el-col-sm-pull-7 {
+        position: relative;
+        right: 29.16667%
+    }
+
+    .el-col-sm-push-7 {
+        position: relative;
+        left: 29.16667%
+    }
+
+    .el-col-sm-8 {
+        width: 33.33333%
+    }
+
+    .el-col-sm-offset-8 {
+        margin-left: 33.33333%
+    }
+
+    .el-col-sm-pull-8 {
+        position: relative;
+        right: 33.33333%
+    }
+
+    .el-col-sm-push-8 {
+        position: relative;
+        left: 33.33333%
+    }
+
+    .el-col-sm-9 {
+        width: 37.5%
+    }
+
+    .el-col-sm-offset-9 {
+        margin-left: 37.5%
+    }
+
+    .el-col-sm-pull-9 {
+        position: relative;
+        right: 37.5%
+    }
+
+    .el-col-sm-push-9 {
+        position: relative;
+        left: 37.5%
+    }
+
+    .el-col-sm-10 {
+        width: 41.66667%
+    }
+
+    .el-col-sm-offset-10 {
+        margin-left: 41.66667%
+    }
+
+    .el-col-sm-pull-10 {
+        position: relative;
+        right: 41.66667%
+    }
+
+    .el-col-sm-push-10 {
+        position: relative;
+        left: 41.66667%
+    }
+
+    .el-col-sm-11 {
+        width: 45.83333%
+    }
+
+    .el-col-sm-offset-11 {
+        margin-left: 45.83333%
+    }
+
+    .el-col-sm-pull-11 {
+        position: relative;
+        right: 45.83333%
+    }
+
+    .el-col-sm-push-11 {
+        position: relative;
+        left: 45.83333%
+    }
+
+    .el-col-sm-12 {
+        width: 50%
+    }
+
+    .el-col-sm-offset-12 {
+        margin-left: 50%
+    }
+
+    .el-col-sm-pull-12 {
+        position: relative;
+        right: 50%
+    }
+
+    .el-col-sm-push-12 {
+        position: relative;
+        left: 50%
+    }
+
+    .el-col-sm-13 {
+        width: 54.16667%
+    }
+
+    .el-col-sm-offset-13 {
+        margin-left: 54.16667%
+    }
+
+    .el-col-sm-pull-13 {
+        position: relative;
+        right: 54.16667%
+    }
+
+    .el-col-sm-push-13 {
+        position: relative;
+        left: 54.16667%
+    }
+
+    .el-col-sm-14 {
+        width: 58.33333%
+    }
+
+    .el-col-sm-offset-14 {
+        margin-left: 58.33333%
+    }
+
+    .el-col-sm-pull-14 {
+        position: relative;
+        right: 58.33333%
+    }
+
+    .el-col-sm-push-14 {
+        position: relative;
+        left: 58.33333%
+    }
+
+    .el-col-sm-15 {
+        width: 62.5%
+    }
+
+    .el-col-sm-offset-15 {
+        margin-left: 62.5%
+    }
+
+    .el-col-sm-pull-15 {
+        position: relative;
+        right: 62.5%
+    }
+
+    .el-col-sm-push-15 {
+        position: relative;
+        left: 62.5%
+    }
+
+    .el-col-sm-16 {
+        width: 66.66667%
+    }
+
+    .el-col-sm-offset-16 {
+        margin-left: 66.66667%
+    }
+
+    .el-col-sm-pull-16 {
+        position: relative;
+        right: 66.66667%
+    }
+
+    .el-col-sm-push-16 {
+        position: relative;
+        left: 66.66667%
+    }
+
+    .el-col-sm-17 {
+        width: 70.83333%
+    }
+
+    .el-col-sm-offset-17 {
+        margin-left: 70.83333%
+    }
+
+    .el-col-sm-pull-17 {
+        position: relative;
+        right: 70.83333%
+    }
+
+    .el-col-sm-push-17 {
+        position: relative;
+        left: 70.83333%
+    }
+
+    .el-col-sm-18 {
+        width: 75%
+    }
+
+    .el-col-sm-offset-18 {
+        margin-left: 75%
+    }
+
+    .el-col-sm-pull-18 {
+        position: relative;
+        right: 75%
+    }
+
+    .el-col-sm-push-18 {
+        position: relative;
+        left: 75%
+    }
+
+    .el-col-sm-19 {
+        width: 79.16667%
+    }
+
+    .el-col-sm-offset-19 {
+        margin-left: 79.16667%
+    }
+
+    .el-col-sm-pull-19 {
+        position: relative;
+        right: 79.16667%
+    }
+
+    .el-col-sm-push-19 {
+        position: relative;
+        left: 79.16667%
+    }
+
+    .el-col-sm-20 {
+        width: 83.33333%
+    }
+
+    .el-col-sm-offset-20 {
+        margin-left: 83.33333%
+    }
+
+    .el-col-sm-pull-20 {
+        position: relative;
+        right: 83.33333%
+    }
+
+    .el-col-sm-push-20 {
+        position: relative;
+        left: 83.33333%
+    }
+
+    .el-col-sm-21 {
+        width: 87.5%
+    }
+
+    .el-col-sm-offset-21 {
+        margin-left: 87.5%
+    }
+
+    .el-col-sm-pull-21 {
+        position: relative;
+        right: 87.5%
+    }
+
+    .el-col-sm-push-21 {
+        position: relative;
+        left: 87.5%
+    }
+
+    .el-col-sm-22 {
+        width: 91.66667%
+    }
+
+    .el-col-sm-offset-22 {
+        margin-left: 91.66667%
+    }
+
+    .el-col-sm-pull-22 {
+        position: relative;
+        right: 91.66667%
+    }
+
+    .el-col-sm-push-22 {
+        position: relative;
+        left: 91.66667%
+    }
+
+    .el-col-sm-23 {
+        width: 95.83333%
+    }
+
+    .el-col-sm-offset-23 {
+        margin-left: 95.83333%
+    }
+
+    .el-col-sm-pull-23 {
+        position: relative;
+        right: 95.83333%
+    }
+
+    .el-col-sm-push-23 {
+        position: relative;
+        left: 95.83333%
+    }
+
+    .el-col-sm-24 {
+        width: 100%
+    }
+
+    .el-col-sm-offset-24 {
+        margin-left: 100%
+    }
+
+    .el-col-sm-pull-24 {
+        position: relative;
+        right: 100%
+    }
+
+    .el-col-sm-push-24 {
+        position: relative;
+        left: 100%
+    }
+}
+
+@media only screen and (min-width: 992px) {
+    .el-col-md-0 {
+        display: none;
+        width: 0%
+    }
+
+    .el-col-md-offset-0 {
+        margin-left: 0
+    }
+
+    .el-col-md-pull-0 {
+        position: relative;
+        right: 0
+    }
+
+    .el-col-md-push-0 {
+        position: relative;
+        left: 0
+    }
+
+    .el-col-md-1 {
+        width: 4.16667%
+    }
+
+    .el-col-md-offset-1 {
+        margin-left: 4.16667%
+    }
+
+    .el-col-md-pull-1 {
+        position: relative;
+        right: 4.16667%
+    }
+
+    .el-col-md-push-1 {
+        position: relative;
+        left: 4.16667%
+    }
+
+    .el-col-md-2 {
+        width: 8.33333%
+    }
+
+    .el-col-md-offset-2 {
+        margin-left: 8.33333%
+    }
+
+    .el-col-md-pull-2 {
+        position: relative;
+        right: 8.33333%
+    }
+
+    .el-col-md-push-2 {
+        position: relative;
+        left: 8.33333%
+    }
+
+    .el-col-md-3 {
+        width: 12.5%
+    }
+
+    .el-col-md-offset-3 {
+        margin-left: 12.5%
+    }
+
+    .el-col-md-pull-3 {
+        position: relative;
+        right: 12.5%
+    }
+
+    .el-col-md-push-3 {
+        position: relative;
+        left: 12.5%
+    }
+
+    .el-col-md-4 {
+        width: 16.66667%
+    }
+
+    .el-col-md-offset-4 {
+        margin-left: 16.66667%
+    }
+
+    .el-col-md-pull-4 {
+        position: relative;
+        right: 16.66667%
+    }
+
+    .el-col-md-push-4 {
+        position: relative;
+        left: 16.66667%
+    }
+
+    .el-col-md-5 {
+        width: 20.83333%
+    }
+
+    .el-col-md-offset-5 {
+        margin-left: 20.83333%
+    }
+
+    .el-col-md-pull-5 {
+        position: relative;
+        right: 20.83333%
+    }
+
+    .el-col-md-push-5 {
+        position: relative;
+        left: 20.83333%
+    }
+
+    .el-col-md-6 {
+        width: 25%
+    }
+
+    .el-col-md-offset-6 {
+        margin-left: 25%
+    }
+
+    .el-col-md-pull-6 {
+        position: relative;
+        right: 25%
+    }
+
+    .el-col-md-push-6 {
+        position: relative;
+        left: 25%
+    }
+
+    .el-col-md-7 {
+        width: 29.16667%
+    }
+
+    .el-col-md-offset-7 {
+        margin-left: 29.16667%
+    }
+
+    .el-col-md-pull-7 {
+        position: relative;
+        right: 29.16667%
+    }
+
+    .el-col-md-push-7 {
+        position: relative;
+        left: 29.16667%
+    }
+
+    .el-col-md-8 {
+        width: 33.33333%
+    }
+
+    .el-col-md-offset-8 {
+        margin-left: 33.33333%
+    }
+
+    .el-col-md-pull-8 {
+        position: relative;
+        right: 33.33333%
+    }
+
+    .el-col-md-push-8 {
+        position: relative;
+        left: 33.33333%
+    }
+
+    .el-col-md-9 {
+        width: 37.5%
+    }
+
+    .el-col-md-offset-9 {
+        margin-left: 37.5%
+    }
+
+    .el-col-md-pull-9 {
+        position: relative;
+        right: 37.5%
+    }
+
+    .el-col-md-push-9 {
+        position: relative;
+        left: 37.5%
+    }
+
+    .el-col-md-10 {
+        width: 41.66667%
+    }
+
+    .el-col-md-offset-10 {
+        margin-left: 41.66667%
+    }
+
+    .el-col-md-pull-10 {
+        position: relative;
+        right: 41.66667%
+    }
+
+    .el-col-md-push-10 {
+        position: relative;
+        left: 41.66667%
+    }
+
+    .el-col-md-11 {
+        width: 45.83333%
+    }
+
+    .el-col-md-offset-11 {
+        margin-left: 45.83333%
+    }
+
+    .el-col-md-pull-11 {
+        position: relative;
+        right: 45.83333%
+    }
+
+    .el-col-md-push-11 {
+        position: relative;
+        left: 45.83333%
+    }
+
+    .el-col-md-12 {
+        width: 50%
+    }
+
+    .el-col-md-offset-12 {
+        margin-left: 50%
+    }
+
+    .el-col-md-pull-12 {
+        position: relative;
+        right: 50%
+    }
+
+    .el-col-md-push-12 {
+        position: relative;
+        left: 50%
+    }
+
+    .el-col-md-13 {
+        width: 54.16667%
+    }
+
+    .el-col-md-offset-13 {
+        margin-left: 54.16667%
+    }
+
+    .el-col-md-pull-13 {
+        position: relative;
+        right: 54.16667%
+    }
+
+    .el-col-md-push-13 {
+        position: relative;
+        left: 54.16667%
+    }
+
+    .el-col-md-14 {
+        width: 58.33333%
+    }
+
+    .el-col-md-offset-14 {
+        margin-left: 58.33333%
+    }
+
+    .el-col-md-pull-14 {
+        position: relative;
+        right: 58.33333%
+    }
+
+    .el-col-md-push-14 {
+        position: relative;
+        left: 58.33333%
+    }
+
+    .el-col-md-15 {
+        width: 62.5%
+    }
+
+    .el-col-md-offset-15 {
+        margin-left: 62.5%
+    }
+
+    .el-col-md-pull-15 {
+        position: relative;
+        right: 62.5%
+    }
+
+    .el-col-md-push-15 {
+        position: relative;
+        left: 62.5%
+    }
+
+    .el-col-md-16 {
+        width: 66.66667%
+    }
+
+    .el-col-md-offset-16 {
+        margin-left: 66.66667%
+    }
+
+    .el-col-md-pull-16 {
+        position: relative;
+        right: 66.66667%
+    }
+
+    .el-col-md-push-16 {
+        position: relative;
+        left: 66.66667%
+    }
+
+    .el-col-md-17 {
+        width: 70.83333%
+    }
+
+    .el-col-md-offset-17 {
+        margin-left: 70.83333%
+    }
+
+    .el-col-md-pull-17 {
+        position: relative;
+        right: 70.83333%
+    }
+
+    .el-col-md-push-17 {
+        position: relative;
+        left: 70.83333%
+    }
+
+    .el-col-md-18 {
+        width: 75%
+    }
+
+    .el-col-md-offset-18 {
+        margin-left: 75%
+    }
+
+    .el-col-md-pull-18 {
+        position: relative;
+        right: 75%
+    }
+
+    .el-col-md-push-18 {
+        position: relative;
+        left: 75%
+    }
+
+    .el-col-md-19 {
+        width: 79.16667%
+    }
+
+    .el-col-md-offset-19 {
+        margin-left: 79.16667%
+    }
+
+    .el-col-md-pull-19 {
+        position: relative;
+        right: 79.16667%
+    }
+
+    .el-col-md-push-19 {
+        position: relative;
+        left: 79.16667%
+    }
+
+    .el-col-md-20 {
+        width: 83.33333%
+    }
+
+    .el-col-md-offset-20 {
+        margin-left: 83.33333%
+    }
+
+    .el-col-md-pull-20 {
+        position: relative;
+        right: 83.33333%
+    }
+
+    .el-col-md-push-20 {
+        position: relative;
+        left: 83.33333%
+    }
+
+    .el-col-md-21 {
+        width: 87.5%
+    }
+
+    .el-col-md-offset-21 {
+        margin-left: 87.5%
+    }
+
+    .el-col-md-pull-21 {
+        position: relative;
+        right: 87.5%
+    }
+
+    .el-col-md-push-21 {
+        position: relative;
+        left: 87.5%
+    }
+
+    .el-col-md-22 {
+        width: 91.66667%
+    }
+
+    .el-col-md-offset-22 {
+        margin-left: 91.66667%
+    }
+
+    .el-col-md-pull-22 {
+        position: relative;
+        right: 91.66667%
+    }
+
+    .el-col-md-push-22 {
+        position: relative;
+        left: 91.66667%
+    }
+
+    .el-col-md-23 {
+        width: 95.83333%
+    }
+
+    .el-col-md-offset-23 {
+        margin-left: 95.83333%
+    }
+
+    .el-col-md-pull-23 {
+        position: relative;
+        right: 95.83333%
+    }
+
+    .el-col-md-push-23 {
+        position: relative;
+        left: 95.83333%
+    }
+
+    .el-col-md-24 {
+        width: 100%
+    }
+
+    .el-col-md-offset-24 {
+        margin-left: 100%
+    }
+
+    .el-col-md-pull-24 {
+        position: relative;
+        right: 100%
+    }
+
+    .el-col-md-push-24 {
+        position: relative;
+        left: 100%
+    }
+}
+
+@media only screen and (min-width: 1200px) {
+    .el-col-lg-0 {
+        display: none;
+        width: 0%
+    }
+
+    .el-col-lg-offset-0 {
+        margin-left: 0
+    }
+
+    .el-col-lg-pull-0 {
+        position: relative;
+        right: 0
+    }
+
+    .el-col-lg-push-0 {
+        position: relative;
+        left: 0
+    }
+
+    .el-col-lg-1 {
+        width: 4.16667%
+    }
+
+    .el-col-lg-offset-1 {
+        margin-left: 4.16667%
+    }
+
+    .el-col-lg-pull-1 {
+        position: relative;
+        right: 4.16667%
+    }
+
+    .el-col-lg-push-1 {
+        position: relative;
+        left: 4.16667%
+    }
+
+    .el-col-lg-2 {
+        width: 8.33333%
+    }
+
+    .el-col-lg-offset-2 {
+        margin-left: 8.33333%
+    }
+
+    .el-col-lg-pull-2 {
+        position: relative;
+        right: 8.33333%
+    }
+
+    .el-col-lg-push-2 {
+        position: relative;
+        left: 8.33333%
+    }
+
+    .el-col-lg-3 {
+        width: 12.5%
+    }
+
+    .el-col-lg-offset-3 {
+        margin-left: 12.5%
+    }
+
+    .el-col-lg-pull-3 {
+        position: relative;
+        right: 12.5%
+    }
+
+    .el-col-lg-push-3 {
+        position: relative;
+        left: 12.5%
+    }
+
+    .el-col-lg-4 {
+        width: 16.66667%
+    }
+
+    .el-col-lg-offset-4 {
+        margin-left: 16.66667%
+    }
+
+    .el-col-lg-pull-4 {
+        position: relative;
+        right: 16.66667%
+    }
+
+    .el-col-lg-push-4 {
+        position: relative;
+        left: 16.66667%
+    }
+
+    .el-col-lg-5 {
+        width: 20.83333%
+    }
+
+    .el-col-lg-offset-5 {
+        margin-left: 20.83333%
+    }
+
+    .el-col-lg-pull-5 {
+        position: relative;
+        right: 20.83333%
+    }
+
+    .el-col-lg-push-5 {
+        position: relative;
+        left: 20.83333%
+    }
+
+    .el-col-lg-6 {
+        width: 25%
+    }
+
+    .el-col-lg-offset-6 {
+        margin-left: 25%
+    }
+
+    .el-col-lg-pull-6 {
+        position: relative;
+        right: 25%
+    }
+
+    .el-col-lg-push-6 {
+        position: relative;
+        left: 25%
+    }
+
+    .el-col-lg-7 {
+        width: 29.16667%
+    }
+
+    .el-col-lg-offset-7 {
+        margin-left: 29.16667%
+    }
+
+    .el-col-lg-pull-7 {
+        position: relative;
+        right: 29.16667%
+    }
+
+    .el-col-lg-push-7 {
+        position: relative;
+        left: 29.16667%
+    }
+
+    .el-col-lg-8 {
+        width: 33.33333%
+    }
+
+    .el-col-lg-offset-8 {
+        margin-left: 33.33333%
+    }
+
+    .el-col-lg-pull-8 {
+        position: relative;
+        right: 33.33333%
+    }
+
+    .el-col-lg-push-8 {
+        position: relative;
+        left: 33.33333%
+    }
+
+    .el-col-lg-9 {
+        width: 37.5%
+    }
+
+    .el-col-lg-offset-9 {
+        margin-left: 37.5%
+    }
+
+    .el-col-lg-pull-9 {
+        position: relative;
+        right: 37.5%
+    }
+
+    .el-col-lg-push-9 {
+        position: relative;
+        left: 37.5%
+    }
+
+    .el-col-lg-10 {
+        width: 41.66667%
+    }
+
+    .el-col-lg-offset-10 {
+        margin-left: 41.66667%
+    }
+
+    .el-col-lg-pull-10 {
+        position: relative;
+        right: 41.66667%
+    }
+
+    .el-col-lg-push-10 {
+        position: relative;
+        left: 41.66667%
+    }
+
+    .el-col-lg-11 {
+        width: 45.83333%
+    }
+
+    .el-col-lg-offset-11 {
+        margin-left: 45.83333%
+    }
+
+    .el-col-lg-pull-11 {
+        position: relative;
+        right: 45.83333%
+    }
+
+    .el-col-lg-push-11 {
+        position: relative;
+        left: 45.83333%
+    }
+
+    .el-col-lg-12 {
+        width: 50%
+    }
+
+    .el-col-lg-offset-12 {
+        margin-left: 50%
+    }
+
+    .el-col-lg-pull-12 {
+        position: relative;
+        right: 50%
+    }
+
+    .el-col-lg-push-12 {
+        position: relative;
+        left: 50%
+    }
+
+    .el-col-lg-13 {
+        width: 54.16667%
+    }
+
+    .el-col-lg-offset-13 {
+        margin-left: 54.16667%
+    }
+
+    .el-col-lg-pull-13 {
+        position: relative;
+        right: 54.16667%
+    }
+
+    .el-col-lg-push-13 {
+        position: relative;
+        left: 54.16667%
+    }
+
+    .el-col-lg-14 {
+        width: 58.33333%
+    }
+
+    .el-col-lg-offset-14 {
+        margin-left: 58.33333%
+    }
+
+    .el-col-lg-pull-14 {
+        position: relative;
+        right: 58.33333%
+    }
+
+    .el-col-lg-push-14 {
+        position: relative;
+        left: 58.33333%
+    }
+
+    .el-col-lg-15 {
+        width: 62.5%
+    }
+
+    .el-col-lg-offset-15 {
+        margin-left: 62.5%
+    }
+
+    .el-col-lg-pull-15 {
+        position: relative;
+        right: 62.5%
+    }
+
+    .el-col-lg-push-15 {
+        position: relative;
+        left: 62.5%
+    }
+
+    .el-col-lg-16 {
+        width: 66.66667%
+    }
+
+    .el-col-lg-offset-16 {
+        margin-left: 66.66667%
+    }
+
+    .el-col-lg-pull-16 {
+        position: relative;
+        right: 66.66667%
+    }
+
+    .el-col-lg-push-16 {
+        position: relative;
+        left: 66.66667%
+    }
+
+    .el-col-lg-17 {
+        width: 70.83333%
+    }
+
+    .el-col-lg-offset-17 {
+        margin-left: 70.83333%
+    }
+
+    .el-col-lg-pull-17 {
+        position: relative;
+        right: 70.83333%
+    }
+
+    .el-col-lg-push-17 {
+        position: relative;
+        left: 70.83333%
+    }
+
+    .el-col-lg-18 {
+        width: 75%
+    }
+
+    .el-col-lg-offset-18 {
+        margin-left: 75%
+    }
+
+    .el-col-lg-pull-18 {
+        position: relative;
+        right: 75%
+    }
+
+    .el-col-lg-push-18 {
+        position: relative;
+        left: 75%
+    }
+
+    .el-col-lg-19 {
+        width: 79.16667%
+    }
+
+    .el-col-lg-offset-19 {
+        margin-left: 79.16667%
+    }
+
+    .el-col-lg-pull-19 {
+        position: relative;
+        right: 79.16667%
+    }
+
+    .el-col-lg-push-19 {
+        position: relative;
+        left: 79.16667%
+    }
+
+    .el-col-lg-20 {
+        width: 83.33333%
+    }
+
+    .el-col-lg-offset-20 {
+        margin-left: 83.33333%
+    }
+
+    .el-col-lg-pull-20 {
+        position: relative;
+        right: 83.33333%
+    }
+
+    .el-col-lg-push-20 {
+        position: relative;
+        left: 83.33333%
+    }
+
+    .el-col-lg-21 {
+        width: 87.5%
+    }
+
+    .el-col-lg-offset-21 {
+        margin-left: 87.5%
+    }
+
+    .el-col-lg-pull-21 {
+        position: relative;
+        right: 87.5%
+    }
+
+    .el-col-lg-push-21 {
+        position: relative;
+        left: 87.5%
+    }
+
+    .el-col-lg-22 {
+        width: 91.66667%
+    }
+
+    .el-col-lg-offset-22 {
+        margin-left: 91.66667%
+    }
+
+    .el-col-lg-pull-22 {
+        position: relative;
+        right: 91.66667%
+    }
+
+    .el-col-lg-push-22 {
+        position: relative;
+        left: 91.66667%
+    }
+
+    .el-col-lg-23 {
+        width: 95.83333%
+    }
+
+    .el-col-lg-offset-23 {
+        margin-left: 95.83333%
+    }
+
+    .el-col-lg-pull-23 {
+        position: relative;
+        right: 95.83333%
+    }
+
+    .el-col-lg-push-23 {
+        position: relative;
+        left: 95.83333%
+    }
+
+    .el-col-lg-24 {
+        width: 100%
+    }
+
+    .el-col-lg-offset-24 {
+        margin-left: 100%
+    }
+
+    .el-col-lg-pull-24 {
+        position: relative;
+        right: 100%
+    }
+
+    .el-col-lg-push-24 {
+        position: relative;
+        left: 100%
+    }
+}
+
+@media only screen and (min-width: 1920px) {
+    .el-col-xl-0 {
+        display: none;
+        width: 0%
+    }
+
+    .el-col-xl-offset-0 {
+        margin-left: 0
+    }
+
+    .el-col-xl-pull-0 {
+        position: relative;
+        right: 0
+    }
+
+    .el-col-xl-push-0 {
+        position: relative;
+        left: 0
+    }
+
+    .el-col-xl-1 {
+        width: 4.16667%
+    }
+
+    .el-col-xl-offset-1 {
+        margin-left: 4.16667%
+    }
+
+    .el-col-xl-pull-1 {
+        position: relative;
+        right: 4.16667%
+    }
+
+    .el-col-xl-push-1 {
+        position: relative;
+        left: 4.16667%
+    }
+
+    .el-col-xl-2 {
+        width: 8.33333%
+    }
+
+    .el-col-xl-offset-2 {
+        margin-left: 8.33333%
+    }
+
+    .el-col-xl-pull-2 {
+        position: relative;
+        right: 8.33333%
+    }
+
+    .el-col-xl-push-2 {
+        position: relative;
+        left: 8.33333%
+    }
+
+    .el-col-xl-3 {
+        width: 12.5%
+    }
+
+    .el-col-xl-offset-3 {
+        margin-left: 12.5%
+    }
+
+    .el-col-xl-pull-3 {
+        position: relative;
+        right: 12.5%
+    }
+
+    .el-col-xl-push-3 {
+        position: relative;
+        left: 12.5%
+    }
+
+    .el-col-xl-4 {
+        width: 16.66667%
+    }
+
+    .el-col-xl-offset-4 {
+        margin-left: 16.66667%
+    }
+
+    .el-col-xl-pull-4 {
+        position: relative;
+        right: 16.66667%
+    }
+
+    .el-col-xl-push-4 {
+        position: relative;
+        left: 16.66667%
+    }
+
+    .el-col-xl-5 {
+        width: 20.83333%
+    }
+
+    .el-col-xl-offset-5 {
+        margin-left: 20.83333%
+    }
+
+    .el-col-xl-pull-5 {
+        position: relative;
+        right: 20.83333%
+    }
+
+    .el-col-xl-push-5 {
+        position: relative;
+        left: 20.83333%
+    }
+
+    .el-col-xl-6 {
+        width: 25%
+    }
+
+    .el-col-xl-offset-6 {
+        margin-left: 25%
+    }
+
+    .el-col-xl-pull-6 {
+        position: relative;
+        right: 25%
+    }
+
+    .el-col-xl-push-6 {
+        position: relative;
+        left: 25%
+    }
+
+    .el-col-xl-7 {
+        width: 29.16667%
+    }
+
+    .el-col-xl-offset-7 {
+        margin-left: 29.16667%
+    }
+
+    .el-col-xl-pull-7 {
+        position: relative;
+        right: 29.16667%
+    }
+
+    .el-col-xl-push-7 {
+        position: relative;
+        left: 29.16667%
+    }
+
+    .el-col-xl-8 {
+        width: 33.33333%
+    }
+
+    .el-col-xl-offset-8 {
+        margin-left: 33.33333%
+    }
+
+    .el-col-xl-pull-8 {
+        position: relative;
+        right: 33.33333%
+    }
+
+    .el-col-xl-push-8 {
+        position: relative;
+        left: 33.33333%
+    }
+
+    .el-col-xl-9 {
+        width: 37.5%
+    }
+
+    .el-col-xl-offset-9 {
+        margin-left: 37.5%
+    }
+
+    .el-col-xl-pull-9 {
+        position: relative;
+        right: 37.5%
+    }
+
+    .el-col-xl-push-9 {
+        position: relative;
+        left: 37.5%
+    }
+
+    .el-col-xl-10 {
+        width: 41.66667%
+    }
+
+    .el-col-xl-offset-10 {
+        margin-left: 41.66667%
+    }
+
+    .el-col-xl-pull-10 {
+        position: relative;
+        right: 41.66667%
+    }
+
+    .el-col-xl-push-10 {
+        position: relative;
+        left: 41.66667%
+    }
+
+    .el-col-xl-11 {
+        width: 45.83333%
+    }
+
+    .el-col-xl-offset-11 {
+        margin-left: 45.83333%
+    }
+
+    .el-col-xl-pull-11 {
+        position: relative;
+        right: 45.83333%
+    }
+
+    .el-col-xl-push-11 {
+        position: relative;
+        left: 45.83333%
+    }
+
+    .el-col-xl-12 {
+        width: 50%
+    }
+
+    .el-col-xl-offset-12 {
+        margin-left: 50%
+    }
+
+    .el-col-xl-pull-12 {
+        position: relative;
+        right: 50%
+    }
+
+    .el-col-xl-push-12 {
+        position: relative;
+        left: 50%
+    }
+
+    .el-col-xl-13 {
+        width: 54.16667%
+    }
+
+    .el-col-xl-offset-13 {
+        margin-left: 54.16667%
+    }
+
+    .el-col-xl-pull-13 {
+        position: relative;
+        right: 54.16667%
+    }
+
+    .el-col-xl-push-13 {
+        position: relative;
+        left: 54.16667%
+    }
+
+    .el-col-xl-14 {
+        width: 58.33333%
+    }
+
+    .el-col-xl-offset-14 {
+        margin-left: 58.33333%
+    }
+
+    .el-col-xl-pull-14 {
+        position: relative;
+        right: 58.33333%
+    }
+
+    .el-col-xl-push-14 {
+        position: relative;
+        left: 58.33333%
+    }
+
+    .el-col-xl-15 {
+        width: 62.5%
+    }
+
+    .el-col-xl-offset-15 {
+        margin-left: 62.5%
+    }
+
+    .el-col-xl-pull-15 {
+        position: relative;
+        right: 62.5%
+    }
+
+    .el-col-xl-push-15 {
+        position: relative;
+        left: 62.5%
+    }
+
+    .el-col-xl-16 {
+        width: 66.66667%
+    }
+
+    .el-col-xl-offset-16 {
+        margin-left: 66.66667%
+    }
+
+    .el-col-xl-pull-16 {
+        position: relative;
+        right: 66.66667%
+    }
+
+    .el-col-xl-push-16 {
+        position: relative;
+        left: 66.66667%
+    }
+
+    .el-col-xl-17 {
+        width: 70.83333%
+    }
+
+    .el-col-xl-offset-17 {
+        margin-left: 70.83333%
+    }
+
+    .el-col-xl-pull-17 {
+        position: relative;
+        right: 70.83333%
+    }
+
+    .el-col-xl-push-17 {
+        position: relative;
+        left: 70.83333%
+    }
+
+    .el-col-xl-18 {
+        width: 75%
+    }
+
+    .el-col-xl-offset-18 {
+        margin-left: 75%
+    }
+
+    .el-col-xl-pull-18 {
+        position: relative;
+        right: 75%
+    }
+
+    .el-col-xl-push-18 {
+        position: relative;
+        left: 75%
+    }
+
+    .el-col-xl-19 {
+        width: 79.16667%
+    }
+
+    .el-col-xl-offset-19 {
+        margin-left: 79.16667%
+    }
+
+    .el-col-xl-pull-19 {
+        position: relative;
+        right: 79.16667%
+    }
+
+    .el-col-xl-push-19 {
+        position: relative;
+        left: 79.16667%
+    }
+
+    .el-col-xl-20 {
+        width: 83.33333%
+    }
+
+    .el-col-xl-offset-20 {
+        margin-left: 83.33333%
+    }
+
+    .el-col-xl-pull-20 {
+        position: relative;
+        right: 83.33333%
+    }
+
+    .el-col-xl-push-20 {
+        position: relative;
+        left: 83.33333%
+    }
+
+    .el-col-xl-21 {
+        width: 87.5%
+    }
+
+    .el-col-xl-offset-21 {
+        margin-left: 87.5%
+    }
+
+    .el-col-xl-pull-21 {
+        position: relative;
+        right: 87.5%
+    }
+
+    .el-col-xl-push-21 {
+        position: relative;
+        left: 87.5%
+    }
+
+    .el-col-xl-22 {
+        width: 91.66667%
+    }
+
+    .el-col-xl-offset-22 {
+        margin-left: 91.66667%
+    }
+
+    .el-col-xl-pull-22 {
+        position: relative;
+        right: 91.66667%
+    }
+
+    .el-col-xl-push-22 {
+        position: relative;
+        left: 91.66667%
+    }
+
+    .el-col-xl-23 {
+        width: 95.83333%
+    }
+
+    .el-col-xl-offset-23 {
+        margin-left: 95.83333%
+    }
+
+    .el-col-xl-pull-23 {
+        position: relative;
+        right: 95.83333%
+    }
+
+    .el-col-xl-push-23 {
+        position: relative;
+        left: 95.83333%
+    }
+
+    .el-col-xl-24 {
+        width: 100%
+    }
+
+    .el-col-xl-offset-24 {
+        margin-left: 100%
+    }
+
+    .el-col-xl-pull-24 {
+        position: relative;
+        right: 100%
+    }
+
+    .el-col-xl-push-24 {
+        position: relative;
+        left: 100%
+    }
+}
+
+@-webkit-keyframes progress {
+    0% {
+        background-position: 0 0
+    }
+    100% {
+        background-position: 32px 0
+    }
+}
+
+.el-upload {
+    display: inline-block;
+    text-align: center;
+    cursor: pointer;
+    outline: 0
+}
+
+.el-upload__input {
+    display: none
+}
+
+.el-upload__tip {
+    font-size: 12px;
+    color: #606266;
+    margin-top: 7px
+}
+
+.el-upload iframe {
+    position: absolute;
+    z-index: -1;
+    top: 0;
+    left: 0;
+    opacity: 0;
+    filter: alpha(opacity=0)
+}
+
+.el-upload--picture-card {
+    background-color: #fbfdff;
+    border: 1px dashed #c0ccda;
+    border-radius: 6px;
+    box-sizing: border-box;
+    width: 148px;
+    height: 148px;
+    line-height: 146px;
+    vertical-align: top
+}
+
+.el-upload--picture-card i {
+    font-size: 28px;
+    color: #8c939d
+}
+
+.el-upload--picture-card:hover, .el-upload:focus {
+    border-color: #409EFF;
+    color: #409EFF
+}
+
+.el-upload:focus .el-upload-dragger {
+    border-color: #409EFF
+}
+
+.el-upload-dragger {
+    background-color: #fff;
+    border: 1px dashed #d9d9d9;
+    border-radius: 6px;
+    box-sizing: border-box;
+    width: 360px;
+    height: 180px;
+    text-align: center;
+    position: relative;
+    overflow: hidden
+}
+
+.el-upload-dragger .el-icon-upload {
+    font-size: 67px;
+    color: #C0C4CC;
+    margin: 40px 0 16px;
+    line-height: 50px
+}
+
+.el-upload-dragger + .el-upload__tip {
+    text-align: center
+}
+
+.el-upload-dragger ~ .el-upload__files {
+    border-top: 1px solid #DCDFE6;
+    margin-top: 7px;
+    padding-top: 5px
+}
+
+.el-upload-dragger .el-upload__text {
+    color: #606266;
+    font-size: 14px;
+    text-align: center
+}
+
+.el-upload-dragger .el-upload__text em {
+    color: #409EFF;
+    font-style: normal
+}
+
+.el-upload-dragger:hover {
+    border-color: #409EFF
+}
+
+.el-upload-dragger.is-dragover {
+    background-color: rgba(32, 159, 255, .06);
+    border: 2px dashed #409EFF
+}
+
+.el-upload-list {
+    margin: 0;
+    padding: 0;
+    list-style: none
+}
+
+.el-upload-list__item {
+    -webkit-transition: all .5s cubic-bezier(.55, 0, .1, 1);
+    transition: all .5s cubic-bezier(.55, 0, .1, 1);
+    font-size: 14px;
+    color: #606266;
+    line-height: 1.8;
+    margin-top: 5px;
+    position: relative;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    border-radius: 4px;
+    width: 100%
+}
+
+.el-upload-list__item .el-progress {
+    position: absolute;
+    top: 20px;
+    width: 100%
+}
+
+.el-upload-list__item .el-progress__text {
+    position: absolute;
+    right: 0;
+    top: -13px
+}
+
+.el-upload-list__item .el-progress-bar {
+    margin-right: 0;
+    padding-right: 0
+}
+
+.el-upload-list__item:first-child {
+    margin-top: 10px
+}
+
+.el-upload-list__item .el-icon-upload-success {
+    color: #67C23A
+}
+
+.el-upload-list__item .el-icon-close {
+    display: none;
+    position: absolute;
+    top: 5px;
+    right: 5px;
+    cursor: pointer;
+    opacity: .75;
+    color: #606266
+}
+
+.el-upload-list__item .el-icon-close:hover {
+    opacity: 1
+}
+
+.el-upload-list__item .el-icon-close-tip {
+    display: none;
+    position: absolute;
+    top: 5px;
+    right: 5px;
+    font-size: 12px;
+    cursor: pointer;
+    opacity: 1;
+    color: #409EFF
+}
+
+.el-upload-list__item:hover {
+    background-color: #F5F7FA
+}
+
+.el-upload-list__item:hover .el-icon-close {
+    display: inline-block
+}
+
+.el-upload-list__item:hover .el-progress__text {
+    display: none
+}
+
+.el-upload-list__item.is-success .el-upload-list__item-status-label {
+    display: block
+}
+
+.el-upload-list__item.is-success .el-upload-list__item-name:focus, .el-upload-list__item.is-success .el-upload-list__item-name:hover {
+    color: #409EFF;
+    cursor: pointer
+}
+
+.el-upload-list__item.is-success:focus:not(:hover) .el-icon-close-tip {
+    display: inline-block
+}
+
+.el-upload-list__item.is-success:active .el-icon-close-tip, .el-upload-list__item.is-success:focus .el-upload-list__item-status-label, .el-upload-list__item.is-success:hover .el-upload-list__item-status-label, .el-upload-list__item.is-success:not(.focusing):focus .el-icon-close-tip {
+    display: none
+}
+
+.el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label {
+    display: block
+}
+
+.el-upload-list__item-name {
+    color: #606266;
+    display: block;
+    margin-right: 40px;
+    overflow: hidden;
+    padding-left: 4px;
+    text-overflow: ellipsis;
+    -webkit-transition: color .3s;
+    transition: color .3s;
+    white-space: nowrap
+}
+
+.el-upload-list__item-name [class^=el-icon] {
+    height: 100%;
+    margin-right: 7px;
+    color: #909399;
+    line-height: inherit
+}
+
+.el-upload-list__item-status-label {
+    position: absolute;
+    right: 5px;
+    top: 0;
+    line-height: inherit;
+    display: none
+}
+
+.el-upload-list__item-delete {
+    position: absolute;
+    right: 10px;
+    top: 0;
+    font-size: 12px;
+    color: #606266;
+    display: none
+}
+
+.el-upload-list__item-delete:hover {
+    color: #409EFF
+}
+
+.el-upload-list--picture-card {
+    margin: 0;
+    display: inline;
+    vertical-align: top
+}
+
+.el-upload-list--picture-card .el-upload-list__item {
+    overflow: hidden;
+    background-color: #fff;
+    border: 1px solid #c0ccda;
+    border-radius: 6px;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 148px;
+    height: 148px;
+    margin: 0 8px 8px 0;
+    display: inline-block
+}
+
+.el-upload-list--picture-card .el-upload-list__item .el-icon-check, .el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check {
+    color: #FFF
+}
+
+.el-upload-list--picture-card .el-upload-list__item .el-icon-close, .el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label {
+    display: none
+}
+
+.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text {
+    display: block
+}
+
+.el-upload-list--picture-card .el-upload-list__item-name {
+    display: none
+}
+
+.el-upload-list--picture-card .el-upload-list__item-thumbnail {
+    width: 100%;
+    height: 100%
+}
+
+.el-upload-list--picture-card .el-upload-list__item-status-label {
+    position: absolute;
+    right: -15px;
+    top: -6px;
+    width: 40px;
+    height: 24px;
+    background: #13ce66;
+    text-align: center;
+    -webkit-transform: rotate(45deg);
+    transform: rotate(45deg);
+    -webkit-box-shadow: 0 0 1pc 1px rgba(0, 0, 0, .2);
+    box-shadow: 0 0 1pc 1px rgba(0, 0, 0, .2)
+}
+
+.el-upload-list--picture-card .el-upload-list__item-status-label i {
+    font-size: 12px;
+    margin-top: 11px;
+    -webkit-transform: rotate(-45deg);
+    transform: rotate(-45deg)
+}
+
+.el-upload-list--picture-card .el-upload-list__item-actions {
+    position: absolute;
+    width: 100%;
+    height: 100%;
+    left: 0;
+    top: 0;
+    cursor: default;
+    text-align: center;
+    color: #fff;
+    opacity: 0;
+    font-size: 20px;
+    background-color: rgba(0, 0, 0, .5);
+    -webkit-transition: opacity .3s;
+    transition: opacity .3s
+}
+
+.el-upload-list--picture-card .el-upload-list__item-actions::after {
+    display: inline-block;
+    content: "";
+    height: 100%;
+    vertical-align: middle
+}
+
+.el-upload-list--picture-card .el-upload-list__item-actions span {
+    display: none;
+    cursor: pointer
+}
+
+.el-upload-list--picture-card .el-upload-list__item-actions span + span {
+    margin-left: 15px
+}
+
+.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete {
+    position: static;
+    font-size: inherit;
+    color: inherit
+}
+
+.el-upload-list--picture-card .el-upload-list__item-actions:hover {
+    opacity: 1
+}
+
+.el-upload-list--picture-card .el-upload-list__item-actions:hover span {
+    display: inline-block
+}
+
+.el-upload-list--picture-card .el-progress {
+    top: 50%;
+    left: 50%;
+    -webkit-transform: translate(-50%, -50%);
+    transform: translate(-50%, -50%);
+    bottom: auto;
+    width: 126px
+}
+
+.el-upload-list--picture-card .el-progress .el-progress__text {
+    top: 50%
+}
+
+.el-upload-list--picture .el-upload-list__item {
+    overflow: hidden;
+    z-index: 0;
+    background-color: #fff;
+    border: 1px solid #c0ccda;
+    border-radius: 6px;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin-top: 10px;
+    padding: 10px 10px 10px 90px;
+    height: 92px
+}
+
+.el-upload-list--picture .el-upload-list__item .el-icon-check, .el-upload-list--picture .el-upload-list__item .el-icon-circle-check {
+    color: #FFF
+}
+
+.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label {
+    background: 0 0;
+    -webkit-box-shadow: none;
+    box-shadow: none;
+    top: -2px;
+    right: -12px
+}
+
+.el-upload-list--picture .el-upload-list__item:hover .el-progress__text {
+    display: block
+}
+
+.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name {
+    line-height: 70px;
+    margin-top: 0
+}
+
+.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i {
+    display: none
+}
+
+.el-upload-list--picture .el-upload-list__item-thumbnail {
+    vertical-align: middle;
+    display: inline-block;
+    width: 70px;
+    height: 70px;
+    float: left;
+    position: relative;
+    z-index: 1;
+    margin-left: -80px;
+    background-color: #FFF
+}
+
+.el-upload-list--picture .el-upload-list__item-name {
+    display: block;
+    margin-top: 20px
+}
+
+.el-upload-list--picture .el-upload-list__item-name i {
+    font-size: 70px;
+    line-height: 1;
+    position: absolute;
+    left: 9px;
+    top: 10px
+}
+
+.el-upload-list--picture .el-upload-list__item-status-label {
+    position: absolute;
+    right: -17px;
+    top: -7px;
+    width: 46px;
+    height: 26px;
+    background: #13ce66;
+    text-align: center;
+    -webkit-transform: rotate(45deg);
+    transform: rotate(45deg);
+    -webkit-box-shadow: 0 1px 1px #ccc;
+    box-shadow: 0 1px 1px #ccc
+}
+
+.el-upload-list--picture .el-upload-list__item-status-label i {
+    font-size: 12px;
+    margin-top: 12px;
+    -webkit-transform: rotate(-45deg);
+    transform: rotate(-45deg)
+}
+
+.el-upload-list--picture .el-progress {
+    position: relative;
+    top: -7px
+}
+
+.el-upload-cover {
+    position: absolute;
+    left: 0;
+    top: 0;
+    width: 100%;
+    height: 100%;
+    overflow: hidden;
+    z-index: 10;
+    cursor: default
+}
+
+.el-upload-cover::after {
+    display: inline-block;
+    height: 100%;
+    vertical-align: middle
+}
+
+.el-upload-cover img {
+    display: block;
+    width: 100%;
+    height: 100%
+}
+
+.el-upload-cover__label {
+    position: absolute;
+    right: -15px;
+    top: -6px;
+    width: 40px;
+    height: 24px;
+    background: #13ce66;
+    text-align: center;
+    -webkit-transform: rotate(45deg);
+    transform: rotate(45deg);
+    -webkit-box-shadow: 0 0 1pc 1px rgba(0, 0, 0, .2);
+    box-shadow: 0 0 1pc 1px rgba(0, 0, 0, .2)
+}
+
+.el-upload-cover__label i {
+    font-size: 12px;
+    margin-top: 11px;
+    -webkit-transform: rotate(-45deg);
+    transform: rotate(-45deg);
+    color: #fff
+}
+
+.el-upload-cover__progress {
+    display: inline-block;
+    vertical-align: middle;
+    position: static;
+    width: 243px
+}
+
+.el-upload-cover__progress + .el-upload__inner {
+    opacity: 0
+}
+
+.el-upload-cover__content {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%
+}
+
+.el-upload-cover__interact {
+    position: absolute;
+    bottom: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    background-color: rgba(0, 0, 0, .72);
+    text-align: center
+}
+
+.el-upload-cover__interact .btn {
+    display: inline-block;
+    color: #FFF;
+    font-size: 14px;
+    cursor: pointer;
+    vertical-align: middle;
+    -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1);
+    transition: opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1);
+    transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1);
+    transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1);
+    margin-top: 60px
+}
+
+.el-upload-cover__interact .btn span {
+    opacity: 0;
+    -webkit-transition: opacity .15s linear;
+    transition: opacity .15s linear
+}
+
+.el-upload-cover__interact .btn:not(:first-child) {
+    margin-left: 35px
+}
+
+.el-upload-cover__interact .btn:hover {
+    -webkit-transform: translateY(-13px);
+    transform: translateY(-13px)
+}
+
+.el-upload-cover__interact .btn:hover span {
+    opacity: 1
+}
+
+.el-upload-cover__interact .btn i {
+    color: #FFF;
+    display: block;
+    font-size: 24px;
+    line-height: inherit;
+    margin: 0 auto 5px
+}
+
+.el-upload-cover__title {
+    position: absolute;
+    bottom: 0;
+    left: 0;
+    background-color: #FFF;
+    height: 36px;
+    width: 100%;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    font-weight: 400;
+    text-align: left;
+    padding: 0 10px;
+    margin: 0;
+    line-height: 36px;
+    font-size: 14px;
+    color: #303133
+}
+
+.el-upload-cover + .el-upload__inner {
+    opacity: 0;
+    position: relative;
+    z-index: 1
+}
+
+.el-progress {
+    position: relative;
+    line-height: 1
+}
+
+.el-progress__text {
+    font-size: 14px;
+    color: #606266;
+    display: inline-block;
+    vertical-align: middle;
+    margin-left: 10px;
+    line-height: 1
+}
+
+.el-progress__text i {
+    vertical-align: middle;
+    display: block
+}
+
+.el-progress--circle, .el-progress--dashboard {
+    display: inline-block
+}
+
+.el-progress--circle .el-progress__text, .el-progress--dashboard .el-progress__text {
+    position: absolute;
+    top: 50%;
+    left: 0;
+    width: 100%;
+    text-align: center;
+    margin: 0;
+    -webkit-transform: translate(0, -50%);
+    transform: translate(0, -50%)
+}
+
+.el-progress--circle .el-progress__text i, .el-progress--dashboard .el-progress__text i {
+    vertical-align: middle;
+    display: inline-block
+}
+
+.el-progress--without-text .el-progress__text {
+    display: none
+}
+
+.el-progress--without-text .el-progress-bar {
+    padding-right: 0;
+    margin-right: 0;
+    display: block
+}
+
+.el-progress-bar, .el-progress-bar__inner::after, .el-progress-bar__innerText, .el-spinner {
+    display: inline-block;
+    vertical-align: middle
+}
+
+.el-progress--text-inside .el-progress-bar {
+    padding-right: 0;
+    margin-right: 0
+}
+
+.el-progress.is-success .el-progress-bar__inner {
+    background-color: #67C23A
+}
+
+.el-progress.is-success .el-progress__text {
+    color: #67C23A
+}
+
+.el-progress.is-warning .el-progress-bar__inner {
+    background-color: #E6A23C
+}
+
+.el-progress.is-warning .el-progress__text {
+    color: #E6A23C
+}
+
+.el-progress.is-exception .el-progress-bar__inner {
+    background-color: #F56C6C
+}
+
+.el-progress.is-exception .el-progress__text {
+    color: #F56C6C
+}
+
+.el-progress-bar {
+    padding-right: 50px;
+    width: 100%;
+    margin-right: -55px;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+.el-progress-bar__outer {
+    height: 6px;
+    border-radius: 100px;
+    background-color: #EBEEF5;
+    overflow: hidden;
+    position: relative;
+    vertical-align: middle
+}
+
+.el-progress-bar__inner {
+    position: absolute;
+    left: 0;
+    top: 0;
+    height: 100%;
+    background-color: #409EFF;
+    text-align: right;
+    border-radius: 100px;
+    line-height: 1;
+    white-space: nowrap;
+    -webkit-transition: width .6s ease;
+    transition: width .6s ease
+}
+
+.el-card, .el-message {
+    border-radius: 4px;
+    overflow: hidden
+}
+
+.el-progress-bar__inner::after {
+    height: 100%
+}
+
+.el-progress-bar__innerText {
+    color: #FFF;
+    font-size: 12px;
+    margin: 0 5px
+}
+
+@keyframes progress {
+    0% {
+        background-position: 0 0
+    }
+    100% {
+        background-position: 32px 0
+    }
+}
+
+.el-time-spinner {
+    width: 100%;
+    white-space: nowrap
+}
+
+.el-spinner-inner {
+    -webkit-animation: rotate 2s linear infinite;
+    animation: rotate 2s linear infinite;
+    width: 50px;
+    height: 50px
+}
+
+.el-spinner-inner .path {
+    stroke: #ececec;
+    stroke-linecap: round;
+    -webkit-animation: dash 1.5s ease-in-out infinite;
+    animation: dash 1.5s ease-in-out infinite
+}
+
+@-webkit-keyframes rotate {
+    100% {
+        -webkit-transform: rotate(360deg);
+        transform: rotate(360deg)
+    }
+}
+
+@keyframes rotate {
+    100% {
+        -webkit-transform: rotate(360deg);
+        transform: rotate(360deg)
+    }
+}
+
+@-webkit-keyframes dash {
+    0% {
+        stroke-dasharray: 1, 150;
+        stroke-dashoffset: 0
+    }
+    50% {
+        stroke-dasharray: 90, 150;
+        stroke-dashoffset: -35
+    }
+    100% {
+        stroke-dasharray: 90, 150;
+        stroke-dashoffset: -124
+    }
+}
+
+@keyframes dash {
+    0% {
+        stroke-dasharray: 1, 150;
+        stroke-dashoffset: 0
+    }
+    50% {
+        stroke-dasharray: 90, 150;
+        stroke-dashoffset: -35
+    }
+    100% {
+        stroke-dasharray: 90, 150;
+        stroke-dashoffset: -124
+    }
+}
+
+.el-message {
+    min-width: 380px;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    border-width: 1px;
+    border-style: solid;
+    border-color: #EBEEF5;
+    position: fixed;
+    left: 50%;
+    top: 20px;
+    -webkit-transform: translateX(-50%);
+    transform: translateX(-50%);
+    background-color: #edf2fc;
+    -webkit-transition: opacity .3s, top .4s, -webkit-transform .4s;
+    transition: opacity .3s, top .4s, -webkit-transform .4s;
+    transition: opacity .3s, transform .4s, top .4s;
+    transition: opacity .3s, transform .4s, top .4s, -webkit-transform .4s;
+    padding: 15px 15px 15px 20px;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center
+}
+
+.el-message.is-center {
+    -webkit-box-pack: center;
+    -ms-flex-pack: center;
+    justify-content: center
+}
+
+.el-message.is-closable .el-message__content {
+    padding-right: 16px
+}
+
+.el-message p {
+    margin: 0
+}
+
+.el-message--info .el-message__content {
+    color: #909399
+}
+
+.el-message--success {
+    background-color: #f0f9eb;
+    border-color: #e1f3d8
+}
+
+.el-message--success .el-message__content {
+    color: #67C23A
+}
+
+.el-message--warning {
+    background-color: #fdf6ec;
+    border-color: #faecd8
+}
+
+.el-message--warning .el-message__content {
+    color: #E6A23C
+}
+
+.el-message--error {
+    background-color: #fef0f0;
+    border-color: #fde2e2
+}
+
+.el-message--error .el-message__content {
+    color: #F56C6C
+}
+
+.el-message__icon {
+    margin-right: 10px
+}
+
+.el-message__content {
+    padding: 0;
+    font-size: 14px;
+    line-height: 1
+}
+
+.el-message__closeBtn {
+    position: absolute;
+    top: 50%;
+    right: 15px;
+    -webkit-transform: translateY(-50%);
+    transform: translateY(-50%);
+    cursor: pointer;
+    color: #C0C4CC;
+    font-size: 16px
+}
+
+.el-message__closeBtn:hover {
+    color: #909399
+}
+
+.el-message .el-icon-success {
+    color: #67C23A
+}
+
+.el-message .el-icon-error {
+    color: #F56C6C
+}
+
+.el-message .el-icon-info {
+    color: #909399
+}
+
+.el-message .el-icon-warning {
+    color: #E6A23C
+}
+
+.el-message-fade-enter, .el-message-fade-leave-active {
+    opacity: 0;
+    -webkit-transform: translate(-50%, -100%);
+    transform: translate(-50%, -100%)
+}
+
+.el-badge {
+    position: relative;
+    vertical-align: middle;
+    display: inline-block
+}
+
+.el-badge__content {
+    background-color: #F56C6C;
+    border-radius: 10px;
+    color: #FFF;
+    display: inline-block;
+    font-size: 12px;
+    height: 18px;
+    line-height: 18px;
+    padding: 0 6px;
+    text-align: center;
+    white-space: nowrap;
+    border: 1px solid #FFF
+}
+
+.el-badge__content.is-fixed {
+    position: absolute;
+    top: 0;
+    right: 10px;
+    -webkit-transform: translateY(-50%) translateX(100%);
+    transform: translateY(-50%) translateX(100%)
+}
+
+.el-rate__icon, .el-rate__item {
+    position: relative;
+    display: inline-block
+}
+
+.el-badge__content.is-fixed.is-dot {
+    right: 5px
+}
+
+.el-badge__content.is-dot {
+    height: 8px;
+    width: 8px;
+    padding: 0;
+    right: 0;
+    border-radius: 50%
+}
+
+.el-badge__content--primary {
+    background-color: #409EFF
+}
+
+.el-badge__content--success {
+    background-color: #67C23A
+}
+
+.el-badge__content--warning {
+    background-color: #E6A23C
+}
+
+.el-badge__content--info {
+    background-color: #909399
+}
+
+.el-badge__content--danger {
+    background-color: #F56C6C
+}
+
+.el-card {
+    border: 1px solid #EBEEF5;
+    background-color: #FFF;
+    color: #303133;
+    -webkit-transition: .3s;
+    transition: .3s
+}
+
+.el-card.is-always-shadow, .el-card.is-hover-shadow:focus, .el-card.is-hover-shadow:hover {
+    -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+    box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1)
+}
+
+.el-card__header {
+    padding: 18px 20px;
+    border-bottom: 1px solid #EBEEF5;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+.el-card__body {
+    padding: 20px
+}
+
+.el-rate {
+    height: 20px;
+    line-height: 1
+}
+
+.el-rate__item {
+    font-size: 0;
+    vertical-align: middle
+}
+
+.el-rate__icon {
+    font-size: 18px;
+    margin-right: 6px;
+    color: #C0C4CC;
+    -webkit-transition: .3s;
+    transition: .3s
+}
+
+.el-rate__decimal, .el-rate__icon .path2 {
+    position: absolute;
+    top: 0;
+    left: 0
+}
+
+.el-rate__icon.hover {
+    -webkit-transform: scale(1.15);
+    transform: scale(1.15)
+}
+
+.el-rate__decimal {
+    display: inline-block;
+    overflow: hidden
+}
+
+.el-step.is-vertical, .el-steps {
+    display: -webkit-box;
+    display: -ms-flexbox
+}
+
+.el-rate__text {
+    font-size: 14px;
+    vertical-align: middle
+}
+
+.el-steps {
+    display: flex
+}
+
+.el-steps--simple {
+    padding: 13px 8%;
+    border-radius: 4px;
+    background: #F5F7FA
+}
+
+.el-steps--horizontal {
+    white-space: nowrap
+}
+
+.el-steps--vertical {
+    height: 100%;
+    -webkit-box-orient: vertical;
+    -ms-flex-flow: column;
+    flex-flow: column
+}
+
+.el-step {
+    position: relative;
+    -ms-flex-negative: 1;
+    flex-shrink: 1
+}
+
+.el-step:last-of-type .el-step__line {
+    display: none
+}
+
+.el-step:last-of-type.is-flex {
+    -ms-flex-preferred-size: auto !important;
+    flex-basis: auto !important;
+    -ms-flex-negative: 0;
+    flex-shrink: 0;
+    -webkit-box-flex: 0;
+    -ms-flex-positive: 0;
+    flex-grow: 0
+}
+
+.el-step:last-of-type .el-step__description, .el-step:last-of-type .el-step__main {
+    padding-right: 0
+}
+
+.el-step__head {
+    position: relative;
+    width: 100%
+}
+
+.el-step__head.is-process {
+    color: #303133;
+    border-color: #303133
+}
+
+.el-step__head.is-wait {
+    color: #C0C4CC;
+    border-color: #C0C4CC
+}
+
+.el-step__head.is-success {
+    color: #67C23A;
+    border-color: #67C23A
+}
+
+.el-step__head.is-error {
+    color: #F56C6C;
+    border-color: #F56C6C
+}
+
+.el-step__head.is-finish {
+    color: #409EFF;
+    border-color: #409EFF
+}
+
+.el-step__icon {
+    position: relative;
+    z-index: 1;
+    display: -webkit-inline-box;
+    display: -ms-inline-flexbox;
+    display: inline-flex;
+    -webkit-box-pack: center;
+    -ms-flex-pack: center;
+    justify-content: center;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center;
+    width: 24px;
+    height: 24px;
+    font-size: 14px;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    background: #FFF;
+    -webkit-transition: .15s ease-out;
+    transition: .15s ease-out
+}
+
+.el-step__icon.is-text {
+    border-radius: 50%;
+    border: 2px solid;
+    border-color: inherit
+}
+
+.el-step__icon.is-icon {
+    width: 40px
+}
+
+.el-step__icon-inner {
+    display: inline-block;
+    -moz-user-select: none;
+    user-select: none;
+    text-align: center;
+    font-weight: 700;
+    line-height: 1;
+    color: inherit
+}
+
+.el-button, .el-checkbox {
+    -webkit-user-select: none;
+    -ms-user-select: none
+}
+
+.el-step__icon-inner[class*=el-icon]:not(.is-status) {
+    font-size: 25px;
+    font-weight: 400
+}
+
+.el-step__icon-inner.is-status {
+    -webkit-transform: translateY(1px);
+    transform: translateY(1px)
+}
+
+.el-step__line {
+    position: absolute;
+    border-color: inherit;
+    background-color: #C0C4CC
+}
+
+.el-step__line-inner {
+    display: block;
+    border-width: 1px;
+    border-style: solid;
+    border-color: inherit;
+    -webkit-transition: .15s ease-out;
+    transition: .15s ease-out;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 0;
+    height: 0
+}
+
+.el-step__main {
+    white-space: normal;
+    text-align: left
+}
+
+.el-step__title {
+    font-size: 16px;
+    line-height: 38px
+}
+
+.el-step__title.is-process {
+    font-weight: 700;
+    color: #303133
+}
+
+.el-step__title.is-wait {
+    color: #C0C4CC
+}
+
+.el-step__title.is-success {
+    color: #67C23A
+}
+
+.el-step__title.is-error {
+    color: #F56C6C
+}
+
+.el-step__title.is-finish {
+    color: #409EFF
+}
+
+.el-step__description {
+    padding-right: 10%;
+    margin-top: -5px;
+    font-size: 12px;
+    line-height: 20px;
+    font-weight: 400
+}
+
+.el-step__description.is-process {
+    color: #303133
+}
+
+.el-step__description.is-wait {
+    color: #C0C4CC
+}
+
+.el-step__description.is-success {
+    color: #67C23A
+}
+
+.el-step__description.is-error {
+    color: #F56C6C
+}
+
+.el-step__description.is-finish {
+    color: #409EFF
+}
+
+.el-step.is-horizontal {
+    display: inline-block
+}
+
+.el-step.is-horizontal .el-step__line {
+    height: 2px;
+    top: 11px;
+    left: 0;
+    right: 0
+}
+
+.el-step.is-vertical {
+    display: flex
+}
+
+.el-step.is-vertical .el-step__head {
+    -webkit-box-flex: 0;
+    -ms-flex-positive: 0;
+    flex-grow: 0;
+    width: 24px
+}
+
+.el-step.is-vertical .el-step__main {
+    padding-left: 10px;
+    -webkit-box-flex: 1;
+    -ms-flex-positive: 1;
+    flex-grow: 1
+}
+
+.el-step.is-vertical .el-step__title {
+    line-height: 24px;
+    padding-bottom: 8px
+}
+
+.el-step.is-vertical .el-step__line {
+    width: 2px;
+    top: 0;
+    bottom: 0;
+    left: 11px
+}
+
+.el-step.is-vertical .el-step__icon.is-icon {
+    width: 24px
+}
+
+.el-step.is-center .el-step__head, .el-step.is-center .el-step__main {
+    text-align: center
+}
+
+.el-step.is-center .el-step__description {
+    padding-left: 20%;
+    padding-right: 20%
+}
+
+.el-step.is-center .el-step__line {
+    left: 50%;
+    right: -50%
+}
+
+.el-step.is-simple {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center
+}
+
+.el-step.is-simple .el-step__head {
+    width: auto;
+    font-size: 0;
+    padding-right: 10px
+}
+
+.el-step.is-simple .el-step__icon {
+    background: 0 0;
+    width: 16px;
+    height: 16px;
+    font-size: 12px
+}
+
+.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status) {
+    font-size: 18px
+}
+
+.el-step.is-simple .el-step__icon-inner.is-status {
+    -webkit-transform: scale(.8) translateY(1px);
+    transform: scale(.8) translateY(1px)
+}
+
+.el-step.is-simple .el-step__main {
+    position: relative;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-align: stretch;
+    -ms-flex-align: stretch;
+    align-items: stretch;
+    -webkit-box-flex: 1;
+    -ms-flex-positive: 1;
+    flex-grow: 1
+}
+
+.el-step.is-simple .el-step__title {
+    font-size: 16px;
+    line-height: 20px
+}
+
+.el-step.is-simple:not(:last-of-type) .el-step__title {
+    max-width: 50%;
+    word-break: break-all
+}
+
+.el-step.is-simple .el-step__arrow {
+    -webkit-box-flex: 1;
+    -ms-flex-positive: 1;
+    flex-grow: 1;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center;
+    -webkit-box-pack: center;
+    -ms-flex-pack: center;
+    justify-content: center
+}
+
+.el-step.is-simple .el-step__arrow::after, .el-step.is-simple .el-step__arrow::before {
+    content: '';
+    display: inline-block;
+    position: absolute;
+    height: 15px;
+    width: 1px;
+    background: #C0C4CC
+}
+
+.el-step.is-simple .el-step__arrow::before {
+    -webkit-transform: rotate(-45deg) translateY(-4px);
+    transform: rotate(-45deg) translateY(-4px);
+    -webkit-transform-origin: 0 0;
+    transform-origin: 0 0
+}
+
+.el-step.is-simple .el-step__arrow::after {
+    -webkit-transform: rotate(45deg) translateY(4px);
+    transform: rotate(45deg) translateY(4px);
+    -webkit-transform-origin: 100% 100%;
+    transform-origin: 100% 100%
+}
+
+.el-step.is-simple:last-of-type .el-step__arrow {
+    display: none
+}
+
+.el-carousel {
+    position: relative
+}
+
+.el-carousel--horizontal {
+    overflow-x: hidden
+}
+
+.el-carousel--vertical {
+    overflow-y: hidden
+}
+
+.el-carousel__container {
+    position: relative;
+    height: 300px
+}
+
+.el-carousel__arrow {
+    border: none;
+    outline: 0;
+    padding: 0;
+    margin: 0;
+    height: 36px;
+    width: 36px;
+    cursor: pointer;
+    -webkit-transition: .3s;
+    transition: .3s;
+    border-radius: 50%;
+    background-color: rgba(31, 45, 61, .11);
+    color: #FFF;
+    position: absolute;
+    top: 50%;
+    z-index: 10;
+    -webkit-transform: translateY(-50%);
+    transform: translateY(-50%);
+    text-align: center;
+    font-size: 12px
+}
+
+.el-carousel__arrow--left {
+    left: 16px
+}
+
+.el-carousel__arrow--right {
+    right: 16px
+}
+
+.el-carousel__arrow:hover {
+    background-color: rgba(31, 45, 61, .23)
+}
+
+.el-carousel__arrow i {
+    cursor: pointer
+}
+
+.el-carousel__indicators {
+    position: absolute;
+    list-style: none;
+    margin: 0;
+    padding: 0;
+    z-index: 2
+}
+
+.el-carousel__indicators--horizontal {
+    bottom: 0;
+    left: 50%;
+    -webkit-transform: translateX(-50%);
+    transform: translateX(-50%)
+}
+
+.el-carousel__indicators--vertical {
+    right: 0;
+    top: 50%;
+    -webkit-transform: translateY(-50%);
+    transform: translateY(-50%)
+}
+
+.el-carousel__indicators--outside {
+    bottom: 26px;
+    text-align: center;
+    position: static;
+    -webkit-transform: none;
+    transform: none
+}
+
+.el-carousel__indicators--outside .el-carousel__indicator:hover button {
+    opacity: .64
+}
+
+.el-carousel__indicators--outside button {
+    background-color: #C0C4CC;
+    opacity: .24
+}
+
+.el-carousel__indicators--labels {
+    left: 0;
+    right: 0;
+    -webkit-transform: none;
+    transform: none;
+    text-align: center
+}
+
+.el-carousel__indicators--labels .el-carousel__button {
+    height: auto;
+    width: auto;
+    padding: 2px 18px;
+    font-size: 12px
+}
+
+.el-carousel__indicators--labels .el-carousel__indicator {
+    padding: 6px 4px
+}
+
+.el-carousel__indicator {
+    background-color: transparent;
+    cursor: pointer
+}
+
+.el-carousel__indicator:hover button {
+    opacity: .72
+}
+
+.el-carousel__indicator--horizontal {
+    display: inline-block;
+    padding: 12px 4px
+}
+
+.el-carousel__indicator--vertical {
+    padding: 4px 12px
+}
+
+.el-carousel__indicator--vertical .el-carousel__button {
+    width: 2px;
+    height: 15px
+}
+
+.el-carousel__indicator.is-active button {
+    opacity: 1
+}
+
+.el-carousel__button {
+    display: block;
+    opacity: .48;
+    width: 30px;
+    height: 2px;
+    background-color: #FFF;
+    border: none;
+    outline: 0;
+    padding: 0;
+    margin: 0;
+    cursor: pointer;
+    -webkit-transition: .3s;
+    transition: .3s
+}
+
+.el-carousel__item, .el-carousel__mask {
+    height: 100%;
+    top: 0;
+    left: 0;
+    position: absolute
+}
+
+.carousel-arrow-left-enter, .carousel-arrow-left-leave-active {
+    -webkit-transform: translateY(-50%) translateX(-10px);
+    transform: translateY(-50%) translateX(-10px);
+    opacity: 0
+}
+
+.carousel-arrow-right-enter, .carousel-arrow-right-leave-active {
+    -webkit-transform: translateY(-50%) translateX(10px);
+    transform: translateY(-50%) translateX(10px);
+    opacity: 0
+}
+
+.el-carousel__item {
+    width: 100%;
+    display: inline-block;
+    overflow: hidden;
+    z-index: 0
+}
+
+.el-carousel__item.is-active {
+    z-index: 2
+}
+
+.el-carousel__item.is-animating {
+    -webkit-transition: -webkit-transform .4s ease-in-out;
+    transition: -webkit-transform .4s ease-in-out;
+    transition: transform .4s ease-in-out;
+    transition: transform .4s ease-in-out, -webkit-transform .4s ease-in-out
+}
+
+.el-carousel__item--card {
+    width: 50%;
+    -webkit-transition: -webkit-transform .4s ease-in-out;
+    transition: -webkit-transform .4s ease-in-out;
+    transition: transform .4s ease-in-out;
+    transition: transform .4s ease-in-out, -webkit-transform .4s ease-in-out
+}
+
+.el-carousel__item--card.is-in-stage {
+    cursor: pointer;
+    z-index: 1
+}
+
+.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask, .el-carousel__item--card.is-in-stage:hover .el-carousel__mask {
+    opacity: .12
+}
+
+.el-carousel__item--card.is-active {
+    z-index: 2
+}
+
+.el-carousel__mask {
+    width: 100%;
+    background-color: #FFF;
+    opacity: .24;
+    -webkit-transition: .2s;
+    transition: .2s
+}
+
+.el-fade-in-enter, .el-fade-in-leave-active, .el-fade-in-linear-enter, .el-fade-in-linear-leave, .el-fade-in-linear-leave-active, .fade-in-linear-enter, .fade-in-linear-leave, .fade-in-linear-leave-active {
+    opacity: 0
+}
+
+.fade-in-linear-enter-active, .fade-in-linear-leave-active {
+    -webkit-transition: opacity .2s linear;
+    transition: opacity .2s linear
+}
+
+.el-fade-in-linear-enter-active, .el-fade-in-linear-leave-active {
+    -webkit-transition: opacity .2s linear;
+    transition: opacity .2s linear
+}
+
+.el-fade-in-enter-active, .el-fade-in-leave-active {
+    -webkit-transition: all .3s cubic-bezier(.55, 0, .1, 1);
+    transition: all .3s cubic-bezier(.55, 0, .1, 1)
+}
+
+.el-zoom-in-center-enter-active, .el-zoom-in-center-leave-active {
+    -webkit-transition: all .3s cubic-bezier(.55, 0, .1, 1);
+    transition: all .3s cubic-bezier(.55, 0, .1, 1)
+}
+
+.el-zoom-in-center-enter, .el-zoom-in-center-leave-active {
+    opacity: 0;
+    -webkit-transform: scaleX(0);
+    transform: scaleX(0)
+}
+
+.el-zoom-in-top-enter-active, .el-zoom-in-top-leave-active {
+    opacity: 1;
+    -webkit-transform: scaleY(1);
+    transform: scaleY(1);
+    -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1);
+    transition: opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1);
+    transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1);
+    transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1);
+    -webkit-transform-origin: center top;
+    transform-origin: center top
+}
+
+.el-zoom-in-top-enter, .el-zoom-in-top-leave-active {
+    opacity: 0;
+    -webkit-transform: scaleY(0);
+    transform: scaleY(0)
+}
+
+.el-zoom-in-bottom-enter-active, .el-zoom-in-bottom-leave-active {
+    opacity: 1;
+    -webkit-transform: scaleY(1);
+    transform: scaleY(1);
+    -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1);
+    transition: opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1);
+    transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1);
+    transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1);
+    -webkit-transform-origin: center bottom;
+    transform-origin: center bottom
+}
+
+.el-zoom-in-bottom-enter, .el-zoom-in-bottom-leave-active {
+    opacity: 0;
+    -webkit-transform: scaleY(0);
+    transform: scaleY(0)
+}
+
+.el-zoom-in-left-enter-active, .el-zoom-in-left-leave-active {
+    opacity: 1;
+    -webkit-transform: scale(1, 1);
+    transform: scale(1, 1);
+    -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1);
+    transition: opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1);
+    transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1);
+    transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1);
+    -webkit-transform-origin: top left;
+    transform-origin: top left
+}
+
+.el-zoom-in-left-enter, .el-zoom-in-left-leave-active {
+    opacity: 0;
+    -webkit-transform: scale(.45, .45);
+    transform: scale(.45, .45)
+}
+
+.collapse-transition {
+    -webkit-transition: .3s height ease-in-out, .3s padding-top ease-in-out, .3s padding-bottom ease-in-out;
+    transition: .3s height ease-in-out, .3s padding-top ease-in-out, .3s padding-bottom ease-in-out
+}
+
+.horizontal-collapse-transition {
+    -webkit-transition: .3s width ease-in-out, .3s padding-left ease-in-out, .3s padding-right ease-in-out;
+    transition: .3s width ease-in-out, .3s padding-left ease-in-out, .3s padding-right ease-in-out
+}
+
+.el-list-enter-active, .el-list-leave-active {
+    -webkit-transition: all 1s;
+    transition: all 1s
+}
+
+.el-list-enter, .el-list-leave-active {
+    opacity: 0;
+    -webkit-transform: translateY(-30px);
+    transform: translateY(-30px)
+}
+
+.el-opacity-transition {
+    -webkit-transition: opacity .3s cubic-bezier(.55, 0, .1, 1);
+    transition: opacity .3s cubic-bezier(.55, 0, .1, 1)
+}
+
+.el-collapse {
+    border-top: 1px solid #EBEEF5;
+    border-bottom: 1px solid #EBEEF5
+}
+
+.el-collapse-item.is-disabled .el-collapse-item__header {
+    color: #bbb;
+    cursor: not-allowed
+}
+
+.el-collapse-item__header {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center;
+    height: 48px;
+    line-height: 48px;
+    background-color: #FFF;
+    color: #303133;
+    cursor: pointer;
+    border-bottom: 1px solid #EBEEF5;
+    font-size: 13px;
+    font-weight: 500;
+    -webkit-transition: border-bottom-color .3s;
+    transition: border-bottom-color .3s;
+    outline: 0
+}
+
+.el-collapse-item__arrow {
+    margin: 0 8px 0 auto;
+    transition: -webkit-transform .3s;
+    transition: transform .3s;
+    transition: transform .3s, -webkit-transform .3s;
+    font-weight: 300
+}
+
+.el-collapse-item__arrow.is-active {
+    -webkit-transform: rotate(90deg);
+    transform: rotate(90deg)
+}
+
+.el-collapse-item__header.focusing:focus:not(:hover) {
+    color: #409EFF
+}
+
+.el-collapse-item__header.is-active {
+    border-bottom-color: transparent
+}
+
+.el-collapse-item__wrap {
+    will-change: height;
+    background-color: #FFF;
+    overflow: hidden;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    border-bottom: 1px solid #EBEEF5
+}
+
+.el-cascader__tags, .el-tag {
+    -webkit-box-sizing: border-box
+}
+
+.el-collapse-item__content {
+    padding-bottom: 25px;
+    font-size: 13px;
+    color: #303133;
+    line-height: 1.769230769230769
+}
+
+.el-collapse-item:last-child {
+    margin-bottom: -1px
+}
+
+.el-popper .popper__arrow, .el-popper .popper__arrow::after {
+    position: absolute;
+    display: block;
+    width: 0;
+    height: 0;
+    border-color: transparent;
+    border-style: solid
+}
+
+.el-popper .popper__arrow {
+    border-width: 6px;
+    -webkit-filter: drop-shadow(0 2px 12px rgba(0, 0, 0, .03));
+    filter: drop-shadow(0 2px 12px rgba(0, 0, 0, .03))
+}
+
+.el-popper .popper__arrow::after {
+    content: " ";
+    border-width: 6px
+}
+
+.el-popper[x-placement^=top] {
+    margin-bottom: 12px
+}
+
+.el-popper[x-placement^=top] .popper__arrow {
+    bottom: -6px;
+    left: 50%;
+    margin-right: 3px;
+    border-top-color: #EBEEF5;
+    border-bottom-width: 0
+}
+
+.el-popper[x-placement^=top] .popper__arrow::after {
+    bottom: 1px;
+    margin-left: -6px;
+    border-top-color: #FFF;
+    border-bottom-width: 0
+}
+
+.el-popper[x-placement^=bottom] {
+    margin-top: 12px
+}
+
+.el-popper[x-placement^=bottom] .popper__arrow {
+    top: -6px;
+    left: 50%;
+    margin-right: 3px;
+    border-top-width: 0;
+    border-bottom-color: #EBEEF5
+}
+
+.el-popper[x-placement^=bottom] .popper__arrow::after {
+    top: 1px;
+    margin-left: -6px;
+    border-top-width: 0;
+    border-bottom-color: #FFF
+}
+
+.el-popper[x-placement^=right] {
+    margin-left: 12px
+}
+
+.el-popper[x-placement^=right] .popper__arrow {
+    top: 50%;
+    left: -6px;
+    margin-bottom: 3px;
+    border-right-color: #EBEEF5;
+    border-left-width: 0
+}
+
+.el-popper[x-placement^=right] .popper__arrow::after {
+    bottom: -6px;
+    left: 1px;
+    border-right-color: #FFF;
+    border-left-width: 0
+}
+
+.el-popper[x-placement^=left] {
+    margin-right: 12px
+}
+
+.el-popper[x-placement^=left] .popper__arrow {
+    top: 50%;
+    right: -6px;
+    margin-bottom: 3px;
+    border-right-width: 0;
+    border-left-color: #EBEEF5
+}
+
+.el-popper[x-placement^=left] .popper__arrow::after {
+    right: 1px;
+    bottom: -6px;
+    margin-left: -6px;
+    border-right-width: 0;
+    border-left-color: #FFF
+}
+
+.el-tag {
+    background-color: #ecf5ff;
+    border-color: #d9ecff;
+    display: inline-block;
+    height: 32px;
+    padding: 0 10px;
+    line-height: 30px;
+    font-size: 12px;
+    color: #409EFF;
+    border-width: 1px;
+    border-style: solid;
+    border-radius: 4px;
+    box-sizing: border-box;
+    white-space: nowrap
+}
+
+.el-tag.is-hit {
+    border-color: #409EFF
+}
+
+.el-tag .el-tag__close {
+    color: #409eff
+}
+
+.el-tag .el-tag__close:hover {
+    color: #FFF;
+    background-color: #409eff
+}
+
+.el-tag.el-tag--info {
+    background-color: #f4f4f5;
+    border-color: #e9e9eb;
+    color: #909399
+}
+
+.el-tag.el-tag--info.is-hit {
+    border-color: #909399
+}
+
+.el-tag.el-tag--info .el-tag__close {
+    color: #909399
+}
+
+.el-tag.el-tag--info .el-tag__close:hover {
+    color: #FFF;
+    background-color: #909399
+}
+
+.el-tag.el-tag--success {
+    background-color: #f0f9eb;
+    border-color: #e1f3d8;
+    color: #67c23a
+}
+
+.el-tag.el-tag--success.is-hit {
+    border-color: #67C23A
+}
+
+.el-tag.el-tag--success .el-tag__close {
+    color: #67c23a
+}
+
+.el-tag.el-tag--success .el-tag__close:hover {
+    color: #FFF;
+    background-color: #67c23a
+}
+
+.el-tag.el-tag--warning {
+    background-color: #fdf6ec;
+    border-color: #faecd8;
+    color: #e6a23c
+}
+
+.el-tag.el-tag--warning.is-hit {
+    border-color: #E6A23C
+}
+
+.el-tag.el-tag--warning .el-tag__close {
+    color: #e6a23c
+}
+
+.el-tag.el-tag--warning .el-tag__close:hover {
+    color: #FFF;
+    background-color: #e6a23c
+}
+
+.el-tag.el-tag--danger {
+    background-color: #fef0f0;
+    border-color: #fde2e2;
+    color: #f56c6c
+}
+
+.el-tag.el-tag--danger.is-hit {
+    border-color: #F56C6C
+}
+
+.el-tag.el-tag--danger .el-tag__close {
+    color: #f56c6c
+}
+
+.el-tag.el-tag--danger .el-tag__close:hover {
+    color: #FFF;
+    background-color: #f56c6c
+}
+
+.el-tag .el-icon-close {
+    border-radius: 50%;
+    text-align: center;
+    position: relative;
+    cursor: pointer;
+    font-size: 12px;
+    height: 16px;
+    width: 16px;
+    line-height: 16px;
+    vertical-align: middle;
+    top: -1px;
+    right: -5px
+}
+
+.el-tag .el-icon-close::before {
+    display: block
+}
+
+.el-tag--dark {
+    background-color: #409eff;
+    border-color: #409eff;
+    color: #fff
+}
+
+.el-tag--dark.is-hit {
+    border-color: #409EFF
+}
+
+.el-tag--dark .el-tag__close {
+    color: #fff
+}
+
+.el-tag--dark .el-tag__close:hover {
+    color: #FFF;
+    background-color: #66b1ff
+}
+
+.el-tag--dark.el-tag--info {
+    background-color: #909399;
+    border-color: #909399;
+    color: #fff
+}
+
+.el-tag--dark.el-tag--info.is-hit {
+    border-color: #909399
+}
+
+.el-tag--dark.el-tag--info .el-tag__close {
+    color: #fff
+}
+
+.el-tag--dark.el-tag--info .el-tag__close:hover {
+    color: #FFF;
+    background-color: #a6a9ad
+}
+
+.el-tag--dark.el-tag--success {
+    background-color: #67c23a;
+    border-color: #67c23a;
+    color: #fff
+}
+
+.el-tag--dark.el-tag--success.is-hit {
+    border-color: #67C23A
+}
+
+.el-tag--dark.el-tag--success .el-tag__close {
+    color: #fff
+}
+
+.el-tag--dark.el-tag--success .el-tag__close:hover {
+    color: #FFF;
+    background-color: #85ce61
+}
+
+.el-tag--dark.el-tag--warning {
+    background-color: #e6a23c;
+    border-color: #e6a23c;
+    color: #fff
+}
+
+.el-tag--dark.el-tag--warning.is-hit {
+    border-color: #E6A23C
+}
+
+.el-tag--dark.el-tag--warning .el-tag__close {
+    color: #fff
+}
+
+.el-tag--dark.el-tag--warning .el-tag__close:hover {
+    color: #FFF;
+    background-color: #ebb563
+}
+
+.el-tag--dark.el-tag--danger {
+    background-color: #f56c6c;
+    border-color: #f56c6c;
+    color: #fff
+}
+
+.el-tag--dark.el-tag--danger.is-hit {
+    border-color: #F56C6C
+}
+
+.el-tag--dark.el-tag--danger .el-tag__close {
+    color: #fff
+}
+
+.el-tag--dark.el-tag--danger .el-tag__close:hover {
+    color: #FFF;
+    background-color: #f78989
+}
+
+.el-tag--plain {
+    background-color: #fff;
+    border-color: #b3d8ff;
+    color: #409eff
+}
+
+.el-tag--plain.is-hit {
+    border-color: #409EFF
+}
+
+.el-tag--plain .el-tag__close {
+    color: #409eff
+}
+
+.el-tag--plain .el-tag__close:hover {
+    color: #FFF;
+    background-color: #409eff
+}
+
+.el-tag--plain.el-tag--info {
+    background-color: #fff;
+    border-color: #d3d4d6;
+    color: #909399
+}
+
+.el-tag--plain.el-tag--info.is-hit {
+    border-color: #909399
+}
+
+.el-tag--plain.el-tag--info .el-tag__close {
+    color: #909399
+}
+
+.el-tag--plain.el-tag--info .el-tag__close:hover {
+    color: #FFF;
+    background-color: #909399
+}
+
+.el-tag--plain.el-tag--success {
+    background-color: #fff;
+    border-color: #c2e7b0;
+    color: #67c23a
+}
+
+.el-tag--plain.el-tag--success.is-hit {
+    border-color: #67C23A
+}
+
+.el-tag--plain.el-tag--success .el-tag__close {
+    color: #67c23a
+}
+
+.el-tag--plain.el-tag--success .el-tag__close:hover {
+    color: #FFF;
+    background-color: #67c23a
+}
+
+.el-tag--plain.el-tag--warning {
+    background-color: #fff;
+    border-color: #f5dab1;
+    color: #e6a23c
+}
+
+.el-tag--plain.el-tag--warning.is-hit {
+    border-color: #E6A23C
+}
+
+.el-tag--plain.el-tag--warning .el-tag__close {
+    color: #e6a23c
+}
+
+.el-tag--plain.el-tag--warning .el-tag__close:hover {
+    color: #FFF;
+    background-color: #e6a23c
+}
+
+.el-tag--plain.el-tag--danger {
+    background-color: #fff;
+    border-color: #fbc4c4;
+    color: #f56c6c
+}
+
+.el-tag--plain.el-tag--danger.is-hit {
+    border-color: #F56C6C
+}
+
+.el-tag--plain.el-tag--danger .el-tag__close {
+    color: #f56c6c
+}
+
+.el-tag--plain.el-tag--danger .el-tag__close:hover {
+    color: #FFF;
+    background-color: #f56c6c
+}
+
+.el-tag--medium {
+    height: 28px;
+    line-height: 26px
+}
+
+.el-tag--medium .el-icon-close {
+    -webkit-transform: scale(.8);
+    transform: scale(.8)
+}
+
+.el-tag--small {
+    height: 24px;
+    padding: 0 8px;
+    line-height: 22px
+}
+
+.el-tag--small .el-icon-close {
+    -webkit-transform: scale(.8);
+    transform: scale(.8)
+}
+
+.el-tag--mini {
+    height: 20px;
+    padding: 0 5px;
+    line-height: 19px
+}
+
+.el-tag--mini .el-icon-close {
+    margin-left: -3px;
+    -webkit-transform: scale(.7);
+    transform: scale(.7)
+}
+
+.el-cascader {
+    display: inline-block;
+    position: relative;
+    font-size: 14px;
+    line-height: 40px
+}
+
+.el-cascader:not(.is-disabled):hover .el-input__inner {
+    cursor: pointer;
+    border-color: #C0C4CC
+}
+
+.el-cascader .el-input .el-input__inner:focus, .el-cascader .el-input.is-focus .el-input__inner {
+    border-color: #409EFF
+}
+
+.el-cascader .el-input {
+    cursor: pointer
+}
+
+.el-cascader .el-input .el-input__inner {
+    text-overflow: ellipsis
+}
+
+.el-cascader .el-input .el-icon-arrow-down {
+    -webkit-transition: -webkit-transform .3s;
+    transition: -webkit-transform .3s;
+    transition: transform .3s;
+    transition: transform .3s, -webkit-transform .3s;
+    font-size: 14px
+}
+
+.el-cascader .el-input .el-icon-arrow-down.is-reverse {
+    -webkit-transform: rotateZ(180deg);
+    transform: rotateZ(180deg)
+}
+
+.el-cascader .el-input .el-icon-circle-close:hover {
+    color: #909399
+}
+
+.el-cascader--medium {
+    font-size: 14px;
+    line-height: 36px
+}
+
+.el-cascader--small {
+    font-size: 13px;
+    line-height: 32px
+}
+
+.el-cascader--mini {
+    font-size: 12px;
+    line-height: 28px
+}
+
+.el-cascader.is-disabled .el-cascader__label {
+    z-index: 2;
+    color: #C0C4CC
+}
+
+.el-cascader__dropdown {
+    margin: 5px 0;
+    font-size: 14px;
+    background: #FFF;
+    border: 1px solid #E4E7ED;
+    border-radius: 4px;
+    -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+    box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1)
+}
+
+.el-cascader__tags {
+    position: absolute;
+    left: 0;
+    right: 30px;
+    top: 50%;
+    -webkit-transform: translateY(-50%);
+    transform: translateY(-50%);
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -ms-flex-wrap: wrap;
+    flex-wrap: wrap;
+    line-height: normal;
+    text-align: left;
+    box-sizing: border-box
+}
+
+.el-cascader__tags .el-tag {
+    display: -webkit-inline-box;
+    display: -ms-inline-flexbox;
+    display: inline-flex;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center;
+    max-width: 100%;
+    margin: 2px 0 2px 6px;
+    text-overflow: ellipsis;
+    background: #f0f2f5
+}
+
+.el-cascader__tags .el-tag:not(.is-hit) {
+    border-color: transparent
+}
+
+.el-cascader__tags .el-tag > span {
+    -webkit-box-flex: 1;
+    -ms-flex: 1;
+    flex: 1;
+    overflow: hidden;
+    text-overflow: ellipsis
+}
+
+.el-cascader__tags .el-tag .el-icon-close {
+    -webkit-box-flex: 0;
+    -ms-flex: none;
+    flex: none;
+    background-color: #C0C4CC;
+    color: #FFF
+}
+
+.el-cascader__tags .el-tag .el-icon-close:hover {
+    background-color: #909399
+}
+
+.el-cascader__suggestion-panel {
+    border-radius: 4px
+}
+
+.el-cascader__suggestion-list {
+    max-height: 204px;
+    margin: 0;
+    padding: 6px 0;
+    font-size: 14px;
+    color: #606266;
+    text-align: center
+}
+
+.el-cascader__suggestion-item {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-pack: justify;
+    -ms-flex-pack: justify;
+    justify-content: space-between;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center;
+    height: 34px;
+    padding: 0 15px;
+    text-align: left;
+    outline: 0;
+    cursor: pointer
+}
+
+.el-cascader__suggestion-item:focus, .el-cascader__suggestion-item:hover {
+    background: #F5F7FA
+}
+
+.el-cascader__suggestion-item.is-checked {
+    color: #409EFF;
+    font-weight: 700
+}
+
+.el-cascader__suggestion-item > span {
+    margin-right: 10px
+}
+
+.el-cascader__empty-text {
+    margin: 10px 0;
+    color: #C0C4CC
+}
+
+.el-cascader__search-input {
+    -webkit-box-flex: 1;
+    -ms-flex: 1;
+    flex: 1;
+    height: 24px;
+    min-width: 60px;
+    margin: 2px 0 2px 15px;
+    padding: 0;
+    color: #606266;
+    border: none;
+    outline: 0;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+.el-cascader__search-input::-webkit-input-placeholder {
+    color: #C0C4CC
+}
+
+.el-cascader__search-input:-ms-input-placeholder {
+    color: #C0C4CC
+}
+
+.el-cascader__search-input::-ms-input-placeholder {
+    color: #C0C4CC
+}
+
+.el-cascader__search-input::placeholder {
+    color: #C0C4CC
+}
+
+.el-color-predefine {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    font-size: 12px;
+    margin-top: 8px;
+    width: 280px
+}
+
+.el-color-predefine__colors {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-flex: 1;
+    -ms-flex: 1;
+    flex: 1;
+    -ms-flex-wrap: wrap;
+    flex-wrap: wrap
+}
+
+.el-color-predefine__color-selector {
+    margin: 0 0 8px 8px;
+    width: 20px;
+    height: 20px;
+    border-radius: 4px;
+    cursor: pointer
+}
+
+.el-color-predefine__color-selector:nth-child(10n+1) {
+    margin-left: 0
+}
+
+.el-color-predefine__color-selector.selected {
+    -webkit-box-shadow: 0 0 3px 2px #409EFF;
+    box-shadow: 0 0 3px 2px #409EFF
+}
+
+.el-color-predefine__color-selector > div {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    height: 100%;
+    border-radius: 3px
+}
+
+.el-color-predefine__color-selector.is-alpha {
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)
+}
+
+.el-color-hue-slider {
+    position: relative;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 280px;
+    height: 12px;
+    background-color: red;
+    padding: 0 2px
+}
+
+.el-color-hue-slider__bar {
+    position: relative;
+    background: -webkit-gradient(linear, left top, right top, from(red), color-stop(17%, #ff0), color-stop(33%, #0f0), color-stop(50%, #0ff), color-stop(67%, #00f), color-stop(83%, #f0f), to(red));
+    background: linear-gradient(to right, red 0, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, red 100%);
+    height: 100%
+}
+
+.el-color-hue-slider__thumb {
+    position: absolute;
+    cursor: pointer;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    left: 0;
+    top: 0;
+    width: 4px;
+    height: 100%;
+    border-radius: 1px;
+    background: #fff;
+    border: 1px solid #f0f0f0;
+    -webkit-box-shadow: 0 0 2px rgba(0, 0, 0, .6);
+    box-shadow: 0 0 2px rgba(0, 0, 0, .6);
+    z-index: 1
+}
+
+.el-color-hue-slider.is-vertical {
+    width: 12px;
+    height: 180px;
+    padding: 2px 0
+}
+
+.el-color-hue-slider.is-vertical .el-color-hue-slider__bar {
+    background: -webkit-gradient(linear, left top, left bottom, from(red), color-stop(17%, #ff0), color-stop(33%, #0f0), color-stop(50%, #0ff), color-stop(67%, #00f), color-stop(83%, #f0f), to(red));
+    background: linear-gradient(to bottom, red 0, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, red 100%)
+}
+
+.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb {
+    left: 0;
+    top: 0;
+    width: 100%;
+    height: 4px
+}
+
+.el-color-svpanel {
+    position: relative;
+    width: 280px;
+    height: 180px
+}
+
+.el-color-svpanel__black, .el-color-svpanel__white {
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0
+}
+
+.el-color-svpanel__white {
+    background: -webkit-gradient(linear, left top, right top, from(#fff), to(rgba(255, 255, 255, 0)));
+    background: linear-gradient(to right, #fff, rgba(255, 255, 255, 0))
+}
+
+.el-color-svpanel__black {
+    background: -webkit-gradient(linear, left bottom, left top, from(#000), to(rgba(0, 0, 0, 0)));
+    background: linear-gradient(to top, #000, rgba(0, 0, 0, 0))
+}
+
+.el-color-svpanel__cursor {
+    position: absolute
+}
+
+.el-color-svpanel__cursor > div {
+    cursor: head;
+    width: 4px;
+    height: 4px;
+    -webkit-box-shadow: 0 0 0 1.5px #fff, inset 0 0 1px 1px rgba(0, 0, 0, .3), 0 0 1px 2px rgba(0, 0, 0, .4);
+    box-shadow: 0 0 0 1.5px #fff, inset 0 0 1px 1px rgba(0, 0, 0, .3), 0 0 1px 2px rgba(0, 0, 0, .4);
+    border-radius: 50%;
+    -webkit-transform: translate(-2px, -2px);
+    transform: translate(-2px, -2px)
+}
+
+.el-color-alpha-slider {
+    position: relative;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 280px;
+    height: 12px;
+    background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)
+}
+
+.el-color-alpha-slider__bar {
+    position: relative;
+    background: -webkit-gradient(linear, left top, right top, from(rgba(255, 255, 255, 0)), to(white));
+    background: linear-gradient(to right, rgba(255, 255, 255, 0) 0, #fff 100%);
+    height: 100%
+}
+
+.el-color-alpha-slider__thumb {
+    position: absolute;
+    cursor: pointer;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    left: 0;
+    top: 0;
+    width: 4px;
+    height: 100%;
+    border-radius: 1px;
+    background: #fff;
+    border: 1px solid #f0f0f0;
+    -webkit-box-shadow: 0 0 2px rgba(0, 0, 0, .6);
+    box-shadow: 0 0 2px rgba(0, 0, 0, .6);
+    z-index: 1
+}
+
+.el-color-alpha-slider.is-vertical {
+    width: 20px;
+    height: 180px
+}
+
+.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar {
+    background: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0)), to(white));
+    background: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0, #fff 100%)
+}
+
+.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb {
+    left: 0;
+    top: 0;
+    width: 100%;
+    height: 4px
+}
+
+.el-color-dropdown {
+    width: 300px
+}
+
+.el-color-dropdown__main-wrapper {
+    margin-bottom: 6px
+}
+
+.el-color-dropdown__main-wrapper::after {
+    content: "";
+    display: table;
+    clear: both
+}
+
+.el-color-dropdown__btns {
+    margin-top: 6px;
+    text-align: right
+}
+
+.el-color-dropdown__value {
+    float: left;
+    line-height: 26px;
+    font-size: 12px;
+    color: #000;
+    width: 160px
+}
+
+.el-color-dropdown__btn {
+    border: 1px solid #dcdcdc;
+    color: #333;
+    line-height: 24px;
+    border-radius: 2px;
+    padding: 0 20px;
+    cursor: pointer;
+    background-color: transparent;
+    outline: 0;
+    font-size: 12px
+}
+
+.el-color-dropdown__btn[disabled] {
+    color: #ccc;
+    cursor: not-allowed
+}
+
+.el-color-dropdown__btn:hover {
+    color: #409EFF;
+    border-color: #409EFF
+}
+
+.el-color-dropdown__link-btn {
+    cursor: pointer;
+    color: #409EFF;
+    text-decoration: none;
+    padding: 15px;
+    font-size: 12px
+}
+
+.el-color-dropdown__link-btn:hover {
+    color: tint(#409EFF, 20%)
+}
+
+.el-color-picker {
+    display: inline-block;
+    position: relative;
+    line-height: normal;
+    height: 40px
+}
+
+.el-color-picker.is-disabled .el-color-picker__trigger {
+    cursor: not-allowed
+}
+
+.el-color-picker--medium {
+    height: 36px
+}
+
+.el-color-picker--medium .el-color-picker__trigger {
+    height: 36px;
+    width: 36px
+}
+
+.el-color-picker--medium .el-color-picker__mask {
+    height: 34px;
+    width: 34px
+}
+
+.el-color-picker--small {
+    height: 32px
+}
+
+.el-color-picker--small .el-color-picker__trigger {
+    height: 32px;
+    width: 32px
+}
+
+.el-color-picker--small .el-color-picker__mask {
+    height: 30px;
+    width: 30px
+}
+
+.el-color-picker--small .el-color-picker__empty, .el-color-picker--small .el-color-picker__icon {
+    -webkit-transform: translate3d(-50%, -50%, 0) scale(.8);
+    transform: translate3d(-50%, -50%, 0) scale(.8)
+}
+
+.el-color-picker--mini {
+    height: 28px
+}
+
+.el-color-picker--mini .el-color-picker__trigger {
+    height: 28px;
+    width: 28px
+}
+
+.el-color-picker--mini .el-color-picker__mask {
+    height: 26px;
+    width: 26px
+}
+
+.el-color-picker--mini .el-color-picker__empty, .el-color-picker--mini .el-color-picker__icon {
+    -webkit-transform: translate3d(-50%, -50%, 0) scale(.8);
+    transform: translate3d(-50%, -50%, 0) scale(.8)
+}
+
+.el-color-picker__mask {
+    height: 38px;
+    width: 38px;
+    border-radius: 4px;
+    position: absolute;
+    top: 1px;
+    left: 1px;
+    z-index: 1;
+    cursor: not-allowed;
+    background-color: rgba(255, 255, 255, .7)
+}
+
+.el-color-picker__trigger {
+    display: inline-block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    height: 40px;
+    width: 40px;
+    padding: 4px;
+    border: 1px solid #e6e6e6;
+    border-radius: 4px;
+    font-size: 0;
+    position: relative;
+    cursor: pointer
+}
+
+.el-color-picker__color {
+    position: relative;
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    border: 1px solid #999;
+    border-radius: 2px;
+    width: 100%;
+    height: 100%;
+    text-align: center
+}
+
+.el-color-picker__color.is-alpha {
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)
+}
+
+.el-color-picker__color-inner {
+    position: absolute;
+    left: 0;
+    top: 0;
+    right: 0;
+    bottom: 0
+}
+
+.el-color-picker__empty, .el-color-picker__icon {
+    top: 50%;
+    left: 50%;
+    font-size: 12px;
+    position: absolute
+}
+
+.el-color-picker__empty {
+    color: #999;
+    -webkit-transform: translate3d(-50%, -50%, 0);
+    transform: translate3d(-50%, -50%, 0)
+}
+
+.el-color-picker__icon {
+    display: inline-block;
+    width: 100%;
+    -webkit-transform: translate3d(-50%, -50%, 0);
+    transform: translate3d(-50%, -50%, 0);
+    color: #FFF;
+    text-align: center
+}
+
+.el-color-picker__panel {
+    position: absolute;
+    z-index: 10;
+    padding: 6px;
+    -webkit-box-sizing: content-box;
+    box-sizing: content-box;
+    background-color: #FFF;
+    border: 1px solid #EBEEF5;
+    border-radius: 4px;
+    -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+    box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1)
+}
+
+.el-textarea {
+    position: relative;
+    display: inline-block;
+    width: 100%;
+    vertical-align: bottom;
+    font-size: 14px
+}
+
+.el-textarea__inner {
+    display: block;
+    resize: vertical;
+    padding: 5px 15px;
+    line-height: 1.5;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 100%;
+    font-size: inherit;
+    color: #606266;
+    background-color: #FFF;
+    background-image: none;
+    border: 1px solid #DCDFE6;
+    border-radius: 4px;
+    -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1);
+    transition: border-color .2s cubic-bezier(.645, .045, .355, 1)
+}
+
+.el-textarea__inner::-webkit-input-placeholder {
+    color: #C0C4CC
+}
+
+.el-textarea__inner:-ms-input-placeholder {
+    color: #C0C4CC
+}
+
+.el-textarea__inner::-ms-input-placeholder {
+    color: #C0C4CC
+}
+
+.el-textarea__inner::placeholder {
+    color: #C0C4CC
+}
+
+.el-textarea__inner:hover {
+    border-color: #C0C4CC
+}
+
+.el-textarea__inner:focus {
+    outline: 0;
+    border-color: #409EFF
+}
+
+.el-textarea .el-input__count {
+    color: #909399;
+    background: #FFF;
+    position: absolute;
+    font-size: 12px;
+    bottom: 5px;
+    right: 10px
+}
+
+.el-textarea.is-disabled .el-textarea__inner {
+    background-color: #F5F7FA;
+    border-color: #E4E7ED;
+    color: #C0C4CC;
+    cursor: not-allowed
+}
+
+.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder {
+    color: #C0C4CC
+}
+
+.el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder {
+    color: #C0C4CC
+}
+
+.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder {
+    color: #C0C4CC
+}
+
+.el-textarea.is-disabled .el-textarea__inner::placeholder {
+    color: #C0C4CC
+}
+
+.el-textarea.is-exceed .el-textarea__inner {
+    border-color: #F56C6C
+}
+
+.el-textarea.is-exceed .el-input__count {
+    color: #F56C6C
+}
+
+.el-input {
+    position: relative;
+    font-size: 14px;
+    display: inline-block;
+    width: 100%
+}
+
+.el-input::-webkit-scrollbar {
+    z-index: 11;
+    width: 6px
+}
+
+.el-button-group > .el-button.is-active, .el-button-group > .el-button.is-disabled, .el-button-group > .el-button:active, .el-button-group > .el-button:focus, .el-button-group > .el-button:hover {
+    z-index: 1
+}
+
+.el-input::-webkit-scrollbar:horizontal {
+    height: 6px
+}
+
+.el-input::-webkit-scrollbar-thumb {
+    border-radius: 5px;
+    width: 6px;
+    background: #b4bccc
+}
+
+.el-input::-webkit-scrollbar-corner {
+    background: #fff
+}
+
+.el-input::-webkit-scrollbar-track {
+    background: #fff
+}
+
+.el-input::-webkit-scrollbar-track-piece {
+    background: #fff;
+    width: 6px
+}
+
+.el-input .el-input__clear {
+    color: #C0C4CC;
+    font-size: 14px;
+    cursor: pointer;
+    -webkit-transition: color .2s cubic-bezier(.645, .045, .355, 1);
+    transition: color .2s cubic-bezier(.645, .045, .355, 1)
+}
+
+.el-input .el-input__clear:hover {
+    color: #909399
+}
+
+.el-input .el-input__count {
+    height: 100%;
+    display: -webkit-inline-box;
+    display: -ms-inline-flexbox;
+    display: inline-flex;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center;
+    color: #909399;
+    font-size: 12px
+}
+
+.el-input .el-input__count .el-input__count-inner {
+    background: #FFF;
+    line-height: initial;
+    display: inline-block;
+    padding: 0 5px
+}
+
+.el-input__inner {
+    -webkit-appearance: none;
+    background-color: #FFF;
+    background-image: none;
+    border-radius: 4px;
+    border: 1px solid #DCDFE6;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    color: #606266;
+    display: inline-block;
+    font-size: inherit;
+    height: 40px;
+    line-height: 40px;
+    outline: 0;
+    padding: 0 15px;
+    -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1);
+    transition: border-color .2s cubic-bezier(.645, .045, .355, 1);
+    width: 100%
+}
+
+.el-button, .el-transfer-panel {
+    -webkit-box-sizing: border-box
+}
+
+.el-input__prefix, .el-input__suffix {
+    position: absolute;
+    top: 0;
+    -webkit-transition: all .3s;
+    height: 100%;
+    color: #C0C4CC;
+    text-align: center
+}
+
+.el-input__inner::-webkit-input-placeholder {
+    color: #C0C4CC
+}
+
+.el-input__inner:-ms-input-placeholder {
+    color: #C0C4CC
+}
+
+.el-input__inner::-ms-input-placeholder {
+    color: #C0C4CC
+}
+
+.el-input__inner::placeholder {
+    color: #C0C4CC
+}
+
+.el-input__inner:hover {
+    border-color: #C0C4CC
+}
+
+.el-input.is-active .el-input__inner, .el-input__inner:focus {
+    border-color: #409EFF;
+    outline: 0
+}
+
+.el-input__suffix {
+    right: 5px;
+    transition: all .3s
+}
+
+.el-input__suffix-inner {
+    pointer-events: all
+}
+
+.el-input__prefix {
+    left: 5px;
+    transition: all .3s
+}
+
+.el-input__icon {
+    height: 100%;
+    width: 25px;
+    text-align: center;
+    -webkit-transition: all .3s;
+    transition: all .3s;
+    line-height: 40px
+}
+
+.el-input__icon:after {
+    content: '';
+    height: 100%;
+    width: 0;
+    display: inline-block;
+    vertical-align: middle
+}
+
+.el-input__validateIcon {
+    pointer-events: none
+}
+
+.el-input.is-disabled .el-input__inner {
+    background-color: #F5F7FA;
+    border-color: #E4E7ED;
+    color: #C0C4CC;
+    cursor: not-allowed
+}
+
+.el-input.is-disabled .el-input__inner::-webkit-input-placeholder {
+    color: #C0C4CC
+}
+
+.el-input.is-disabled .el-input__inner:-ms-input-placeholder {
+    color: #C0C4CC
+}
+
+.el-input.is-disabled .el-input__inner::-ms-input-placeholder {
+    color: #C0C4CC
+}
+
+.el-input.is-disabled .el-input__inner::placeholder {
+    color: #C0C4CC
+}
+
+.el-input.is-disabled .el-input__icon {
+    cursor: not-allowed
+}
+
+.el-input.is-exceed .el-input__inner {
+    border-color: #F56C6C
+}
+
+.el-input.is-exceed .el-input__suffix .el-input__count {
+    color: #F56C6C
+}
+
+.el-input--suffix .el-input__inner {
+    padding-right: 30px
+}
+
+.el-input--prefix .el-input__inner {
+    padding-left: 30px
+}
+
+.el-input--medium {
+    font-size: 14px
+}
+
+.el-input--medium .el-input__inner {
+    height: 36px;
+    line-height: 36px
+}
+
+.el-input--medium .el-input__icon {
+    line-height: 36px
+}
+
+.el-input--small {
+    font-size: 13px
+}
+
+.el-input--small .el-input__inner {
+    height: 32px;
+    line-height: 32px
+}
+
+.el-input--small .el-input__icon {
+    line-height: 32px
+}
+
+.el-input--mini {
+    font-size: 12px
+}
+
+.el-input--mini .el-input__inner {
+    height: 28px;
+    line-height: 28px
+}
+
+.el-input--mini .el-input__icon {
+    line-height: 28px
+}
+
+.el-input-group {
+    line-height: normal;
+    display: inline-table;
+    width: 100%;
+    border-collapse: separate;
+    border-spacing: 0
+}
+
+.el-input-group > .el-input__inner {
+    vertical-align: middle;
+    display: table-cell
+}
+
+.el-input-group__append, .el-input-group__prepend {
+    background-color: #F5F7FA;
+    color: #909399;
+    vertical-align: middle;
+    display: table-cell;
+    position: relative;
+    border: 1px solid #DCDFE6;
+    border-radius: 4px;
+    padding: 0 20px;
+    width: 1px;
+    white-space: nowrap
+}
+
+.el-input-group--prepend .el-input__inner, .el-input-group__append {
+    border-top-left-radius: 0;
+    border-bottom-left-radius: 0
+}
+
+.el-input-group--append .el-input__inner, .el-input-group__prepend {
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0
+}
+
+.el-input-group__append:focus, .el-input-group__prepend:focus {
+    outline: 0
+}
+
+.el-input-group__append .el-button, .el-input-group__append .el-select, .el-input-group__prepend .el-button, .el-input-group__prepend .el-select {
+    display: inline-block;
+    margin: -10px -20px
+}
+
+.el-input-group__append button.el-button, .el-input-group__append div.el-select .el-input__inner, .el-input-group__append div.el-select:hover .el-input__inner, .el-input-group__prepend button.el-button, .el-input-group__prepend div.el-select .el-input__inner, .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
+}
+
+.el-input-group__append .el-button, .el-input-group__append .el-input, .el-input-group__prepend .el-button, .el-input-group__prepend .el-input {
+    font-size: inherit
+}
+
+.el-input-group__prepend {
+    border-right: 0
+}
+
+.el-input-group__append {
+    border-left: 0
+}
+
+.el-input-group--append .el-select .el-input.is-focus .el-input__inner, .el-input-group--prepend .el-select .el-input.is-focus .el-input__inner {
+    border-color: transparent
+}
+
+.el-input__inner::-ms-clear {
+    display: none;
+    width: 0;
+    height: 0
+}
+
+.el-button {
+    display: inline-block;
+    line-height: 1;
+    white-space: nowrap;
+    cursor: pointer;
+    background: #FFF;
+    border: 1px solid #DCDFE6;
+    color: #606266;
+    -webkit-appearance: none;
+    text-align: center;
+    box-sizing: border-box;
+    outline: 0;
+    margin: 0;
+    -webkit-transition: .1s;
+    transition: .1s;
+    font-weight: 500;
+    -moz-user-select: none;
+    padding: 12px 20px;
+    font-size: 14px;
+    border-radius: 4px
+}
+
+.el-button + .el-button {
+    margin-left: 10px
+}
+
+.el-button:focus, .el-button:hover {
+    color: #409EFF;
+    border-color: #c6e2ff;
+    background-color: #ecf5ff
+}
+
+.el-button:active {
+    color: #3a8ee6;
+    border-color: #3a8ee6;
+    outline: 0
+}
+
+.el-button::-moz-focus-inner {
+    border: 0
+}
+
+.el-button [class*=el-icon-] + span {
+    margin-left: 5px
+}
+
+.el-button.is-plain:focus, .el-button.is-plain:hover {
+    background: #FFF;
+    border-color: #409EFF;
+    color: #409EFF
+}
+
+.el-button.is-active, .el-button.is-plain:active {
+    color: #3a8ee6;
+    border-color: #3a8ee6
+}
+
+.el-button.is-plain:active {
+    background: #FFF;
+    outline: 0
+}
+
+.el-button.is-disabled, .el-button.is-disabled:focus, .el-button.is-disabled:hover {
+    color: #C0C4CC;
+    cursor: not-allowed;
+    background-image: none;
+    background-color: #FFF;
+    border-color: #EBEEF5
+}
+
+.el-link, .el-transfer-panel__filter .el-icon-circle-close {
+    cursor: pointer
+}
+
+.el-button.is-disabled.el-button--text {
+    background-color: transparent
+}
+
+.el-button.is-disabled.is-plain, .el-button.is-disabled.is-plain:focus, .el-button.is-disabled.is-plain:hover {
+    background-color: #FFF;
+    border-color: #EBEEF5;
+    color: #C0C4CC
+}
+
+.el-button.is-loading {
+    position: relative;
+    pointer-events: none
+}
+
+.el-button.is-loading:before {
+    pointer-events: none;
+    content: '';
+    position: absolute;
+    left: -1px;
+    top: -1px;
+    right: -1px;
+    bottom: -1px;
+    border-radius: inherit;
+    background-color: rgba(255, 255, 255, .35)
+}
+
+.el-button.is-round {
+    border-radius: 20px;
+    padding: 12px 23px
+}
+
+.el-button.is-circle {
+    border-radius: 50%;
+    padding: 12px
+}
+
+.el-button--primary {
+    color: #FFF;
+    background-color: #409EFF;
+    border-color: #409EFF
+}
+
+.el-button--primary:focus, .el-button--primary:hover {
+    background: #66b1ff;
+    border-color: #66b1ff;
+    color: #FFF
+}
+
+.el-button--primary.is-active, .el-button--primary:active {
+    background: #3a8ee6;
+    border-color: #3a8ee6;
+    color: #FFF
+}
+
+.el-button--primary:active {
+    outline: 0
+}
+
+.el-button--primary.is-disabled, .el-button--primary.is-disabled:active, .el-button--primary.is-disabled:focus, .el-button--primary.is-disabled:hover {
+    color: #FFF;
+    background-color: #a0cfff;
+    border-color: #a0cfff
+}
+
+.el-button--primary.is-plain {
+    color: #409EFF;
+    background: #ecf5ff;
+    border-color: #b3d8ff
+}
+
+.el-button--primary.is-plain:focus, .el-button--primary.is-plain:hover {
+    background: #409EFF;
+    border-color: #409EFF;
+    color: #FFF
+}
+
+.el-button--primary.is-plain:active {
+    background: #3a8ee6;
+    border-color: #3a8ee6;
+    color: #FFF;
+    outline: 0
+}
+
+.el-button--primary.is-plain.is-disabled, .el-button--primary.is-plain.is-disabled:active, .el-button--primary.is-plain.is-disabled:focus, .el-button--primary.is-plain.is-disabled:hover {
+    color: #8cc5ff;
+    background-color: #ecf5ff;
+    border-color: #d9ecff
+}
+
+.el-button--success {
+    color: #FFF;
+    background-color: #67C23A;
+    border-color: #67C23A
+}
+
+.el-button--success:focus, .el-button--success:hover {
+    background: #85ce61;
+    border-color: #85ce61;
+    color: #FFF
+}
+
+.el-button--success.is-active, .el-button--success:active {
+    background: #5daf34;
+    border-color: #5daf34;
+    color: #FFF
+}
+
+.el-button--success:active {
+    outline: 0
+}
+
+.el-button--success.is-disabled, .el-button--success.is-disabled:active, .el-button--success.is-disabled:focus, .el-button--success.is-disabled:hover {
+    color: #FFF;
+    background-color: #b3e19d;
+    border-color: #b3e19d
+}
+
+.el-button--success.is-plain {
+    color: #67C23A;
+    background: #f0f9eb;
+    border-color: #c2e7b0
+}
+
+.el-button--success.is-plain:focus, .el-button--success.is-plain:hover {
+    background: #67C23A;
+    border-color: #67C23A;
+    color: #FFF
+}
+
+.el-button--success.is-plain:active {
+    background: #5daf34;
+    border-color: #5daf34;
+    color: #FFF;
+    outline: 0
+}
+
+.el-button--success.is-plain.is-disabled, .el-button--success.is-plain.is-disabled:active, .el-button--success.is-plain.is-disabled:focus, .el-button--success.is-plain.is-disabled:hover {
+    color: #a4da89;
+    background-color: #f0f9eb;
+    border-color: #e1f3d8
+}
+
+.el-button--warning {
+    color: #FFF;
+    background-color: #E6A23C;
+    border-color: #E6A23C
+}
+
+.el-button--warning:focus, .el-button--warning:hover {
+    background: #ebb563;
+    border-color: #ebb563;
+    color: #FFF
+}
+
+.el-button--warning.is-active, .el-button--warning:active {
+    background: #cf9236;
+    border-color: #cf9236;
+    color: #FFF
+}
+
+.el-button--warning:active {
+    outline: 0
+}
+
+.el-button--warning.is-disabled, .el-button--warning.is-disabled:active, .el-button--warning.is-disabled:focus, .el-button--warning.is-disabled:hover {
+    color: #FFF;
+    background-color: #f3d19e;
+    border-color: #f3d19e
+}
+
+.el-button--warning.is-plain {
+    color: #E6A23C;
+    background: #fdf6ec;
+    border-color: #f5dab1
+}
+
+.el-button--warning.is-plain:focus, .el-button--warning.is-plain:hover {
+    background: #E6A23C;
+    border-color: #E6A23C;
+    color: #FFF
+}
+
+.el-button--warning.is-plain:active {
+    background: #cf9236;
+    border-color: #cf9236;
+    color: #FFF;
+    outline: 0
+}
+
+.el-button--warning.is-plain.is-disabled, .el-button--warning.is-plain.is-disabled:active, .el-button--warning.is-plain.is-disabled:focus, .el-button--warning.is-plain.is-disabled:hover {
+    color: #f0c78a;
+    background-color: #fdf6ec;
+    border-color: #faecd8
+}
+
+.el-button--danger {
+    color: #FFF;
+    background-color: #F56C6C;
+    border-color: #F56C6C
+}
+
+.el-button--danger:focus, .el-button--danger:hover {
+    background: #f78989;
+    border-color: #f78989;
+    color: #FFF
+}
+
+.el-button--danger.is-active, .el-button--danger:active {
+    background: #dd6161;
+    border-color: #dd6161;
+    color: #FFF
+}
+
+.el-button--danger:active {
+    outline: 0
+}
+
+.el-button--danger.is-disabled, .el-button--danger.is-disabled:active, .el-button--danger.is-disabled:focus, .el-button--danger.is-disabled:hover {
+    color: #FFF;
+    background-color: #fab6b6;
+    border-color: #fab6b6
+}
+
+.el-button--danger.is-plain {
+    color: #F56C6C;
+    background: #fef0f0;
+    border-color: #fbc4c4
+}
+
+.el-button--danger.is-plain:focus, .el-button--danger.is-plain:hover {
+    background: #F56C6C;
+    border-color: #F56C6C;
+    color: #FFF
+}
+
+.el-button--danger.is-plain:active {
+    background: #dd6161;
+    border-color: #dd6161;
+    color: #FFF;
+    outline: 0
+}
+
+.el-button--danger.is-plain.is-disabled, .el-button--danger.is-plain.is-disabled:active, .el-button--danger.is-plain.is-disabled:focus, .el-button--danger.is-plain.is-disabled:hover {
+    color: #f9a7a7;
+    background-color: #fef0f0;
+    border-color: #fde2e2
+}
+
+.el-button--info {
+    color: #FFF;
+    background-color: #909399;
+    border-color: #909399
+}
+
+.el-button--info:focus, .el-button--info:hover {
+    background: #a6a9ad;
+    border-color: #a6a9ad;
+    color: #FFF
+}
+
+.el-button--info.is-active, .el-button--info:active {
+    background: #82848a;
+    border-color: #82848a;
+    color: #FFF
+}
+
+.el-button--info:active {
+    outline: 0
+}
+
+.el-button--info.is-disabled, .el-button--info.is-disabled:active, .el-button--info.is-disabled:focus, .el-button--info.is-disabled:hover {
+    color: #FFF;
+    background-color: #c8c9cc;
+    border-color: #c8c9cc
+}
+
+.el-button--info.is-plain {
+    color: #909399;
+    background: #f4f4f5;
+    border-color: #d3d4d6
+}
+
+.el-button--info.is-plain:focus, .el-button--info.is-plain:hover {
+    background: #909399;
+    border-color: #909399;
+    color: #FFF
+}
+
+.el-button--info.is-plain:active {
+    background: #82848a;
+    border-color: #82848a;
+    color: #FFF;
+    outline: 0
+}
+
+.el-button--info.is-plain.is-disabled, .el-button--info.is-plain.is-disabled:active, .el-button--info.is-plain.is-disabled:focus, .el-button--info.is-plain.is-disabled:hover {
+    color: #bcbec2;
+    background-color: #f4f4f5;
+    border-color: #e9e9eb
+}
+
+.el-button--text, .el-button--text.is-disabled, .el-button--text.is-disabled:focus, .el-button--text.is-disabled:hover, .el-button--text:active {
+    border-color: transparent
+}
+
+.el-button--medium {
+    padding: 10px 20px;
+    font-size: 14px;
+    border-radius: 4px
+}
+
+.el-button--mini, .el-button--small {
+    font-size: 12px;
+    border-radius: 3px
+}
+
+.el-button--medium.is-round {
+    padding: 10px 20px
+}
+
+.el-button--medium.is-circle {
+    padding: 10px
+}
+
+.el-button--small, .el-button--small.is-round {
+    padding: 9px 15px
+}
+
+.el-button--small.is-circle {
+    padding: 9px
+}
+
+.el-button--mini, .el-button--mini.is-round {
+    padding: 7px 15px
+}
+
+.el-button--mini.is-circle {
+    padding: 7px
+}
+
+.el-button--text {
+    color: #409EFF;
+    background: 0 0;
+    padding-left: 0;
+    padding-right: 0
+}
+
+.el-button--text:focus, .el-button--text:hover {
+    color: #66b1ff;
+    border-color: transparent;
+    background-color: transparent
+}
+
+.el-button--text:active {
+    color: #3a8ee6;
+    background-color: transparent
+}
+
+.el-button-group {
+    display: inline-block;
+    vertical-align: middle
+}
+
+.el-button-group::after, .el-button-group::before {
+    display: table;
+    content: ""
+}
+
+.el-button-group::after {
+    clear: both
+}
+
+.el-button-group > .el-button {
+    float: left;
+    position: relative
+}
+
+.el-button-group > .el-button + .el-button {
+    margin-left: 0
+}
+
+.el-button-group > .el-button:first-child {
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0
+}
+
+.el-button-group > .el-button:last-child {
+    border-top-left-radius: 0;
+    border-bottom-left-radius: 0
+}
+
+.el-button-group > .el-button:first-child:last-child {
+    border-radius: 4px
+}
+
+.el-button-group > .el-button:first-child:last-child.is-round {
+    border-radius: 20px
+}
+
+.el-button-group > .el-button:first-child:last-child.is-circle {
+    border-radius: 50%
+}
+
+.el-button-group > .el-button:not(:first-child):not(:last-child) {
+    border-radius: 0
+}
+
+.el-button-group > .el-button:not(:last-child) {
+    margin-right: -1px
+}
+
+.el-button-group > .el-dropdown > .el-button {
+    border-top-left-radius: 0;
+    border-bottom-left-radius: 0;
+    border-left-color: rgba(255, 255, 255, .5)
+}
+
+.el-button-group .el-button--primary:first-child {
+    border-right-color: rgba(255, 255, 255, .5)
+}
+
+.el-button-group .el-button--primary:last-child {
+    border-left-color: rgba(255, 255, 255, .5)
+}
+
+.el-button-group .el-button--primary:not(:first-child):not(:last-child) {
+    border-left-color: rgba(255, 255, 255, .5);
+    border-right-color: rgba(255, 255, 255, .5)
+}
+
+.el-button-group .el-button--success:first-child {
+    border-right-color: rgba(255, 255, 255, .5)
+}
+
+.el-button-group .el-button--success:last-child {
+    border-left-color: rgba(255, 255, 255, .5)
+}
+
+.el-button-group .el-button--success:not(:first-child):not(:last-child) {
+    border-left-color: rgba(255, 255, 255, .5);
+    border-right-color: rgba(255, 255, 255, .5)
+}
+
+.el-button-group .el-button--warning:first-child {
+    border-right-color: rgba(255, 255, 255, .5)
+}
+
+.el-button-group .el-button--warning:last-child {
+    border-left-color: rgba(255, 255, 255, .5)
+}
+
+.el-button-group .el-button--warning:not(:first-child):not(:last-child) {
+    border-left-color: rgba(255, 255, 255, .5);
+    border-right-color: rgba(255, 255, 255, .5)
+}
+
+.el-button-group .el-button--danger:first-child {
+    border-right-color: rgba(255, 255, 255, .5)
+}
+
+.el-button-group .el-button--danger:last-child {
+    border-left-color: rgba(255, 255, 255, .5)
+}
+
+.el-button-group .el-button--danger:not(:first-child):not(:last-child) {
+    border-left-color: rgba(255, 255, 255, .5);
+    border-right-color: rgba(255, 255, 255, .5)
+}
+
+.el-button-group .el-button--info:first-child {
+    border-right-color: rgba(255, 255, 255, .5)
+}
+
+.el-button-group .el-button--info:last-child {
+    border-left-color: rgba(255, 255, 255, .5)
+}
+
+.el-button-group .el-button--info:not(:first-child):not(:last-child) {
+    border-left-color: rgba(255, 255, 255, .5);
+    border-right-color: rgba(255, 255, 255, .5)
+}
+
+.el-transfer {
+    font-size: 14px
+}
+
+.el-transfer__buttons {
+    display: inline-block;
+    vertical-align: middle;
+    padding: 0 30px
+}
+
+.el-transfer__button {
+    display: block;
+    margin: 0 auto;
+    padding: 10px;
+    border-radius: 50%;
+    color: #FFF;
+    background-color: #409EFF;
+    font-size: 0
+}
+
+.el-transfer-panel__item + .el-transfer-panel__item, .el-transfer__button [class*=el-icon-] + span {
+    margin-left: 0
+}
+
+.el-transfer__button.is-with-texts {
+    border-radius: 4px
+}
+
+.el-transfer__button.is-disabled, .el-transfer__button.is-disabled:hover {
+    border: 1px solid #DCDFE6;
+    background-color: #F5F7FA;
+    color: #C0C4CC
+}
+
+.el-transfer__button:first-child {
+    margin-bottom: 10px
+}
+
+.el-transfer__button:nth-child(2) {
+    margin: 0
+}
+
+.el-transfer__button i, .el-transfer__button span {
+    font-size: 14px
+}
+
+.el-transfer-panel {
+    border: 1px solid #EBEEF5;
+    border-radius: 4px;
+    overflow: hidden;
+    background: #FFF;
+    display: inline-block;
+    vertical-align: middle;
+    width: 200px;
+    max-height: 100%;
+    box-sizing: border-box;
+    position: relative
+}
+
+.el-transfer-panel__body {
+    height: 246px
+}
+
+.el-transfer-panel__body.is-with-footer {
+    padding-bottom: 40px
+}
+
+.el-transfer-panel__list {
+    margin: 0;
+    padding: 6px 0;
+    list-style: none;
+    height: 246px;
+    overflow: auto;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+.el-transfer-panel__list.is-filterable {
+    height: 194px;
+    padding-top: 0
+}
+
+.el-transfer-panel__item {
+    height: 30px;
+    line-height: 30px;
+    padding-left: 15px;
+    display: block
+}
+
+.el-transfer-panel__item.el-checkbox {
+    color: #606266
+}
+
+.el-transfer-panel__item:hover {
+    color: #409EFF
+}
+
+.el-transfer-panel__item.el-checkbox .el-checkbox__label {
+    width: 100%;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    padding-left: 24px;
+    line-height: 30px
+}
+
+.el-transfer-panel__item .el-checkbox__input {
+    position: absolute;
+    top: 8px
+}
+
+.el-transfer-panel__filter {
+    text-align: center;
+    margin: 15px;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    display: block;
+    width: auto
+}
+
+.el-transfer-panel__filter .el-input__inner {
+    height: 32px;
+    width: 100%;
+    font-size: 12px;
+    display: inline-block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    border-radius: 16px;
+    padding-right: 10px;
+    padding-left: 30px
+}
+
+.el-transfer-panel__filter .el-input__icon {
+    margin-left: 5px
+}
+
+.el-transfer-panel .el-transfer-panel__header {
+    height: 40px;
+    line-height: 40px;
+    background: #F5F7FA;
+    margin: 0;
+    padding-left: 15px;
+    border-bottom: 1px solid #EBEEF5;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    color: #000
+}
+
+.el-transfer-panel .el-transfer-panel__header .el-checkbox {
+    display: block;
+    line-height: 40px
+}
+
+.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label {
+    font-size: 16px;
+    color: #303133;
+    font-weight: 400
+}
+
+.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span {
+    position: absolute;
+    right: 15px;
+    color: #909399;
+    font-size: 12px;
+    font-weight: 400
+}
+
+.el-divider__text, .el-link {
+    font-weight: 500;
+    font-size: 14px
+}
+
+.el-transfer-panel .el-transfer-panel__footer {
+    height: 40px;
+    background: #FFF;
+    margin: 0;
+    padding: 0;
+    border-top: 1px solid #EBEEF5;
+    position: absolute;
+    bottom: 0;
+    left: 0;
+    width: 100%;
+    z-index: 1
+}
+
+.el-transfer-panel .el-transfer-panel__footer::after {
+    display: inline-block;
+    content: "";
+    height: 100%;
+    vertical-align: middle
+}
+
+.el-container, .el-timeline-item__node {
+    display: -webkit-box;
+    display: -ms-flexbox
+}
+
+.el-transfer-panel .el-transfer-panel__footer .el-checkbox {
+    padding-left: 20px;
+    color: #606266
+}
+
+.el-transfer-panel .el-transfer-panel__empty {
+    margin: 0;
+    height: 30px;
+    line-height: 30px;
+    padding: 6px 15px 0;
+    color: #909399;
+    text-align: center
+}
+
+.el-transfer-panel .el-checkbox__label {
+    padding-left: 8px
+}
+
+.el-transfer-panel .el-checkbox__inner {
+    height: 14px;
+    width: 14px;
+    border-radius: 3px
+}
+
+.el-transfer-panel .el-checkbox__inner::after {
+    height: 6px;
+    width: 3px;
+    left: 4px
+}
+
+.el-container {
+    display: flex;
+    -webkit-box-orient: horizontal;
+    -ms-flex-direction: row;
+    flex-direction: row;
+    -webkit-box-flex: 1;
+    -ms-flex: 1;
+    flex: 1;
+    -ms-flex-preferred-size: auto;
+    flex-basis: auto;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    min-width: 0
+}
+
+.el-aside, .el-header {
+    -webkit-box-sizing: border-box
+}
+
+.el-container.is-vertical {
+    -webkit-box-orient: vertical;
+    -ms-flex-direction: column;
+    flex-direction: column
+}
+
+.el-header {
+    padding: 0 20px;
+    box-sizing: border-box;
+    -ms-flex-negative: 0;
+    flex-shrink: 0
+}
+
+.el-aside {
+    overflow: auto;
+    box-sizing: border-box;
+    -ms-flex-negative: 0;
+    flex-shrink: 0
+}
+
+.el-footer, .el-main {
+    -webkit-box-sizing: border-box
+}
+
+.el-main {
+    display: block;
+    -webkit-box-flex: 1;
+    -ms-flex: 1;
+    flex: 1;
+    -ms-flex-preferred-size: auto;
+    flex-basis: auto;
+    overflow: auto;
+    box-sizing: border-box;
+    padding: 20px
+}
+
+.el-footer {
+    padding: 0 20px;
+    box-sizing: border-box;
+    -ms-flex-negative: 0;
+    flex-shrink: 0
+}
+
+.el-timeline {
+    margin: 0;
+    font-size: 14px;
+    list-style: none
+}
+
+.el-timeline .el-timeline-item:last-child .el-timeline-item__tail {
+    display: none
+}
+
+.el-timeline-item {
+    position: relative;
+    padding-bottom: 20px
+}
+
+.el-timeline-item__wrapper {
+    position: relative;
+    padding-left: 28px;
+    top: -3px
+}
+
+.el-timeline-item__tail {
+    position: absolute;
+    left: 4px;
+    height: 100%;
+    border-left: 2px solid #E4E7ED
+}
+
+.el-timeline-item__icon {
+    color: #FFF;
+    font-size: 13px
+}
+
+.el-timeline-item__node {
+    position: absolute;
+    background-color: #E4E7ED;
+    border-radius: 50%;
+    display: flex;
+    -webkit-box-pack: center;
+    -ms-flex-pack: center;
+    justify-content: center;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center
+}
+
+.el-timeline-item__node--normal {
+    left: -1px;
+    width: 12px;
+    height: 12px
+}
+
+.el-timeline-item__node--large {
+    left: -2px;
+    width: 14px;
+    height: 14px
+}
+
+.el-timeline-item__node--primary {
+    background-color: #409EFF
+}
+
+.el-timeline-item__node--success {
+    background-color: #67C23A
+}
+
+.el-timeline-item__node--warning {
+    background-color: #E6A23C
+}
+
+.el-timeline-item__node--danger {
+    background-color: #F56C6C
+}
+
+.el-timeline-item__node--info {
+    background-color: #909399
+}
+
+.el-timeline-item__dot {
+    position: absolute;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-pack: center;
+    -ms-flex-pack: center;
+    justify-content: center;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center
+}
+
+.el-timeline-item__content {
+    color: #303133
+}
+
+.el-timeline-item__timestamp {
+    color: #909399;
+    line-height: 1;
+    font-size: 13px
+}
+
+.el-timeline-item__timestamp.is-top {
+    margin-bottom: 8px;
+    padding-top: 4px
+}
+
+.el-timeline-item__timestamp.is-bottom {
+    margin-top: 8px
+}
+
+.el-link {
+    display: -webkit-inline-box;
+    display: -ms-inline-flexbox;
+    display: inline-flex;
+    -webkit-box-orient: horizontal;
+    -ms-flex-direction: row;
+    flex-direction: row;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center;
+    -webkit-box-pack: center;
+    -ms-flex-pack: center;
+    justify-content: center;
+    vertical-align: middle;
+    position: relative;
+    text-decoration: none;
+    outline: 0;
+    padding: 0
+}
+
+.el-link.is-underline:hover:after {
+    content: "";
+    position: absolute;
+    left: 0;
+    right: 0;
+    height: 0;
+    bottom: 0;
+    border-bottom: 1px solid #409EFF
+}
+
+.el-link.el-link--default:after, .el-link.el-link--primary.is-underline:hover:after, .el-link.el-link--primary:after {
+    border-color: #409EFF
+}
+
+.el-link.is-disabled {
+    cursor: not-allowed
+}
+
+.el-link [class*=el-icon-] + span {
+    margin-left: 5px
+}
+
+.el-link.el-link--default {
+    color: #606266
+}
+
+.el-link.el-link--default:hover {
+    color: #409EFF
+}
+
+.el-link.el-link--default.is-disabled {
+    color: #C0C4CC
+}
+
+.el-link.el-link--primary {
+    color: #409EFF
+}
+
+.el-link.el-link--primary:hover {
+    color: #66b1ff
+}
+
+.el-link.el-link--primary.is-disabled {
+    color: #a0cfff
+}
+
+.el-link.el-link--danger.is-underline:hover:after, .el-link.el-link--danger:after {
+    border-color: #F56C6C
+}
+
+.el-link.el-link--danger {
+    color: #F56C6C
+}
+
+.el-link.el-link--danger:hover {
+    color: #f78989
+}
+
+.el-link.el-link--danger.is-disabled {
+    color: #fab6b6
+}
+
+.el-link.el-link--success.is-underline:hover:after, .el-link.el-link--success:after {
+    border-color: #67C23A
+}
+
+.el-link.el-link--success {
+    color: #67C23A
+}
+
+.el-link.el-link--success:hover {
+    color: #85ce61
+}
+
+.el-link.el-link--success.is-disabled {
+    color: #b3e19d
+}
+
+.el-link.el-link--warning.is-underline:hover:after, .el-link.el-link--warning:after {
+    border-color: #E6A23C
+}
+
+.el-link.el-link--warning {
+    color: #E6A23C
+}
+
+.el-link.el-link--warning:hover {
+    color: #ebb563
+}
+
+.el-link.el-link--warning.is-disabled {
+    color: #f3d19e
+}
+
+.el-link.el-link--info.is-underline:hover:after, .el-link.el-link--info:after {
+    border-color: #909399
+}
+
+.el-link.el-link--info {
+    color: #909399
+}
+
+.el-link.el-link--info:hover {
+    color: #a6a9ad
+}
+
+.el-link.el-link--info.is-disabled {
+    color: #c8c9cc
+}
+
+.el-divider {
+    background-color: #DCDFE6;
+    position: relative
+}
+
+.el-divider--horizontal {
+    display: block;
+    height: 1px;
+    width: 100%;
+    margin: 24px 0
+}
+
+.el-divider--vertical {
+    display: inline-block;
+    width: 1px;
+    height: 1em;
+    margin: 0 8px;
+    vertical-align: middle;
+    position: relative
+}
+
+.el-divider__text {
+    position: absolute;
+    background-color: #FFF;
+    padding: 0 20px;
+    color: #303133
+}
+
+.el-image__error, .el-image__placeholder {
+    background: #F5F7FA
+}
+
+.el-divider__text.is-left {
+    left: 20px;
+    -webkit-transform: translateY(-50%);
+    transform: translateY(-50%)
+}
+
+.el-divider__text.is-center {
+    left: 50%;
+    -webkit-transform: translateX(-50%) translateY(-50%);
+    transform: translateX(-50%) translateY(-50%)
+}
+
+.el-divider__text.is-right {
+    right: 20px;
+    -webkit-transform: translateY(-50%);
+    transform: translateY(-50%)
+}
+
+.el-image__error, .el-image__inner, .el-image__placeholder {
+    width: 100%;
+    height: 100%
+}
+
+.el-image {
+    position: relative;
+    display: inline-block;
+    overflow: hidden
+}
+
+.el-image__inner {
+    vertical-align: top
+}
+
+.el-image__inner--center {
+    position: relative;
+    top: 50%;
+    left: 50%;
+    -webkit-transform: translate(-50%, -50%);
+    transform: translate(-50%, -50%);
+    display: block
+}
+
+.el-calendar__header, .el-image__error {
+    display: -webkit-box;
+    display: -ms-flexbox
+}
+
+.el-image__error {
+    display: flex;
+    -webkit-box-pack: center;
+    -ms-flex-pack: center;
+    justify-content: center;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center;
+    font-size: 14px;
+    color: #C0C4CC;
+    vertical-align: middle
+}
+
+.el-calendar {
+    background-color: #fff
+}
+
+.el-calendar__header {
+    display: flex;
+    -webkit-box-pack: justify;
+    -ms-flex-pack: justify;
+    justify-content: space-between;
+    padding: 12px 20px;
+    border-bottom: 1px solid #EBEEF5
+}
+
+.el-backtop, .el-page-header {
+    display: -webkit-box;
+    display: -ms-flexbox
+}
+
+.el-calendar__title {
+    color: #000;
+    -ms-flex-item-align: center;
+    align-self: center
+}
+
+.el-calendar__body {
+    padding: 12px 20px 35px
+}
+
+.el-calendar-table {
+    table-layout: fixed;
+    width: 100%
+}
+
+.el-calendar-table thead th {
+    padding: 12px 0;
+    color: #606266;
+    font-weight: 400
+}
+
+.el-calendar-table:not(.is-range) td.next, .el-calendar-table:not(.is-range) td.prev {
+    color: #C0C4CC
+}
+
+.el-backtop, .el-calendar-table td.is-today {
+    color: #409EFF
+}
+
+.el-calendar-table td {
+    border-bottom: 1px solid #EBEEF5;
+    border-right: 1px solid #EBEEF5;
+    vertical-align: top;
+    -webkit-transition: background-color .2s ease;
+    transition: background-color .2s ease
+}
+
+.el-calendar-table td.is-selected {
+    background-color: #F2F8FE
+}
+
+.el-calendar-table tr:first-child td {
+    border-top: 1px solid #EBEEF5
+}
+
+.el-calendar-table tr td:first-child {
+    border-left: 1px solid #EBEEF5
+}
+
+.el-calendar-table tr.el-calendar-table__row--hide-border td {
+    border-top: none
+}
+
+.el-calendar-table .el-calendar-day {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    padding: 8px;
+    height: 85px
+}
+
+.el-calendar-table .el-calendar-day:hover {
+    cursor: pointer;
+    background-color: #F2F8FE
+}
+
+.el-backtop {
+    position: fixed;
+    background-color: #FFF;
+    width: 40px;
+    height: 40px;
+    border-radius: 50%;
+    display: flex;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center;
+    -webkit-box-pack: center;
+    -ms-flex-pack: center;
+    justify-content: center;
+    font-size: 20px;
+    -webkit-box-shadow: 0 0 6px rgba(0, 0, 0, .12);
+    box-shadow: 0 0 6px rgba(0, 0, 0, .12);
+    cursor: pointer;
+    z-index: 5
+}
+
+.el-backtop:hover {
+    background-color: #F2F6FC
+}
+
+.el-page-header {
+    display: flex;
+    line-height: 24px
+}
+
+.el-page-header__left {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    cursor: pointer;
+    margin-right: 40px;
+    position: relative
+}
+
+.el-page-header__left::after {
+    content: "";
+    position: absolute;
+    width: 1px;
+    height: 16px;
+    right: -20px;
+    top: 50%;
+    -webkit-transform: translateY(-50%);
+    transform: translateY(-50%);
+    background-color: #DCDFE6
+}
+
+.el-checkbox, .el-checkbox__input {
+    display: inline-block;
+    position: relative;
+    white-space: nowrap
+}
+
+.el-page-header__left .el-icon-back {
+    font-size: 18px;
+    margin-right: 6px;
+    -ms-flex-item-align: center;
+    align-self: center
+}
+
+.el-page-header__title {
+    font-size: 14px;
+    font-weight: 500
+}
+
+.el-page-header__content {
+    font-size: 18px;
+    color: #303133
+}
+
+.el-checkbox {
+    color: #606266;
+    font-weight: 500;
+    font-size: 14px;
+    cursor: pointer;
+    -moz-user-select: none;
+    user-select: none;
+    margin-right: 30px
+}
+
+.el-checkbox-button__inner, .el-radio {
+    font-weight: 500;
+    -moz-user-select: none;
+    -webkit-user-select: none;
+    -ms-user-select: none
+}
+
+.el-checkbox.is-bordered {
+    padding: 9px 20px 9px 10px;
+    border-radius: 4px;
+    border: 1px solid #DCDFE6;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    line-height: normal;
+    height: 40px
+}
+
+.el-checkbox.is-bordered.is-checked {
+    border-color: #409EFF
+}
+
+.el-checkbox.is-bordered.is-disabled {
+    border-color: #EBEEF5;
+    cursor: not-allowed
+}
+
+.el-checkbox.is-bordered + .el-checkbox.is-bordered {
+    margin-left: 10px
+}
+
+.el-checkbox.is-bordered.el-checkbox--medium {
+    padding: 7px 20px 7px 10px;
+    border-radius: 4px;
+    height: 36px
+}
+
+.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label {
+    line-height: 17px;
+    font-size: 14px
+}
+
+.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner {
+    height: 14px;
+    width: 14px
+}
+
+.el-checkbox.is-bordered.el-checkbox--small {
+    padding: 5px 15px 5px 10px;
+    border-radius: 3px;
+    height: 32px
+}
+
+.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label {
+    line-height: 15px;
+    font-size: 12px
+}
+
+.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner {
+    height: 12px;
+    width: 12px
+}
+
+.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after {
+    height: 6px;
+    width: 2px
+}
+
+.el-checkbox.is-bordered.el-checkbox--mini {
+    padding: 3px 15px 3px 10px;
+    border-radius: 3px;
+    height: 28px
+}
+
+.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label {
+    line-height: 12px;
+    font-size: 12px
+}
+
+.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner {
+    height: 12px;
+    width: 12px
+}
+
+.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after {
+    height: 6px;
+    width: 2px
+}
+
+.el-checkbox__input {
+    cursor: pointer;
+    outline: 0;
+    line-height: 1;
+    vertical-align: middle
+}
+
+.el-checkbox__input.is-disabled .el-checkbox__inner {
+    background-color: #edf2fc;
+    border-color: #DCDFE6;
+    cursor: not-allowed
+}
+
+.el-checkbox__input.is-disabled .el-checkbox__inner::after {
+    cursor: not-allowed;
+    border-color: #C0C4CC
+}
+
+.el-checkbox__input.is-disabled .el-checkbox__inner + .el-checkbox__label {
+    cursor: not-allowed
+}
+
+.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner {
+    background-color: #F2F6FC;
+    border-color: #DCDFE6
+}
+
+.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after {
+    border-color: #C0C4CC
+}
+
+.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner {
+    background-color: #F2F6FC;
+    border-color: #DCDFE6
+}
+
+.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before {
+    background-color: #C0C4CC;
+    border-color: #C0C4CC
+}
+
+.el-checkbox__input.is-checked .el-checkbox__inner, .el-checkbox__input.is-indeterminate .el-checkbox__inner {
+    background-color: #409EFF;
+    border-color: #409EFF
+}
+
+.el-checkbox__input.is-disabled + span.el-checkbox__label {
+    color: #C0C4CC;
+    cursor: not-allowed
+}
+
+.el-checkbox__input.is-checked .el-checkbox__inner::after {
+    -webkit-transform: rotate(45deg) scaleY(1);
+    transform: rotate(45deg) scaleY(1)
+}
+
+.el-checkbox__input.is-checked + .el-checkbox__label {
+    color: #409EFF
+}
+
+.el-checkbox__input.is-focus .el-checkbox__inner {
+    border-color: #409EFF
+}
+
+.el-checkbox__input.is-indeterminate .el-checkbox__inner::before {
+    content: '';
+    position: absolute;
+    display: block;
+    background-color: #FFF;
+    height: 2px;
+    -webkit-transform: scale(.5);
+    transform: scale(.5);
+    left: 0;
+    right: 0;
+    top: 5px
+}
+
+.el-checkbox__input.is-indeterminate .el-checkbox__inner::after {
+    display: none
+}
+
+.el-checkbox__inner {
+    display: inline-block;
+    position: relative;
+    border: 1px solid #DCDFE6;
+    border-radius: 2px;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 14px;
+    height: 14px;
+    background-color: #FFF;
+    z-index: 1;
+    -webkit-transition: border-color .25s cubic-bezier(.71, -.46, .29, 1.46), background-color .25s cubic-bezier(.71, -.46, .29, 1.46);
+    transition: border-color .25s cubic-bezier(.71, -.46, .29, 1.46), background-color .25s cubic-bezier(.71, -.46, .29, 1.46)
+}
+
+.el-checkbox__inner:hover {
+    border-color: #409EFF
+}
+
+.el-checkbox__inner::after {
+    -webkit-box-sizing: content-box;
+    box-sizing: content-box;
+    content: "";
+    border: 1px solid #FFF;
+    border-left: 0;
+    border-top: 0;
+    height: 7px;
+    left: 4px;
+    position: absolute;
+    top: 1px;
+    -webkit-transform: rotate(45deg) scaleY(0);
+    transform: rotate(45deg) scaleY(0);
+    width: 3px;
+    -webkit-transition: -webkit-transform .15s ease-in .05s;
+    transition: -webkit-transform .15s ease-in .05s;
+    transition: transform .15s ease-in .05s;
+    transition: transform .15s ease-in .05s, -webkit-transform .15s ease-in .05s;
+    -webkit-transform-origin: center;
+    transform-origin: center
+}
+
+.el-checkbox__original {
+    opacity: 0;
+    outline: 0;
+    position: absolute;
+    margin: 0;
+    width: 0;
+    height: 0;
+    z-index: -1
+}
+
+.el-checkbox-button, .el-checkbox-button__inner {
+    display: inline-block;
+    position: relative
+}
+
+.el-checkbox__label {
+    display: inline-block;
+    padding-left: 10px;
+    line-height: 19px;
+    font-size: 14px
+}
+
+.el-checkbox:last-child {
+    margin-right: 0
+}
+
+.el-checkbox-button__inner {
+    line-height: 1;
+    white-space: nowrap;
+    vertical-align: middle;
+    cursor: pointer;
+    background: #FFF;
+    border: 1px solid #DCDFE6;
+    border-left: 0;
+    color: #606266;
+    -webkit-appearance: none;
+    text-align: center;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    outline: 0;
+    margin: 0;
+    -webkit-transition: all .3s cubic-bezier(.645, .045, .355, 1);
+    transition: all .3s cubic-bezier(.645, .045, .355, 1);
+    padding: 12px 20px;
+    font-size: 14px;
+    border-radius: 0
+}
+
+.el-checkbox-button__inner.is-round {
+    padding: 12px 20px
+}
+
+.el-checkbox-button__inner:hover {
+    color: #409EFF
+}
+
+.el-checkbox-button__inner [class*=el-icon-] {
+    line-height: .9
+}
+
+.el-radio, .el-radio__input {
+    line-height: 1;
+    outline: 0;
+    white-space: nowrap
+}
+
+.el-checkbox-button__inner [class*=el-icon-] + span {
+    margin-left: 5px
+}
+
+.el-checkbox-button__original {
+    opacity: 0;
+    outline: 0;
+    position: absolute;
+    margin: 0;
+    z-index: -1
+}
+
+.el-radio, .el-radio__inner, .el-radio__input {
+    position: relative;
+    display: inline-block
+}
+
+.el-checkbox-button.is-checked .el-checkbox-button__inner {
+    color: #FFF;
+    background-color: #409EFF;
+    border-color: #409EFF;
+    -webkit-box-shadow: -1px 0 0 0 #8cc5ff;
+    box-shadow: -1px 0 0 0 #8cc5ff
+}
+
+.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner {
+    border-left-color: #409EFF
+}
+
+.el-checkbox-button.is-disabled .el-checkbox-button__inner {
+    color: #C0C4CC;
+    cursor: not-allowed;
+    background-image: none;
+    background-color: #FFF;
+    border-color: #EBEEF5;
+    -webkit-box-shadow: none;
+    box-shadow: none
+}
+
+.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner {
+    border-left-color: #EBEEF5
+}
+
+.el-checkbox-button:first-child .el-checkbox-button__inner {
+    border-left: 1px solid #DCDFE6;
+    border-radius: 4px 0 0 4px;
+    -webkit-box-shadow: none !important;
+    box-shadow: none !important
+}
+
+.el-checkbox-button.is-focus .el-checkbox-button__inner {
+    border-color: #409EFF
+}
+
+.el-checkbox-button:last-child .el-checkbox-button__inner {
+    border-radius: 0 4px 4px 0
+}
+
+.el-checkbox-button--medium .el-checkbox-button__inner {
+    padding: 10px 20px;
+    font-size: 14px;
+    border-radius: 0
+}
+
+.el-checkbox-button--medium .el-checkbox-button__inner.is-round {
+    padding: 10px 20px
+}
+
+.el-checkbox-button--small .el-checkbox-button__inner {
+    padding: 9px 15px;
+    font-size: 12px;
+    border-radius: 0
+}
+
+.el-checkbox-button--small .el-checkbox-button__inner.is-round {
+    padding: 9px 15px
+}
+
+.el-checkbox-button--mini .el-checkbox-button__inner {
+    padding: 7px 15px;
+    font-size: 12px;
+    border-radius: 0
+}
+
+.el-checkbox-button--mini .el-checkbox-button__inner.is-round {
+    padding: 7px 15px
+}
+
+.el-checkbox-group {
+    font-size: 0
+}
+
+.el-radio, .el-radio--medium.is-bordered .el-radio__label {
+    font-size: 14px
+}
+
+.el-radio {
+    color: #606266;
+    cursor: pointer;
+    margin-right: 30px
+}
+
+.el-cascader-node > .el-checkbox, .el-cascader-node > .el-radio, .el-radio:last-child {
+    margin-right: 0
+}
+
+.el-radio.is-bordered {
+    padding: 12px 20px 0 10px;
+    border-radius: 4px;
+    border: 1px solid #DCDFE6;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    height: 40px
+}
+
+.el-radio.is-bordered.is-checked {
+    border-color: #409EFF
+}
+
+.el-radio.is-bordered.is-disabled {
+    cursor: not-allowed;
+    border-color: #EBEEF5
+}
+
+.el-radio__input.is-disabled .el-radio__inner, .el-radio__input.is-disabled.is-checked .el-radio__inner {
+    background-color: #F5F7FA;
+    border-color: #E4E7ED
+}
+
+.el-radio.is-bordered + .el-radio.is-bordered {
+    margin-left: 10px
+}
+
+.el-radio--medium.is-bordered {
+    padding: 10px 20px 0 10px;
+    border-radius: 4px;
+    height: 36px
+}
+
+.el-radio--mini.is-bordered .el-radio__label, .el-radio--small.is-bordered .el-radio__label {
+    font-size: 12px
+}
+
+.el-radio--medium.is-bordered .el-radio__inner {
+    height: 14px;
+    width: 14px
+}
+
+.el-radio--small.is-bordered {
+    padding: 8px 15px 0 10px;
+    border-radius: 3px;
+    height: 32px
+}
+
+.el-radio--small.is-bordered .el-radio__inner {
+    height: 12px;
+    width: 12px
+}
+
+.el-radio--mini.is-bordered {
+    padding: 6px 15px 0 10px;
+    border-radius: 3px;
+    height: 28px
+}
+
+.el-radio--mini.is-bordered .el-radio__inner {
+    height: 12px;
+    width: 12px
+}
+
+.el-radio__input {
+    cursor: pointer;
+    vertical-align: middle
+}
+
+.el-radio__input.is-disabled .el-radio__inner {
+    cursor: not-allowed
+}
+
+.el-radio__input.is-disabled .el-radio__inner::after {
+    cursor: not-allowed;
+    background-color: #F5F7FA
+}
+
+.el-radio__input.is-disabled .el-radio__inner + .el-radio__label {
+    cursor: not-allowed
+}
+
+.el-radio__input.is-disabled.is-checked .el-radio__inner::after {
+    background-color: #C0C4CC
+}
+
+.el-radio__input.is-disabled + span.el-radio__label {
+    color: #C0C4CC;
+    cursor: not-allowed
+}
+
+.el-radio__input.is-checked .el-radio__inner {
+    border-color: #409EFF;
+    background: #409EFF
+}
+
+.el-radio__input.is-checked .el-radio__inner::after {
+    -webkit-transform: translate(-50%, -50%) scale(1);
+    transform: translate(-50%, -50%) scale(1)
+}
+
+.el-radio__input.is-checked + .el-radio__label {
+    color: #409EFF
+}
+
+.el-radio__input.is-focus .el-radio__inner {
+    border-color: #409EFF
+}
+
+.el-radio__inner {
+    border: 1px solid #DCDFE6;
+    border-radius: 100%;
+    width: 14px;
+    height: 14px;
+    background-color: #FFF;
+    cursor: pointer;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+.el-radio__inner:hover {
+    border-color: #409EFF
+}
+
+.el-radio__inner::after {
+    width: 4px;
+    height: 4px;
+    border-radius: 100%;
+    background-color: #FFF;
+    content: "";
+    position: absolute;
+    left: 50%;
+    top: 50%;
+    -webkit-transform: translate(-50%, -50%) scale(0);
+    transform: translate(-50%, -50%) scale(0);
+    -webkit-transition: -webkit-transform .15s ease-in;
+    transition: -webkit-transform .15s ease-in;
+    transition: transform .15s ease-in;
+    transition: transform .15s ease-in, -webkit-transform .15s ease-in
+}
+
+.el-radio__original {
+    opacity: 0;
+    outline: 0;
+    position: absolute;
+    z-index: -1;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    margin: 0
+}
+
+.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner {
+    -webkit-box-shadow: 0 0 2px 2px #409EFF;
+    box-shadow: 0 0 2px 2px #409EFF
+}
+
+.el-radio__label {
+    font-size: 14px;
+    padding-left: 10px
+}
+
+.el-scrollbar {
+    overflow: hidden;
+    position: relative
+}
+
+.el-scrollbar:active > .el-scrollbar__bar, .el-scrollbar:focus > .el-scrollbar__bar, .el-scrollbar:hover > .el-scrollbar__bar {
+    opacity: 1;
+    -webkit-transition: opacity 340ms ease-out;
+    transition: opacity 340ms ease-out
+}
+
+.el-scrollbar__wrap {
+    overflow: scroll;
+    height: 100%
+}
+
+.el-scrollbar__wrap--hidden-default::-webkit-scrollbar {
+    width: 0;
+    height: 0
+}
+
+.el-scrollbar__thumb {
+    position: relative;
+    display: block;
+    width: 0;
+    height: 0;
+    cursor: pointer;
+    border-radius: inherit;
+    background-color: rgba(144, 147, 153, .3);
+    -webkit-transition: .3s background-color;
+    transition: .3s background-color
+}
+
+.el-scrollbar__thumb:hover {
+    background-color: rgba(144, 147, 153, .5)
+}
+
+.el-scrollbar__bar {
+    position: absolute;
+    right: 2px;
+    bottom: 2px;
+    z-index: 1;
+    border-radius: 4px;
+    opacity: 0;
+    -webkit-transition: opacity 120ms ease-out;
+    transition: opacity 120ms ease-out
+}
+
+.el-scrollbar__bar.is-vertical {
+    width: 6px;
+    top: 2px
+}
+
+.el-scrollbar__bar.is-vertical > div {
+    width: 100%
+}
+
+.el-scrollbar__bar.is-horizontal {
+    height: 6px;
+    left: 2px
+}
+
+.el-scrollbar__bar.is-horizontal > div {
+    height: 100%
+}
+
+.el-cascader-panel {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    border-radius: 4px;
+    font-size: 14px
+}
+
+.el-cascader-panel.is-bordered {
+    border: 1px solid #E4E7ED;
+    border-radius: 4px
+}
+
+.el-cascader-menu {
+    min-width: 180px;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    color: #606266;
+    border-right: solid 1px #E4E7ED
+}
+
+.el-cascader-menu:last-child {
+    border-right: none
+}
+
+.el-cascader-menu:last-child .el-cascader-node {
+    padding-right: 20px
+}
+
+.el-cascader-menu__wrap {
+    height: 204px
+}
+
+.el-cascader-menu__list {
+    position: relative;
+    min-height: 100%;
+    margin: 0;
+    padding: 6px 0;
+    list-style: none;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+.el-cascader-menu__hover-zone {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    pointer-events: none
+}
+
+.el-cascader-menu__empty-text {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    -webkit-transform: translate(-50%, -50%);
+    transform: translate(-50%, -50%);
+    text-align: center;
+    color: #C0C4CC
+}
+
+.el-cascader-node {
+    position: relative;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center;
+    padding: 0 30px 0 20px;
+    height: 34px;
+    line-height: 34px;
+    outline: 0
+}
+
+.el-cascader-node.is-selectable.in-active-path {
+    color: #606266
+}
+
+.el-cascader-node.in-active-path, .el-cascader-node.is-active, .el-cascader-node.is-selectable.in-checked-path {
+    color: #409EFF;
+    font-weight: 700
+}
+
+.el-cascader-node:not(.is-disabled) {
+    cursor: pointer
+}
+
+.el-cascader-node:not(.is-disabled):focus, .el-cascader-node:not(.is-disabled):hover {
+    background: #F5F7FA
+}
+
+.el-cascader-node.is-disabled {
+    color: #C0C4CC;
+    cursor: not-allowed
+}
+
+.el-cascader-node__prefix {
+    position: absolute;
+    left: 10px
+}
+
+.el-cascader-node__postfix {
+    position: absolute;
+    right: 10px
+}
+
+.el-cascader-node__label {
+    -webkit-box-flex: 1;
+    -ms-flex: 1;
+    flex: 1;
+    padding: 0 10px;
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis
+}
+
+.el-cascader-node > .el-radio .el-radio__label {
+    padding-left: 0
+}
+
+.el-avatar {
+    display: inline-block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    text-align: center;
+    overflow: hidden;
+    color: #fff;
+    background: #C0C4CC;
+    width: 40px;
+    height: 40px;
+    line-height: 40px;
+    font-size: 14px
+}
+
+.el-avatar > img {
+    width: 100%;
+    height: 100%
+}
+
+.el-avatar--circle {
+    border-radius: 50%
+}
+
+.el-avatar--square {
+    border-radius: 4px
+}
+
+.el-avatar--icon {
+    font-size: 18px
+}
+
+.el-avatar--large {
+    width: 40px;
+    height: 40px;
+    line-height: 40px
+}
+
+.el-avatar--medium {
+    width: 36px;
+    height: 36px;
+    line-height: 36px
+}
+
+.el-avatar--small {
+    width: 28px;
+    height: 28px;
+    line-height: 28px
+}
diff --git a/src/assets/custom-theme/indexExtend.css b/src/assets/custom-theme/indexExtend.css
new file mode 100644
index 0000000..8379578
--- /dev/null
+++ b/src/assets/custom-theme/indexExtend.css
@@ -0,0 +1,10 @@
+@charset "UTF-8";
+.el-loading-spinner .el-loading-text {
+    color: #2b90ff;
+    margin: 3px 0;
+    font-size: x-large;
+}
+
+.el-radio, .el-radio--medium.is-bordered .el-radio__label {
+    font-size: 31px
+}
diff --git a/src/assets/exam-paper/show1.png b/src/assets/exam-paper/show1.png
new file mode 100644
index 0000000..6793623
--- /dev/null
+++ b/src/assets/exam-paper/show1.png
Binary files differ
diff --git a/src/assets/exam-paper/show2.png b/src/assets/exam-paper/show2.png
new file mode 100644
index 0000000..b21c10e
--- /dev/null
+++ b/src/assets/exam-paper/show2.png
Binary files differ
diff --git a/src/assets/exam-paper/show3.png b/src/assets/exam-paper/show3.png
new file mode 100644
index 0000000..b14d8f9
--- /dev/null
+++ b/src/assets/exam-paper/show3.png
Binary files differ
diff --git a/src/assets/logo-t.jpg b/src/assets/logo-t.jpg
new file mode 100644
index 0000000..0147868
--- /dev/null
+++ b/src/assets/logo-t.jpg
Binary files differ
diff --git a/src/assets/logo.jpeg b/src/assets/logo.jpeg
new file mode 100644
index 0000000..ceba950
--- /dev/null
+++ b/src/assets/logo.jpeg
Binary files differ
diff --git a/src/assets/logo.png b/src/assets/logo.png
new file mode 100644
index 0000000..778b744
--- /dev/null
+++ b/src/assets/logo.png
Binary files differ
diff --git a/src/assets/logo2.jpg b/src/assets/logo2.jpg
new file mode 100644
index 0000000..9a50125
--- /dev/null
+++ b/src/assets/logo2.jpg
Binary files differ
diff --git a/src/assets/logo2.png b/src/assets/logo2.png
new file mode 100644
index 0000000..65e4f49
--- /dev/null
+++ b/src/assets/logo2.png
Binary files differ
diff --git a/src/components/BackToTop/index.vue b/src/components/BackToTop/index.vue
new file mode 100644
index 0000000..dc222b4
--- /dev/null
+++ b/src/components/BackToTop/index.vue
@@ -0,0 +1,129 @@
+<template>
+  <transition :name="transitionName">
+    <div v-show="visible"  class="back-to-ceiling" @click="backToTop">
+      <svg width="16" height="16" viewBox="0 0 17 17" xmlns="http://www.w3.org/2000/svg" class="Icon Icon--backToTopArrow" aria-hidden="true" style="height:16px;width:16px">
+        <path d="M12.036 15.59a1 1 0 0 1-.997.995H5.032a.996.996 0 0 1-.997-.996V8.584H1.03c-1.1 0-1.36-.633-.578-1.416L7.33.29a1.003 1.003 0 0 1 1.412 0l6.878 6.88c.782.78.523 1.415-.58 1.415h-3.004v7.004z" />
+      </svg>
+    </div>
+  </transition>
+</template>
+
+<script>
+export default {
+  name: 'BackToTop',
+  props: {
+    visibilityHeight: {
+      type: Number,
+      default: 400
+    },
+    backPosition: {
+      type: Number,
+      default: 0
+    },
+    customStyle: {
+      type: Object,
+      default: function () {
+        return {
+          right: '20px',
+          bottom: '20px',
+          width: '30px',
+          height: '30px',
+          'border-radius': '4px',
+          'line-height': '35px',
+          background: '#e7eaf1'
+        }
+      }
+    },
+    transitionName: {
+      type: String,
+      default: 'fade'
+    }
+  },
+  data () {
+    return {
+      visible: false,
+      interval: null,
+      isMoving: false
+    }
+  },
+  mounted () {
+    window.addEventListener('scroll', this.handleScroll)
+  },
+  beforeDestroy () {
+    window.removeEventListener('scroll', this.handleScroll)
+    if (this.interval) {
+      clearInterval(this.interval)
+    }
+  },
+  methods: {
+    handleScroll () {
+      this.visible = window.pageYOffset > this.visibilityHeight
+    },
+    backToTop () {
+      if (this.isMoving) return
+      const start = window.pageYOffset
+      let i = 0
+      this.isMoving = true
+      this.interval = setInterval(() => {
+        const next = Math.floor(this.easeInOutQuad(10 * i, start, -start, 500))
+        if (next <= this.backPosition) {
+          window.scrollTo(0, this.backPosition)
+          clearInterval(this.interval)
+          this.isMoving = false
+        } else {
+          window.scrollTo(0, next)
+        }
+        i++
+      }, 5)
+    },
+    easeInOutQuad (t, b, c, d) {
+      if ((t /= d / 2) < 1) return c / 2 * t * t + b
+      return -c / 2 * (--t * (t - 2) - 1) + b
+    }
+  }
+}
+</script>
+
+<style scoped>
+.back-to-ceiling {
+/*  position: fixed;
+  display: inline-block;
+  text-align: center;
+  cursor: pointer;*/
+  right: 20px;
+  bottom: 7%;
+  line-height: 35px;
+  background: #fff;
+  position: fixed;
+  width: 40px;
+  height: 40px;
+  border-radius: 50%;
+  color: #409eff;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  font-size: 20px;
+  box-shadow: 0 0 6px rgba(0,0,0,.12);
+  cursor: pointer;
+  z-index: 5;
+}
+
+.back-to-ceiling:hover {
+  background: #d5dbe7;
+}
+
+.fade-enter-active,
+.fade-leave-active {
+  transition: opacity .5s;
+}
+
+.fade-enter,
+.fade-leave-to {
+  opacity: 0
+}
+
+.back-to-ceiling .Icon {
+  fill: #409eff;
+  background: none;
+}
+</style>
diff --git a/src/components/LangSelect/index.vue b/src/components/LangSelect/index.vue
new file mode 100644
index 0000000..12810ac
--- /dev/null
+++ b/src/components/LangSelect/index.vue
@@ -0,0 +1,55 @@
+<template>
+  <el-dropdown trigger="click" class="international" @command="handleSetLanguage">
+    <div style="color:white">
+      <svg-icon class-name="international-icon" icon-class="language" style="color:white"/>
+       LANGUAGE
+    </div>
+    <el-dropdown-menu slot="dropdown">
+      <template v-for="item in langType">
+        <el-dropdown-item :command="item.dictValue">
+          {{item.dictLabel}}
+        </el-dropdown-item>
+      </template>
+    </el-dropdown-menu>
+  </el-dropdown>
+</template>
+
+<script>
+import demographyApi from '@/api/demography'
+import { mapState, mapMutations } from 'vuex'
+
+export default {
+  data () {
+    return {
+      langType: []
+    }
+  },
+  created () {
+    let _this = this
+    demographyApi.queryLangList(_this.memberToken).then(function (result) {
+      if (result && result.code === 1) {
+        _this.langType = result.response
+      }
+    }
+    ).catch(e => {
+      _this.$message.error(_this.$t('noquestionMsg'))
+    })
+  },
+  computed: {
+    ...mapState('user', { memberToken: state => state.memberToken }),
+    ...mapState('user', { langType: state => state.langType })
+  },
+  methods: {
+    handleSetLanguage (lang) {
+      let _this = this
+      _this.setLangType(lang)
+      if (lang === 'Chinese') {
+        _this.$i18n.locale = 'zh'
+      } else {
+        _this.$i18n.locale = 'en'
+      }
+    },
+    ...mapMutations('user', ['setLangType'])
+  }
+}
+</script>
diff --git a/src/components/Pagination/index.vue b/src/components/Pagination/index.vue
new file mode 100644
index 0000000..116f648
--- /dev/null
+++ b/src/components/Pagination/index.vue
@@ -0,0 +1,100 @@
+<template>
+  <div :class="{'hidden':hidden}" class="pagination-container">
+    <el-pagination
+      :background="background"
+      :current-page.sync="currentPage"
+      :page-size.sync="pageSize"
+      :layout="layout"
+      :page-sizes="pageSizes"
+      :total="total"
+      v-bind="$attrs"
+      @size-change="handleSizeChange"
+      @current-change="handleCurrentChange"
+    />
+  </div>
+</template>
+
+<script>
+import { scrollTo } from '@/utils/scroll-to'
+
+export default {
+  name: 'Pagination',
+  props: {
+    total: {
+      required: true,
+      type: Number
+    },
+    page: {
+      type: Number,
+      default: 1
+    },
+    limit: {
+      type: Number,
+      default: 10
+    },
+    pageSizes: {
+      type: Array,
+      default () {
+        return [5, 10, 20, 30, 50]
+      }
+    },
+    layout: {
+      type: String,
+      default: 'prev, pager, next'
+    },
+    background: {
+      type: Boolean,
+      default: true
+    },
+    autoScroll: {
+      type: Boolean,
+      default: true
+    },
+    hidden: {
+      type: Boolean,
+      default: false
+    }
+  },
+  computed: {
+    currentPage: {
+      get () {
+        return this.page
+      },
+      set (val) {
+        this.$emit('update:page', val)
+      }
+    },
+    pageSize: {
+      get () {
+        return this.limit
+      },
+      set (val) {
+        this.$emit('update:limit', val)
+      }
+    }
+  },
+  methods: {
+    handleSizeChange (val) {
+      this.$emit('pagination', { page: this.currentPage, limit: val })
+      if (this.autoScroll) {
+        scrollTo(0, 800)
+      }
+    },
+    handleCurrentChange (val) {
+      this.$emit('pagination', { page: val, limit: this.pageSize })
+      if (this.autoScroll) {
+        scrollTo(0, 800)
+      }
+    }
+  }
+}
+</script>
+
+<style scoped>
+.pagination-container {
+  background: #fff;
+}
+.pagination-container.hidden {
+  display: none;
+}
+</style>
diff --git a/src/components/PanThumb/index.vue b/src/components/PanThumb/index.vue
new file mode 100644
index 0000000..de6940a
--- /dev/null
+++ b/src/components/PanThumb/index.vue
@@ -0,0 +1,140 @@
+<template>
+  <div :style="{zIndex:zIndex,height:height,width:width}" class="pan-item">
+    <div class="pan-info">
+      <div class="pan-info-roles-container">
+        <slot />
+      </div>
+    </div>
+    <img :src="image" class="pan-thumb">
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'PanThumb',
+  props: {
+    image: {
+      type: String,
+      required: true
+    },
+    zIndex: {
+      type: Number,
+      default: 1
+    },
+    width: {
+      type: String,
+      default: '150px'
+    },
+    height: {
+      type: String,
+      default: '150px'
+    }
+  }
+}
+</script>
+
+<style scoped>
+.pan-item {
+  width: 200px;
+  height: 200px;
+  border-radius: 50%;
+  display: inline-block;
+  position: relative;
+  cursor: default;
+  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
+}
+
+.pan-info-roles-container {
+  padding: 20px;
+  text-align: center;
+}
+
+.pan-thumb {
+  width: 100%;
+  height: 100%;
+  background-size: 100%;
+  border-radius: 50%;
+  overflow: hidden;
+  position: absolute;
+  transform-origin: 95% 40%;
+  transition: all 0.3s ease-in-out;
+}
+
+.pan-thumb:after {
+  content: '';
+  width: 8px;
+  height: 8px;
+  position: absolute;
+  border-radius: 50%;
+  top: 40%;
+  left: 95%;
+  margin: -4px 0 0 -4px;
+  background: radial-gradient(ellipse at center, rgba(14, 14, 14, 1) 0%, rgba(125, 126, 125, 1) 100%);
+  box-shadow: 0 0 1px rgba(255, 255, 255, 0.9);
+}
+
+.pan-info {
+  position: absolute;
+  width: inherit;
+  height: inherit;
+  border-radius: 50%;
+  overflow: hidden;
+  box-shadow: inset 0 0 0 5px rgba(0, 0, 0, 0.05);
+}
+
+.pan-info h3 {
+  color: #fff;
+  text-transform: uppercase;
+  position: relative;
+  letter-spacing: 2px;
+  font-size: 18px;
+  margin: 0 60px;
+  padding: 22px 0 0 0;
+  height: 85px;
+  font-family: 'Open Sans', Arial, sans-serif;
+  text-shadow: 0 0 1px #fff, 0 1px 2px rgba(0, 0, 0, 0.3);
+}
+
+.pan-info p {
+  color: #fff;
+  padding: 10px 5px;
+  font-style: italic;
+  margin: 0 30px;
+  font-size: 12px;
+  border-top: 1px solid rgba(255, 255, 255, 0.5);
+}
+
+.pan-info p a {
+  display: block;
+  color: #333;
+  width: 80px;
+  height: 80px;
+  background: rgba(255, 255, 255, 0.3);
+  border-radius: 50%;
+  color: #fff;
+  font-style: normal;
+  font-weight: 700;
+  text-transform: uppercase;
+  font-size: 9px;
+  letter-spacing: 1px;
+  padding-top: 24px;
+  margin: 7px auto 0;
+  font-family: 'Open Sans', Arial, sans-serif;
+  opacity: 0;
+  transition: transform 0.3s ease-in-out 0.2s, opacity 0.3s ease-in-out 0.2s, background 0.2s linear 0s;
+  transform: translateX(60px) rotate(90deg);
+}
+
+.pan-info p a:hover {
+  background: rgba(255, 255, 255, 0.5);
+}
+
+.pan-item:hover .pan-thumb {
+  transform: rotate(-110deg);
+}
+
+.pan-item:hover .pan-info p a {
+  opacity: 1;
+  transform: translateX(0px) rotate(0deg);
+}
+</style>
diff --git a/src/components/SvgIcon/index.vue b/src/components/SvgIcon/index.vue
new file mode 100644
index 0000000..57bbba0
--- /dev/null
+++ b/src/components/SvgIcon/index.vue
@@ -0,0 +1,62 @@
+<template>
+  <div v-if="isExternal" :style="styleExternalIcon" class="svg-external-icon svg-icon" v-on="$listeners" />
+  <svg v-else :class="svgClass" aria-hidden="true" v-on="$listeners">
+    <use :xlink:href="iconName" />
+  </svg>
+</template>
+
+<script>
+// doc: https://panjiachen.github.io/vue-element-admin-site/feature/component/svg-icon.html#usage
+import { isExternal } from '@/utils/validate'
+
+export default {
+  name: 'SvgIcon',
+  props: {
+    iconClass: {
+      type: String,
+      required: true
+    },
+    className: {
+      type: String,
+      default: ''
+    }
+  },
+  computed: {
+    isExternal () {
+      return isExternal(this.iconClass)
+    },
+    iconName () {
+      return `#icon-${this.iconClass}`
+    },
+    svgClass () {
+      if (this.className) {
+        return 'svg-icon ' + this.className
+      } else {
+        return 'svg-icon'
+      }
+    },
+    styleExternalIcon () {
+      return {
+        mask: `url(${this.iconClass}) no-repeat 50% 50%`,
+        '-webkit-mask': `url(${this.iconClass}) no-repeat 50% 50%`
+      }
+    }
+  }
+}
+</script>
+
+<style scoped>
+  .svg-icon {
+    width: 1em;
+    height: 1em;
+    vertical-align: -0.15em;
+    fill: currentColor;
+    overflow: hidden;
+  }
+
+  .svg-external-icon {
+    background-color: currentColor;
+    mask-size: cover!important;
+    display: inline-block;
+  }
+</style>
diff --git a/src/components/Ueditor/index.vue b/src/components/Ueditor/index.vue
new file mode 100644
index 0000000..1434230
--- /dev/null
+++ b/src/components/Ueditor/index.vue
@@ -0,0 +1,65 @@
+<template>
+  <div>
+    <script :id="randomId" type="text/plain" style="height: 300px;"></script>
+  </div>
+</template>
+
+<script>
+
+export default {
+  name: 'UE',
+  props: {
+    value: {
+      default: function () {
+        return ''
+      }
+    }
+  },
+  data () {
+    return {
+      randomId: 'editor_' + Math.random() * 100000000000000000,
+      // 缂栬緫鍣ㄥ疄渚�
+      instance: null,
+      ready: false
+    }
+  },
+  watch: {
+    value: function (val, oldVal) {
+      if (val != null && this.ready) {
+        // eslint-disable-next-line no-undef
+        this.instance = UE.getEditor(this.randomId)
+        this.instance.setContent(val)
+      }
+    }
+  },
+  mounted () {
+    this.initEditor()
+  },
+
+  beforeDestroy () {
+    if (this.instance !== null && this.instance.destroy) {
+      this.instance.destroy()
+    }
+  },
+  methods: {
+    initEditor () {
+      this.$nextTick(() => {
+        // eslint-disable-next-line no-undef
+        this.instance = UE.getEditor(this.randomId)
+        this.instance.addListener('ready', () => {
+          this.ready = true
+          this.$emit('ready', this.instance)
+        })
+      })
+    },
+    getUEContent () {
+      return this.instance.getContent()
+    },
+    setText (con) {
+      // eslint-disable-next-line no-undef
+      this.instance = UE.getEditor(this.randomId)
+      this.instance.setContent(con)
+    }
+  }
+}
+</script>
diff --git a/src/icons/index.js b/src/icons/index.js
new file mode 100644
index 0000000..2c6b309
--- /dev/null
+++ b/src/icons/index.js
@@ -0,0 +1,9 @@
+import Vue from 'vue'
+import SvgIcon from '@/components/SvgIcon'// svg component
+
+// register globally
+Vue.component('svg-icon', SvgIcon)
+
+const req = require.context('./svg', false, /\.svg$/)
+const requireAll = requireContext => requireContext.keys().map(requireContext)
+requireAll(req)
diff --git a/src/icons/svg/404.svg b/src/icons/svg/404.svg
new file mode 100644
index 0000000..6df5019
--- /dev/null
+++ b/src/icons/svg/404.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M121.718 73.272v9.953c3.957-7.584 6.199-16.05 6.199-24.995C127.917 26.079 99.273 0 63.958 0 28.644 0 0 26.079 0 58.23c0 .403.028.806.028 1.21l22.97-25.953h13.34l-19.76 27.187h6.42V53.77l13.728-19.477v49.361H22.998V73.272H2.158c5.951 20.284 23.608 36.208 45.998 41.399-1.44 3.3-5.618 11.263-12.565 12.674-8.607 1.764 23.358.428 46.163-13.178 17.519-4.611 31.938-15.849 39.77-30.513h-13.506V73.272H85.02V59.464l22.998-25.977h13.008l-19.429 27.187h6.421v-7.433l13.727-19.402v39.433h-.027zm-78.24 2.822a10.516 10.516 0 0 1-.996-4.535V44.548c0-1.613.332-3.124.996-4.535a11.66 11.66 0 0 1 2.713-3.68c1.134-1.032 2.49-1.864 4.04-2.468 1.55-.605 3.21-.908 4.982-.908h11.292c1.77 0 3.431.303 4.981.908 1.522.604 2.85 1.41 3.986 2.418l-12.26 16.303v-2.898a1.96 1.96 0 0 0-.665-1.512c-.443-.403-.996-.604-1.66-.604-.665 0-1.218.201-1.661.604a1.96 1.96 0 0 0-.664 1.512v9.071L44.364 77.606a10.556 10.556 0 0 1-.886-1.512zm35.73-4.535c0 1.613-.332 3.124-.997 4.535a11.66 11.66 0 0 1-2.712 3.68c-1.134 1.032-2.49 1.864-4.04 2.469-1.55.604-3.21.907-4.982.907H55.185c-1.77 0-3.431-.303-4.981-.907-1.55-.605-2.906-1.437-4.041-2.47a12.49 12.49 0 0 1-1.384-1.512l13.727-18.217v6.375c0 .605.222 1.109.665 1.512.442.403.996.604 1.66.604.664 0 1.218-.201 1.66-.604a1.96 1.96 0 0 0 .665-1.512V53.87L75.97 36.838c.913.932 1.66 1.99 2.214 3.175.664 1.41.996 2.922.996 4.535v27.011h.028z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/bug.svg b/src/icons/svg/bug.svg
new file mode 100644
index 0000000..05a150d
--- /dev/null
+++ b/src/icons/svg/bug.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M127.88 73.143c0 1.412-.506 2.635-1.518 3.669-1.011 1.033-2.209 1.55-3.592 1.55h-17.887c0 9.296-1.783 17.178-5.35 23.645l16.609 17.044c1.011 1.034 1.517 2.257 1.517 3.67 0 1.412-.506 2.635-1.517 3.668-.958 1.033-2.155 1.55-3.593 1.55-1.438 0-2.635-.517-3.593-1.55l-15.811-16.063a15.49 15.49 0 0 1-1.196 1.06c-.532.434-1.65 1.208-3.353 2.322a50.104 50.104 0 0 1-5.192 2.974c-1.758.87-3.94 1.658-6.546 2.364-2.607.706-5.189 1.06-7.748 1.06V47.044H58.89v73.062c-2.716 0-5.417-.367-8.106-1.102-2.688-.734-5.003-1.631-6.945-2.692a66.769 66.769 0 0 1-5.268-3.179c-1.571-1.057-2.73-1.94-3.476-2.65L33.9 109.34l-14.611 16.877c-1.066 1.14-2.344 1.711-3.833 1.711-1.277 0-2.422-.434-3.434-1.304-1.012-.978-1.557-2.187-1.635-3.627-.079-1.44.333-2.705 1.236-3.794l16.129-18.51c-3.087-6.197-4.63-13.644-4.63-22.342H5.235c-1.383 0-2.58-.517-3.592-1.55S.125 74.545.125 73.132c0-1.412.506-2.635 1.518-3.668 1.012-1.034 2.21-1.55 3.592-1.55h17.887V43.939L9.308 29.833c-1.012-1.033-1.517-2.256-1.517-3.669 0-1.412.505-2.635 1.517-3.668 1.012-1.034 2.21-1.55 3.593-1.55s2.58.516 3.593 1.55l13.813 14.106h67.396l13.814-14.106c1.012-1.034 2.21-1.55 3.592-1.55 1.384 0 2.581.516 3.593 1.55 1.012 1.033 1.518 2.256 1.518 3.668 0 1.413-.506 2.636-1.518 3.67l-13.814 14.105v23.975h17.887c1.383 0 2.58.516 3.593 1.55 1.011 1.033 1.517 2.256 1.517 3.668l-.005.01zM89.552 26.175H38.448c0-7.23 2.489-13.386 7.466-18.469C50.892 2.623 56.92.082 64 .082c7.08 0 13.108 2.541 18.086 7.624 4.977 5.083 7.466 11.24 7.466 18.469z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/chart.svg b/src/icons/svg/chart.svg
new file mode 100644
index 0000000..27728fb
--- /dev/null
+++ b/src/icons/svg/chart.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M0 54.857h36.571V128H0V54.857zM91.429 27.43H128V128H91.429V27.429zM45.714 0h36.572v128H45.714V0z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/clipboard.svg b/src/icons/svg/clipboard.svg
new file mode 100644
index 0000000..90923ff
--- /dev/null
+++ b/src/icons/svg/clipboard.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M54.857 118.857h64V73.143H89.143c-1.902 0-3.52-.668-4.855-2.002-1.335-1.335-2.002-2.954-2.002-4.855V36.57H54.857v82.286zM73.143 16v-4.571a2.2 2.2 0 0 0-.677-1.61 2.198 2.198 0 0 0-1.609-.676H20.571c-.621 0-1.158.225-1.609.676a2.198 2.198 0 0 0-.676 1.61V16a2.2 2.2 0 0 0 .676 1.61c.451.45.988.676 1.61.676h50.285c.622 0 1.158-.226 1.61-.677.45-.45.676-.987.676-1.609zm18.286 48h21.357L91.43 42.642V64zM128 73.143v48c0 1.902-.667 3.52-2.002 4.855-1.335 1.335-2.953 2.002-4.855 2.002H52.57c-1.901 0-3.52-.667-4.854-2.002-1.335-1.335-2.003-2.953-2.003-4.855v-11.429H6.857c-1.902 0-3.52-.667-4.855-2.002C.667 106.377 0 104.759 0 102.857v-96c0-1.902.667-3.52 2.002-4.855C3.337.667 4.955 0 6.857 0h77.714c1.902 0 3.52.667 4.855 2.002 1.335 1.335 2.003 2.953 2.003 4.855V30.29c1 .622 1.856 1.29 2.569 2.003l29.147 29.147c1.335 1.335 2.478 3.145 3.429 5.43.95 2.287 1.426 4.383 1.426 6.291v-.018z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/component.svg b/src/icons/svg/component.svg
new file mode 100644
index 0000000..207ada3
--- /dev/null
+++ b/src/icons/svg/component.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h54.857v54.857H0V0zm0 73.143h54.857V128H0V73.143zm73.143 0H128V128H73.143V73.143zm27.428-18.286C115.72 54.857 128 42.577 128 27.43 128 12.28 115.72 0 100.571 0 85.423 0 73.143 12.28 73.143 27.429c0 15.148 12.28 27.428 27.428 27.428z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/dashboard.svg b/src/icons/svg/dashboard.svg
new file mode 100644
index 0000000..5317d37
--- /dev/null
+++ b/src/icons/svg/dashboard.svg
@@ -0,0 +1 @@
+<svg width="128" height="100" xmlns="http://www.w3.org/2000/svg"><path d="M27.429 63.638c0-2.508-.893-4.65-2.679-6.424-1.786-1.775-3.94-2.662-6.464-2.662-2.524 0-4.679.887-6.465 2.662-1.785 1.774-2.678 3.916-2.678 6.424 0 2.508.893 4.65 2.678 6.424 1.786 1.775 3.94 2.662 6.465 2.662 2.524 0 4.678-.887 6.464-2.662 1.786-1.775 2.679-3.916 2.679-6.424zm13.714-31.801c0-2.508-.893-4.65-2.679-6.424-1.785-1.775-3.94-2.662-6.464-2.662-2.524 0-4.679.887-6.464 2.662-1.786 1.774-2.679 3.916-2.679 6.424 0 2.508.893 4.65 2.679 6.424 1.785 1.774 3.94 2.662 6.464 2.662 2.524 0 4.679-.888 6.464-2.662 1.786-1.775 2.679-3.916 2.679-6.424zM71.714 65.98l7.215-27.116c.285-1.23.107-2.378-.536-3.443-.643-1.064-1.56-1.762-2.75-2.094-1.19-.33-2.333-.177-3.429.462-1.095.639-1.81 1.573-2.143 2.804l-7.214 27.116c-2.857.237-5.405 1.266-7.643 3.088-2.238 1.822-3.738 4.152-4.5 6.992-.952 3.644-.476 7.098 1.429 10.364 1.905 3.265 4.69 5.37 8.357 6.317 3.667.947 7.143.474 10.429-1.42 3.285-1.892 5.404-4.66 6.357-8.305.762-2.84.619-5.607-.429-8.305-1.047-2.697-2.762-4.85-5.143-6.46zm47.143-2.342c0-2.508-.893-4.65-2.678-6.424-1.786-1.775-3.94-2.662-6.465-2.662-2.524 0-4.678.887-6.464 2.662-1.786 1.774-2.679 3.916-2.679 6.424 0 2.508.893 4.65 2.679 6.424 1.786 1.775 3.94 2.662 6.464 2.662 2.524 0 4.679-.887 6.465-2.662 1.785-1.775 2.678-3.916 2.678-6.424zm-45.714-45.43c0-2.509-.893-4.65-2.679-6.425C68.68 10.01 66.524 9.122 64 9.122c-2.524 0-4.679.887-6.464 2.661-1.786 1.775-2.679 3.916-2.679 6.425 0 2.508.893 4.65 2.679 6.424 1.785 1.774 3.94 2.662 6.464 2.662 2.524 0 4.679-.888 6.464-2.662 1.786-1.775 2.679-3.916 2.679-6.424zm32 13.629c0-2.508-.893-4.65-2.679-6.424-1.785-1.775-3.94-2.662-6.464-2.662-2.524 0-4.679.887-6.464 2.662-1.786 1.774-2.679 3.916-2.679 6.424 0 2.508.893 4.65 2.679 6.424 1.785 1.774 3.94 2.662 6.464 2.662 2.524 0 4.679-.888 6.464-2.662 1.786-1.775 2.679-3.916 2.679-6.424zM128 63.638c0 12.351-3.357 23.78-10.071 34.286-.905 1.372-2.19 2.058-3.858 2.058H13.93c-1.667 0-2.953-.686-3.858-2.058C3.357 87.465 0 76.037 0 63.638c0-8.613 1.69-16.847 5.071-24.703C8.452 31.08 13 24.312 18.714 18.634c5.715-5.68 12.524-10.199 20.429-13.559C47.048 1.715 55.333.035 64 .035c8.667 0 16.952 1.68 24.857 5.04 7.905 3.36 14.714 7.88 20.429 13.559 5.714 5.678 10.262 12.446 13.643 20.301 3.38 7.856 5.071 16.09 5.071 24.703z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/documentation.svg b/src/icons/svg/documentation.svg
new file mode 100644
index 0000000..7043122
--- /dev/null
+++ b/src/icons/svg/documentation.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M71.984 44.815H115.9L71.984 9.642v35.173zM16.094.05h63.875l47.906 38.37v76.74c0 3.392-1.682 6.645-4.677 9.044-2.995 2.399-7.056 3.746-11.292 3.746H16.094c-4.236 0-8.297-1.347-11.292-3.746-2.995-2.399-4.677-5.652-4.677-9.044V12.84C.125 5.742 7.23.05 16.094.05zm71.86 102.32V89.58h-71.86v12.79h71.86zm23.952-25.58V64H16.094v12.79h95.812z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/drag.svg b/src/icons/svg/drag.svg
new file mode 100644
index 0000000..4185d3c
--- /dev/null
+++ b/src/icons/svg/drag.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M73.137 29.08h-9.209 29.7L63.886.093 34.373 29.08h20.49v27.035H27.238v17.948h27.625v27.133h18.274V74.063h27.41V56.115h-27.41V29.08zm-9.245 98.827l27.518-26.711H36.59l27.302 26.71zM.042 64.982l27.196 27.029V38.167L.042 64.982zm100.505-26.815V92.01l27.41-27.029-27.41-26.815z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/edit.svg b/src/icons/svg/edit.svg
new file mode 100644
index 0000000..d26101f
--- /dev/null
+++ b/src/icons/svg/edit.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M106.133 67.2a4.797 4.797 0 0 0-4.8 4.8c0 .187.014.36.027.533h-.027V118.4H9.6V26.667h50.133c2.654 0 4.8-2.147 4.8-4.8 0-2.654-2.146-4.8-4.8-4.8H9.6a9.594 9.594 0 0 0-9.6 9.6V118.4c0 5.307 4.293 9.6 9.6 9.6h91.733c5.307 0 9.6-4.293 9.6-9.6V72.533h-.026c.013-.173.026-.346.026-.533 0-2.653-2.146-4.8-4.8-4.8z"/><path d="M125.16 13.373L114.587 2.8c-3.747-3.747-9.854-3.72-13.6.027l-52.96 52.96a4.264 4.264 0 0 0-.907 1.36L33.813 88.533c-.746 1.76-.226 3.534.907 4.68 1.133 1.147 2.92 1.667 4.693.92l31.4-13.293c.507-.213.96-.52 1.36-.907l52.96-52.96c3.747-3.746 3.774-9.853.027-13.6zM66.107 72.4l-18.32 7.76 7.76-18.32L92.72 24.667l10.56 10.56L66.107 72.4zm52.226-52.227l-8.266 8.267-10.56-10.56 8.266-8.267.027-.026 10.56 10.56-.027.026z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/education.svg b/src/icons/svg/education.svg
new file mode 100644
index 0000000..ac5dea5
--- /dev/null
+++ b/src/icons/svg/education.svg
@@ -0,0 +1,5 @@
+<svg width="1024" height="1024" 
+    xmlns="http://www.w3.org/2000/svg">
+    <path d="M832 1024h-640c-70.656 0-128-57.344-128-128V128c0-70.656 57.344-128 128-128h640c70.656 0 128 57.344 128 128v768c0 70.656-57.344 128-128 128zM192 64C156.672 64 128 92.672 128 128v768c0 35.328 28.672 64 64 64h640c35.328 0 64-28.672 64-64V128c0-35.328-28.672-64-64-64h-640z" ></path>
+    <path d="M256 992.256c-17.92 0-32.256-14.336-32.256-32.256v-896c0-17.92 14.336-31.744 32.256-31.744s32.256 14.336 32.256 31.744v896c-0.512 17.92-14.336 32.256-32.256 32.256zM544.256 384c-10.24 0-20.48-2.56-30.208-7.68-20.992-11.264-33.792-32.768-33.792-56.32v-256c0-17.92 14.336-31.744 32.256-31.744s32.256 14.336 32.256 31.744v256l78.336-52.224c10.752-7.168 24.576-7.168 35.328 0l78.336 52.224v-256c0-17.92 14.336-31.744 32.256-31.744s32.256 14.336 32.256 31.744v256c0 35.328-28.672 64-64 64-12.8 0-25.088-3.584-35.328-10.752L640 332.8l-60.416 40.448c-10.752 7.168-23.04 10.752-35.328 10.752zM768 832h-256c-17.92 0-32.256-14.336-32.256-32.256s14.336-32.256 32.256-32.256h256c17.92 0 32.256 14.336 32.256 32.256s-14.336 32.256-32.256 32.256z" ></path>
+</svg>
\ No newline at end of file
diff --git a/src/icons/svg/email.svg b/src/icons/svg/email.svg
new file mode 100644
index 0000000..74d25e2
--- /dev/null
+++ b/src/icons/svg/email.svg
@@ -0,0 +1 @@
+<svg width="128" height="96" xmlns="http://www.w3.org/2000/svg"><path d="M64.125 56.975L120.188.912A12.476 12.476 0 0 0 115.5 0h-103c-1.588 0-3.113.3-4.513.838l56.138 56.137z"/><path d="M64.125 68.287l-62.3-62.3A12.42 12.42 0 0 0 0 12.5v71C0 90.4 5.6 96 12.5 96h103c6.9 0 12.5-5.6 12.5-12.5v-71a12.47 12.47 0 0 0-1.737-6.35L64.125 68.287z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/exam.svg b/src/icons/svg/exam.svg
new file mode 100644
index 0000000..db8505c
--- /dev/null
+++ b/src/icons/svg/exam.svg
@@ -0,0 +1,7 @@
+<svg width="1024" height="1024" 
+    xmlns="http://www.w3.org/2000/svg">
+    <path d="M960.00781812 49.59100906H232.7603225a76.54434375 76.54434375 0 0 0-76.55607094 76.55607094v695.14976812H49.59100906v76.55607188a76.55607094 76.55607094 0 0 0 76.55607094 76.55607094h719.03835844a76.55607094 76.55607094 0 0 0 76.55607187-76.55607094V202.75006063h114.83410688V126.14708A76.55607094 76.55607094 0 0 0 960.00781812 49.59100906z m-833.81382843 886.58685563a38.27803594 38.27803594 0 0 1-38.26630782-38.27803594v-38.32494469h642.42364969v38.26630782a76.12215937 76.12215937 0 0 0 10.26142219 38.27803593zM883.45174719 126.14708v771.65893031a38.27803594 38.27803594 0 0 1-38.26630875 38.27803594h-38.27803594a38.27803594 38.27803594 0 0 1-38.28976219-38.23112625v-76.55607188H194.48228656V126.14708a38.27803594 38.27803594 0 0 1 38.27803594-38.32494469H893.72489656a76.22770594 76.22770594 0 0 0-10.26142218 38.26630875z m114.83410687 38.27803594h-76.55607187V126.14708a38.27803594 38.27803594 0 0 1 76.55607187 0z m-669.83044219 79.64036156h191.37845063a19.1390175 19.1390175 0 1 0 0-38.27803594H328.45541188a19.1390175 19.1390175 0 1 0-1e-8 38.27803594z m0 153.10041562h421.01148282a19.1390175 19.1390175 0 0 0 0-38.27803593h-421.01148282a19.1390175 19.1390175 0 1 0 0 38.27803593z m0 153.10041563h267.9345225a19.1390175 19.1390175 0 1 0 0-38.26630875H328.45541188a19.1390175 19.1390175 0 1 0-1e-8 38.26630875z m0 153.11214187h421.01148282a19.1390175 19.1390175 0 0 0 0-38.278035h-421.01148282a19.1390175 19.1390175 0 1 0 0 38.278035z m0 0" p-id="748"></path>
+    <path d="M845.18543844 977.34082625H126.14708a79.58172469 79.58172469 0 0 1-79.48790625-79.48790625v-79.48790625h106.62496969V126.14708A79.5699975 79.5699975 0 0 1 232.77204969 46.65917375h727.23576843a79.58172469 79.58172469 0 0 1 79.51136063 79.48790625v79.48790625h-114.85756125v692.21793375a79.58172469 79.58172469 0 0 1-79.47617906 79.48790625zM52.52284344 824.22868344v73.62423656a73.70632781 73.70632781 0 0 0 73.62423656 73.62423656h719.03835844a73.70632781 73.70632781 0 0 0 73.62423656-73.62423656V199.75958937h114.84583406V126.14708a73.70632781 73.70632781 0 0 0-73.64769094-73.62423656H232.7603225a73.70632781 73.70632781 0 0 0-73.62423656 73.62423656v698.08160344z m792.662595 114.83410687h-38.27803594a41.25678 41.25678 0 0 1-41.20987031-41.20987031v-73.62423656H191.55045219V126.14708a41.25678 41.25678 0 0 1 41.20987031-41.19814313h666.03078469l-2.54483344 4.3977525a73.33105312 73.33105312 0 0 0-9.87441938 36.80039063v771.65893031a41.25678 41.25678 0 0 1-41.18641593 41.25678zM197.41412187 818.36501375h574.14708v79.48790625a35.39311031 35.39311031 0 0 0 35.34620063 35.34620062h38.27803594a35.38138312 35.38138312 0 0 0 35.33447343-35.34620062v-771.65893031a79.21817719 79.21817719 0 0 1 8.29122938-35.33447344H232.7603225a35.38138312 35.38138312 0 0 0-35.34620062 35.33447344z m548.30002407 120.69777656H126.14708a41.25678 41.25678 0 0 1-41.23332469-41.20987031v-41.20987125h648.36941063v41.19814312a73.27241625 73.27241625 0 0 0 9.87442031 36.81211875zM90.777425 862.50671844v35.33447344a35.38138312 35.38138312 0 0 0 35.33447344 35.34620156h609.59882719a79.13608594 79.13608594 0 0 1-8.29122938-35.34620156v-35.33447344z m658.71292406-156.1964325h-421.01148281a22.07085281 22.07085281 0 1 1 0-44.14170563h421.01148281a22.07085281 22.07085281 0 0 1 0 44.14170563z m-421.01148281-38.27803594a16.20718313 16.20718313 0 1 0 0 32.41436625h421.01148281a16.20718313 16.20718313 0 0 0 0-32.41436625z m267.9345225-114.83410688H328.45541188a22.07085281 22.07085281 0 1 1-1e-8-44.1299775h267.92279438a22.07085281 22.07085281 0 1 1 0 44.1299775zM328.45541188 514.93183437a16.20718313 16.20718313 0 1 0-1e-8 32.40263907h267.92279438a16.20718313 16.20718313 0 1 0 0-32.40263907z m421.01148281-114.83410687h-421.01148282a22.07085281 22.07085281 0 1 1 1e-8-44.14170469h421.01148281a22.07085281 22.07085281 0 0 1 0 44.14170469z m-421.01148282-38.278035a16.20718313 16.20718313 0 1 0 1e-8 32.41436531h421.01148281a16.20718313 16.20718313 0 0 0 0-32.41436531z m191.37845063-114.82237969H328.45541188a22.07085281 22.07085281 0 1 1-1e-8-44.14170562h191.37845063a22.07085281 22.07085281 0 0 1 0 44.14170562z m-191.37845062-38.27803593a16.20718313 16.20718313 0 1 0-1e-8 32.41436625h191.37845063a16.20718313 16.20718313 0 0 0 0-32.41436625z m672.76227656-41.37405375h-82.41974063V126.14708a41.20987031 41.20987031 0 0 1 82.41974063 0z m-76.55607094-5.86366969h70.69240125V126.14708a35.34620062 35.34620062 0 0 0-70.69240125 0z" ></path>
+    <path d="M845.18543844 989.06816563H126.14708A91.32079125 91.32079125 0 0 1 34.93183437 897.85292v-91.21524562h106.62496969V126.14708A91.30906406 91.30906406 0 0 1 232.77204969 34.93183437h727.23576843a91.32079125 91.32079125 0 0 1 91.2387 91.21524563v91.21524562h-114.85756125v680.49059438a91.32079125 91.32079125 0 0 1-91.20351843 91.21524562zM64.25018281 835.95602281v61.89689719a61.96726125 61.96726125 0 0 0 61.89689719 61.89689719h719.03835844a61.96726125 61.96726125 0 0 0 61.89689718-61.89689719V188.03225h114.84583407V126.14708a61.96726125 61.96726125 0 0 0-61.92035157-61.89689719H232.7603225a61.95553406 61.95553406 0 0 0-61.89689719 61.89689719v709.80894281z m780.93525563 114.83410688h-38.27803594a52.99584656 52.99584656 0 0 1-52.93720969-52.93720969v-61.89689719H179.82311281V126.14708a52.99584656 52.99584656 0 0 1 52.93720969-52.9254825h686.40117281l-12.759345 22.01221594a61.59198656 61.59198656 0 0 0-8.29122937 30.90153937v771.71756719a52.99584656 52.99584656 0 0 1-52.9254825 52.93720969zM209.14146125 806.63767438h574.14708v91.21524562a23.64231656 23.64231656 0 0 0 23.61886125 23.61886125h38.27803594a23.64231656 23.64231656 0 0 0 23.60713406-23.61886125v-771.65893031a90.83997094 90.83997094 0 0 1 3.107745-23.60713406h-639.139995a23.64231656 23.64231656 0 0 0-23.61886125 23.60713406z m556.91961844 144.15245531H126.14708a52.99584656 52.99584656 0 0 1-52.96066406-52.93720969v-52.93721062h671.82408937v52.9254825a61.54507687 61.54507687 0 0 0 8.29122938 30.92499468zM102.50476437 874.23405781v23.60713406a23.64231656 23.64231656 0 0 0 23.60713407 23.61886219h592.68800344a90.73442437 90.73442437 0 0 1-3.107745-23.64231656v-23.58367969z m646.98558469-156.1964325h-421.01148281a33.79819219 33.79819219 0 1 1 0-67.59638437h421.01148281a33.79819219 33.79819219 0 0 1 0 67.59638437z m-421.01148281-38.27803594a4.47984375 4.47984375 0 1 0 0 8.9596875h421.01148281a4.47984375 4.47984375 0 0 0 0-8.9596875z m267.9345225-114.83410687H328.45541188a33.79819219 33.79819219 0 1 1-1e-8-67.58465625h267.92279438a33.79819219 33.79819219 0 1 1 0 67.58465625zM328.45541188 526.65917375a4.47984375 4.47984375 0 1 0-1e-8 8.94796031h267.92279438a4.47984375 4.47984375 0 1 0 0-8.94796031z m421.01148281-114.83410688h-421.01148282a33.79819219 33.79819219 0 1 1 1e-8-67.59638343h421.01148281a33.79819219 33.79819219 0 0 1 0 67.59638343z m-421.01148282-38.278035a4.47984375 4.47984375 0 1 0 1e-8 8.95968657h421.01148281a4.47984375 4.47984375 0 0 0 0-8.95968657z m191.37845063-114.82237968H328.45541188a33.79819219 33.79819219 0 1 1-1e-8-67.59638438h191.37845063a33.79819219 33.79819219 0 0 1 0 67.59638438z m-191.37845062-38.27803594a4.47984375 4.47984375 0 1 0-1e-8 8.9596875h191.37845063a4.47984375 4.47984375 0 0 0 0-8.9596875z m684.48961593-41.37405375h-105.87441937V126.14708a52.93720969 52.93720969 0 0 1 105.87441937 0z m-76.55607093-29.31834844h47.2377225V126.14708a23.61886125 23.61886125 0 0 0-47.2377225 0z"></path>
+    <path d="M845.18543844 992H126.14708A94.25262656 94.25262656 0 0 1 32 897.85292v-94.14708094h106.62496969V126.14708A94.25262656 94.25262656 0 0 1 232.77204969 32h727.23576843a94.25262656 94.25262656 0 0 1 94.14708094 94.14708v94.19398969h-114.83410781v677.51185031a94.25262656 94.25262656 0 0 1-94.13535281 94.14708zM37.86366969 809.56950875v88.28341125a88.37722969 88.37722969 0 0 0 88.28341031 88.28341031h719.03835844a88.37722969 88.37722969 0 0 0 88.28341125-88.28341031V214.4774h114.83410687V126.14708A88.37722969 88.37722969 0 0 0 960.00781812 37.86366969H232.7603225a88.37722969 88.37722969 0 0 0-88.28341031 88.28341031v683.42242875zM845.18543844 962.68165156H126.14708A64.89909563 64.89909563 0 0 1 61.31834844 897.85292v-64.8287325h106.62496968V126.14708A64.89909563 64.89909563 0 0 1 232.77204969 61.31834844h727.23576843a64.89909563 64.89909563 0 0 1 64.8287325 64.82873156v64.87564219h-114.83410781v706.83019781a64.89909563 64.89909563 0 0 1-64.81700437 64.82873156zM67.18201813 838.88785719v58.96506281a59.03542594 59.03542594 0 0 0 58.96506187 58.96506188h719.03835844a59.03542594 59.03542594 0 0 0 58.96506281-58.96506188V185.1590525h114.83410687V126.14708A59.03542594 59.03542594 0 0 0 960.00781812 67.18201813H232.7603225a59.02369875 59.02369875 0 0 0-58.96506187 58.96506187v712.74077719z m778.00342031 114.83410687h-38.27803594a55.92768187 55.92768187 0 0 1-55.88077125-55.86904406v-58.96506281H176.8912775V126.14708a55.92768187 55.92768187 0 0 1 55.869045-55.91595375h691.49083781l-15.3041775 26.40996844a58.63669688 58.63669688 0 0 0-7.89249937 29.43562125v771.77620406a55.92768187 55.92768187 0 0 1-55.869045 55.86904406zM182.75494719 833.0241875h574.13535375v64.8287325a50.06401219 50.06401219 0 0 0 50.00537437 50.00537438h38.27803594a50.06401219 50.06401219 0 0 0 49.99364719-50.00537438V126.12362562a64.50036656 64.50036656 0 0 1 8.68995937-32.37918374l10.20278438-17.59100907h-681.35841657a50.06401219 50.06401219 0 0 0-50.00537531 49.99364719z m588.39579843 120.69777656h-645.00366562a55.92768187 55.92768187 0 0 1-55.85731688-55.86904406v-55.869045h677.6525775v55.85731688a58.63669688 58.63669688 0 0 0 7.89249938 29.45907656zM76.14170563 847.84754469v49.99364719a50.06401219 50.06401219 0 0 0 49.99364718 50.00537531H760.97141469l-10.2145125-17.59100906a64.50036656 64.50036656 0 0 1-8.68995844-32.40263813v-50.00537531z m769.04373281 76.55607094h-38.27803594a26.58587813 26.58587813 0 0 1-26.56242281-26.55069563v-88.28341125H206.20962594V126.14708a26.57415094 26.57415094 0 0 1 26.55069656-26.59760531h642.96310781l-0.98509687 3.69411187a87.82604437 87.82604437 0 0 0-3.00219844 22.8448575v771.65892938a26.57415094 26.57415094 0 0 1-26.55069656 26.65624218zM212.07329563 803.70583906h574.13535374v94.14708094a20.71048125 20.71048125 0 0 0 20.68702594 20.68702594h38.27803594a20.71048125 20.71048125 0 0 0 20.67529969-20.68702594v-771.65893031a93.66625969 93.66625969 0 0 1 2.3454675-20.67529969H232.7603225a20.71048125 20.71048125 0 0 0-20.68702687 20.67529969zM722.62301469 924.40361563H126.14708a26.57415094 26.57415094 0 0 1-26.53896844-26.55069563v-26.55069656h619.01588063v26.52724125a87.77913469 87.77913469 0 0 0 3.00219843 22.88003906zM105.46005406 877.16589313v20.67529875a20.71048125 20.71048125 0 0 0 20.67529875 20.68702687h588.92352844a93.60762281 93.60762281 0 0 1-2.34546844-20.71048125v-20.65184437z m644.030295-156.19643344h-421.01148281a36.73002656 36.73002656 0 1 1 0-73.46005313h421.01148281a36.73002656 36.73002656 0 0 1 0 73.46005313z m-421.01148281-67.59638344a30.86635688 30.86635688 0 1 0 0 61.73271375h421.01148281a30.86635688 30.86635688 0 0 0 0-61.73271375z m421.01148281 38.278035h-421.01148281a7.41167812 7.41167812 0 1 1 0-14.82335625h421.01148281a7.41167812 7.41167812 0 0 1 0 14.82335625z m-421.01148281-8.95968656a1.54800844 1.54800844 0 1 0 0 3.09601687h421.01148281a1.54800844 1.54800844 0 0 0 0-3.09601687z m267.9345225-114.83410688H328.45541188a36.73002656 36.73002656 0 1 1-1e-8-73.44832687h267.92279438a36.73002656 36.73002656 0 1 1 0 73.44832687zM328.45541188 500.27266063a30.86635688 30.86635688 0 1 0-1e-8 61.72098749h267.92279438a30.86635688 30.86635688 0 1 0 0-61.7209875z m267.9345225 38.26630875H328.45541188a7.41167812 7.41167812 0 1 1-1e-8-14.81163h267.92279438a7.41167812 7.41167812 0 1 1 0 14.81163z m-267.93452251-8.94796032a1.54800844 1.54800844 0 1 0 1e-8 3.08429063h267.92279437a1.54800844 1.54800844 0 1 0 0-3.08429063z m421.01148282-114.83410687h-421.01148282a36.73002656 36.73002656 0 1 1 1e-8-73.46005407h421.01148281a36.73002656 36.73002656 0 0 1 0 73.46005407z m-421.01148282-67.59638438a30.86635688 30.86635688 0 1 0 1e-8 61.73271469h421.01148281a30.86635688 30.86635688 0 0 0 0-61.73271469z m421.01148282 38.27803594h-421.01148282a7.41167812 7.41167812 0 1 1 1e-8-14.82335719h421.01148281a7.41167812 7.41167812 0 0 1 0 14.82335719z m-421.01148282-8.9596875a1.54800844 1.54800844 0 1 0 1e-8 3.09601781h421.01148281a1.54800844 1.54800844 0 0 0 0-3.09601781z m191.37845063-114.82237969H328.45541188a36.73002656 36.73002656 0 1 1-1e-8-73.46005406h191.37845063a36.73002656 36.73002656 0 0 1 0 73.46005406z m-191.37845062-67.59638437a30.86635688 30.86635688 0 1 0-1e-8 61.73271468h191.37845063a30.86635688 30.86635688 0 0 0 0-61.73271468z m191.37845062 38.27803593H328.45541188a7.41167812 7.41167812 0 1 1-1e-8-14.82335718h191.37845063a7.41167812 7.41167812 0 0 1 0 14.82335718z m-191.37845062-8.9596875a1.54800844 1.54800844 0 1 0-1e-8 3.09601782h191.37845063a1.54800844 1.54800844 0 0 0 0-3.09601782z m687.42145125-41.37405281h-111.73809V126.14708a55.869045 55.869045 0 0 1 111.73809 0z m-105.87442032-5.86366969h100.01075063V126.14708a50.00537531 50.00537531 0 0 0-100.01075063 0z m76.55607188-23.45467875h-53.10139313V126.14708a26.55069656 26.55069656 0 0 1 53.10139313 0z m-47.23772344-5.86366968h41.37405375V126.14708a20.68702687 20.68702687 0 0 0-41.37405375 0z" ></path>
+</svg>
\ No newline at end of file
diff --git a/src/icons/svg/example.svg b/src/icons/svg/example.svg
new file mode 100644
index 0000000..46f42b5
--- /dev/null
+++ b/src/icons/svg/example.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M96.258 57.462h31.421C124.794 27.323 100.426 2.956 70.287.07v31.422a32.856 32.856 0 0 1 25.971 25.97zm-38.796-25.97V.07C27.323 2.956 2.956 27.323.07 57.462h31.422a32.856 32.856 0 0 1 25.97-25.97zm12.825 64.766v31.421c30.46-2.885 54.507-27.253 57.713-57.712H96.579c-2.886 13.466-13.146 23.726-26.292 26.291zM31.492 70.287H.07c2.886 30.46 27.253 54.507 57.713 57.713V96.579c-13.466-2.886-23.726-13.146-26.291-26.292z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/excel.svg b/src/icons/svg/excel.svg
new file mode 100644
index 0000000..74d97b8
--- /dev/null
+++ b/src/icons/svg/excel.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M78.208 16.576v8.384h38.72v5.376h-38.72v8.704h38.72v5.376h-38.72v8.576h38.72v5.376h-38.72v8.576h38.72v5.376h-38.72v8.576h38.72v5.376h-38.72v8.512h38.72v5.376h-38.72v11.136H128v-94.72H78.208zM0 114.368L72.128 128V0L0 13.632v100.736z"/><path d="M28.672 82.56h-11.2l14.784-23.488-14.08-22.592h11.52l8.192 14.976 8.448-14.976h11.136l-14.08 22.208L58.368 82.56H46.656l-8.768-15.68z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/exit-fullscreen.svg b/src/icons/svg/exit-fullscreen.svg
new file mode 100644
index 0000000..485c128
--- /dev/null
+++ b/src/icons/svg/exit-fullscreen.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M49.217 41.329l-.136-35.24c-.06-2.715-2.302-4.345-5.022-4.405h-3.65c-2.712-.06-4.866 2.303-4.806 5.016l.152 19.164-24.151-23.79a6.698 6.698 0 0 0-9.499 0 6.76 6.76 0 0 0 0 9.526l23.93 23.713-18.345.074c-2.712-.069-5.228 1.813-5.64 5.02v3.462c.069 2.721 2.31 4.97 5.022 5.03l35.028-.207c.052.005.087.025.133.025l2.457.054a4.626 4.626 0 0 0 3.436-1.38c.88-.874 1.205-2.096 1.169-3.462l-.262-2.465c0-.048.182-.081.182-.136h.002zm52.523 51.212l18.32-.073c2.713.06 5.224-1.609 5.64-4.815v-3.462c-.068-2.722-2.317-4.97-5.021-5.04l-34.58.21c-.053 0-.086-.021-.138-.021l-2.451-.06a4.64 4.64 0 0 0-3.445 1.381c-.885.868-1.201 2.094-1.174 3.46l.27 2.46c.005.06-.177.095-.177.141l.141 34.697c.069 2.713 2.31 4.338 5.022 4.397l3.45.006c2.705.062 4.867-2.31 4.8-5.026l-.153-18.752 24.151 23.946a6.69 6.69 0 0 0 9.494 0 6.747 6.747 0 0 0 0-9.523L101.74 92.54v.001zM48.125 80.662a4.636 4.636 0 0 0-3.437-1.382l-2.457.06c-.05 0-.082.022-.137.022l-35.025-.21c-2.712.07-4.957 2.318-5.022 5.04v3.462c.409 3.206 2.925 4.874 5.633 4.814l18.554.06-24.132 23.928c-2.62 2.626-2.62 6.89 0 9.524a6.694 6.694 0 0 0 9.496 0l24.155-23.79-.155 18.866c-.06 2.722 2.094 5.093 4.801 5.025h3.65c2.72-.069 4.962-1.685 5.022-4.406l.141-34.956c0-.05-.182-.082-.182-.136l.262-2.46c.03-1.366-.286-2.592-1.166-3.46h-.001zM80.08 47.397a4.62 4.62 0 0 0 3.443 1.374l2.45-.054c.055 0 .088-.02.143-.028l35.08.21c2.712-.062 4.953-2.312 5.021-5.033l.009-3.463c-.417-3.211-2.937-5.084-5.64-5.025l-18.615-.073 23.917-23.715c2.63-2.623 2.63-6.879.008-9.513a6.691 6.691 0 0 0-9.494 0L92.251 26.016l.155-19.312c.065-2.713-2.097-5.085-4.802-5.025h-3.45c-2.713.069-4.954 1.693-5.022 4.406l-.139 35.247c0 .054.18.088.18.136l-.267 2.465c-.028 1.366.288 2.588 1.174 3.463v.001z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/eye-open.svg b/src/icons/svg/eye-open.svg
new file mode 100644
index 0000000..88dcc98
--- /dev/null
+++ b/src/icons/svg/eye-open.svg
@@ -0,0 +1 @@
+<svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="128" height="128"><defs><style/></defs><path d="M512 128q69.675 0 135.51 21.163t115.498 54.997 93.483 74.837 73.685 82.006 51.67 74.837 32.17 54.827L1024 512q-2.347 4.992-6.315 13.483T998.87 560.17t-31.658 51.669-44.331 59.99-56.832 64.34-69.504 60.16-82.347 51.5-94.848 34.687T512 896q-69.675 0-135.51-21.163t-115.498-54.826-93.483-74.326-73.685-81.493-51.67-74.496-32.17-54.997L0 513.707q2.347-4.992 6.315-13.483t18.816-34.816 31.658-51.84 44.331-60.33 56.832-64.683 69.504-60.331 82.347-51.84 94.848-34.816T512 128.085zm0 85.333q-46.677 0-91.648 12.331t-81.152 31.83-70.656 47.146-59.648 54.485-48.853 57.686-37.675 52.821-26.325 43.99q12.33 21.674 26.325 43.52t37.675 52.351 48.853 57.003 59.648 53.845T339.2 767.02t81.152 31.488T512 810.667t91.648-12.331 81.152-31.659 70.656-46.848 59.648-54.186 48.853-57.344 37.675-52.651T927.957 512q-12.33-21.675-26.325-43.648t-37.675-52.65-48.853-57.345-59.648-54.186-70.656-46.848-81.152-31.659T512 213.334zm0 128q70.656 0 120.661 50.006T682.667 512 632.66 632.661 512 682.667 391.339 632.66 341.333 512t50.006-120.661T512 341.333zm0 85.334q-35.328 0-60.33 25.002T426.666 512t25.002 60.33T512 597.334t60.33-25.002T597.334 512t-25.002-60.33T512 426.666z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/eye.svg b/src/icons/svg/eye.svg
new file mode 100644
index 0000000..16ed2d8
--- /dev/null
+++ b/src/icons/svg/eye.svg
@@ -0,0 +1 @@
+<svg width="128" height="64" xmlns="http://www.w3.org/2000/svg"><path d="M127.072 7.994c1.37-2.208.914-5.152-.914-6.87-2.056-1.717-4.797-1.226-6.396.982-.229.245-25.586 32.382-55.74 32.382-29.24 0-55.74-32.382-55.968-32.627-1.6-1.963-4.57-2.208-6.397-.49C-.17 3.086-.399 6.275 1.2 8.238c.457.736 5.94 7.36 14.62 14.72L4.17 35.96c-1.828 1.963-1.6 5.152.228 6.87.457.98 1.6 1.471 2.742 1.471s2.284-.49 3.198-1.472l12.564-13.983c5.94 4.416 13.021 8.587 20.788 11.53l-4.797 17.418c-.685 2.699.686 5.397 3.198 6.133h1.37c2.057 0 3.884-1.472 4.341-3.68L52.6 42.83c3.655.736 7.538 1.227 11.422 1.227 3.883 0 7.767-.49 11.422-1.227l4.797 17.173c.457 2.208 2.513 3.68 4.34 3.68.457 0 .914 0 1.143-.246 2.513-.736 3.883-3.434 3.198-6.133l-4.797-17.172c7.767-2.944 14.848-7.114 20.788-11.53l12.336 13.738c.913.981 2.056 1.472 3.198 1.472s2.284-.49 3.198-1.472c1.828-1.963 1.828-4.906.228-6.87l-11.65-13.001c9.366-7.36 14.849-14.474 14.849-14.474z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/form.svg b/src/icons/svg/form.svg
new file mode 100644
index 0000000..dcbaa18
--- /dev/null
+++ b/src/icons/svg/form.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M84.068 23.784c-1.02 0-1.877-.32-2.572-.96a8.588 8.588 0 0 1-1.738-2.237 11.524 11.524 0 0 1-1.042-2.621c-.232-.895-.348-1.641-.348-2.238V0h.278c.834 0 1.622.085 2.363.256.742.17 1.645.575 2.711 1.214 1.066.64 2.363 1.535 3.892 2.686 1.53 1.15 3.453 2.664 5.77 4.54 2.502 2.045 4.494 3.771 5.977 5.178 1.483 1.406 2.618 2.6 3.406 3.58.787.98 1.274 1.812 1.46 2.494.185.682.277 1.278.277 1.79v2.046H84.068zM127.3 84.01c.278.682.464 1.535.556 2.558.093 1.023-.37 2.003-1.39 2.94-.463.427-.88.832-1.25 1.215-.372.384-.696.704-.974.96a6.69 6.69 0 0 1-.973.767l-11.816-10.741a44.331 44.331 0 0 0 1.877-1.535 31.028 31.028 0 0 1 1.737-1.406c1.112-.938 2.317-1.343 3.615-1.215 1.297.128 2.363.405 3.197.83.927.427 1.923 1.173 2.989 2.239 1.065 1.065 1.876 2.195 2.432 3.388zM78.23 95.902c2.038 0 3.752-.511 5.143-1.534l-26.969 25.83H18.037c-1.761 0-3.684-.47-5.77-1.407a24.549 24.549 0 0 1-5.838-3.709 21.373 21.373 0 0 1-4.518-5.306c-1.204-2.003-1.807-4.07-1.807-6.202V16.495c0-1.79.44-3.665 1.32-5.626A18.41 18.41 0 0 1 5.04 5.562a21.798 21.798 0 0 1 5.213-3.964C12.198.533 14.237 0 16.37 0h53.24v15.984c0 1.62.278 3.367.834 5.242a16.704 16.704 0 0 0 2.572 5.179c1.159 1.577 2.665 2.898 4.518 3.964 1.853 1.066 4.078 1.598 6.673 1.598h20.295v42.325L85.458 92.45c1.02-1.364 1.529-2.856 1.529-4.476 0-2.216-.857-4.113-2.572-5.69-1.714-1.577-3.776-2.366-6.186-2.366H26.1c-2.409 0-4.448.789-6.116 2.366-1.668 1.577-2.502 3.474-2.502 5.69 0 2.217.834 4.092 2.502 5.626 1.668 1.535 3.707 2.302 6.117 2.302h52.13zM26.1 47.951c-2.41 0-4.449.789-6.117 2.366-1.668 1.577-2.502 3.473-2.502 5.69 0 2.216.834 4.092 2.502 5.626 1.668 1.534 3.707 2.302 6.117 2.302h52.13c2.409 0 4.47-.768 6.185-2.302 1.715-1.534 2.572-3.41 2.572-5.626 0-2.217-.857-4.113-2.572-5.69-1.714-1.577-3.776-2.366-6.186-2.366H26.1zm52.407 64.063l1.807-1.663 3.476-3.196a479.75 479.75 0 0 0 4.587-4.284 500.757 500.757 0 0 1 5.004-4.667c3.985-3.666 8.48-7.758 13.485-12.276l11.677 10.741-13.485 12.404-5.004 4.603-4.587 4.22a179.46 179.46 0 0 0-3.267 3.068c-.88.853-1.367 1.322-1.46 1.407-.463.341-.973.703-1.529 1.087-.556.383-1.112.703-1.668.959-.556.256-1.413.575-2.572.959a83.5 83.5 0 0 1-3.545 1.087 72.2 72.2 0 0 1-3.475.895c-1.112.256-1.946.426-2.502.511-1.112.17-1.854.043-2.224-.383-.371-.426-.464-1.151-.278-2.174.092-.511.278-1.279.556-2.302.278-1.023.602-2.067.973-3.132l1.042-3.005c.325-.938.58-1.577.765-1.918a10.157 10.157 0 0 1 2.224-2.941z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/fullscreen.svg b/src/icons/svg/fullscreen.svg
new file mode 100644
index 0000000..0e86b6f
--- /dev/null
+++ b/src/icons/svg/fullscreen.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M38.47 52L52 38.462l-23.648-23.67L43.209 0H.035L0 43.137l14.757-14.865L38.47 52zm74.773 47.726L89.526 76 76 89.536l23.648 23.672L84.795 128h43.174L128 84.863l-14.757 14.863zM89.538 52l23.668-23.648L128 43.207V.038L84.866 0 99.73 14.76 76 38.472 89.538 52zM38.46 76L14.792 99.651 0 84.794v43.173l43.137.033-14.865-14.757L52 89.53 38.46 76z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/gitee.svg b/src/icons/svg/gitee.svg
new file mode 100644
index 0000000..100a044
--- /dev/null
+++ b/src/icons/svg/gitee.svg
@@ -0,0 +1,4 @@
+<svg width="90" height="90" 
+    xmlns="http://www.w3.org/2000/svg">
+     <path d="M86,37 L40,37 L40,37.0010476 C37.7912701,37.0010476 36.0005785,38.7912703 36.0000001,41.0000001 L35.9963338,51.0000001 L35.9952531,50.9999999 C35.9946746,53.2091388 37.7850666,55.0004687 39.9942055,55.0010472 C39.9945658,55.0010473 39.994926,55.0010473 39.9952863,55.0010473 L68,54.9997333 L68,54.9997 C70.209139,54.9996816 72.0000149,56.7905277 72.0000333,58.9996667 C72.0000333,58.9996778 72.0000333,58.9996889 72.0000333,58.9997 L72,59.9997 L72,61 L72,61 C72,67.627417 66.627417,73 60,73 L21.9970229,73 L21.9970229,72.9998897 C19.788201,72.9998897 17.99758,71.2093181 17.9975191,69.0004962 L17.9963613,31 L17.9960306,31 C17.9958479,24.372583 23.3682828,18.9998519 29.9956998,18.9996692 C29.99581,18.9996692 29.9959203,18.9996692 29.9960306,18.9996692 L85.988836,19 L85.988836,18.9975183 C88.1970062,18.9975183 89.9874656,17.208169 89.9888352,14.9999992 L89.9975191,4.99999923 L89.9999992,5.00000077 C90.0013694,2.79086219 88.2116195,0.998890802 86.0024809,0.997520639 C86.0016539,0.997520127 86.000827,0.99751987 86,0.99751987 L30,1 L30,1.00016539 C13.4315221,1.00016539 9.13442924e-05,14.4315221 4.58559413e-10,31 L-0.000474127419,87 L-0.000496179797,87 C-0.000508359022,89.209139 1.79034277,91.0000099 3.99948177,91.0000221 C3.99948912,91.0000221 3.99949647,91.0000221 3.99950382,91.0000221 L63,91 L63,91 C77.9116882,91 90,78.9116882 90,64 L90,41 L90,41 C90,38.790861 88.209139,37 86,37 Z"  fill="#C71D23"></path>
+</svg>
\ No newline at end of file
diff --git a/src/icons/svg/guide.svg b/src/icons/svg/guide.svg
new file mode 100644
index 0000000..b271001
--- /dev/null
+++ b/src/icons/svg/guide.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M1.482 70.131l36.204 16.18 69.932-65.485-61.38 70.594 46.435 18.735c1.119.425 2.397-.17 2.797-1.363v-.085L127.998.047 1.322 65.874c-1.12.597-1.519 1.959-1.04 3.151.32.511.72.937 1.2 1.107zm44.676 57.821L64.22 107.26l-18.062-7.834v28.527z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/home.svg b/src/icons/svg/home.svg
new file mode 100644
index 0000000..e7ca85e
--- /dev/null
+++ b/src/icons/svg/home.svg
@@ -0,0 +1,5 @@
+<svg width="1024" height="1024" 
+    xmlns="http://www.w3.org/2000/svg">
+    <path d="M1006.1 412.7l-187.5-141c0-0.2 0.1-0.3 0.1-0.4V121.4c0-2.3-1.9-4.2-4.2-4.2h-92.4c-2.3 0-4.2 1.9-4.2 4.2V196L535.3 58.8c-7.3-5.5-16-8.4-25.1-8.4-9.2 0-17.9 2.9-25.2 8.5L16.7 412.5C7.8 419.2 2.1 429 0.5 440.1c-2.1 14.8 3.8 29.5 16.2 39.3 4.3 3.3 9.2 5.7 14.5 7 13 3.2 25.8 0.6 36-7.1L505 148.6c3.1-2.3 7.4-2.3 10.4 0l441.8 332c7.3 5.5 16 8.4 25.1 8.4 13.7 0 26.3-6.5 34.2-17.7 13.3-18.8 7.9-44.9-10.4-58.6z" ></path>
+    <path d="M906.7 499.4l-193.2-140-196.7-142.5c-3.4-2.5-8.1-2.5-11.5 0L308.7 359.4l-193.2 140c-5.6 4.1-9 10.6-9 17.6v392.1c0 35.5 29 64.5 64.5 64.5h246.7V716.2c0-30 24.6-54.6 54.6-54.6h77.5c30 0 54.6 24.6 54.6 54.6v257.4h246.7c35.5 0 64.5-29 64.5-64.5V517c0.1-6.9-3.3-13.5-8.9-17.6z" ></path>
+</svg>
\ No newline at end of file
diff --git a/src/icons/svg/icon.svg b/src/icons/svg/icon.svg
new file mode 100644
index 0000000..82be8ee
--- /dev/null
+++ b/src/icons/svg/icon.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M115.147.062a13 13 0 0 1 4.94.945c1.55.63 2.907 1.526 4.069 2.688a13.148 13.148 0 0 1 2.761 4.069c.678 1.55 1.017 3.245 1.017 5.086v102.3c0 3.681-1.187 6.733-3.56 9.155-2.373 2.422-5.352 3.633-8.937 3.633H12.992c-3.875 0-7-1.26-9.373-3.779-2.373-2.518-3.56-5.667-3.56-9.445V12.704c0-3.39 1.163-6.345 3.488-8.863C5.872 1.32 8.972.062 12.847.062h102.3zM81.434 109.047c1.744 0 3.003-.412 3.778-1.235.775-.824 1.163-1.914 1.163-3.27 0-1.26-.388-2.325-1.163-3.197-.775-.872-2.034-1.307-3.778-1.307H72.57c.097-.194.145-.485.145-.872V27.09h9.01c1.743 0 2.954-.436 3.633-1.308.678-.872 1.017-1.938 1.017-3.197 0-1.26-.34-2.325-1.017-3.197-.679-.872-1.89-1.308-3.633-1.308H46.268c-1.743 0-2.954.436-3.632 1.308-.678.872-1.018 1.938-1.018 3.197 0 1.26.34 2.325 1.018 3.197.678.872 1.889 1.308 3.632 1.308h8.138v72.075c0 .193.024.339.073.436.048.096.072.242.072.436H46.56c-1.744 0-3.003.435-3.778 1.307-.775.872-1.163 1.938-1.163 3.197 0 1.356.388 2.446 1.163 3.27.775.823 2.034 1.235 3.778 1.235h34.875z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/international.svg b/src/icons/svg/international.svg
new file mode 100644
index 0000000..e9b56ee
--- /dev/null
+++ b/src/icons/svg/international.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M83.287 103.01c-1.57-3.84-6.778-10.414-15.447-19.548-2.327-2.444-2.182-4.306-1.338-9.862v-.64c.553-3.81 1.513-6.05 14.313-8.087 6.516-1.018 8.203 1.57 10.589 5.178l.785 1.193a12.625 12.625 0 0 0 6.43 5.207c1.134.524 2.53 1.164 4.421 2.24 4.596 2.53 4.596 5.41 4.596 11.753v.727a26.91 26.91 0 0 1-5.178 17.454 59.055 59.055 0 0 1-19.025 11.026c3.49-6.546.814-14.313 0-16.553l-.146-.087zM64 5.12a58.502 58.502 0 0 1 25.484 5.818 54.313 54.313 0 0 0-12.859 10.327c-.93 1.28-1.716 2.473-2.472 3.579-2.444 3.694-3.637 5.352-5.818 5.614a25.105 25.105 0 0 1-4.219 0c-4.276-.29-10.094-.64-11.956 4.422-1.193 3.23-1.396 11.956 2.444 16.495.66 1.077.778 2.4.32 3.578a7.01 7.01 0 0 1-2.066 3.229 18.938 18.938 0 0 1-2.909-2.91 18.91 18.91 0 0 0-8.32-6.603c-1.25-.349-2.647-.64-3.985-.93-3.782-.786-8.03-1.688-9.019-3.812a14.895 14.895 0 0 1-.727-5.818 21.935 21.935 0 0 0-1.396-9.25 8.873 8.873 0 0 0-5.557-4.946A58.705 58.705 0 0 1 64 5.12zM0 64c0 35.346 28.654 64 64 64 35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/language.svg b/src/icons/svg/language.svg
new file mode 100644
index 0000000..0082b57
--- /dev/null
+++ b/src/icons/svg/language.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M84.742 36.8c2.398 7.2 5.595 12.8 11.19 18.4 4.795-4.8 7.992-11.2 10.39-18.4h-21.58zm-52.748 40h20.78l-10.39-28-10.39 28z"/><path d="M111.916 0H16.009C7.218 0 .025 7.2.025 16v96c0 8.8 7.193 16 15.984 16h95.907c8.791 0 15.984-7.2 15.984-16V16c0-8.8-6.394-16-15.984-16zM72.754 103.2c-1.598 1.6-3.197 1.6-4.795 1.6-.8 0-2.398 0-3.197-.8-.8-.8-1.599 0-1.599-.8s-.799-1.6-1.598-3.2c-.8-1.6-.8-2.4-1.599-4l-3.196-8.8H28.797L25.6 96c-1.598 3.2-2.398 5.6-3.197 7.2-.8 1.6-2.398 1.6-4.795 1.6-1.599 0-3.197-.8-4.796-1.6-1.598-1.6-2.397-2.4-2.397-4 0-.8 0-1.6.799-3.2.8-1.6.8-2.4 1.598-4l17.583-44.8c.8-1.6.8-3.2 1.599-4.8.799-1.6 1.598-3.2 2.397-4 .8-.8 1.599-2.4 3.197-3.2 1.599-.8 3.197-.8 4.796-.8 1.598 0 3.196 0 4.795.8 1.598.8 2.398 1.6 3.197 3.2.799.8 1.598 2.4 2.397 4 .8 1.6 1.599 3.2 2.398 5.6l17.583 44c1.598 3.2 2.398 5.6 2.398 7.2-.8.8-1.599 2.4-2.398 4zM116.711 72c-8.791-3.2-15.185-7.2-20.78-12-5.594 5.6-12.787 9.6-21.579 12l-2.397-4c8.791-2.4 15.984-5.6 21.579-11.2C87.939 51.2 83.144 44 81.545 36h-7.992v-3.2h21.58c-1.6-2.4-3.198-5.6-4.796-8l2.397-.8c1.599 2.4 3.997 5.6 5.595 8.8h19.98v4h-7.992c-2.397 8-6.393 15.2-11.189 20 5.595 4.8 11.988 8.8 20.78 11.2l-3.197 4z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/link.svg b/src/icons/svg/link.svg
new file mode 100644
index 0000000..48197ba
--- /dev/null
+++ b/src/icons/svg/link.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M115.625 127.937H.063V12.375h57.781v12.374H12.438v90.813h90.813V70.156h12.374z"/><path d="M116.426 2.821l8.753 8.753-56.734 56.734-8.753-8.745z"/><path d="M127.893 37.982h-12.375V12.375H88.706V0h39.187z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/list.svg b/src/icons/svg/list.svg
new file mode 100644
index 0000000..20259ed
--- /dev/null
+++ b/src/icons/svg/list.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M1.585 12.087c0 6.616 3.974 11.98 8.877 11.98 4.902 0 8.877-5.364 8.877-11.98 0-6.616-3.975-11.98-8.877-11.98-4.903 0-8.877 5.364-8.877 11.98zM125.86.107H35.613c-1.268 0-2.114 1.426-2.114 2.852v18.255c0 1.712 1.057 2.853 2.114 2.853h90.247c1.268 0 2.114-1.426 2.114-2.853V2.96c0-1.711-1.057-2.852-2.114-2.852zM.106 62.86c0 6.615 3.974 11.979 8.876 11.979 4.903 0 8.877-5.364 8.877-11.98 0-6.616-3.974-11.98-8.877-11.98-4.902 0-8.876 5.364-8.876 11.98zM124.17 50.88H33.921c-1.268 0-2.114 1.425-2.114 2.851v18.256c0 1.711 1.057 2.852 2.114 2.852h90.247c1.268 0 2.114-1.426 2.114-2.852V53.73c0-1.426-.846-2.852-2.114-2.852zM.106 115.913c0 6.616 3.974 11.98 8.876 11.98 4.903 0 8.877-5.364 8.877-11.98 0-6.616-3.974-11.98-8.877-11.98-4.902 0-8.876 5.364-8.876 11.98zm124.064-11.98H33.921c-1.268 0-2.114 1.426-2.114 2.853v18.255c0 1.711 1.057 2.852 2.114 2.852h90.247c1.268 0 2.114-1.426 2.114-2.852v-18.255c0-1.427-.846-2.853-2.114-2.853z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/lock.svg b/src/icons/svg/lock.svg
new file mode 100644
index 0000000..74fee54
--- /dev/null
+++ b/src/icons/svg/lock.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M119.88 49.674h-7.987V39.52C111.893 17.738 90.45.08 63.996.08 37.543.08 16.1 17.738 16.1 39.52v10.154H8.113c-4.408 0-7.987 2.94-7.987 6.577v65.13c0 3.637 3.57 6.577 7.987 6.577H119.88c4.407 0 7.987-2.94 7.987-6.577v-65.13c-.008-3.636-3.58-6.577-7.987-6.577zm-23.953 0H32.065V39.52c0-14.524 14.301-26.295 31.931-26.295 17.63 0 31.932 11.777 31.932 26.295v10.153z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/message.svg b/src/icons/svg/message.svg
new file mode 100644
index 0000000..14ca817
--- /dev/null
+++ b/src/icons/svg/message.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M0 20.967v59.59c0 11.59 8.537 20.966 19.075 20.966h28.613l1 26.477L76.8 101.523h32.125c10.538 0 19.075-9.377 19.075-20.966v-59.59C128 9.377 119.463 0 108.925 0h-89.85C8.538 0 0 9.377 0 20.967zm82.325 33.1c0-5.524 4.013-9.935 9.037-9.935 5.026 0 9.038 4.41 9.038 9.934 0 5.524-4.025 9.934-9.038 9.934-5.024 0-9.037-4.41-9.037-9.934zm-27.613 0c0-5.524 4.013-9.935 9.038-9.935s9.037 4.41 9.037 9.934c0 5.524-4.025 9.934-9.037 9.934-5.025 0-9.038-4.41-9.038-9.934zm-27.1 0c0-5.524 4.013-9.935 9.038-9.935s9.038 4.41 9.038 9.934c0 5.524-4.026 9.934-9.05 9.934-5.013 0-9.025-4.41-9.025-9.934z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/money.svg b/src/icons/svg/money.svg
new file mode 100644
index 0000000..c1580de
--- /dev/null
+++ b/src/icons/svg/money.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M54.122 127.892v-28.68H7.513V87.274h46.609v-12.4H7.513v-12.86h38.003L.099 0h22.6l32.556 45.07c3.617 5.144 6.44 9.611 8.487 13.385 1.788-3.05 4.89-7.779 9.301-14.186L103.93 0h24.01L82.385 62.013h38.34v12.862h-46.41v12.4h46.41v11.937h-46.41v28.68H54.123z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/nested.svg b/src/icons/svg/nested.svg
new file mode 100644
index 0000000..06713a8
--- /dev/null
+++ b/src/icons/svg/nested.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M.002 9.2c0 5.044 3.58 9.133 7.998 9.133 4.417 0 7.997-4.089 7.997-9.133 0-5.043-3.58-9.132-7.997-9.132S.002 4.157.002 9.2zM31.997.066h95.981V18.33H31.997V.066zm0 45.669c0 5.044 3.58 9.132 7.998 9.132 4.417 0 7.997-4.088 7.997-9.132 0-3.263-1.524-6.278-3.998-7.91-2.475-1.63-5.524-1.63-7.998 0-2.475 1.632-4 4.647-4 7.91zM63.992 36.6h63.986v18.265H63.992V36.6zm-31.995 82.2c0 5.043 3.58 9.132 7.998 9.132 4.417 0 7.997-4.089 7.997-9.132 0-5.044-3.58-9.133-7.997-9.133s-7.998 4.089-7.998 9.133zm31.995-9.131h63.986v18.265H63.992V109.67zm0-27.404c0 5.044 3.58 9.133 7.998 9.133 4.417 0 7.997-4.089 7.997-9.133 0-3.263-1.524-6.277-3.998-7.909-2.475-1.631-5.524-1.631-7.998 0-2.475 1.632-4 4.646-4 7.91zm31.995-9.13h31.991V91.4H95.987V73.135z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/password.svg b/src/icons/svg/password.svg
new file mode 100644
index 0000000..e291d85
--- /dev/null
+++ b/src/icons/svg/password.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M108.8 44.322H89.6v-5.36c0-9.04-3.308-24.163-25.6-24.163-23.145 0-25.6 16.881-25.6 24.162v5.361H19.2v-5.36C19.2 15.281 36.798 0 64 0c27.202 0 44.8 15.281 44.8 38.961v5.361zm-32 39.356c0-5.44-5.763-9.832-12.8-9.832-7.037 0-12.8 4.392-12.8 9.832 0 3.682 2.567 6.808 6.407 8.477v11.205c0 2.718 2.875 4.962 6.4 4.962 3.524 0 6.4-2.244 6.4-4.962V92.155c3.833-1.669 6.393-4.795 6.393-8.477zM128 64v49.201c0 8.158-8.645 14.799-19.2 14.799H19.2C8.651 128 0 121.359 0 113.201V64c0-8.153 8.645-14.799 19.2-14.799h89.6c10.555 0 19.2 6.646 19.2 14.799z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/pdf.svg b/src/icons/svg/pdf.svg
new file mode 100644
index 0000000..957aa0c
--- /dev/null
+++ b/src/icons/svg/pdf.svg
@@ -0,0 +1 @@
+<svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="128" height="128"><path d="M869.073 277.307H657.111V65.344l211.962 211.963zm-238.232 26.27V65.344l-476.498-.054v416.957h714.73v-178.67H630.841zm-335.836 360.57c-5.07-3.064-10.944-5.133-17.61-6.201-6.67-1.064-13.603-1.6-20.81-1.6h-48.821v85.641h48.822c7.206 0 14.14-.532 20.81-1.6 6.665-1.065 12.54-3.133 17.609-6.202 5.064-3.063 9.134-7.406 12.208-13.007 3.065-5.602 4.6-12.937 4.6-22.011 0-9.07-1.535-16.408-4.6-22.01-3.074-5.603-7.144-9.94-12.208-13.01zM35.82 541.805v416.904h952.358V541.805H35.821zm331.421 191.179c-3.6 11.071-9.343 20.879-17.209 29.413-7.874 8.542-18.078 15.408-30.617 20.61-12.544 5.206-27.747 7.807-45.621 7.807h-66.036v102.45h-62.831V607.517h128.867c17.874 0 33.077 2.6 45.62 7.802 12.541 5.207 22.745 12.076 30.618 20.615 7.866 8.538 13.604 18.277 17.21 29.212 3.6 10.943 5.401 22.278 5.401 34.018 0 11.477-1.8 22.752-5.402 33.819zM644.9 806.417c-5.343 17.61-13.408 32.818-24.212 45.627-10.807 12.803-24.283 22.879-40.423 30.213-16.146 7.343-35.155 11.007-57.03 11.007h-123.26V607.518h123.26c18.41 0 35.552 2.941 51.428 8.808 15.873 5.869 29.618 14.671 41.22 26.412 11.608 11.744 20.674 26.411 27.217 44.02 6.535 17.61 9.803 38.288 9.803 62.035 0 20.81-2.67 40.02-8.003 57.624zm245.362-146.07h-138.07v66.03h119.66v48.829h-119.66v118.058h-62.83V607.518h200.9v52.829h-.001zm-318.2 25.611c-6.402-8.266-14.877-14.604-25.412-19.01-10.544-4.402-23.551-6.602-39.019-6.602h-44.825v180.088h56.029c9.07 0 17.872-1.463 26.415-4.401 8.535-2.932 16.14-7.802 22.812-14.609 6.665-6.8 12.007-15.667 16.007-26.61 4.003-10.94 6.003-24.275 6.003-40.021 0-14.408-1.4-27.416-4.202-39.019-2.8-11.607-7.406-21.542-13.808-29.816zm0 0"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/people.svg b/src/icons/svg/people.svg
new file mode 100644
index 0000000..2bd54ae
--- /dev/null
+++ b/src/icons/svg/people.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M104.185 95.254c8.161 7.574 13.145 17.441 13.145 28.28 0 1.508-.098 2.998-.285 4.466h-10.784c.238-1.465.403-2.948.403-4.465 0-8.983-4.36-17.115-11.419-23.216C86 104.66 75.355 107.162 64 107.162c-11.344 0-21.98-2.495-31.22-6.83-7.064 6.099-11.444 14.218-11.444 23.203 0 1.517.165 3 .403 4.465H10.955a35.444 35.444 0 0 1-.285-4.465c0-10.838 4.974-20.713 13.127-28.291C9.294 85.42.003 70.417.003 53.58.003 23.99 28.656.001 64 .001s63.997 23.988 63.997 53.58c0 16.842-9.299 31.85-23.812 41.673zM64 36.867c-29.454 0-53.33-10.077-53.33 15.342 0 25.418 23.876 46.023 53.33 46.023 29.454 0 53.33-20.605 53.33-46.023 0-25.419-23.876-15.342-53.33-15.342zm24.888 25.644c-3.927 0-7.111-2.665-7.111-5.953 0-3.288 3.184-5.954 7.11-5.954 3.928 0 7.111 2.666 7.111 5.954s-3.183 5.953-7.11 5.953zm-3.556 16.372c0 4.11-9.55 7.442-21.332 7.442-11.781 0-21.332-3.332-21.332-7.442 0-1.06.656-2.064 1.8-2.976 3.295 2.626 10.79 4.465 19.532 4.465 8.743 0 16.237-1.84 19.531-4.465 1.145.912 1.801 1.916 1.801 2.976zm-46.22-16.372c-3.927 0-7.11-2.665-7.11-5.953 0-3.288 3.183-5.954 7.11-5.954 3.927 0 7.111 2.666 7.111 5.954s-3.184 5.953-7.11 5.953z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/peoples.svg b/src/icons/svg/peoples.svg
new file mode 100644
index 0000000..aab852e
--- /dev/null
+++ b/src/icons/svg/peoples.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M95.648 118.762c0 5.035-3.563 9.121-7.979 9.121H7.98c-4.416 0-7.979-4.086-7.979-9.121C0 100.519 15.408 83.47 31.152 76.75c-9.099-6.43-15.216-17.863-15.216-30.987v-9.128c0-20.16 14.293-36.518 31.893-36.518s31.894 16.358 31.894 36.518v9.122c0 13.137-6.123 24.556-15.216 30.993 15.738 6.726 31.141 23.769 31.141 42.012z"/><path d="M106.032 118.252h15.867c3.376 0 6.101-3.125 6.101-6.972 0-13.957-11.787-26.984-23.819-32.123 6.955-4.919 11.638-13.66 11.638-23.704v-6.985c0-15.416-10.928-27.926-24.39-27.926-1.674 0-3.306.193-4.89.561 1.936 4.713 3.018 9.974 3.018 15.526v9.121c0 13.137-3.056 23.111-11.066 30.993 14.842 4.41 27.312 23.42 27.541 41.509z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/qq.svg b/src/icons/svg/qq.svg
new file mode 100644
index 0000000..ee13d4e
--- /dev/null
+++ b/src/icons/svg/qq.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M18.448 57.545l-.244-.744-.198-.968-.132-.53v-2.181l.236-.859.24-.908.317-.953.428-1.06.561-1.103.794-1.104v-.773l.077-.724.123-.984.34-1.106.313-1.194.25-.548.289-.511.371-.569.405-.423v-2.73l.234-1.407.236-1.633.42-1.955.577-2.035.43-1.118.426-1.217.468-1.135.559-1.216.57-1.332.655-1.247.737-1.331.929-1.33.43-.762.457-.624.995-1.406 1.025-1.403 1.163-1.444 1.246-1.405 1.352-1.384 1.41-1.423 1.708-1.536 1.083-.934 1.322-1.008 1.34-.89 1.448-.855 1.392-.76 1.57-.63 1.667-.775 1.657-.532 1.653-.552 1.787-.548 1.785-.417 1.876-.347L59.128.68l1.879-.245 1.876-.252 2.002-.106h5.912l1.97.243 1.981.231 2.019.207 1.874.441 1.979.413 1.857.475 2.035.53 1.862.646 1.782.738 1.904.78 1.736.853 1.689.95 1.655 1.044 1.425.971.662.548.693.401 1.323 1.1 1.115 1.064 1.112 1.1 1.083 1.214.894 1.178 1.064 1.217.74 1.306.752 1.162.798 1.352.661 1.175 1.113 2.489.546 1.286.428 1.192.428 1.294.384 1.217.267 1.047.347 1.231.607 2.198.388 1.924.253 1.861.217 1.497.342 2.28.077.362.274.41.737 1.18.473.8.42.832.534.892.472 1.07.307 1.093.334 1.2.252 1.232.115.605.106.746v.648l-.106.643v.8l-.192.774-.35 1.5-.403.76-.299.852v.213l.142.264.4.623 1.746 2.53 1.377 1.9.66 1.267.889 1.389.774 1.52.893 1.627.894 1.828 1.006 2.069.567 1.268.518 1.239.447 1.307.44 1.175.336 1.235.342 1.16.432 2.261.343 2.31.235 2.05v2.891l-.158 1.025-.226 1.768-.308 1.59-.48 1.44-.18.588-.336.707-.28.493-.375.607-.33.383-.42.494-.375.4-.401.34-.48.207-.432.207-.355.114h-.543l-.346-.114-.66-.32-.302-.212-.317-.223-.347-.304-.35-.342-.579-.63-.684-.89-.539-.917-.538-.734-.526-.855-.741-1.517-.833-1.579-.098-.055h-.138l-.338.247-.196.415-.326.516-.567 1.533-.856 2.182-1.096 2.626-.824 1.308-.864 1.366-1.027 1.536-1.09 1.503-.557.68-.676.743-1.555 1.497.136.135.21.214.777.446 3.235 1.524 1.41.779 1.347.756 1.332.953 1.187.982.574.443.432.511.445.593.367.643.198.533.242.64.105.554.115.647-.115.433v.44l-.105.454-.242.415-.092.325-.22.394-.587.784-.543.627-.42.47-.35.348-.893.638-1.01.556-1.077.532-1.155.511-1.287.495-.693.207-.608.167-1.496.342-1.545.325-1.552.323-1.689.27-1.74.072-1.785.21h-5.539l-1.998-.114-1.86-.168-2.005-.27-1.99-.209-2.095-.286-2.03-.495-1.981-.374-1.968-.552-2.019-.707-1.98-.585-1.044-.342-.927-.323-.586-.223-.582-.12h-1.647l-1.904-.131-.962-.096-1.24-.135-.795.705-1.085.665-1.471.701-1.628.875-.99.475-1.033.376-2.281.914-1.24.305-1.3.343-1.803.344-1.13.086-1.193.1-1.246.135-1.45.053h-5.926l-3.346-.053-3.25-.321-1.644-.23-1.589-.23-1.546-.227-1.547-.305-1.442-.456-1.434-.325-1.294-.51-1.223-.474-1.142-.533-.99-.583-.984-.71-.336-.343-.44-.415-.334-.362-.3-.417-.278-.415-.215-.42-.311-.89-.109-.46-.138-.51v-.473l.138-.533v-.53l.109-.53v-1.069l.052-.564.259-.647.215-.646.39-.779.286-.3.236-.348.615-.738.49-.38.464-.266.428-.338.676-.21.543-.324.676-.341.77-.227.775-.231.897-.192.85-.11 1.008-.13 1.093-.081.284-.092h.063l.137-.115v-.13l-.2-.266-.58-.27-1.45-1.231-.975-.761-1.127-.967-1.136-1.082-1.181-1.382-1.36-1.558-.508-.843-.672-.87-.58-1.007-.522-1.1-.704-1.047-.459-1.194-.547-1.192-.546-1.33-.397-1.273-.378-1.575-.112-.057h-.115l-.059-.113h-.14l-.23.113-.114.057-.158.264-.057.321-.119.286-.206.477-.664 1.157-.345.701-.546.612-.58.736-.641.816-.677.724-.795.701-.734.658-.814.524-.89.546-.855.325-1.008.247-.99.095h-.233l-.228-.095-.18-.384-.29-.188-.38-.912-.237-.493-.255-.707-.21-.734-.113-.724-.313-1.648-.12-.972v-3.185l.12-2.379.196-1.214.23-1.252.21-1.347.374-1.254.42-1.443.431-1.407.578-1.448.545-1.38.754-1.4.699-1.52.855-1.425 1.006-1.538 1.023-1.382 1.069-1.538.891-1.071 1.142-1.227 1.202-1.237.56-.59.678-.662.985-.836 1.012-.853 1.647-1.446 1.242-.889z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/question.svg b/src/icons/svg/question.svg
new file mode 100644
index 0000000..27f99d9
--- /dev/null
+++ b/src/icons/svg/question.svg
@@ -0,0 +1,5 @@
+<svg width="1024" height="1024" 
+    xmlns="http://www.w3.org/2000/svg">
+    <path d="M888.6 991H158.4c-50.3 0-91.3-38.6-91.3-86V227.2c0-47.4 40.9-86 91.3-86h409.9v36.5H158.4c-30.2 0-54.8 22.2-54.8 49.5V905c0 27.3 24.6 49.5 54.8 49.5h730.3c30.2 0 54.8-22.2 54.8-49.5V572H980v333c-0.1 47.4-41 86-91.4 86z" ></path>
+    <path d="M452.4 798.7l9.5-38.4c0.2-0.8 5.1-20.4 11.2-41.9 12.3-43.1 17.7-52 20.4-55.6l350.5-557 0.5-0.7c15.3-20 44-23.8 64-8.5l11.6 8.9c19.7 15.1 23.7 43.3 9.1 63.2l-350.5 557-0.5 0.7c-4.2 5.5-13.3 13.4-51.2 34.1-19.9 10.9-38.4 20.1-39.2 20.5l-35.4 17.7zM523.3 684c-3 4.8-9 23.3-15.2 45.2 19.7-10.8 36.4-20.7 41.1-25.1l350-556.2 0.5-0.7c3-3.9 2.2-9.8-1.7-12.8l-11.6-8.9c-3.8-2.9-9.3-2.3-12.4 1.2L523.6 683.5l-0.3 0.5z" ></path>
+</svg>
\ No newline at end of file
diff --git a/src/icons/svg/search.svg b/src/icons/svg/search.svg
new file mode 100644
index 0000000..84233dd
--- /dev/null
+++ b/src/icons/svg/search.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M124.884 109.812L94.256 79.166c-.357-.357-.757-.629-1.129-.914a50.366 50.366 0 0 0 8.186-27.59C101.327 22.689 78.656 0 50.67 0 22.685 0 0 22.688 0 50.663c0 27.989 22.685 50.663 50.656 50.663 10.186 0 19.643-3.03 27.6-8.201.286.385.557.771.9 1.114l30.628 30.632a10.633 10.633 0 0 0 7.543 3.129c2.728 0 5.457-1.043 7.543-3.115 4.171-4.157 4.171-10.915.014-15.073M50.671 85.338C31.557 85.338 16 69.78 16 50.663c0-19.102 15.557-34.661 34.67-34.661 19.115 0 34.657 15.559 34.657 34.675 0 19.102-15.557 34.661-34.656 34.661"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/shopping.svg b/src/icons/svg/shopping.svg
new file mode 100644
index 0000000..87513e7
--- /dev/null
+++ b/src/icons/svg/shopping.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M42.913 101.36c1.642 0 3.198.332 4.667.996a12.28 12.28 0 0 1 3.89 2.772c1.123 1.184 1.987 2.582 2.592 4.193.605 1.612.908 3.318.908 5.118 0 1.8-.303 3.507-.908 5.118-.605 1.611-1.469 3.01-2.593 4.194a13.3 13.3 0 0 1-3.889 2.843 10.582 10.582 0 0 1-4.667 1.066c-1.729 0-3.306-.355-4.732-1.066a13.604 13.604 0 0 1-3.825-2.843c-1.123-1.185-1.988-2.583-2.593-4.194a14.437 14.437 0 0 1-.907-5.118c0-1.8.302-3.506.907-5.118.605-1.61 1.47-3.009 2.593-4.193a12.515 12.515 0 0 1 3.825-2.772c1.426-.664 3.003-.996 4.732-.996zm53.932.285c1.643 0 3.22.331 4.733.995a11.386 11.386 0 0 1 3.889 2.772c1.08 1.185 1.945 2.583 2.593 4.194.648 1.61.972 3.317.972 5.118 0 1.8-.324 3.506-.972 5.117-.648 1.611-1.513 3.01-2.593 4.194a12.253 12.253 0 0 1-3.89 2.843 11 11 0 0 1-4.732 1.066 10.58 10.58 0 0 1-4.667-1.066 12.478 12.478 0 0 1-3.824-2.843c-1.08-1.185-1.945-2.583-2.593-4.194a13.581 13.581 0 0 1-.973-5.117c0-1.801.325-3.507.973-5.118.648-1.611 1.512-3.01 2.593-4.194a11.559 11.559 0 0 1 3.824-2.772 11.212 11.212 0 0 1 4.667-.995zm21.781-80.747c2.42 0 4.3.355 5.64 1.066 1.34.71 2.29 1.587 2.852 2.63a6.427 6.427 0 0 1 .778 3.34c-.044 1.185-.195 2.204-.454 3.057-.26.853-.8 2.606-1.62 5.26a589.268 589.268 0 0 1-2.788 8.743 1236.373 1236.373 0 0 0-3.047 9.453c-.994 3.128-1.75 5.592-2.269 7.393-1.123 3.79-2.55 6.42-4.278 7.89-1.728 1.469-3.846 2.203-6.352 2.203H39.023l1.945 12.795h65.342c4.148 0 6.223 1.943 6.223 5.828 0 1.896-.41 3.53-1.232 4.905-.821 1.374-2.442 2.061-4.862 2.061H38.505c-1.729 0-3.176-.426-4.343-1.28-1.167-.852-2.14-1.966-2.917-3.34a21.277 21.277 0 0 1-1.88-4.478 44.128 44.128 0 0 1-1.102-4.55c-.087-.568-.324-1.942-.713-4.122-.39-2.18-.865-4.904-1.426-8.174l-1.88-10.947c-.692-4.027-1.383-8.079-2.075-12.154-1.642-9.572-3.5-20.234-5.574-31.986H6.87c-1.296 0-2.377-.356-3.24-1.067a9.024 9.024 0 0 1-2.14-2.558 10.416 10.416 0 0 1-1.167-3.2C.108 8.53 0 7.488 0 6.54c0-1.896.583-3.46 1.75-4.69C2.917.615 4.494 0 6.482 0h13.095c1.728 0 3.111.284 4.148.853 1.037.569 1.858 1.28 2.463 2.132a8.548 8.548 0 0 1 1.297 2.701c.26.948.475 1.754.648 2.417.173.758.346 1.825.519 3.199.173 1.374.345 2.772.518 4.193.26 1.706.519 3.507.778 5.403h88.678z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/size.svg b/src/icons/svg/size.svg
new file mode 100644
index 0000000..ddb25b8
--- /dev/null
+++ b/src/icons/svg/size.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M0 54.857h54.796v18.286H36.531V128H18.265V73.143H0V54.857zm127.857-36.571H91.935V128H72.456V18.286H36.534V0h91.326l-.003 18.286z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/skill.svg b/src/icons/svg/skill.svg
new file mode 100644
index 0000000..a3b7312
--- /dev/null
+++ b/src/icons/svg/skill.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M31.652 93.206h33.401c1.44 2.418 3.077 4.663 4.93 6.692h-38.33v-6.692zm0-10.586h28.914a44.8 44.8 0 0 1-1.264-6.688h-27.65v6.688zm0-17.27H59.39c.288-2.286.714-4.532 1.34-6.687H31.65v6.687h.003zm53.913 44.84v5.85c0 2.798-2.095 5.075-4.667 5.075h-70.07c-2.576 0-4.663-2.277-4.663-5.075V31.26l23.22-20.96v22.25H17.16v6.688h18.39V6.688h45.348c2.576 0 4.667 2.277 4.667 5.066v20.009c1.987-.675 4.053-1.128 6.17-1.445v-18.56C91.738 5.28 86.874 0 80.902 0H31.15L0 28.118v87.917c0 6.48 4.859 11.759 10.832 11.759h70.07c5.974 0 10.837-5.27 10.837-11.759v-4.41c-2.117-.312-4.183-.765-6.17-1.435h-.004zM23.279 58.667h-7.96v6.688h7.96v-6.688zm-7.956 41.23h7.96v-6.691h-7.96v6.692zm7.956-23.96h-7.96v6.687h7.96v-6.688zm89.718-15.042l-4.896-4.07-12.447 17.613-11.19-9.305-3.762 5.311 16.091 13.38 16.204-22.929zM128 70.978c0-18.632-13.97-33.782-31.147-33.782-17.168 0-31.135 15.155-31.135 33.782 0 18.628 13.97 33.783 31.135 33.783 17.172 0 31.143-15.15 31.143-33.783H128zm-6.17 0c0 14.933-11.203 27.1-24.981 27.1-13.77 0-24.987-12.158-24.987-27.1 0-14.941 11.195-27.099 24.987-27.099 13.778 0 24.982 12.158 24.982 27.1z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/social-github.svg b/src/icons/svg/social-github.svg
new file mode 100644
index 0000000..df313a2
--- /dev/null
+++ b/src/icons/svg/social-github.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1562563492407" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3510" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M511.957333 12.650667C229.248 12.650667 0 241.877333 0 524.672c0 226.197333 146.688 418.090667 350.165333 485.802667 25.6 4.693333 34.944-11.093333 34.944-24.682667 0-12.16-0.426667-44.352-0.682666-87.082667-142.421333 30.933333-172.48-68.629333-172.48-68.629333C188.672 770.944 155.093333 755.2 155.093333 755.2c-46.485333-31.786667 3.52-31.146667 3.52-31.146667 51.392 3.626667 78.421333 52.778667 78.421334 52.778667 45.674667 78.229333 119.829333 55.637333 149.013333 42.538667 4.650667-33.066667 17.877333-55.658667 32.512-68.437334-113.706667-12.928-233.216-56.853333-233.216-253.056 0-55.893333 19.946667-101.589333 52.693333-137.386666-5.269333-12.949333-22.826667-65.002667 5.013334-135.509334 0 0 42.986667-13.76 140.8 52.48 40.832-11.349333 84.629333-17.024 128.170666-17.216 43.477333 0.213333 87.296 5.866667 128.192 17.237334 97.749333-66.261333 140.650667-52.48 140.650667-52.48 27.946667 70.485333 10.368 122.538667 5.098667 135.466666 32.810667 35.818667 52.629333 81.514667 52.629333 137.408 0 196.693333-119.701333 239.978667-233.770667 252.650667 18.389333 15.786667 34.773333 47.061333 34.773334 94.805333 0 68.458667-0.64 123.669333-0.64 140.458667 0 13.696 9.216 29.632 35.2 24.618667C877.44 942.570667 1024 750.784 1024 524.672 1024 241.877333 794.730667 12.650667 511.957333 12.650667z" fill="#191717" p-id="3511"></path></svg>
\ No newline at end of file
diff --git a/src/icons/svg/star.svg b/src/icons/svg/star.svg
new file mode 100644
index 0000000..6cf86e6
--- /dev/null
+++ b/src/icons/svg/star.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M70.66 4.328l14.01 29.693c1.088 2.29 3.177 3.882 5.603 4.25l31.347 4.76c6.087.926 8.528 8.756 4.117 13.247L103.05 79.395c-1.75 1.78-2.544 4.352-2.132 6.867l5.352 32.641c1.043 6.337-5.33 11.182-10.778 8.19l-28.039-15.409a7.13 7.13 0 0 0-6.91 0l-28.039 15.41c-5.448 2.99-11.821-1.854-10.777-8.19l5.352-32.642c.415-2.515-.387-5.088-2.136-6.867L2.264 56.278C-2.146 51.787.286 43.957 6.38 43.031l31.343-4.76c2.419-.368 4.51-1.96 5.595-4.25L57.334 4.328c2.728-5.77 10.605-5.77 13.325 0z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/tab.svg b/src/icons/svg/tab.svg
new file mode 100644
index 0000000..b4b48e4
--- /dev/null
+++ b/src/icons/svg/tab.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M78.921.052H49.08c-1.865 0-3.198 1.599-3.198 3.464v6.661c0 1.865 1.6 3.464 3.198 3.464h29.84c1.865 0 3.198-1.599 3.198-3.464V3.516C82.385 1.65 80.786.052 78.92.052zm45.563 0H94.642c-1.865 0-3.464 1.599-3.464 3.464v6.661c0 1.865 1.599 3.464 3.464 3.464h29.842c1.865-.266 3.464-1.599 3.464-3.464V3.516c0-1.865-1.599-3.464-3.464-3.464zm0 22.382H40.02c-1.866 0-3.464-1.599-3.464-3.464V3.516c0-1.865-1.599-3.464-3.464-3.464H3.516C1.65.052.052 1.651.052 3.516V124.75c0 1.598 1.599 3.197 3.464 3.197h120.968c1.865 0 3.464-1.599 3.464-3.464V25.898c0-1.865-1.599-3.464-3.464-3.464z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/table.svg b/src/icons/svg/table.svg
new file mode 100644
index 0000000..0e3dc9d
--- /dev/null
+++ b/src/icons/svg/table.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M.006.064h127.988v31.104H.006V.064zm0 38.016h38.396v41.472H.006V38.08zm0 48.384h38.396v41.472H.006V86.464zM44.802 38.08h38.396v41.472H44.802V38.08zm0 48.384h38.396v41.472H44.802V86.464zM89.598 38.08h38.396v41.472H89.598zm0 48.384h38.396v41.472H89.598z"/><path d="M.006.064h127.988v31.104H.006V.064zm0 38.016h38.396v41.472H.006V38.08zm0 48.384h38.396v41.472H.006V86.464zM44.802 38.08h38.396v41.472H44.802V38.08zm0 48.384h38.396v41.472H44.802V86.464zM89.598 38.08h38.396v41.472H89.598zm0 48.384h38.396v41.472H89.598z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/theme.svg b/src/icons/svg/theme.svg
new file mode 100644
index 0000000..5982a2f
--- /dev/null
+++ b/src/icons/svg/theme.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M125.5 36.984L95.336 2.83C93.735 1.018 91.565 0 89.3 0c-2.263 0-4.433 1.018-6.033 2.83l-3.786 4.286c-1.6 1.812-3.77 2.83-6.032 2.831H54.553c-2.263 0-4.434-1.018-6.033-2.83L44.734 2.83C43.134 1.018 40.964 0 38.701 0c-2.263 0-4.434 1.018-6.034 2.83L2.5 36.984C.9 38.796 0 41.254 0 43.815c0 2.562.899 5.02 2.5 6.831L14.565 64.31c2.178 2.468 5.367 3.403 8.33 2.444 1.35-.435 2.709.592 2.709 2.18v49.407c0 5.313 3.84 9.66 8.532 9.66h59.726c4.693 0 8.532-4.347 8.532-9.66V68.934c0-1.59 1.36-2.616 2.71-2.181 2.962.96 6.15.024 8.329-2.444L125.5 50.646c1.6-1.811 2.499-4.269 2.499-6.83 0-2.563-.899-5.02-2.5-6.832z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/tree-table.svg b/src/icons/svg/tree-table.svg
new file mode 100644
index 0000000..8aafdb8
--- /dev/null
+++ b/src/icons/svg/tree-table.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M44.8 0h79.543C126.78 0 128 1.422 128 4.267v23.466c0 2.845-1.219 4.267-3.657 4.267H44.8c-2.438 0-3.657-1.422-3.657-4.267V4.267C41.143 1.422 42.362 0 44.8 0zm22.857 48h56.686c2.438 0 3.657 1.422 3.657 4.267v23.466c0 2.845-1.219 4.267-3.657 4.267H67.657C65.22 80 64 78.578 64 75.733V52.267C64 49.422 65.219 48 67.657 48zm0 48h56.686c2.438 0 3.657 1.422 3.657 4.267v23.466c0 2.845-1.219 4.267-3.657 4.267H67.657C65.22 128 64 126.578 64 123.733v-23.466C64 97.422 65.219 96 67.657 96zM50.286 68.267c2.02 0 3.657-1.91 3.657-4.267 0-2.356-1.638-4.267-3.657-4.267H17.37V32h6.4c2.02 0 3.658-1.91 3.658-4.267V4.267C27.429 1.91 25.79 0 23.77 0H3.657C1.637 0 0 1.91 0 4.267v23.466C0 30.09 1.637 32 3.657 32h6.4v80c0 2.356 1.638 4.267 3.657 4.267h36.572c2.02 0 3.657-1.91 3.657-4.267 0-2.356-1.638-4.267-3.657-4.267H17.37V68.267h32.915z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/tree.svg b/src/icons/svg/tree.svg
new file mode 100644
index 0000000..dd4b7dd
--- /dev/null
+++ b/src/icons/svg/tree.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M126.713 90.023c.858.985 1.287 2.134 1.287 3.447v29.553c0 1.423-.429 2.6-1.287 3.53-.858.93-1.907 1.395-3.146 1.395H97.824c-1.145 0-2.146-.465-3.004-1.395-.858-.93-1.287-2.107-1.287-3.53V93.47c0-.875.19-1.696.572-2.462.382-.766.906-1.368 1.573-1.806a3.84 3.84 0 0 1 2.146-.657h9.725V69.007a3.84 3.84 0 0 0-.43-1.806 3.569 3.569 0 0 0-1.143-1.313 2.714 2.714 0 0 0-1.573-.492h-36.47v23.149h9.725c1.144 0 2.145.492 3.004 1.478.858.985 1.287 2.134 1.287 3.447v29.553c0 .876-.191 1.696-.573 2.463-.38.766-.905 1.368-1.573 1.806a3.84 3.84 0 0 1-2.145.656H51.915a3.84 3.84 0 0 1-2.145-.656c-.668-.438-1.216-1.04-1.645-1.806a4.96 4.96 0 0 1-.644-2.463V93.47c0-1.313.43-2.462 1.288-3.447.858-.986 1.907-1.478 3.146-1.478h9.582v-23.15h-37.9c-.953 0-1.74.356-2.359 1.068-.62.711-.93 1.56-.93 2.544v19.538h9.726c1.239 0 2.264.492 3.074 1.478.81.985 1.216 2.134 1.216 3.447v29.553c0 1.423-.405 2.6-1.216 3.53-.81.93-1.835 1.395-3.074 1.395H4.29c-.476 0-.93-.082-1.358-.246a4.1 4.1 0 0 1-1.144-.657 4.658 4.658 0 0 1-.93-1.067 5.186 5.186 0 0 1-.643-1.395 5.566 5.566 0 0 1-.215-1.56V93.47c0-.437.048-.875.143-1.313a3.95 3.95 0 0 1 .429-1.15c.19-.328.429-.656.715-.984.286-.329.572-.602.858-.821.286-.22.62-.383 1.001-.493.382-.11.763-.164 1.144-.164h9.726V61.619c0-.985.31-1.833.93-2.544.619-.712 1.358-1.068 2.216-1.068h44.335V39.62h-9.582c-1.24 0-2.288-.492-3.146-1.477a5.09 5.09 0 0 1-1.287-3.448V5.14c0-1.423.429-2.627 1.287-3.612.858-.985 1.907-1.477 3.146-1.477h25.743c.763 0 1.478.246 2.145.739a5.17 5.17 0 0 1 1.573 1.888c.382.766.573 1.587.573 2.462v29.553c0 1.313-.43 2.463-1.287 3.448-.859.985-1.86 1.477-3.004 1.477h-9.725v18.389h42.762c.954 0 1.74.355 2.36 1.067.62.711.93 1.56.93 2.545v26.925h9.582c1.239 0 2.288.492 3.146 1.478z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/user.svg b/src/icons/svg/user.svg
new file mode 100644
index 0000000..0ba0716
--- /dev/null
+++ b/src/icons/svg/user.svg
@@ -0,0 +1 @@
+<svg width="130" height="130" xmlns="http://www.w3.org/2000/svg"><path d="M63.444 64.996c20.633 0 37.359-14.308 37.359-31.953 0-17.649-16.726-31.952-37.359-31.952-20.631 0-37.36 14.303-37.358 31.952 0 17.645 16.727 31.953 37.359 31.953zM80.57 75.65H49.434c-26.652 0-48.26 18.477-48.26 41.27v2.664c0 9.316 21.608 9.325 48.26 9.325H80.57c26.649 0 48.256-.344 48.256-9.325v-2.663c0-22.794-21.605-41.271-48.256-41.271z" stroke="#979797"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/users.svg b/src/icons/svg/users.svg
new file mode 100644
index 0000000..6f1d0a0
--- /dev/null
+++ b/src/icons/svg/users.svg
@@ -0,0 +1,6 @@
+<svg width="1024" height="1024" 
+    xmlns="http://www.w3.org/2000/svg">
+    <path d="M512 240.941176m-210.823529 0a210.823529 210.823529 0 1 0 421.647058 0 210.823529 210.823529 0 1 0-421.647058 0Z" ></path>
+    <path d="M512 240.941176m-210.823529 0a210.823529 210.823529 0 1 0 421.647058 0 210.823529 210.823529 0 1 0-421.647058 0Z" ></path>
+    <path d="M663.190588 427.068235a236.122353 236.122353 0 0 1-301.17647 0L90.352941 632.470588v361.411765h843.294118v-361.411765z" ></path>
+</svg>
\ No newline at end of file
diff --git a/src/icons/svg/wechat.svg b/src/icons/svg/wechat.svg
new file mode 100644
index 0000000..c586e55
--- /dev/null
+++ b/src/icons/svg/wechat.svg
@@ -0,0 +1 @@
+<svg width="128" height="110" xmlns="http://www.w3.org/2000/svg"><path d="M86.635 33.334c1.467 0 2.917.113 4.358.283C87.078 14.392 67.58.111 45.321.111 20.44.111.055 17.987.055 40.687c0 13.104 6.781 23.863 18.115 32.209l-4.527 14.352 15.82-8.364c5.666 1.182 10.207 2.395 15.858 2.395 1.42 0 2.829-.073 4.227-.189-.886-3.19-1.398-6.53-1.398-9.996 0-20.845 16.98-37.76 38.485-37.76zm-24.34-12.936c3.407 0 5.665 2.363 5.665 5.954 0 3.576-2.258 5.97-5.666 5.97-3.392 0-6.795-2.395-6.795-5.97 0-3.591 3.403-5.954 6.795-5.954zM30.616 32.323c-3.393 0-6.818-2.395-6.818-5.971 0-3.591 3.425-5.954 6.818-5.954 3.392 0 5.65 2.363 5.65 5.954 0 3.576-2.258 5.97-5.65 5.97z"/><path d="M127.945 70.52c0-19.075-18.108-34.623-38.448-34.623-21.537 0-38.5 15.548-38.5 34.623 0 19.108 16.963 34.622 38.5 34.622 4.508 0 9.058-1.2 13.584-2.395l12.414 7.167-3.404-11.923c9.087-7.184 15.854-16.712 15.854-27.471zm-50.928-5.97c-2.254 0-4.53-2.362-4.53-4.773 0-2.378 2.276-4.771 4.53-4.771 3.422 0 5.665 2.393 5.665 4.771 0 2.41-2.243 4.773-5.665 4.773zm24.897 0c-2.24 0-4.498-2.362-4.498-4.773 0-2.378 2.258-4.771 4.498-4.771 3.392 0 5.665 2.393 5.665 4.771 0 2.41-2.273 4.773-5.665 4.773z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svg/zip.svg b/src/icons/svg/zip.svg
new file mode 100644
index 0000000..f806fc4
--- /dev/null
+++ b/src/icons/svg/zip.svg
@@ -0,0 +1 @@
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M78.527 116.793c.178.008.348.024.527.024h40.233c4.711-.005 8.53-3.677 8.534-8.21V18.895c-.004-4.532-3.823-8.204-8.534-8.209H79.054c-.179 0-.353.016-.527.024V0L0 10.082v107.406l78.527 10.342v-11.037zm0-101.362c.174-.024.348-.052.527-.052h40.233c2.018 0 3.659 1.578 3.659 3.52v89.713c-.003 1.942-1.64 3.517-3.659 3.519H79.054c-.179 0-.353-.028-.527-.052V15.431zM30.262 75.757l-18.721-.46V72.37l11.3-16.673v-.148l-10.266.164v-4.51l17.504-.44v3.264L18.696 70.76v.144l11.566.176v4.678zm9.419.231l-5.823-.144V50.671l5.823-.144v25.461zm22.255-11.632c-2.168 1.922-5.353 2.76-9.02 2.736-.702.004-1.402-.04-2.097-.131v9.303l-5.997-.148V50.743c1.852-.352 4.473-.647 8.218-.743 3.838-.096 6.608.539 8.48 1.913 1.807 1.306 3.032 3.5 3.032 6.112s-.926 4.833-2.612 6.331h-.004zM53.36 54.45c-.856-.01-1.71.083-2.541.275v7.682c.523.116 1.167.152 2.06.152 3.301-.004 5.36-1.614 5.36-4.314 0-2.425-1.772-3.843-4.875-3.791l-.004-.004zm39.847-37.066h9.564v3.795h-9.564v-3.795zm-9.568 5.68h9.564v3.8h-9.564v-3.8zm9.568 6.216h9.564v3.799h-9.564V29.28zm0 12h9.564v3.794h-9.564V41.28zm-9.568-6.096h9.564v3.795h-9.564v-3.795zm9.472 47.064c2.512 0 4.921-.96 6.697-2.67 1.776-1.708 2.773-4.026 2.772-6.442l-1.748-15.263c0-5.033-2.492-9.112-7.725-9.112-5.232 0-7.72 4.079-7.72 9.112l-1.752 15.263c-.001 2.417.996 4.735 2.773 6.444 1.777 1.71 4.187 2.669 6.7 2.668h.003zm-3.135-16.75h6.27v12.743h-6.27V65.5z"/></svg>
\ No newline at end of file
diff --git a/src/icons/svgo.yml b/src/icons/svgo.yml
new file mode 100644
index 0000000..d11906a
--- /dev/null
+++ b/src/icons/svgo.yml
@@ -0,0 +1,22 @@
+# replace default config
+
+# multipass: true
+# full: true
+
+plugins:
+
+  # - name
+  #
+  # or:
+  # - name: false
+  # - name: true
+  #
+  # or:
+  # - name:
+  #     param1: 1
+  #     param2: 2
+
+- removeAttrs:
+    attrs:
+      - 'fill'
+      - 'fill-rule'
diff --git a/src/lang/en.js b/src/lang/en.js
new file mode 100644
index 0000000..9f4e083
--- /dev/null
+++ b/src/lang/en.js
@@ -0,0 +1,54 @@
+export default {
+  start: 'Continue testing',
+  submission: 'submit',
+  lastQuestion: 'Last',
+  nextQuestion: 'Next',
+  recommendedTime: 'Recommended Time:',
+  minute: ' minute',
+  subject: 'subject',
+  remainingTime: 'Remaining Time:',
+  guideLanguage: 'Guide language',
+  theFirst: 'Question ',
+  section: '',
+  demography: 'Demographic Information',
+  required: 'required',
+  range32: 'Exceed 32 characters',
+  noquestionMsg: 'No question',
+  questionExceptionMsg: 'submit excetpion',
+  requiredMsg: 'please fill in the required fields',
+  guide: 'Instruction',
+  submitErro: 'submitting questionnaire error',
+  unfinish: 'After submitting, I cannot continue to answer questions. Do you want to submit?',
+  prompt: 'prompt',
+  determine: 'determine',
+  cancel: 'cancel',
+  unfinishSubmit: 'The data has been successfully uploaded to the server and has been saved. Thank you.',
+  finishSubmit: 'You have completed the work behavior questionnaire, and the data has been successfully uploaded to the server and saved. Thank you.',
+  selectData: 'Date',
+  startDo: 'Start the Test',
+  second: ' second ',
+  min: ' minute ',
+  hour: ' hour ',
+  finishMsg: 'You have completed this test, thank you. You can now close the browser.',
+  userinfoErro: 'incorrect user information',
+  errorDraghy: 'No demographic information, try switching languages',
+  pleaseSelect: 'Select',
+  langWelcomeChinese: '娆㈣繋璁块棶TAI鐨勬祴璇曠綉绔�',
+  langOptionChinese: '璇峰厛鍦ㄤ笅鎷夋澶勯�夋嫨璇█锛岀劧鍚庣偣鍑烩�滄彁浜も�濆紑濮嬫祴璇曘��',
+  uploadInfo: 'Uploading, saving data, please wait, do not close the browser...',
+  examinee: 'Tester:',
+  pleaseAnswerCarefully: '*Please answer carefully',
+  submitTimeout: ':Submit background timeout',
+  submitExceptionInfo: 'The server network is abnormal, please close the browser and click the link to answer the question',
+  langWelcomeEnglish: 'Welcome to TAI鈥檚 testing website.',
+  langOptionEnglish: 'Please select a language, then click 鈥渟ubmit.',
+  statusInfo2: 'The question is suspended.',
+  statusInfo3: 'The answer is over',
+  statusInfo4: 'The title has expired',
+  timeOutSubmit: 'The answer time has been exceeded, the data has been successfully uploaded to the server, and has been saved. Thank you.',
+  nextPartInfo: 'Please wait, please do not close the browser...',
+  partRemailTime: 'Remaining Time:',
+  finishIntelligenceInfo: 'You have completed the cognitive ability test questionnaire, the data has been successfully uploaded to the server, and has been saved. Thank you.',
+  langWelcomeThai: '喔⑧复喔權笖喔掂笗喔笝喔`副喔氞釜喔灌箞喙�喔о箛喔氞箘喔嬥涪喙屶釜喔赤斧喔`副喔氞笚喔赤箒喔氞笟喔椸笖喔腑喔氞競喔竾',
+  langOptionThai: '喔佮福喔膏笓喔侧箑喔ム阜喔竵喔犩覆喔┼覆 喙佮弗喔班竸喔ム复喔� 鈥溹笖喔赤箑喔權复喔權竵喔侧福喔曕箞喔�.'
+}
diff --git a/src/lang/index.js b/src/lang/index.js
new file mode 100644
index 0000000..2e42313
--- /dev/null
+++ b/src/lang/index.js
@@ -0,0 +1,50 @@
+import Vue from 'vue'
+import VueI18n from 'vue-i18n'
+import Cookies from 'js-cookie'
+import elementEnLocale from 'element-ui/lib/locale/lang/en' // element-ui lang
+import elementZhLocale from 'element-ui/lib/locale/lang/zh-CN'// element-ui lang
+import elementThLocale from 'element-ui/lib/locale/lang/th'// element-ui lang
+import enLocale from './en'
+import zhLocale from './zh'
+import thLocale from './th'
+
+Vue.use(VueI18n)
+
+const messages = {
+  en: {
+    ...enLocale,
+    ...elementEnLocale
+  },
+  zh: {
+    ...zhLocale,
+    ...elementZhLocale
+  },
+  th: {
+    ...thLocale,
+    ...elementThLocale
+  }
+
+}
+export function getLanguage () {
+  const chooseLanguage = Cookies.get('language')
+  if (chooseLanguage) return chooseLanguage
+
+  // if has not choose language
+  const language = (navigator.language || navigator.browserLanguage).toLowerCase()
+  const locales = Object.keys(messages)
+  for (const locale of locales) {
+    if (language.indexOf(locale) > -1) {
+      return locale
+    }
+  }
+  return 'en'
+}
+const i18n = new VueI18n({
+  // set locale
+  // options: en | zh | es
+  locale: getLanguage(),
+  // set locale messages
+  messages
+})
+
+export default i18n
diff --git a/src/lang/th.js b/src/lang/th.js
new file mode 100644
index 0000000..9f4e083
--- /dev/null
+++ b/src/lang/th.js
@@ -0,0 +1,54 @@
+export default {
+  start: 'Continue testing',
+  submission: 'submit',
+  lastQuestion: 'Last',
+  nextQuestion: 'Next',
+  recommendedTime: 'Recommended Time:',
+  minute: ' minute',
+  subject: 'subject',
+  remainingTime: 'Remaining Time:',
+  guideLanguage: 'Guide language',
+  theFirst: 'Question ',
+  section: '',
+  demography: 'Demographic Information',
+  required: 'required',
+  range32: 'Exceed 32 characters',
+  noquestionMsg: 'No question',
+  questionExceptionMsg: 'submit excetpion',
+  requiredMsg: 'please fill in the required fields',
+  guide: 'Instruction',
+  submitErro: 'submitting questionnaire error',
+  unfinish: 'After submitting, I cannot continue to answer questions. Do you want to submit?',
+  prompt: 'prompt',
+  determine: 'determine',
+  cancel: 'cancel',
+  unfinishSubmit: 'The data has been successfully uploaded to the server and has been saved. Thank you.',
+  finishSubmit: 'You have completed the work behavior questionnaire, and the data has been successfully uploaded to the server and saved. Thank you.',
+  selectData: 'Date',
+  startDo: 'Start the Test',
+  second: ' second ',
+  min: ' minute ',
+  hour: ' hour ',
+  finishMsg: 'You have completed this test, thank you. You can now close the browser.',
+  userinfoErro: 'incorrect user information',
+  errorDraghy: 'No demographic information, try switching languages',
+  pleaseSelect: 'Select',
+  langWelcomeChinese: '娆㈣繋璁块棶TAI鐨勬祴璇曠綉绔�',
+  langOptionChinese: '璇峰厛鍦ㄤ笅鎷夋澶勯�夋嫨璇█锛岀劧鍚庣偣鍑烩�滄彁浜も�濆紑濮嬫祴璇曘��',
+  uploadInfo: 'Uploading, saving data, please wait, do not close the browser...',
+  examinee: 'Tester:',
+  pleaseAnswerCarefully: '*Please answer carefully',
+  submitTimeout: ':Submit background timeout',
+  submitExceptionInfo: 'The server network is abnormal, please close the browser and click the link to answer the question',
+  langWelcomeEnglish: 'Welcome to TAI鈥檚 testing website.',
+  langOptionEnglish: 'Please select a language, then click 鈥渟ubmit.',
+  statusInfo2: 'The question is suspended.',
+  statusInfo3: 'The answer is over',
+  statusInfo4: 'The title has expired',
+  timeOutSubmit: 'The answer time has been exceeded, the data has been successfully uploaded to the server, and has been saved. Thank you.',
+  nextPartInfo: 'Please wait, please do not close the browser...',
+  partRemailTime: 'Remaining Time:',
+  finishIntelligenceInfo: 'You have completed the cognitive ability test questionnaire, the data has been successfully uploaded to the server, and has been saved. Thank you.',
+  langWelcomeThai: '喔⑧复喔權笖喔掂笗喔笝喔`副喔氞釜喔灌箞喙�喔о箛喔氞箘喔嬥涪喙屶釜喔赤斧喔`副喔氞笚喔赤箒喔氞笟喔椸笖喔腑喔氞競喔竾',
+  langOptionThai: '喔佮福喔膏笓喔侧箑喔ム阜喔竵喔犩覆喔┼覆 喙佮弗喔班竸喔ム复喔� 鈥溹笖喔赤箑喔權复喔權竵喔侧福喔曕箞喔�.'
+}
diff --git a/src/lang/zh.js b/src/lang/zh.js
new file mode 100644
index 0000000..4ac565c
--- /dev/null
+++ b/src/lang/zh.js
@@ -0,0 +1,54 @@
+export default {
+  start: '缁х画娴嬭瘯',
+  submission: ' 鎻愪氦',
+  lastQuestion: '鍥炲埌涓婁竴棰�',
+  nextQuestion: '涓嬩竴棰�',
+  recommendedTime: '寤鸿鏃堕棿锛�',
+  minute: '鍒嗛挓',
+  subject: '棰樼洰',
+  remainingTime: '鍓╀綑鏃堕棿锛�',
+  guideLanguage: '鎸囧璇�',
+  theFirst: '绗�',
+  section: '棰�',
+  demography: '鍩烘湰淇℃伅',
+  required: '蹇呭~',
+  range32: '涓嶈兘瓒呰繃32涓瓧绗�',
+  noquestionMsg: '鏃犳硶鑾峰緱棰樼洰',
+  questionExceptionMsg: '鎻愪氦棰樼洰寮傚父',
+  requiredMsg: '璇峰~鍐欏繀濉」',
+  guide: '鎸囧璇�',
+  submitErro: '鎻愪氦闂嵎鍚庡彴閿欒',
+  unfinish: '鎻愪氦涔嬪悗鏃犳硶缁х画绛旈锛屾槸鍚︽彁浜�?',
+  prompt: '鎻愮ず',
+  determine: '纭畾',
+  cancel: '鍙栨秷',
+  unfinishSubmit: '鏁版嵁宸茬粡鎴愬姛鐨勪笂浼犺嚦鏈嶅姟鍣紝骞跺凡缁忎繚瀛樺ソ銆傝阿璋€��',
+  finishSubmit: '鎮ㄥ凡缁忓畬鎴愪簡宸ヤ綔琛屼负闂嵎锛屾暟鎹凡缁忔垚鍔熺殑涓婁紶鑷虫湇鍔″櫒锛屽苟宸茬粡淇濆瓨濂姐�傝阿璋€��',
+  selectData: '閫夋嫨鏃ユ湡',
+  startDo: '寮�濮嬫祴璇�',
+  second: '绉�',
+  min: '鍒�',
+  hour: '灏忔椂',
+  finishMsg: '鎮ㄥ凡缁忓畬鎴愪簡鏈娴嬭瘯锛岃阿璋€�傛偍鐜板湪鍙互鍏抽棴娴忚鍣ㄣ��',
+  userinfoErro: '鑾峰彇鐢ㄦ埛淇℃伅濉啓閿欒',
+  errorDraghy: '鏃犱汉鍙e淇℃伅锛屽彲灏濊瘯鍒囨崲璇█',
+  pleaseSelect: '璇烽�夋嫨',
+  langWelcomeChinese: '娆㈣繋璁块棶TAI鐨勬祴璇曠綉绔�',
+  langOptionChinese: '璇峰厛鍦ㄤ笅鎷夋澶勯�夋嫨璇█锛岀劧鍚庣偣鍑烩�滄彁浜も�濆紑濮嬫祴璇曘��',
+  uploadInfo: '姝e湪涓婁紶锛屼繚瀛樻暟鎹紝璇风◢绛夛紝涓嶈鍏抽棴娴忚鍣�...',
+  examinee: '娴嬭瘯鑰咃細',
+  pleaseAnswerCarefully: '*璇疯鐪熶綔绛�',
+  submitTimeout: ':鎻愪氦鍚庡彴瓒呮椂',
+  submitExceptionInfo: '淇濆瓨鏈嶅姟鍣ㄧ綉缁滃紓甯革紝璇峰叧闂祻瑙堥噸鏂扮偣鍑婚摼鎺ョ瓟棰�',
+  langWelcomeEnglish: 'Welcome to TAI鈥檚 testing website.',
+  langOptionEnglish: 'Please select a language, then click 鈥渟ubmit.',
+  statusInfo2: '棰樼洰鏆傚仠绛旈',
+  statusInfo3: '绛旈宸茬粨鏉�',
+  statusInfo4: '棰樼洰宸茬粡澶辨晥',
+  timeOutSubmit: '宸茶秴杩囩瓟棰樻椂闂达紝鏁版嵁宸茬粡鎴愬姛鐨勪笂浼犺嚦鏈嶅姟鍣紝骞跺凡缁忎繚瀛樺ソ銆傝阿璋€��',
+  nextPartInfo: '璇风◢绛夛紝璇蜂笉瑕佸叧闂祻瑙堝櫒...',
+  partRemailTime: '鍓╀綑鏃堕棿:',
+  finishIntelligenceInfo: '鎮ㄥ凡缁忓畬鎴愪簡璁ょ煡鑳藉姏娴嬭瘯闂嵎锛屾暟鎹凡缁忔垚鍔熺殑涓婁紶鑷虫湇鍔″櫒锛屽苟宸茬粡淇濆瓨濂姐�傝阿璋€��',
+  langWelcomeThai: '喔⑧复喔權笖喔掂笗喔笝喔`副喔氞釜喔灌箞喙�喔о箛喔氞箘喔嬥涪喙屶釜喔赤斧喔`副喔氞笚喔赤箒喔氞笟喔椸笖喔腑喔氞競喔竾',
+  langOptionThai: '喔佮福喔膏笓喔侧箑喔ム阜喔竵喔犩覆喔┼覆 喙佮弗喔班竸喔ム复喔� 鈥溹笖喔赤箑喔權复喔權竵喔侧福喔曕箞喔�.'
+}
diff --git a/src/layout/index.vue b/src/layout/index.vue
new file mode 100644
index 0000000..c7db7dc
--- /dev/null
+++ b/src/layout/index.vue
@@ -0,0 +1,72 @@
+<template>
+  <el-container>
+    <el-header height="60" class="student-header header" style="background-color: #3c8dbc">
+      <div class="head-language" v-if="langFlag">
+        <!--<lang-select class="right-menu-item" />-->
+        <!--鍥介檯鍖栫殑璇█閫夋嫨-->
+        <!--<component :is="langSelect"></component>-->
+      </div>
+      <div class="head-user">
+        <el-dropdown trigger="click" placement="bottom">
+          <el-badge>
+            <el-avatar  class="el-dropdown-avatar" size="medium"  :src="userInfo.imagePath === null ? require('@/assets/logo-t.jpg') : userInfo.imagePath"></el-avatar>
+          </el-badge>
+          <el-dropdown-menu slot="dropdown">
+<!--            <el-dropdown-item divided>淇濆瓨閫�鍑�</el-dropdown-item>-->
+          </el-dropdown-menu>
+        </el-dropdown>
+      </div>
+    </el-header>
+    <el-main class="student-main">
+      <router-view/>
+    </el-main>
+    <el-footer height="340" class="student-footer">
+    </el-footer>
+  </el-container>
+</template>
+
+<script>
+import LangSelect from '@/components/LangSelect'
+import { mapState } from 'vuex'
+export default {
+  name: 'Layout',
+  data () {
+    return {
+      defaultUrl: '/index',
+      userInfo: {
+        imagePath: null
+      },
+      langSelect: 'langSelect'
+    }
+  },
+  created () {
+  },
+  methods: {
+    logout: function () {
+      window.opener = null
+      window.open('about:blank', '_top').close()
+    }
+  },
+  components: {
+    'langSelect': LangSelect
+  },
+  computed: {
+    ...mapState('user', { langFlag: state => state.langFlag })
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+  .header {
+    position: fixed;
+    width: 100%;
+    z-index: 1000;
+    top: 0%;
+
+  .head-language {
+     position: absolute;
+     bottom: 10px;
+     right: 80px;
+    }
+  }
+</style>
diff --git a/src/layout/indexold.vue b/src/layout/indexold.vue
new file mode 100644
index 0000000..709c3b1
--- /dev/null
+++ b/src/layout/indexold.vue
@@ -0,0 +1,96 @@
+<template>
+  <el-container>
+    <el-header height="61" class="student-header">
+      <div class="head-user">
+        <el-dropdown trigger="click" placement="bottom">
+          <el-badge :is-dot="messageCount!==0" >
+            <el-avatar  class="el-dropdown-avatar" size="medium"  :s0rc="userInfo.imagePath === null ? require('@/assets/avatar.png') : userInfo.imagePath"></el-avatar>
+          </el-badge>
+          <el-dropdown-menu slot="dropdown">
+            <el-dropdown-item @click.native="$router.push({path:'/user/index'})">涓汉涓績</el-dropdown-item>
+            <el-dropdown-item @click.native="$router.push({path:'/user/message'})">
+              <el-badge :value="messageCount" v-if="messageCount!==0">
+                <span>娑堟伅涓績</span>
+              </el-badge>
+              <span  v-if="messageCount===0">娑堟伅涓績</span>
+            </el-dropdown-item>
+            <el-dropdown-item @click.native="logout" divided>閫�鍑�</el-dropdown-item>
+          </el-dropdown-menu>
+        </el-dropdown>
+      </div>
+      <el-menu class="el-menu-title" mode="horizontal" :default-active="defaultUrl" :router="true">
+        <el-menu-item index="/index">棣栭〉</el-menu-item>
+        <el-menu-item index="/record/index">鑰冭瘯璁板綍</el-menu-item>
+        <el-menu-item index="/demography/ed860660-95a7-4feb-aab9-f56b1eff1a3c/11/index">浜哄彛瀛﹀彉閲�</el-menu-item>
+        <el-menu-item index="/guide/index">鎸囧璇�</el-menu-item>
+      </el-menu>
+      <div>
+        <img src="@/assets/logo2.png" height="56"/>
+      </div>
+    </el-header>
+    <el-main class="student-main">
+      <router-view/>
+    </el-main>
+    <el-footer height="340" class="student-footer">
+    </el-footer>
+  </el-container>
+</template>
+
+<script>
+import { mapActions, mapMutations, mapState } from 'vuex'
+import loginApi from '@/api/login'
+import userApi from '@/api/user'
+export default {
+  name: 'Layout',
+  data () {
+    return {
+      defaultUrl: '/index',
+      userInfo: {
+        imagePath: null
+      }
+    }
+  },
+  created () {
+    let _this = this
+    this.defaultUrl = this.routeSelect(this.$route.path)
+    this.getUserMessageInfo()
+    userApi.getCurrentUser().then(re => {
+      _this.userInfo = re.response
+    })
+  },
+  watch: {
+    $route (to, from) {
+      this.defaultUrl = this.routeSelect(to.path)
+    }
+  },
+  methods: {
+    routeSelect (path) {
+      let topPath = ['/', '/index', '/paper/index', '/record/index', '/question/index', '/demography/index']
+      if (topPath.indexOf(path)) {
+        return path
+      }
+      return null
+    },
+    logout () {
+      let _this = this
+      loginApi.logout().then(function (result) {
+        if (result && result.code === 1) {
+          _this.clearLogin()
+          _this.$router.push({ path: '/login' })
+        }
+      })
+    },
+    ...mapActions('user', ['getUserMessageInfo']),
+    ...mapMutations('user', ['clearLogin'])
+  },
+  computed: {
+    ...mapState('user', {
+      messageCount: state => state.messageCount
+    })
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+
+</style>
diff --git a/src/main.js b/src/main.js
new file mode 100644
index 0000000..2b0de04
--- /dev/null
+++ b/src/main.js
@@ -0,0 +1,65 @@
+import Vue from 'vue'
+import App from './App.vue'
+import { router } from './router'
+import store from './store'
+import 'normalize.css/normalize.css'
+import Element from 'element-ui'
+import 'element-ui/lib/theme-chalk/index.css'
+import '@/assets/custom-theme/indexExtend.css'
+
+import Cookies from 'js-cookie'
+import i18n from './lang'
+
+import '@/styles/index.scss' // global css
+import './icons' // icon
+import NProgress from 'nprogress' // progress bar
+import 'nprogress/nprogress.css' // progress bar style
+
+import 'babel-polyfill'
+import promise from 'es6-promise'
+promise.polyfill()
+
+Vue.use(Element, {
+  size: Cookies.get('size') || 'medium', // set element-ui default size
+  i18n: (key, value) => i18n.t(key, value)
+})
+
+Vue.config.productionTip = false
+
+NProgress.configure({ showSpinner: false }) // NProgress Configuration
+
+router.beforeEach(async (to, from, next) => {
+  // start progress bar
+  NProgress.start()
+  if (to.meta.title !== undefined) {
+    document.title = to.meta.title
+  } else {
+    document.title = '\u200E'
+  }
+
+  if (to.meta.bodyBackground !== undefined) {
+    document.querySelector('body').setAttribute('style', 'background: ' + to.meta.bodyBackground)
+  } else {
+    document.querySelector('body').removeAttribute('style')
+  }
+
+  if (to.path) {
+    // eslint-disable-next-line no-undef
+    _hmt.push(['_trackPageview', '/#' + to.fullPath])
+  }
+  next()
+})
+
+router.afterEach((to, from, next) => {
+  // finish progress bar
+  NProgress.done()
+})
+
+Vue.prototype.$$router = router
+
+new Vue({
+  router: router,
+  store: store,
+  i18n,
+  render: h => h(App)
+}).$mount('#app')
diff --git a/src/router.js b/src/router.js
new file mode 100644
index 0000000..8e831c6
--- /dev/null
+++ b/src/router.js
@@ -0,0 +1,125 @@
+import Vue from 'vue'
+import Router from 'vue-router'
+import Layout from '@/layout'
+
+Vue.use(Router)
+const router = new Router({
+  routes: [
+    {
+      path: '/ots/:memberToken',
+      component: Layout,
+      children: [
+        {
+          path: 'login',
+          component: () => import('@/views/demography/login'),
+          name: 'login',
+          meta: { title: '' }
+        }
+      ]
+    },
+    {
+      path: '/demography/fill',
+      component: Layout,
+      children: [
+        {
+          path: 'index',
+          component: () => import('@/views/demography/index'),
+          name: 'Demography',
+          meta: { title: 'Demography' }
+        },
+        {
+          path: 'langOption',
+          component: () => import('@/views/demography/langOption'),
+          name: 'langOption',
+          meta: { title: 'langOption' }
+        }
+      ]
+    },
+    {
+      path: '/guide',
+      component: Layout,
+      children: [
+        {
+          path: 'index',
+          component: () => import('@/views/exam/paper/guide'),
+          name: 'QuestionGuide',
+          meta: { title: '' }
+        }
+      ]
+    },
+    {
+      path: '/exam',
+      component: Layout,
+      children: [
+        {
+          path: 'do',
+          component: () => import('@/views/exam/paper/do'),
+          name: 'ExamPaperDo',
+          meta: { title: '' }
+        }
+      ]
+    },
+    {
+      path: '/exam',
+      component: Layout,
+      children: [
+        {
+          path: 'job',
+          component: () => import('@/views/exam/paper/job'),
+          name: 'ExamPaperJob',
+          meta: { title: 'job' }
+        }
+      ]
+    },
+    {
+      path: '/exam',
+      component: Layout,
+      children: [
+        {
+          path: 'personality',
+          component: () => import('@/views/exam/paper/personality'),
+          name: 'ExamPaperPersonality',
+          meta: { title: 'personality' }
+        }
+      ]
+    },
+    {
+      path: '/exam',
+      component: Layout,
+      children: [
+        {
+          path: 'intelligence',
+          component: () => import('@/views/exam/paper/intelligence'),
+          name: 'ExamPaperIntelligence',
+          meta: { title: 'intelligence' }
+        }
+      ]
+    },
+    {
+      path: '/exam',
+      component: Layout,
+      children: [
+        {
+          path: 'finish',
+          component: () => import('@/views/exam/paper/finish'),
+          name: 'ExamPaperFinish',
+          meta: { title: '' }
+        }
+      ]
+    },
+    {
+      path: '/exam',
+      component: Layout,
+      children: [
+        {
+          path: 'exception',
+          component: () => import('@/views/exam/paper/exception'),
+          name: 'ExamPaperException',
+          meta: { title: '' }
+        }
+      ]
+    }
+  ]
+})
+
+export { router }
diff --git a/src/store/index.js b/src/store/index.js
new file mode 100644
index 0000000..1801e56
--- /dev/null
+++ b/src/store/index.js
@@ -0,0 +1,23 @@
+import Vue from 'vue'
+import Vuex from 'vuex'
+
+Vue.use(Vuex)
+
+// https://webpack.js.org/guides/dependency-management/#requirecontext
+const modulesFiles = require.context('./modules', true, /\.js$/)
+
+// you do not need `import app from './modules/app'`
+// it will auto require all vuex module from modules file
+const modules = modulesFiles.keys().reduce((modules, modulePath) => {
+  // set './app.js' => 'app'
+  const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1')
+  const value = modulesFiles(modulePath)
+  modules[moduleName] = value.default
+  return modules
+}, {})
+
+const store = new Vuex.Store({
+  modules
+})
+
+export default store
diff --git a/src/store/modules/enumItem.js b/src/store/modules/enumItem.js
new file mode 100644
index 0000000..bef34b8
--- /dev/null
+++ b/src/store/modules/enumItem.js
@@ -0,0 +1,61 @@
+// initial state
+const state = {
+  user: {
+    sexEnum: [{ key: 1, value: '鐢�' }, { key: 2, value: '濂�' }],
+    levelEnum: [{ key: 1, value: '涓�骞寸骇' }, { key: 2, value: '浜屽勾绾�' }, { key: 3, value: '涓夊勾绾�' }, { key: 4, value: '鍥涘勾绾�' }, { key: 5, value: '浜斿勾绾�' }, { key: 6, value: '鍏勾绾�' },
+      { key: 7, value: '鍒濅竴' }, { key: 8, value: '鍒濅簩' }, { key: 9, value: '鍒濅笁' },
+      { key: 10, value: '楂樹竴' }, { key: 11, value: '楂樹簩' }, { key: 12, value: '楂樹笁' }],
+    roleEnum: [{ key: 1, value: '瀛︾敓' }, { key: 2, value: '鏁欏笀' }, { key: 3, value: '绠$悊鍛�' }],
+    message: {
+      readTag: [{ key: true, value: 'success' }, { key: false, value: 'warning' }],
+      readText: [{ key: true, value: '宸茶' }, { key: false, value: '鏈' }]
+    }
+  },
+  exam: {
+    examPaper: {
+      paperTypeEnum: [{ key: 1, value: '鍥哄畾璇曞嵎' }, { key: 4, value: '鏃舵璇曞嵎' }]
+    },
+    examPaperAnswer: {
+      statusEnum: [{ key: 1, value: '寰呮壒鏀�' }, { key: 2, value: '瀹屾垚' }],
+      statusTag: [{ key: 1, value: 'warning' }, { key: 2, value: 'success' }]
+    },
+    question: {
+      typeEnum: [{ key: 1, value: '鍗曢�夐' }, { key: 2, value: '澶氶�夐' }, { key: 3, value: '鍒ゆ柇棰�' }, { key: 4, value: '濉┖棰�' }, { key: 5, value: '绠�绛旈' }],
+      answer: {
+        doRightTag: [{ key: true, value: 'success' }, { key: false, value: 'danger' }, { key: null, value: 'warning' }],
+        doRightEnum: [{ key: true, value: '姝g‘' }, { key: false, value: '閿欒' }, { key: null, value: '寰呮壒鏀�' }],
+        doCompletedTag: [{ key: false, value: 'info' }, { key: true, value: 'success' }]
+      }
+    }
+  }
+}
+
+// getters
+const getters = {
+  enumFormat: (state) => (arrary, key) => {
+    return format(arrary, key)
+  }
+}
+
+// actions
+const actions = {}
+
+// mutations
+const mutations = {}
+
+const format = function (array, key) {
+  for (let item of array) {
+    if (item.key === key) {
+      return item.value
+    }
+  }
+  return null
+}
+
+export default {
+  namespaced: true,
+  state,
+  getters,
+  actions,
+  mutations
+}
diff --git a/src/store/modules/exam.js b/src/store/modules/exam.js
new file mode 100644
index 0000000..f4b6482
--- /dev/null
+++ b/src/store/modules/exam.js
@@ -0,0 +1,48 @@
+import subjectApi from '@/api/subject'
+
+const state = {
+  subjects: [],
+  doUrl: 'job',
+  reportTemplateId: ''
+}
+
+const getters = {
+  subjectEnumFormat: (state) => (key) => {
+    for (let item of state.subjects) {
+      if (item.id === key) {
+        return item.name + ' ( ' + item.levelName + ' )'
+      }
+    }
+    return null
+  }
+}
+
+// actions
+const actions = {
+  initSubject ({ commit }) {
+    subjectApi.list().then(re => {
+      commit('setSubjects', re.response)
+    })
+  }
+}
+
+// mutations
+const mutations = {
+  setSubjects: (state, subjects) => {
+    state.subjects = subjects
+  },
+  setDoUrl: (state, url) => {
+    state.doUrl = url
+  },
+  setReportTemplateId: (state, reportTemplateId) => {
+    state.reportTemplateId = reportTemplateId
+  }
+}
+
+export default {
+  namespaced: true,
+  state,
+  getters,
+  actions,
+  mutations
+}
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
new file mode 100644
index 0000000..86b0af2
--- /dev/null
+++ b/src/store/modules/user.js
@@ -0,0 +1,84 @@
+import Cookies from 'js-cookie'
+import userApi from '@/api/user'
+// initial state
+const state = {
+  userName: Cookies.get('studentUserName'),
+  userInfo: Cookies.get('studentUserInfo'),
+  imagePath: Cookies.get('studentImagePath'),
+  messageCount: 0,
+  memberToken: Cookies.get('memberTocken'),
+  langType: 'English',
+  langFlag: true,
+  memberId: null
+}
+
+// actions
+const actions = {
+  initUserInfo ({ commit }) {
+    userApi.getCurrentUser().then(re => {
+      commit('setUserInfo', re.response)
+    })
+  },
+  getUserMessageInfo ({ commit }) {
+    userApi.getMessageCount().then(re => {
+      commit('setMessageCount', re.response)
+    })
+  }
+}
+
+// mutations
+const mutations = {
+  setUserName (state, userName) {
+    state.userName = userName
+    Cookies.set('studentUserName', userName, { expires: 30 })
+  },
+  setMemberTocken (state, paraMemberToken) {
+    state.memberToken = paraMemberToken
+    Cookies.set('memberTocken', paraMemberToken, { expires: 30 })
+  },
+  setMemberId (state, memberId) {
+    state.memberId = memberId
+  },
+  setLangType (state, paraLangType) {
+    state.langType = paraLangType
+  },
+  getLangType () {
+    let language = (navigator.language || navigator.browserLanguage).toLowerCase()
+    if (language === 'zh-cn') {
+      state.langType = 'Chinese'
+      console.log(language)
+    } else {
+      state.langType = 'English'
+      console.log(language)
+    }
+  },
+  setLangFlag (state, paraLangFlag) {
+    state.langFlag = paraLangFlag
+  },
+  setUserInfo: (state, userInfo) => {
+    state.userInfo = userInfo
+    Cookies.set('studentUserInfo', userInfo, { expires: 30 })
+  },
+  setImagePath: (state, imagePath) => {
+    state.imagePath = imagePath
+    Cookies.set('studentImagePath', imagePath, { expires: 30 })
+  },
+  setMessageCount: (state, messageCount) => {
+    state.messageCount = messageCount
+  },
+  messageCountSubtract: (state, num) => {
+    state.messageCount = state.messageCount - num
+  },
+  clearLogin (state) {
+    Cookies.remove('studentUserName')
+    Cookies.remove('studentUserInfo')
+    Cookies.remove('studentImagePath')
+  }
+}
+
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions
+}
diff --git a/src/styles/index.scss b/src/styles/index.scss
new file mode 100644
index 0000000..5929af0
--- /dev/null
+++ b/src/styles/index.scss
@@ -0,0 +1,328 @@
+body {
+  height: 100%;
+  -moz-osx-font-smoothing: grayscale;
+  -webkit-font-smoothing: antialiased;
+  text-rendering: optimizeLegibility;
+  font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;
+  background-color: #fff;
+}
+
+html {
+  height: 100%;
+  box-sizing: border-box;
+}
+
+#app {
+  height: 100%;
+}
+
+*,
+*:before,
+*:after {
+  box-sizing: inherit;
+}
+
+.student-header {
+  border-bottom: solid 1px #e6e6e6 !important;
+  padding: 0px !important;
+
+  .el-menu-title {
+    border-bottom: 0px !important;
+    float: right;
+
+    .el-menu-item {
+      font-size: 15px !important;
+      line-height: 62px !important;
+    }
+  }
+
+  .head-user {
+    color: #909399;
+    float: right;
+    margin: 0px 0px 0px 10px;
+
+    .el-dropdown-avatar {
+      margin-top: 12px;
+      margin-right: 20px;
+      cursor: pointer;
+    }
+
+    .is-dot {
+      right: 10px;
+      top: 5px;
+    }
+  }
+}
+
+.student-main {
+  padding: 0px !important;
+}
+
+
+@media only screen and (max-width: 768px) {
+  .student-footer {
+    padding: 40px 20px;
+  }
+}
+
+
+@media only screen and (min-width: 768px) and (max-width: 1200px) {
+  .student-footer {
+    padding: 40px 70px;
+  }
+}
+
+
+@media only screen and (min-width: 1200px) {
+  .student-footer {
+    padding: 40px 150px;
+  }
+}
+
+
+.student-footer {
+  margin-top: 150px;
+  background-color: #f7fbfd;
+  width: 100%;
+  box-sizing: border-box;
+
+  .footer-main {
+    display: inline-block;
+    vertical-align: top;
+    margin-right: 110px;
+
+    .footer-main-link {
+      display: block;
+      margin: 0;
+      line-height: 2;
+      font-size: 14px;
+      color: #666;
+    }
+  }
+
+  .footer-social {
+    float: right;
+    text-align: right;
+
+    .footer-social-title {
+      color: #666;
+      font-size: 18px;
+      line-height: 1;
+      margin: 0 0 20px;
+      padding: 0;
+      font-weight: 700;
+    }
+
+    a {
+      margin-left: 5px;
+    }
+  }
+}
+
+
+@media only screen and (max-width: 768px) {
+  .app-item-contain {
+    padding: 30px 0px 0px 0px;
+  }
+
+  .app-contain {
+    padding: 30px 0px 0px 0px;
+  }
+}
+
+
+@media only screen and (min-width: 768px) and (max-width: 1200px) {
+  .app-item-contain {
+    padding: 30px 30px 0px 30px;
+  }
+
+  .app-contain {
+    padding: 30px 30px 0px 30px;
+  }
+}
+
+
+@media only screen and (min-width: 1200px) {
+  .app-item-contain {
+    padding: 30px 100px 0px 100px;
+  }
+
+  .app-contain {
+    padding: 30px 100px 0px 100px;
+  }
+}
+
+
+.q-title {
+  margin: 5px 5px 0px 5px;
+
+  p {
+    display: inline !important;
+  }
+}
+
+
+.q-content {
+  margin: 10px 35px 15px 25px;
+
+  p {
+    display: inline !important;
+  }
+
+  .el-checkbox__input {
+    line-height: 1.8;
+    vertical-align: top;
+  }
+}
+
+.q-item-prefix {
+  margin: 5px 10px;
+}
+
+.q-item-content {
+  margin: 5px;
+
+  p {
+    display: inline !important;
+  }
+}
+
+.q-item-span-content {
+  white-space: normal;
+  line-height: 2.1;
+
+  p {
+    display: inline !important;
+  }
+}
+
+.question-prefix {
+  padding-right: 22px;
+  font-weight: 600 !important;
+}
+
+.gapfilling-span {
+  color: red;
+  padding: 0px 30px;
+  margin: 0px 5px;
+  border-bottom: 3px double red;
+}
+
+.question-item-margin {
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+
+.exam-question-item {
+  .el-form-item__label {
+    font-size: 15px !important;
+    font-weight: 600 !important;
+    color: #1f2f3d !important;
+  }
+}
+
+
+.record-answer-info {
+  margin-top: 40px;
+  min-height: 200px;
+
+  .el-form-item {
+    margin-bottom: 0px !important;
+  }
+}
+
+.question-answer-show-item {
+  .question-show-item {
+    float: left;
+  }
+
+  .el-rate {
+    line-height: 1.5;
+  }
+}
+
+.question-show-item-analyze {
+}
+
+.user-info-userName {
+  text-align: center;
+  margin-top: 15px
+}
+
+.user-info-fullInfo {
+  label {
+    line-height: 1.5;
+  }
+}
+
+.student-message-list {
+  .el-collapse-item__arrow {
+    margin: 0px;
+  }
+}
+
+
+.index-task-table {
+  width: 100%;
+}
+
+.index-task-table-paper {
+  padding-left: 20px;
+}
+
+.index-limit-paper-time {
+  font-size: 12px;
+  line-height: 1.3;
+  color: gray;
+  text-align: right;
+}
+
+.do-exam-title {
+  position: fixed;
+  width: 100%;
+  background: #fff6f6;
+  z-index: 999;
+  padding: 5px 0px;
+}
+
+.do-exam-title-hidden {
+  width: 100%;
+  visibility: hidden;
+  padding: 5px 0px;
+}
+
+.do-exam-title-tag {
+  margin-left: 5px;
+  cursor: pointer;
+}
+
+.do-exam-time {
+  float: right;
+  line-height: 2;
+  font-size: 14px;
+  padding-right: 5px;
+}
+
+.do-align-center {
+  text-align: center;
+  margin-top: 40px;
+
+  .el-form-item__content {
+    margin-left: 0px !important;
+  }
+}
+
+.ueditor-p {
+  display: inline !important;
+}
+
+.carousel-img {
+  display: inline-block;
+  height: 300px;
+  width: 100%;
+}
+
+img {
+  max-width: 100%;
+  max-height: 100%;
+}
diff --git a/src/utils/index.js b/src/utils/index.js
new file mode 100644
index 0000000..7f51337
--- /dev/null
+++ b/src/utils/index.js
@@ -0,0 +1,419 @@
+/**
+ * Created by PanJiaChen on 16/11/18.
+ */
+
+/**
+ * Parse the time to string
+ * @param {(Object|string|number)} time
+ * @param {string} cFormat
+ * @returns {string}
+ */
+export function parseTime (time, cFormat) {
+  if (arguments.length === 0) {
+    return null
+  }
+  const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
+  let date
+  if (typeof time === 'object') {
+    date = time
+  } else {
+    if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
+      time = parseInt(time)
+    }
+    if ((typeof time === 'number') && (time.toString().length === 10)) {
+      time = time * 1000
+    }
+    date = new Date(time)
+  }
+  const formatObj = {
+    y: date.getFullYear(),
+    m: date.getMonth() + 1,
+    d: date.getDate(),
+    h: date.getHours(),
+    i: date.getMinutes(),
+    s: date.getSeconds(),
+    a: date.getDay()
+  }
+  // eslint-disable-next-line camelcase
+  const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
+    let value = formatObj[key]
+    // Note: getDay() returns 0 on Sunday
+    // eslint-disable-next-line standard/computed-property-even-spacing
+    if (key === 'a') { return ['鏃�', '涓�', '浜�', '涓�', '鍥�', '浜�', '鍏�'][value ] }
+    if (result.length > 0 && value < 10) {
+      value = '0' + value
+    }
+    return value || 0
+  })
+  // eslint-disable-next-line camelcase
+  return time_str
+}
+
+/**
+ * @param {number} time
+ * @param {string} option
+ * @returns {string}
+ */
+export function formatTime (time, option) {
+  if (('' + time).length === 10) {
+    time = parseInt(time) * 1000
+  } else {
+    time = +time
+  }
+  const d = new Date(time)
+  const now = Date.now()
+
+  const diff = (now - d) / 1000
+
+  if (diff < 30) {
+    return '鍒氬垰'
+  } else if (diff < 3600) {
+    // less 1 hour
+    return Math.ceil(diff / 60) + '鍒嗛挓鍓�'
+  } else if (diff < 3600 * 24) {
+    return Math.ceil(diff / 3600) + '灏忔椂鍓�'
+  } else if (diff < 3600 * 24 * 2) {
+    return '1澶╁墠'
+  }
+  if (option) {
+    return parseTime(time, option)
+  } else {
+    return (
+      d.getMonth() +
+      1 +
+      '鏈�' +
+      d.getDate() +
+      '鏃�' +
+      d.getHours() +
+      '鏃�' +
+      d.getMinutes() +
+      '鍒�'
+    )
+  }
+}
+
+/**
+ * @param {string} url
+ * @returns {Object}
+ */
+export function getQueryObject (url) {
+  url = url == null ? window.location.href : url
+  const search = url.substring(url.lastIndexOf('?') + 1)
+  const obj = {}
+  const reg = /([^?&=]+)=([^?&=]*)/g
+  search.replace(reg, (rs, $1, $2) => {
+    const name = decodeURIComponent($1)
+    let val = decodeURIComponent($2)
+    val = String(val)
+    obj[name] = val
+    return rs
+  })
+  return obj
+}
+
+/**
+ * @param {string} input value
+ * @returns {number} output value
+ */
+export function byteLength (str) {
+  // returns the byte length of an utf8 string
+  let s = str.length
+  for (var i = str.length - 1; i >= 0; i--) {
+    const code = str.charCodeAt(i)
+    if (code > 0x7f && code <= 0x7ff) s++
+    else if (code > 0x7ff && code <= 0xffff) s += 2
+    if (code >= 0xDC00 && code <= 0xDFFF) i--
+  }
+  return s
+}
+
+/**
+ * @param {Array} actual
+ * @returns {Array}
+ */
+export function cleanArray (actual) {
+  const newArray = []
+  for (let i = 0; i < actual.length; i++) {
+    if (actual[i]) {
+      newArray.push(actual[i])
+    }
+  }
+  return newArray
+}
+
+/**
+ * @param {Object} json
+ * @returns {Array}
+ */
+export function param (json) {
+  if (!json) return ''
+  return cleanArray(
+    Object.keys(json).map(key => {
+      if (json[key] === undefined) return ''
+      return encodeURIComponent(key) + '=' + encodeURIComponent(json[key])
+    })
+  ).join('&')
+}
+
+/**
+ * @param {string} url
+ * @returns {Object}
+ */
+export function param2Obj (url) {
+  const search = url.split('?')[1]
+  if (!search) {
+    return {}
+  }
+  return JSON.parse(
+    '{"' +
+    decodeURIComponent(search)
+      .replace(/"/g, '\\"')
+      .replace(/&/g, '","')
+      .replace(/=/g, '":"')
+      .replace(/\+/g, ' ') +
+    '"}'
+  )
+}
+
+/**
+ * @param {string} val
+ * @returns {string}
+ */
+export function html2Text (val) {
+  const div = document.createElement('div')
+  div.innerHTML = val
+  return div.textContent || div.innerText
+}
+
+/**
+ * Merges two objects, giving the last one precedence
+ * @param {Object} target
+ * @param {(Object|Array)} source
+ * @returns {Object}
+ */
+export function objectMerge (target, source) {
+  if (typeof target !== 'object') {
+    target = {}
+  }
+  if (Array.isArray(source)) {
+    return source.slice()
+  }
+  Object.keys(source).forEach(property => {
+    const sourceProperty = source[property]
+    if (typeof sourceProperty === 'object') {
+      target[property] = objectMerge(target[property], sourceProperty)
+    } else {
+      target[property] = sourceProperty
+    }
+  })
+  return target
+}
+
+/**
+ * @param {HTMLElement} element
+ * @param {string} className
+ */
+export function toggleClass (element, className) {
+  if (!element || !className) {
+    return
+  }
+  let classString = element.className
+  const nameIndex = classString.indexOf(className)
+  if (nameIndex === -1) {
+    classString += '' + className
+  } else {
+    classString =
+      classString.substr(0, nameIndex) +
+      classString.substr(nameIndex + className.length)
+  }
+  element.className = classString
+}
+
+/**
+ * @param {string} type
+ * @returns {Date}
+ */
+export function getTime (type) {
+  if (type === 'start') {
+    return new Date().getTime() - 3600 * 1000 * 24 * 90
+  } else {
+    return new Date(new Date().toDateString())
+  }
+}
+
+/**
+ * @param {Function} func
+ * @param {number} wait
+ * @param {boolean} immediate
+ * @return {*}
+ */
+export function debounce (func, wait, immediate) {
+  let timeout, args, context, timestamp, result
+
+  const later = function () {
+    // 鎹笂涓�娆¤Е鍙戞椂闂撮棿闅�
+    const last = +new Date() - timestamp
+
+    // 涓婃琚寘瑁呭嚱鏁拌璋冪敤鏃堕棿闂撮殧 last 灏忎簬璁惧畾鏃堕棿闂撮殧 wait
+    if (last < wait && last > 0) {
+      timeout = setTimeout(later, wait - last)
+    } else {
+      timeout = null
+      // 濡傛灉璁惧畾涓篿mmediate===true锛屽洜涓哄紑濮嬭竟鐣屽凡缁忚皟鐢ㄨ繃浜嗘澶勬棤闇�璋冪敤
+      if (!immediate) {
+        result = func.apply(context, args)
+        if (!timeout) context = args = null
+      }
+    }
+  }
+
+  return function (...args) {
+    context = this
+    timestamp = +new Date()
+    const callNow = immediate && !timeout
+    // 濡傛灉寤舵椂涓嶅瓨鍦紝閲嶆柊璁惧畾寤舵椂
+    if (!timeout) timeout = setTimeout(later, wait)
+    if (callNow) {
+      result = func.apply(context, args)
+      context = args = null
+    }
+
+    return result
+  }
+}
+
+/**
+ * This is just a simple version of deep copy
+ * Has a lot of edge cases bug
+ * If you want to use a perfect deep copy, use lodash's _.cloneDeep
+ * @param {Object} source
+ * @returns {Object}
+ */
+export function deepClone (source) {
+  if (!source && typeof source !== 'object') {
+    throw new Error('error arguments', 'deepClone')
+  }
+  const targetObj = source.constructor === Array ? [] : {}
+  Object.keys(source).forEach(keys => {
+    if (source[keys] && typeof source[keys] === 'object') {
+      targetObj[keys] = deepClone(source[keys])
+    } else {
+      targetObj[keys] = source[keys]
+    }
+  })
+  return targetObj
+}
+
+/**
+ * @param {Array} arr
+ * @returns {Array}
+ */
+export function uniqueArr (arr) {
+  return Array.from(new Set(arr))
+}
+
+/**
+ * @returns {string}
+ */
+export function createUniqueString () {
+  const timestamp = +new Date() + ''
+  const randomNum = parseInt((1 + Math.random()) * 65536) + ''
+  return (+(randomNum + timestamp)).toString(32)
+}
+
+/**
+ * Check if an element has a class
+ * @param {HTMLElement} elm
+ * @param {string} cls
+ * @returns {boolean}
+ */
+export function hasClass (ele, cls) {
+  return !!ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'))
+}
+
+/**
+ * Add class to element
+ * @param {HTMLElement} elm
+ * @param {string} cls
+ */
+export function addClass (ele, cls) {
+  if (!hasClass(ele, cls)) ele.className += ' ' + cls
+}
+
+/**
+ * Remove class from element
+ * @param {HTMLElement} elm
+ * @param {string} cls
+ */
+export function removeClass (ele, cls) {
+  if (hasClass(ele, cls)) {
+    const reg = new RegExp('(\\s|^)' + cls + '(\\s|$)')
+    ele.className = ele.className.replace(reg, ' ')
+  }
+}
+
+export function formatSeconds (theTime) {
+  let theTime1 = 0
+  let theTime2 = 0
+  if (theTime > 60) {
+    theTime1 = parseInt(theTime / 60)
+    theTime = parseInt(theTime % 60)
+    if (theTime1 > 60) {
+      theTime2 = parseInt(theTime1 / 60)
+      theTime1 = parseInt(theTime1 % 60)
+    }
+  }
+  let result = '' + parseInt(theTime) + '绉�'
+  if (theTime1 > 0) {
+    result = '' + parseInt(theTime1) + '鍒�' + result
+  }
+  if (theTime2 > 0) {
+    result = '' + parseInt(theTime2) + '灏忔椂' + result
+  }
+  return result
+}
+
+export function formatSecondsG (theTime, hour, min, second) {
+  let theTime1 = 0
+  let theTime2 = 0
+  if (theTime > 60) {
+    theTime1 = parseInt(theTime / 60)
+    theTime = parseInt(theTime % 60)
+    if (theTime1 > 60) {
+      theTime2 = parseInt(theTime1 / 60)
+      theTime1 = parseInt(theTime1 % 60)
+    }
+  }
+  let result = '' + parseInt(theTime) + second
+  if (theTime1 > 0) {
+    result = '' + parseInt(theTime1) + min + result
+  }
+  if (theTime2 > 0) {
+    result = '' + parseInt(theTime2) + hour + result
+  }
+  return result
+}
+
+export function formatDate (date, fmt) {
+  if (/(y+)/.test(fmt)) {
+    fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
+  }
+  let o = {
+    'M+': date.getMonth() + 1,
+    'd+': date.getDate(),
+    'h+': date.getHours(),
+    'm+': date.getMinutes(),
+    's+': date.getSeconds()
+  }
+  for (let k in o) {
+    if (new RegExp(`(${k})`).test(fmt)) {
+      let str = o[k] + ''
+      fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str))
+    }
+  }
+  return fmt
+}
+
+function padLeftZero (str) {
+  return ('00' + str).substr(str.length)
+}
diff --git a/src/utils/request.js b/src/utils/request.js
new file mode 100644
index 0000000..b2b4ee7
--- /dev/null
+++ b/src/utils/request.js
@@ -0,0 +1,160 @@
+import axios from 'axios'
+import vue from 'vue'
+
+const request = function (loadtip, query) {
+  console.log(query.baseURL)
+  console.log(query.url)
+  let loading
+  if (loadtip) {
+    loading = vue.prototype.$loading({
+      lock: false,
+      text: '姝e湪鍔犺浇涓��',
+      spinner: 'el-icon-loading',
+      background: 'rgba(0, 0, 0, 0.5)'
+    })
+  }
+  return axios.request(query)
+    .then(res => {
+      if (loadtip) {
+        loading.close()
+      }
+      if (res.data.code === 401) {
+        vue.prototype.$$router.push({ path: '/login' })
+        return Promise.reject(res.data)
+      } else if (res.data.code === 500) {
+        return Promise.reject(res.data)
+      } else if (res.data.code === 501) {
+        return Promise.reject(res.data)
+      } else if (res.data.code === 502) {
+        vue.prototype.$$router.push({ path: '/login' })
+        return Promise.reject(res.data)
+      } else if (res.data.code === 999 || res.data.code === 998) {
+        return Promise.reject(res.data)
+      } else {
+        return Promise.resolve(res.data)
+      }
+    })
+    .catch(e => {
+      if (loadtip) {
+        loading.close()
+      }
+      // vue.prototype.$message.error(e.message)
+      return Promise.reject(e)
+    })
+}
+
+const post = function (url, params) {
+  const query = {
+    baseURL: process.env.VUE_APP_URL,
+    url: url,
+    method: 'post',
+    withCredentials: true,
+    timeout: 600000,
+    data: params,
+    headers: { 'Content-Type': 'application/json', 'request-ajax': true }
+  }
+  return request(false, query)
+}
+
+const postOts = function (url, params) {
+  const query = {
+    url: url,
+    method: 'post',
+    withCredentials: true,
+    timeout: 600000,
+    // timeout: 5000,
+    data: params,
+    // headers: { 'Content-Type': 'application/json;charset=UTF-8', 'request-ajax': true, 'Access-Control-Allow-Methods': 'GET, POST, OPTIONS', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept' }
+    headers: { 'Content-Type': 'application/json', 'request-ajax': true }
+  }
+  return request(false, query)
+}
+
+const getOts = function (url, params) {
+  const query = {
+    url: url,
+    method: 'get',
+    withCredentials: true,
+    timeout: 600000,
+    data: params,
+    // headers: { 'Content-Type': 'application/json;charset=UTF-8', 'request-ajax': true, 'Access-Control-Allow-Methods': 'GET, POST, OPTIONS', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept' }
+    headers: { 'Content-Type': 'application/json', 'request-ajax': true }
+  }
+  return request(false, query)
+}
+
+const postWithLoadTip = function (url, params) {
+  const query = {
+    baseURL: process.env.VUE_APP_URL,
+    url: url,
+    method: 'post',
+    withCredentials: true,
+    timeout: 600000,
+    data: params,
+    headers: { 'Content-Type': 'application/json', 'request-ajax': true }
+  }
+  return request(true, query)
+}
+
+const postWithLoadTipOts = function (url, params) {
+  const query = {
+    // baseURL: process.env.VUE_APP_URL,
+    url: url,
+    method: 'post',
+    withCredentials: true,
+    timeout: 600000,
+    data: params,
+    headers: { 'Content-Type': 'application/json', 'request-ajax': true }
+  }
+  return request(true, query)
+}
+
+const postWithOutLoadTip = function (url, params) {
+  const query = {
+    baseURL: process.env.VUE_APP_URL,
+    url: url,
+    method: 'post',
+    withCredentials: true,
+    timeout: 600000,
+    data: params,
+    headers: { 'Content-Type': 'application/json', 'request-ajax': true }
+  }
+  return request(false, query)
+}
+
+const get = function (url, params) {
+  const query = {
+    baseURL: process.env.VUE_APP_URL,
+    url: url,
+    method: 'get',
+    withCredentials: true,
+    timeout: 600000,
+    params: params,
+    headers: { 'request-ajax': true }
+  }
+  return request(false, query)
+}
+
+const form = function (url, params) {
+  const query = {
+    baseURL: process.env.VUE_APP_URL,
+    url: url,
+    method: 'post',
+    withCredentials: true,
+    timeout: 600000,
+    data: params,
+    headers: { 'Content-Type': 'multipart/form-data', 'request-ajax': true }
+  }
+  return request(false, query)
+}
+
+export {
+  post,
+  postOts,
+  getOts,
+  postWithLoadTip,
+  postWithOutLoadTip,
+  postWithLoadTipOts,
+  get,
+  form
+}
diff --git a/src/utils/scroll-to.js b/src/utils/scroll-to.js
new file mode 100644
index 0000000..1d6906c
--- /dev/null
+++ b/src/utils/scroll-to.js
@@ -0,0 +1,58 @@
+Math.easeInOutQuad = function (t, b, c, d) {
+  t /= d / 2
+  if (t < 1) {
+    return c / 2 * t * t + b
+  }
+  t--
+  return -c / 2 * (t * (t - 2) - 1) + b
+}
+
+// requestAnimationFrame for Smart Animating http://goo.gl/sx5sts
+var requestAnimFrame = (function () {
+  return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function (callback) { window.setTimeout(callback, 1000 / 60) }
+})()
+
+/**
+ * Because it's so fucking difficult to detect the scrolling element, just move them all
+ * @param {number} amount
+ */
+function move (amount) {
+  document.documentElement.scrollTop = amount
+  document.body.parentNode.scrollTop = amount
+  document.body.scrollTop = amount
+}
+
+function position () {
+  return document.documentElement.scrollTop || document.body.parentNode.scrollTop || document.body.scrollTop
+}
+
+/**
+ * @param {number} to
+ * @param {number} duration
+ * @param {Function} callback
+ */
+export function scrollTo (to, duration, callback) {
+  const start = position()
+  const change = to - start
+  const increment = 20
+  let currentTime = 0
+  duration = (typeof (duration) === 'undefined') ? 500 : duration
+  var animateScroll = function () {
+    // increment the time
+    currentTime += increment
+    // find the value with the quadratic in-out easing function
+    var val = Math.easeInOutQuad(currentTime, start, change, duration)
+    // move the document.body
+    move(val)
+    // do the animation unless its over
+    if (currentTime < duration) {
+      requestAnimFrame(animateScroll)
+    } else {
+      if (callback && typeof (callback) === 'function') {
+        // the animation is done so lets callback
+        callback()
+      }
+    }
+  }
+  animateScroll()
+}
diff --git a/src/utils/validate.js b/src/utils/validate.js
new file mode 100644
index 0000000..691c604
--- /dev/null
+++ b/src/utils/validate.js
@@ -0,0 +1,89 @@
+/**
+ * Created by PanJiaChen on 16/11/18.
+ */
+
+/**
+ * @param {string} path
+ * @returns {Boolean}
+ */
+export function isExternal (path) {
+  return /^(https?:|mailto:|tel:)/.test(path)
+}
+
+/**
+ * @param {string} str
+ * @returns {Boolean}
+ */
+export function validUsername (str) {
+  // eslint-disable-next-line camelcase
+  const valid_map = ['admin', 'editor']
+  return valid_map.indexOf(str.trim()) >= 0
+}
+
+/**
+ * @param {string} url
+ * @returns {Boolean}
+ */
+export function validURL (url) {
+  const reg = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
+  return reg.test(url)
+}
+
+/**
+ * @param {string} str
+ * @returns {Boolean}
+ */
+export function validLowerCase (str) {
+  const reg = /^[a-z]+$/
+  return reg.test(str)
+}
+
+/**
+ * @param {string} str
+ * @returns {Boolean}
+ */
+export function validUpperCase (str) {
+  const reg = /^[A-Z]+$/
+  return reg.test(str)
+}
+
+/**
+ * @param {string} str
+ * @returns {Boolean}
+ */
+export function validAlphabets (str) {
+  const reg = /^[A-Za-z]+$/
+  return reg.test(str)
+}
+
+/**
+ * @param {string} email
+ * @returns {Boolean}
+ */
+export function validEmail (email) {
+  // eslint-disable-next-line no-useless-escape
+  const reg = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
+  return reg.test(email)
+}
+
+/**
+ * @param {string} str
+ * @returns {Boolean}
+ */
+export function isString (str) {
+  if (typeof str === 'string' || str instanceof String) {
+    return true
+  }
+  return false
+}
+
+/**
+ * @param {Array} arg
+ * @returns {Boolean}
+ */
+export function isArray (arg) {
+  if (typeof Array.isArray === 'undefined') {
+    return Object.prototype.toString.call(arg) === '[object Array]'
+  }
+  return Array.isArray(arg)
+}
diff --git a/src/views/demography/index.vue b/src/views/demography/index.vue
new file mode 100644
index 0000000..ab749a6
--- /dev/null
+++ b/src/views/demography/index.vue
@@ -0,0 +1,217 @@
+<template>
+  <div class="demography">
+    <div hidden>{{goLangType}}</div>
+    <el-form :model="demographyMenber" ref="demographyMenber" label-width="25%" style="padding: 4%">
+      <h2 class="align-center">{{$t('demography')}}</h2>
+      <el-row :key="index" v-for="(item, index) in demographyMenber.data">
+        <div v-if="item.types== 'text' && item.isRequired=='1'">
+          <el-form-item :label="item.paramName"
+                        :prop="'data.'+index+'.paramValue'"
+                        :rules="[{ required: true, message: $t('required'),trigger: 'change'},{max: 32, message: $t('range32'), trigger: 'change'}]">
+            <el-input v-model="item.paramValue"></el-input>
+          </el-form-item>
+        </div>
+        <div v-if="item.types== 'text' && item.isRequired !='1'">
+          <el-form-item :label="item.paramName">
+            <el-input v-model="item.paramValue"></el-input>
+          </el-form-item>
+        </div>
+        <div v-if="item.types=='radio' && item.isRequired=='1'">
+          <el-form-item :label="item.paramName"
+                        :prop="'data.'+index+'.paramValue'"
+                        :rules="[{ required: true, message: $t('required'),trigger: 'change'}]">
+            <el-radio-group v-model="item.paramValue">
+              <el-radio v-for="(itemIter, index) in item.dictData" :key="index" :label="itemIter.dictLabel">
+                <span class="question-prefix">{{itemIter.dictLabel}}</span>
+              </el-radio>
+            </el-radio-group>
+          </el-form-item>
+        </div>
+        <div v-if="item.types=='radio' && item.isRequired !='1'">
+          <el-form-item :label="item.paramName">
+            <el-radio-group v-model="item.paramValue">
+              <el-radio v-for="(itemIter, index) in item.dictData" :key="index" :label="itemIter.dictLabel">
+                <span class="question-prefix">{{itemIter.dictLabel}}</span>
+              </el-radio>
+            </el-radio-group>
+          </el-form-item>
+        </div>
+        <div v-if="item.types=='date' && item.isRequired =='1'">
+          <el-form-item :label="item.paramName"
+                        :prop="'data.'+index+'.paramValue'"
+                        :rules="[{ required: true, message: $t('required'),trigger: 'change'}]">
+            <el-col>
+              <el-date-picker type="date" :placeholder="$t('selectData')" v-model="item.paramValue"
+                              style="width: 100%;"></el-date-picker>
+            </el-col>
+          </el-form-item>
+        </div>
+        <div v-if="item.types=='date' && item.isRequired !='1'">
+          <el-form-item :label="item.paramName">
+            <el-col>
+              <el-date-picker type="date" :placeholder="$t('selectData')" v-model="item.paramValue"
+                              style="width: 100%;"></el-date-picker>
+            </el-col>
+          </el-form-item>
+        </div>
+        <div v-if="item.types=='select' && item.isRequired =='1'">
+          <el-form-item :label="item.paramName"
+                        :rules="[{ required: true, message: $t('required'),trigger: 'change'}]">
+            <el-select v-model="item.paramValue" :placeholder= "$t('pleaseSelect')">
+              <el-option
+                v-for="itemIter in item.dictData"
+                :key="itemIter.dictValue"
+                :label="itemIter.dictLabel"
+                :value="itemIter.dictValue">
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </div>
+        <div v-if="item.types=='select' && item.isRequired !='1'">
+          <el-form-item :label="item.paramName">
+            <el-select v-model="item.paramValue" :placeholder= "$t('pleaseSelect')">
+              <el-option
+                v-for="itemIter in item.dictData"
+                :key="itemIter.dictValue"
+                :label="itemIter.dictLabel"
+                :value="itemIter.dictValue">
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </div>
+        <div v-else></div>
+      </el-row>
+      <el-row class="do-align-center">
+        <el-button @click="submitDemography" type="danger" :disabled="submitDisable">{{$t('submission')}}</el-button>
+      </el-row>
+    </el-form>
+  </div>
+</template>
+
+<script>
+import demographyApi from '@/api/demography'
+import { mapMutations, mapState } from 'vuex'
+import examPaperApi from '@/api/examPaper'
+
+// import QuestionEdit from "./childCompoment/QuestionEdit";
+
+export default {
+  // components: { QuestionEdit },
+  data () {
+    return {
+      demographyMenber: { data: [] },
+      productId: 0,
+      paramsInfo: {},
+      parasInfos: [],
+      parasInfoIds: {},
+      formDo: {},
+      submitDisable: false,
+      isStart: this.$route.query.isStart
+    }
+  },
+  created () {
+  },
+  methods: {
+    submitDemography: function () {
+      let _this = this
+      _this.submitDisable = true
+      this.$refs.demographyMenber.validate(vaild => {
+        if (vaild) {
+          _this.parasInfos = []
+          for (let i = 0; i < this.demographyMenber.data.length; i++) {
+            let _paramsInfo = {}
+            if (_this.parasInfoIds[_this.demographyMenber.data[i].paramId] !== undefined) {
+              _paramsInfo.infoId = _this.parasInfoIds[_this.demographyMenber.data[i].paramId].infoId
+            }
+            _paramsInfo.userId = _this.demographyMenber.data[i].userId
+            _paramsInfo.memberId = _this.demographyMenber.data[i].memberId
+            _paramsInfo.paramId = _this.demographyMenber.data[i].paramId
+            _paramsInfo.paramName = _this.demographyMenber.data[i].paramName
+            _paramsInfo.paramValue = _this.demographyMenber.data[i].paramValue
+            if (_paramsInfo.paramValue.trim() === '') {
+              continue
+            }
+            _this.parasInfos.push(_paramsInfo)
+          }
+          demographyApi.submitDemography(_this.memberToken, _this.langType, _this.parasInfos).then(function (result) {
+            if (result && result.code === 1) {
+              examPaperApi.select(_this.memberToken, _this.langType).then(re => {
+                _this.formDo = re.response
+                _this.setDoUrl(re.response.questionTemplateId)
+                if (_this.isStart) {
+                  _this.$router.push({ path: '/exam/' + _this.doUrl })
+                  return
+                }
+                _this.$router.push({ path: '/guide/index', query: { formDo: _this.formDo } });
+              }).catch(e => {
+                _this.$message.error(_this.$t('noquestionMsg'))
+              })
+            } else {
+              _this.$message.error(result.message + 'submitDemography')
+            }
+          }).catch(e => {
+            _this.$message.error(_this.$t('questionExceptionMsg'))
+          })
+        } else {
+          this.$message.error(_this.$t('requiredMsg'))
+          _this.submitDisable = false
+        }
+      })
+    },
+    createDemography: function () {
+      let _this = this
+      demographyApi.demography(_this.memberToken, _this.langType).then(re => {
+        for (let i = 0; i < re.response.length; i++) {
+          if (re.response[i].paramValue === null) {
+            re.response[i].paramValue = ''
+          }
+        }
+        _this.demographyMenber.data = re.response
+        demographyApi.queryDemographyParamInfo(_this.memberToken).then(
+          re => {
+            if (re.code !== 1) {
+              return
+            }
+            for (let i = 0; i < re.response.length; i++) {
+              _this.parasInfoIds[re.response[i].paramId] = re.response[i]
+            }
+            for (let i = 0; i < _this.demographyMenber.data.length; i++) {
+              if (_this.parasInfoIds[_this.demographyMenber.data[i].paramId] !== undefined) {
+                _this.demographyMenber.data[i].paramValue = _this.parasInfoIds[_this.demographyMenber.data[i].paramId].paramValue
+              }
+            }
+          }
+        ).catch(e => {
+        })
+      }).catch(e => {
+        _this.$message.error(_this.$t('userinfoErro'))
+      })
+    },
+    ...mapMutations('user', ['setMemberTocken']),
+    ...mapMutations('exam', ['setDoUrl'])
+  },
+  computed: {
+    ...mapState('user', { memberToken: state => state.memberToken }),
+    ...mapState('exam', { doUrl: state => state.doUrl }),
+    ...mapState('user', { langType: state => state.langType }),
+    goLangType: function () {
+      // `this` 鎸囧悜 vm 瀹炰緥
+      let _this = this
+      _this.createDemography()
+      return _this.langType
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+  .demography {
+    width: 90%;
+    margin: 0 auto;
+    margin-top: 5%;
+  }
+
+  .align-center {
+    text-align: center
+  }
+</style>
diff --git a/src/views/demography/langOption.vue b/src/views/demography/langOption.vue
new file mode 100644
index 0000000..ff4257f
--- /dev/null
+++ b/src/views/demography/langOption.vue
@@ -0,0 +1,155 @@
+<template>
+  <div class="demography">
+    <div hidden>{{goLangType}}</div>
+    <el-form class="align-center" style="padding: 3%">
+      <h1 v-bind:class="{langKaiStyle : isLangKaiStyle}">{{langWelcome}}</h1>
+      <h3 v-bind:class="{langKaiStyle : isLangKaiStyle}" style="color: #3a8ee6">{{langOption}}</h3>
+            <el-select v-model="langSelectValue"   :placeholder= "$t('pleaseSelect')" style="width: 55%">
+              <el-option
+                v-for="itemIter in langTypes"
+                :key="itemIter.dictValue"
+                :label="itemIter.dictValue"
+                :value="itemIter.dictValue">
+              </el-option>
+            </el-select>
+      <el-footer class="do-align-center">
+        <el-button @click="submitLangOption" type="danger">{{submissionLang}}</el-button>
+      </el-footer>
+    </el-form>
+  </div>
+</template>
+
+<script>
+import demographyApi from '@/api/demography'
+import { mapMutations, mapState } from 'vuex'
+// import examPaperApi from '@/api/examPaper'
+// import QuestionEdit from "./childCompoment/QuestionEdit";
+import examPaperApi from '@/api/examPaper'
+
+export default {
+  // components: { QuestionEdit },
+  data () {
+    return {
+      langTypes: [],
+      langSelectValue: this.$route.query.langSelectValue,
+      langWelcome: this.$t('langWelcomeEnglish'),
+      langOption: this.$t('langOptionEnglish'),
+      timer: null,
+      submissionLang: this.$t('submission'),
+      isLangKaiStyle: false
+    }
+  },
+  created: function () {
+    let _this = this
+    window.clearInterval(this.timer)
+    _this.getLangType()
+    _this.getLangAndRportTemplateId()
+    let num = 0
+    this.timer = setInterval(function () {
+      if (num > 9) {
+        num = 0
+      }
+      if (num === 0) {
+        _this.langWelcome = _this.$t('langWelcomeEnglish')
+        _this.langOption = _this.$t('langOptionEnglish')
+        _this.isLangKaiStyle = false
+      }
+
+      if (num === 3) {
+        _this.langWelcome = _this.$t('langWelcomeChinese')
+        _this.langOption = _this.$t('langOptionChinese')
+        _this.isLangKaiStyle = true
+      }
+
+      if (num === 6) {
+        _this.langWelcome = _this.$t('langWelcomeThai')
+        _this.langOption = _this.$t('langOptionThai')
+        _this.isLangKaiStyle = false
+      }
+      num++
+    }, 1000)
+  },
+  beforeDestroy () {
+    window.clearInterval(this.timer)
+  },
+  methods: {
+    submitLangOption: function () {
+      let _this = this
+      _this.setLangType(_this.langSelectValue)
+      _this.$router.push({ path: '/demography/fill/index', query: { demographyMenber: _this.memberToken, isStart: false } })
+      window.clearInterval(this.timer)
+    },
+    getLangAndRportTemplateId () {
+      let _this = this
+      if (_this.reportTemplateId.trim() === '' || _this.reportTemplateId.trim() === null) {
+        examPaperApi.selectTokenId(_this.memberToken).then(re => {
+          if (re.response.finish === 1) {
+            _this.$router.push({ path: '/exam/finish', query: { name: '', content: _this.$t('finishMsg') } })
+          } else {
+            _this.setReportTemplateId(re.response.reportTemplateId)
+            demographyApi.queryLangList(_this.memberToken, _this.reportTemplateId).then(function (result) {
+              if (result && result.code === 1) {
+                _this.langTypes = result.response
+              }
+            }
+            ).catch(e => {
+              _this.$message.error(_this.$t('noquestionMsg'))
+            })
+          }
+        }).catch(e => {
+        })
+      } else {
+        demographyApi.queryLangList(_this.memberToken, _this.reportTemplateId).then(function (result) {
+          if (result && result.code === 1) {
+            _this.langTypes = result.response
+          }
+        }
+        ).catch(e => {
+          _this.$message.error(_this.$t('noquestionMsg'))
+        })
+      }
+    },
+    ...mapMutations('user', ['setMemberTocken']),
+    ...mapMutations('user', ['setLangType']),
+    ...mapMutations('user', ['getLangType']),
+    ...mapMutations('exam', ['setReportTemplateId'])
+  },
+  computed: {
+    ...mapState('user', { memberToken: state => state.memberToken }),
+    ...mapState('exam', { doUrl: state => state.doUrl }),
+    ...mapState('exam', { reportTemplateId: state => state.reportTemplateId }),
+    ...mapState('user', { langType: state => state.langType }),
+    goLangType: function () {
+      // `this` 鎸囧悜 vm 瀹炰緥
+      let _this = this
+      if (_this.langSelectValue === 'Chinese') {
+        _this.$i18n.locale = 'zh'
+        _this.submissionLang = '鎻愪氦'
+      } else if (_this.langSelectValue === 'Thai') {
+        _this.$i18n.locale = 'th'
+        _this.submissionLang = '喙�喔笝喔�'
+      } else {
+        _this.$i18n.locale = 'en'
+        _this.submissionLang = 'submit'
+      }
+      return _this.langType
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+  .demography {
+    width: 90%;
+    margin: 0 auto;
+    margin-top: 5%;
+  }
+
+  .align-center {
+    text-align: center
+  }
+
+  .langKaiStyle {
+    font-family: Kai
+  }
+</style>
diff --git a/src/views/demography/login.vue b/src/views/demography/login.vue
new file mode 100644
index 0000000..b3e95b1
--- /dev/null
+++ b/src/views/demography/login.vue
@@ -0,0 +1,113 @@
+<template>
+  <div>
+  </div>
+</template>
+
+<script>
+import demographyApi from '@/api/demography'
+import { mapMutations, mapState } from 'vuex'
+import examPaperApi from '@/api/examPaper'
+export default {
+  // components: { QuestionEdit },
+  data () {
+    return {
+      demographyMenber: { data: [] },
+      paraMemberToken: this.$route.params.memberToken,
+      productId: 0,
+      paramsInfo: {},
+      parasInfos: [],
+      parasInfoIds: {},
+      formDo: {},
+      statusInfo: { '2': this.$t('statusInfo2'), '3': this.$t('statusInfo3'), '4': this.$t('statusInfo4') }
+    }
+  },
+  created () {
+    let _this = this
+    _this.getLangType()
+    // 璁板綍鐧婚檰鏃ュ織
+    examPaperApi.recordLogininfor(_this.paraMemberToken).then(re => {
+    }).catch(e => {
+    })
+    // 宸茬粡绛斿畬浜嗕笉鑳界瓟棰�
+    examPaperApi.selectTokenId(_this.paraMemberToken).then(re => {
+      if (re.response.finish === 1) {
+        _this.$router.push({ path: '/exam/finish', query: { name: '', content: _this.$t('finishMsg') } })
+      } else if (re.response.status !== '1') {
+        _this.$router.push({ path: '/exam/exception', query: { name: '', content: _this.statusInfo[re.response.status] } })
+      } else {
+        _this.setMemberTocken(_this.paraMemberToken)
+        _this.setDoUrl(re.response.doUrl)
+        _this.setReportTemplateId(re.response.reportTemplateId)
+        _this.queryCreate()
+      }
+    }).catch(e => {
+    })
+  },
+  methods: {
+    queryCreate: function () {
+      // 鍏堟煡璇汉鍙e鏄惁宸茬粡濉畬
+      let _this = this
+      demographyApi.queryDemographyParamInfo(_this.paraMemberToken).then(
+        reParam => {
+          if (reParam.code !== 1) {
+            // 鍏堥�夋嫨瀵嗙爜
+            _this.$router.push({ path: '/demography/fill/langOption', query: { langSelectValue: _this.langType } })
+            _this.setMemberTocken(_this.paraMemberToken)
+            return
+          }
+          if (reParam.response[0].langType === 'Chinese') {
+            this.$i18n.locale = 'zh'
+            _this.setLangType('Chinese')
+          } else {
+            _this.setLangType('English')
+            this.$i18n.locale = 'en'
+          }
+          _this.setMemberId(reParam.response[0].memberId)
+          // 鍒ゆ柇濡傛灉鏄湪绗竴棰橈紝閭d箞灏卞睍绀烘寚瀵艰
+          examPaperApi.selectTokenId(_this.memberToken).then(re => {
+            let answered = re.response.examItemOrderAndContentList
+            if (answered === null) {
+              examPaperApi.select(_this.memberToken, _this.langType).then(re => {
+                _this.formDo = re.response
+                _this.setDoUrl(re.response.questionTemplateId)
+                _this.$router.push({ path: '/guide/index', query: { formDo: _this.formDo } })
+              }).catch(e => {
+                _this.$message.error(_this.$t('noquestionMsg'))
+              })
+            } else {
+              _this.$router.push({ path: '/exam/' + _this.doUrl })
+            }
+          }).catch(e => {
+          })
+        }
+      ).catch(e => {
+      })
+    },
+    ...mapMutations('user', ['setMemberTocken']),
+    ...mapMutations('user', ['setMemberId']),
+    ...mapMutations('exam', ['setDoUrl']),
+    ...mapMutations('exam', ['setReportTemplateId']),
+    ...mapMutations('user', ['setLangType']),
+    ...mapMutations('user', ['getLangType'])
+  },
+  computed: {
+    ...mapState('user', { memberToken: state => state.memberToken }),
+    ...mapState('user', { memberId: state => state.memberId }),
+    ...mapState('exam', { doUrl: state => state.doUrl }),
+    ...mapState('exam', { reportTemplateId: state => state.reportTemplateId }),
+    ...mapState('user', { langType: state => state.langType })
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+  .demography {
+    width: 90%;
+    margin: 0 auto;
+    margin-top: 5%;
+  }
+
+  .align-center {
+    text-align: center
+  }
+</style>
diff --git a/src/views/error-page/401.vue b/src/views/error-page/401.vue
new file mode 100644
index 0000000..407858e
--- /dev/null
+++ b/src/views/error-page/401.vue
@@ -0,0 +1,99 @@
+<template>
+  <div class="errPage-container">
+    <el-button icon="arrow-left" class="pan-back-btn" @click="back">
+      杩斿洖
+    </el-button>
+    <el-row>
+      <el-col :span="12">
+        <h1 class="text-jumbo text-ginormous">
+          Oops!
+        </h1>
+        gif鏉ユ簮<a href="https://zh.airbnb.com/" target="_blank">airbnb</a> 椤甸潰
+        <h2>浣犳病鏈夋潈闄愬幓璇ラ〉闈�</h2>
+        <h6>濡傛湁涓嶆弧璇疯仈绯讳綘棰嗗</h6>
+        <ul class="list-unstyled">
+          <li>鎴栬�呬綘鍙互鍘�:</li>
+          <li class="link-type">
+            <router-link to="/dashboard">
+              鍥為椤�
+            </router-link>
+          </li>
+          <li class="link-type">
+            <a href="https://www.taobao.com/">闅忎究鐪嬬湅</a>
+          </li>
+          <li><a href="#" @click.prevent="dialogVisible=true">鐐规垜鐪嬪浘</a></li>
+        </ul>
+      </el-col>
+      <el-col :span="12">
+        <img :src="errGif" width="313" height="428" alt="Girl has dropped her ice cream.">
+      </el-col>
+    </el-row>
+    <el-dialog :visible.sync="dialogVisible" title="闅忎究鐪�">
+      <img :src="ewizardClap" class="pan-img">
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import errGif from '@/assets/401_images/401.gif'
+
+export default {
+  name: 'Page401',
+  data () {
+    return {
+      errGif: errGif + '?' + +new Date(),
+      ewizardClap: 'https://wpimg.wallstcn.com/007ef517-bafd-4066-aae4-6883632d9646',
+      dialogVisible: false
+    }
+  },
+  methods: {
+    back () {
+      if (this.$route.query.noGoBack) {
+        this.$router.push({ path: '/dashboard' })
+      } else {
+        this.$router.go(-1)
+      }
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+  .errPage-container {
+    width: 800px;
+    max-width: 100%;
+    margin: 100px auto;
+    .pan-back-btn {
+      background: #008489;
+      color: #fff;
+      border: none!important;
+    }
+    .pan-gif {
+      margin: 0 auto;
+      display: block;
+    }
+    .pan-img {
+      display: block;
+      margin: 0 auto;
+      width: 100%;
+    }
+    .text-jumbo {
+      font-size: 60px;
+      font-weight: 700;
+      color: #484848;
+    }
+    .list-unstyled {
+      font-size: 14px;
+      li {
+        padding-bottom: 5px;
+      }
+      a {
+        color: #008489;
+        text-decoration: none;
+        &:hover {
+          text-decoration: underline;
+        }
+      }
+    }
+  }
+</style>
diff --git a/src/views/error-page/404.vue b/src/views/error-page/404.vue
new file mode 100644
index 0000000..2a435f0
--- /dev/null
+++ b/src/views/error-page/404.vue
@@ -0,0 +1,225 @@
+<template>
+  <div class="wscn-http404-container">
+    <div class="wscn-http404">
+      <div class="pic-404">
+        <img class="pic-404__parent" src="@/assets/404_images/404.png" alt="404">
+        <img class="pic-404__child left" src="@/assets/404_images/404_cloud.png" alt="404">
+        <img class="pic-404__child mid" src="@/assets/404_images/404_cloud.png" alt="404">
+        <img class="pic-404__child right" src="@/assets/404_images/404_cloud.png" alt="404">
+      </div>
+      <div class="bullshit">
+        <div class="bullshit__oops">OOPS!</div>
+        <div class="bullshit__headline">{{ message }}</div>
+        <div class="bullshit__info">璇锋鏌ヤ綘鐨勮闂湴鍧�鏄惁姝g‘, 鎴栫偣鍑讳笅闈㈡寜閽繑鍥炰富椤�.</div>
+        <a href="" class="bullshit__return-home">杩斿洖涓婚〉</a>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+
+export default {
+  name: 'Page404',
+  computed: {
+    message () {
+      return '椤甸潰鏈壘鍒�...'
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.wscn-http404-container{
+  transform: translate(-50%,-50%);
+  position: absolute;
+  top: 40%;
+  left: 50%;
+}
+.wscn-http404 {
+  position: relative;
+  width: 1200px;
+  padding: 0 50px;
+  overflow: hidden;
+  .pic-404 {
+    position: relative;
+    float: left;
+    width: 600px;
+    overflow: hidden;
+    &__parent {
+      width: 100%;
+    }
+    &__child {
+      position: absolute;
+      &.left {
+        width: 80px;
+        top: 17px;
+        left: 220px;
+        opacity: 0;
+        animation-name: cloudLeft;
+        animation-duration: 2s;
+        animation-timing-function: linear;
+        animation-fill-mode: forwards;
+        animation-delay: 1s;
+      }
+      &.mid {
+        width: 46px;
+        top: 10px;
+        left: 420px;
+        opacity: 0;
+        animation-name: cloudMid;
+        animation-duration: 2s;
+        animation-timing-function: linear;
+        animation-fill-mode: forwards;
+        animation-delay: 1.2s;
+      }
+      &.right {
+        width: 62px;
+        top: 100px;
+        left: 500px;
+        opacity: 0;
+        animation-name: cloudRight;
+        animation-duration: 2s;
+        animation-timing-function: linear;
+        animation-fill-mode: forwards;
+        animation-delay: 1s;
+      }
+      @keyframes cloudLeft {
+        0% {
+          top: 17px;
+          left: 220px;
+          opacity: 0;
+        }
+        20% {
+          top: 33px;
+          left: 188px;
+          opacity: 1;
+        }
+        80% {
+          top: 81px;
+          left: 92px;
+          opacity: 1;
+        }
+        100% {
+          top: 97px;
+          left: 60px;
+          opacity: 0;
+        }
+      }
+      @keyframes cloudMid {
+        0% {
+          top: 10px;
+          left: 420px;
+          opacity: 0;
+        }
+        20% {
+          top: 40px;
+          left: 360px;
+          opacity: 1;
+        }
+        70% {
+          top: 130px;
+          left: 180px;
+          opacity: 1;
+        }
+        100% {
+          top: 160px;
+          left: 120px;
+          opacity: 0;
+        }
+      }
+      @keyframes cloudRight {
+        0% {
+          top: 100px;
+          left: 500px;
+          opacity: 0;
+        }
+        20% {
+          top: 120px;
+          left: 460px;
+          opacity: 1;
+        }
+        80% {
+          top: 180px;
+          left: 340px;
+          opacity: 1;
+        }
+        100% {
+          top: 200px;
+          left: 300px;
+          opacity: 0;
+        }
+      }
+    }
+  }
+  .bullshit {
+    position: relative;
+    float: left;
+    width: 300px;
+    padding: 30px 0;
+    overflow: hidden;
+    &__oops {
+      font-size: 32px;
+      font-weight: bold;
+      line-height: 40px;
+      color: #1482f0;
+      opacity: 0;
+      margin-bottom: 20px;
+      animation-name: slideUp;
+      animation-duration: 0.5s;
+      animation-fill-mode: forwards;
+    }
+    &__headline {
+      font-size: 20px;
+      line-height: 24px;
+      color: #222;
+      font-weight: bold;
+      opacity: 0;
+      margin-bottom: 10px;
+      animation-name: slideUp;
+      animation-duration: 0.5s;
+      animation-delay: 0.1s;
+      animation-fill-mode: forwards;
+    }
+    &__info {
+      font-size: 13px;
+      line-height: 21px;
+      color: grey;
+      opacity: 0;
+      margin-bottom: 30px;
+      animation-name: slideUp;
+      animation-duration: 0.5s;
+      animation-delay: 0.2s;
+      animation-fill-mode: forwards;
+    }
+    &__return-home {
+      display: block;
+      float: left;
+      width: 110px;
+      height: 36px;
+      background: #1482f0;
+      border-radius: 100px;
+      text-align: center;
+      color: #ffffff;
+      opacity: 0;
+      font-size: 14px;
+      line-height: 36px;
+      cursor: pointer;
+      animation-name: slideUp;
+      animation-duration: 0.5s;
+      animation-delay: 0.3s;
+      animation-fill-mode: forwards;
+    }
+    @keyframes slideUp {
+      0% {
+        transform: translateY(60px);
+        opacity: 0;
+      }
+      100% {
+        transform: translateY(0);
+        opacity: 1;
+      }
+    }
+  }
+}
+</style>
diff --git a/src/views/exam/components/QuestionEdit.vue b/src/views/exam/components/QuestionEdit.vue
new file mode 100644
index 0000000..3d557a0
--- /dev/null
+++ b/src/views/exam/components/QuestionEdit.vue
@@ -0,0 +1,121 @@
+<template>
+  <div style="line-height:1.3">
+    <div v-if="qType==1" v-loading="qLoading">
+      <div class="q-title" v-html="qLabel+'&nbsp;&nbsp;'+question.title" style="font-size: 23px"/>
+      <div class="q-content">
+        <el-radio-group v-model="answer.content" @change="answer.completed = true">
+          <el-radio  v-for="item in question.items"  :key="item.prefix"  :label="item.prefix" @change="jumpNext" :disabled="answer.readOnly" style="display:block;">
+            <span class="question-prefix" style="font-size: 18px">{{abcValue[item.prefix]}}.</span>
+            <span v-html="item.content" class="q-item-span-content" style="font-size: 18px"></span>
+          </el-radio>
+        </el-radio-group>
+      </div>
+    </div>
+    <div v-else-if="qType==2" v-loading="qLoading">
+      <div class="q-title" v-html="question.title"/>
+      <div class="q-content">
+        <el-checkbox-group v-model="answer.contentArray" @change="answer.completed = true" >
+          <el-checkbox v-for="item in question.items" :label="item.prefix" :key="item.prefix" @change="jumpNext"  >
+            <span class="question-prefix">{{item.prefix}}.</span>
+            <span v-html="item.content" class="q-item-span-content"></span>
+          </el-checkbox>
+        </el-checkbox-group>
+      </div>
+    </div>
+    <div v-else-if="qType==3" v-loading="qLoading">
+      <div class="q-title" v-html="question.title" style="display: inline;margin-right: 10px"/>
+      <span style="padding-right: 10px;">(</span>
+      <el-radio-group v-model="answer.content" @change="answer.completed = true" >
+        <el-radio  v-for="item in question.items"  :key="item.prefix"  :label="item.prefix" @change="jumpNext" >
+          <span v-html="item.content" class="q-item-span-content"></span>
+        </el-radio>
+      </el-radio-group>
+      <span style="padding-left: 10px;">)</span>
+    </div>
+    <div v-else-if="qType==4" v-loading="qLoading">
+      <div class="q-title" v-html="question.title"/>
+      <div>
+        <el-form-item :label="item.prefix" :key="item.prefix"  v-for="item in question.items"  label-width="50px" style="margin-top: 10px;margin-bottom: 10px;">
+          <el-input v-model="answer.contentArray[item.prefix-1]"  @change="answer.completed = true" />
+        </el-form-item>
+      </div>
+    </div>
+    <div v-else-if="qType==5" v-loading="qLoading">
+      <div class="q-title" v-html="question.title"/>
+      <div>
+        <el-input v-model="answer.content" type="textarea" rows="5"  @change="answer.completed = true"/>
+      </div>
+    </div>
+    <div v-else>
+    </div>
+  </div>
+
+</template>
+
+<script>
+export default {
+  name: 'QuestionShow',
+  data () {
+    return {
+      abcValue: { '1': 'A', '2': 'B', '3': 'C', '4': 'D', '5': 'E', '6': 'F' }
+    }
+  },
+  props: {
+    question: {
+      type: Object,
+      default: function () {
+        return {}
+      }
+    },
+    answer: {
+      type: Object,
+      default: function () {
+        return { id: null, content: '', contentArray: [] }
+      }
+    },
+    qLoading: {
+      type: Boolean,
+      default: false
+    },
+    qType: {
+      type: Number,
+      default: 0
+    },
+    qLabel: {
+      type: String,
+      default: ''
+    }
+  },
+  methods: {
+    jumpNext () {
+      let _this = this
+      this.answer.readOnly = true
+      if (this.answer.content === null || this.answer.content.trim() === '') {
+        return
+      }
+      setTimeout(function () {
+        _this.$emit('callNextSubject')
+      }, 500)
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+  span:hover {
+    font-weight: bold;
+  }
+
+  .q-content {
+  margin: 10px 10px 15px 25px;
+
+  p {
+    display: inline !important;
+  }
+
+  .el-checkbox__input {
+    line-height: 1.8;
+    vertical-align: top;
+  }
+}
+</style>
diff --git a/src/views/exam/components/QuestionIntelligenceEdit.vue b/src/views/exam/components/QuestionIntelligenceEdit.vue
new file mode 100644
index 0000000..bd1c8c7
--- /dev/null
+++ b/src/views/exam/components/QuestionIntelligenceEdit.vue
@@ -0,0 +1,121 @@
+<template>
+  <div style="line-height:1.8">
+    <div v-if="qType==1" v-loading="qLoading">
+      <div class="q-title" v-html="qLabel+'&nbsp;&nbsp;'+question.title" style="font-size: x-large"/>
+      <div class="q-content" :hidden="question.template==='intelligence_title'">
+        <el-radio-group v-model="answer.content" @change="answer.completed = true">
+          <el-radio class="intelligence-el_radio"  v-for="(item, index) in question.items"  :key="item.prefix"  :label="item.prefix" @change="jumpNext" :disabled="answer.readOnly" :style="{display:displayVal}">
+            <span class="question-prefix" style="font-size: 18px">{{abcValue[index+1]}}.</span>
+            <span v-html="item.content" class="q-item-span-content" style="font-size: 18px"></span>
+            <br>
+          </el-radio>
+        </el-radio-group>
+      </div>
+    </div>
+    <div v-else-if="qType==2" v-loading="qLoading">
+      <div class="q-title" v-html="question.title"/>
+      <div class="q-content">
+        <el-checkbox-group v-model="answer.contentArray" @change="answer.completed = true" >
+          <el-checkbox v-for="item in question.items" :label="item.prefix" :key="item.prefix" @change="jumpNext"  >
+            <span class="question-prefix">{{item.prefix}}.</span>
+            <span v-html="item.content" class="q-item-span-content"></span>
+          </el-checkbox>
+        </el-checkbox-group>
+      </div>
+    </div>
+    <div v-else-if="qType==3" v-loading="qLoading">
+      <div class="q-title" v-html="question.title" style="display: inline;margin-right: 10px"/>
+      <span style="padding-right: 10px;">(</span>
+      <el-radio-group v-model="answer.content" @change="answer.completed = true" >
+        <el-radio  v-for="item in question.items"  :key="item.prefix"  :label="item.prefix" @change="jumpNext" >
+          <span v-html="item.content" class="q-item-span-content"></span>
+        </el-radio>
+      </el-radio-group>
+      <span style="padding-left: 10px;">)</span>
+    </div>
+    <div v-else-if="qType==4" v-loading="qLoading">
+      <div class="q-title" v-html="question.title"/>
+      <div>
+        <el-form-item :label="item.prefix" :key="item.prefix"  v-for="item in question.items"  label-width="50px" style="margin-top: 10px;margin-bottom: 10px;">
+          <el-input v-model="answer.contentArray[item.prefix-1]"  @change="answer.completed = true" />
+        </el-form-item>
+      </div>
+    </div>
+    <div v-else-if="qType==5" v-loading="qLoading">
+      <div class="q-title" v-html="question.title"/>
+      <div>
+        <el-input v-model="answer.content" type="textarea" rows="5"  @change="answer.completed = true"/>
+      </div>
+    </div>
+    <div v-else>
+    </div>
+  </div>
+
+</template>
+
+<script>
+export default {
+  name: 'QuestionIntelligenceShow',
+  data () {
+    return {
+      abcValue: { 1: 'A', 2: 'B', 3: 'C', 4: 'D', 5: 'E', 6: 'F' }
+      // abcValue: { '1': 'A', '2': 'B', '3': 'C', '4': 'D', '5': 'E', '6': 'F' }
+    }
+  },
+  props: {
+    question: {
+      type: Object,
+      default: function () {
+        return {}
+      }
+    },
+    answer: {
+      type: Object,
+      default: function () {
+        return { id: null, content: '', contentArray: [] }
+      }
+    },
+    qLoading: {
+      type: Boolean,
+      default: false
+    },
+    qType: {
+      type: Number,
+      default: 0
+    },
+    qLabel: {
+      type: String,
+      default: ''
+    },
+    order: {
+      type: Number,
+      default: 0
+    },
+    displayVal: {
+      type: String,
+      default: 'block'
+    }
+  },
+  methods: {
+    jumpNext () {
+      let _this = this
+      // this.answer.readOnly = true
+      // if (this.answer.content === null || this.answer.content.trim() === '') {
+      //   return
+      // }
+      setTimeout(function () {
+        _this.$emit('callNextSubject', [_this.order])
+      }, 500)
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+  span:hover {
+    font-weight: bold;
+  }
+  .intelligence-el_radio {
+    margin-right: 60px;
+  }
+</style>
diff --git a/src/views/exam/components/QuestionJobEdit.vue b/src/views/exam/components/QuestionJobEdit.vue
new file mode 100644
index 0000000..bc856bd
--- /dev/null
+++ b/src/views/exam/components/QuestionJobEdit.vue
@@ -0,0 +1,116 @@
+<template>
+  <div style="line-height:1.8">
+    <div v-if="qType==1" v-loading="qLoading">
+      <div class="q-title" v-html="qLabel+'&nbsp;&nbsp;'+question.title" style="font-size: large"/>
+      <div class="q-content">
+        <el-radio-group v-model="answer.content" @change="answer.completed = true">
+          <el-radio  v-for="item in question.items"  :key="item.prefix"  :label="item.prefix" @change="jumpNext" :disabled="answer.readOnly">
+            <span class="question-prefix" style="font-size: 18px">{{abcValue[item.prefix]}}.</span>
+            <span v-html="item.content" class="q-item-span-content" style="font-size: 15px"></span>
+          </el-radio>
+        </el-radio-group>
+      </div>
+    </div>
+    <div v-else-if="qType==2" v-loading="qLoading">
+      <div class="q-title" v-html="question.title"/>
+      <div class="q-content">
+        <el-checkbox-group v-model="answer.contentArray" @change="answer.completed = true" >
+          <el-checkbox v-for="item in question.items" :label="item.prefix" :key="item.prefix" @change="jumpNext"  >
+            <span class="question-prefix">{{item.prefix}}.</span>
+            <span v-html="item.content" class="q-item-span-content"></span>
+          </el-checkbox>
+        </el-checkbox-group>
+      </div>
+    </div>
+    <div v-else-if="qType==3" v-loading="qLoading">
+      <div class="q-title" v-html="question.title" style="display: inline;margin-right: 10px"/>
+      <span style="padding-right: 10px;">(</span>
+      <el-radio-group v-model="answer.content" @change="answer.completed = true" >
+        <el-radio  v-for="item in question.items"  :key="item.prefix"  :label="item.prefix" @change="jumpNext" >
+          <span v-html="item.content" class="q-item-span-content"></span>
+        </el-radio>
+      </el-radio-group>
+      <span style="padding-left: 10px;">)</span>
+    </div>
+    <div v-else-if="qType==4" v-loading="qLoading">
+      <div class="q-title" v-html="question.title"/>
+      <div>
+        <el-form-item :label="item.prefix" :key="item.prefix"  v-for="item in question.items"  label-width="50px" style="margin-top: 10px;margin-bottom: 10px;">
+          <el-input v-model="answer.contentArray[item.prefix-1]"  @change="answer.completed = true" />
+        </el-form-item>
+      </div>
+    </div>
+    <div v-else-if="qType==5" v-loading="qLoading">
+      <div class="q-title" v-html="question.title"/>
+      <div>
+        <el-input v-model="answer.content" type="textarea" rows="5"  @change="answer.completed = true"/>
+      </div>
+    </div>
+    <div v-else>
+    </div>
+  </div>
+
+</template>
+
+<script>
+export default {
+  name: 'QuestionJobEdit',
+  data () {
+    return {
+      abcValue: { '1': 'A', '2': 'B', '3': 'C', '4': 'D', '5': 'E', '6': 'F' }
+    }
+  },
+  props: {
+    question: {
+      type: Object,
+      default: function () {
+        return {}
+      }
+    },
+    answer: {
+      type: Object,
+      default: function () {
+        return { id: null, content: '', contentArray: [] }
+      }
+    },
+    qLoading: {
+      type: Boolean,
+      default: false
+    },
+    isReadOnly: {
+      type: Boolean,
+      default: true
+    },
+    qType: {
+      type: Number,
+      default: 0
+    },
+    qLabel: {
+      type: String,
+      default: ''
+    }
+  },
+  methods: {
+    jumpNext () {
+      let _this = this
+      if (this.isReadOnly) {
+        this.answer.readOnly = true
+      } else {
+        this.answer.readOnly = false
+      }
+      if (this.answer.content === null || this.answer.content.trim() === '') {
+        return
+      }
+      setTimeout(function () {
+        _this.$emit('callNextSubject')
+      }, 500)
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+  span:hover {
+    font-weight: bold;
+  }
+</style>
diff --git a/src/views/exam/paper/do.vue b/src/views/exam/paper/do.vue
new file mode 100644
index 0000000..badd7eb
--- /dev/null
+++ b/src/views/exam/paper/do.vue
@@ -0,0 +1,295 @@
+<template>
+  <div>
+    <el-container  class="app-item-contain">
+      <el-header class="align-center" v-if="guide">
+        <h1 v-html="titleItems[0].name+ ' 鎸囧璇�' "></h1>
+      </el-header>
+      <el-header class="align-center" style="height: 80px; padding: 2%" v-else>
+        <h1>{{form.name}}</h1>
+        <div>
+          <!--<span class="question-title-padding">绛斿嵎鎬诲垎锛歿{form.score}}</span>-->
+          <span class="question-title-padding">{{$t('recommendedTime')}}锛歿{form.suggestTime}}{{$t('minute')}}</span>
+        </div>
+      </el-header>
+      <el-main>
+        <div v-html="titleItems[0].guide" v-if="guide"></div>
+        <el-row class="do-align-center" v-if="guide">
+          <el-button @click="startDo" type="primary">{{$t('start')}}</el-button>
+        </el-row>
+        <el-form :model="form" ref="form" v-loading="formLoading" label-width="100%" v-else>
+          <el-row :key="index"  v-for="(titleItem,index) in titleItems">
+            <h3>{{$t('theFirst')}}{{order+1}}{{$t('section')}}:{{titleItem.name}}</h3>
+            <div class="q-content" v-html="titleItem.description"></div>
+            <el-card class="exampaper-item-box" v-if="titleItem.questionItems.length!==0">
+              <el-form-item :key="questionItem.itemOrder" class="exam-question-item" label-width="50px"
+                            v-for="questionItem in titleItem.questionItems" :id="'question-'+ questionItem.itemOrder">
+                <QuestionEdit :qType="questionItem.questionType" :question="questionItem"
+                              :answer="answer.answerItems[questionItem.itemOrder-1]"/>
+              </el-form-item>
+            </el-card>
+          </el-row>
+          <el-row class="do-align-center" v-if="order < form.titleItems.length - 1">
+            <el-button @click="preSubject" type="warning" round>{{$t('lastQuestion')}}</el-button>
+            <el-button @click="nextSubject" type="primary" round>{{$t('nextQuestion')}}</el-button>
+          </el-row>
+          <el-row class="do-align-center" v-else>
+            <el-button @click="preSubject" type="warning" round>{{$t('lastQuestion')}}</el-button>
+            <el-button @click="submitForm" type="primary" :disabled="submitDisable" round>{{$t('submission')}}</el-button>
+          </el-row>
+        </el-form>
+      </el-main>
+    </el-container>
+    <el-row class="do-exam-title footer">
+      <el-col :span="24">
+        <el-popover placement="top" title="棰樼洰鍒楄〃" width="200" trigger="click" ref="popovertag">
+          <el-tag type="success" slot="reference">棰樼洰</el-tag>
+          <span :key="item.itemOrder" v-for="(item) in answer.answerItems">
+             <el-tag :type="questionCompleted(item.completed)" class="do-exam-title-tag"
+                     @click="goAnchor('#question-'+item.itemOrder)">{{item.itemOrder}}</el-tag>
+        </span>
+        </el-popover>
+        <span class="do-exam-time">
+          <label>鍓╀綑鏃堕棿锛�</label>
+          <label>{{formatSeconds(remainTime)}}</label>
+        </span>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, mapGetters } from 'vuex'
+import { formatSeconds } from '@/utils'
+import QuestionEdit from '../components/QuestionEdit'
+import examPaperApi from '@/api/examPaper'
+import examPaperAnswerApi from '@/api/examPaperAnswer'
+
+export default {
+  components: { QuestionEdit },
+  data () {
+    return {
+      form: {},
+      formLoading: false,
+      answer: {
+        questionId: null,
+        doTime: 0,
+        answerItems: [],
+        verifyStatus: 2,
+        finish: 0
+      },
+      timer: null,
+      problemLength: 0,
+      remainTime: 0,
+      titleItemName: '', // 鑰冭瘯绗簩鏍囬
+      itemOrder: '', // 棰樼洰鐨勫簭鍙�
+      questionItem: {}, // 棰樼洰
+      titleItems: [],
+      order: 0,
+      guide: false,
+      answered: [],
+      submitDisable: false,
+      doTime: 0
+    }
+  },
+  created () {
+    let _this = this
+    _this.form = this.$route.query.formDo
+    if (_this.form !== {} && _this.form !== undefined) {
+      _this.formLoading = true
+      _this.remainTime = _this.form.suggestTime * 60
+      _this.problemLength = _this.form.titleItems[0].questionItems.length - 1
+      _this.titleItems.push(_this.form.titleItems[0])
+      _this.timeReduce()
+      _this.initAnswer()
+      _this.formLoading = false
+    } else {
+      _this.formLoading = true
+      examPaperApi.select(_this.memberToken).then(re => {
+        _this.form = re.response
+        _this.remainTime = re.response.suggestTime * 60
+        _this.problemLength = _this.form.titleItems[0].questionItems.length - 1
+        _this.titleItems.push(_this.form.titleItems[0])
+        _this.initAnswer()
+        _this.formLoading = false
+        examPaperApi.selectTokenId(_this.memberToken).then(re => {
+          _this.answered = re.response.examItemOrderAndContentList
+          _this.doTime = re.response.doTime
+          _this.timeReduce()
+          _this.answered.forEach(it => {
+            _this.answer.answerItems[parseInt(it.itemOrder) - 1].content = it.content
+            _this.answer.answerItems[parseInt(it.itemOrder) - 1].completed = true
+          })
+        }).catch(e => {
+        })
+      }).catch(e => {
+        _this.$message.info('鏃犳祴璇曢鐩�')
+      })
+    }
+  },
+  mounted () {
+  },
+  beforeDestroy () {
+    window.clearInterval(this.timer)
+  },
+  methods: {
+    formatSeconds (theTime) {
+      return formatSeconds(theTime)
+    },
+    timeReduce () {
+      let _this = this
+      _this.answer.doTime += _this.doTime
+      _this.remainTime -= _this.doTime
+      this.timer = setInterval(function () {
+        if (_this.remainTime <= 0) {
+          _this.remainTime = 0
+          ++_this.answer.doTime
+        } else {
+          ++_this.answer.doTime
+          --_this.remainTime
+        }
+      }, 1000)
+    },
+    questionCompleted (completed) {
+      return this.enumFormat(this.doCompletedTag, completed)
+    },
+    goAnchor (selector) {
+      let _this = this
+      let num = parseInt(selector.substr(10))
+      for (let i = 0; i < _this.form.titleItems.length; i++) {
+        _this.form.titleItems[i].questionItems.forEach(it => {
+          if (it.itemOrder === num) {
+            _this.titleItems = []
+            _this.titleItems.push(_this.form.titleItems[i])
+            _this.order = i
+          }
+        })
+      }
+      setTimeout(function () {
+        _this.$el.querySelector(selector).scrollIntoView({ behavior: 'instant', block: 'center', inline: 'nearest' })
+      }, 200)
+      _this.$refs['popovertag'].doClose()
+    },
+    initAnswer () {
+      this.answer.id = this.form.id
+      let titleItemArray = this.form.titleItems
+      for (let tIndex in titleItemArray) {
+        let questionArray = titleItemArray[tIndex].questionItems
+        for (let qIndex in questionArray) {
+          let question = questionArray[qIndex]
+          this.answer.answerItems.push({ questionId: question.id, content: null, contentArray: [], completed: false, itemOrder: question.itemOrder, lastContent: null })
+        }
+      }
+    },
+    nextSubject: function () {
+      let _this = this
+      _this.guide = false
+      if (_this.order < _this.form.titleItems.length - 1) {
+        _this.titleItems = []
+        let num = ++_this.order
+        _this.titleItems.push(_this.form.titleItems[num])
+      }
+
+      examPaperAnswerApi.answerSubmit(this.answer, _this.memberToken).then(re => {
+        if (re.code === 1) {
+        } else {
+          _this.$message.error(re.message + 'answerSubmit')
+        }
+      }).catch(e => {
+        _this.$message.error('鎻愪氦闂嵎鍚庡彴閿欒')
+      })
+    },
+    preSubject () {
+      let _this = this
+      _this.guide = false
+      if (_this.order > 0) {
+        _this.titleItems = []
+        let num = --_this.order
+        _this.titleItems.push(_this.form.titleItems[num])
+        _this.titleItems.forEach(it => {
+          it.questionItems.forEach(i => {
+            _this.answer.answerItems[parseInt(i.itemOrder) - 1].lastContent = _this.answer.answerItems[parseInt(i.itemOrder) - 1].content
+          })
+        })
+      }
+    },
+    submitForm () {
+      let _this = this
+      _this.submitDisable = true
+      window.clearInterval(_this.timer)
+      _this.formLoading = true
+      let unFinish = false
+      for (let i = 0; i < _this.answer.answerItems.length; i++) {
+        if (_this.answer.answerItems[i].content === null) {
+          unFinish = true
+          _this.answer.finish = 0
+        }
+      }
+      if (unFinish) {
+        _this.$confirm('浣犳湁鏈瓟瀹岀殑棰樼洰锛屾槸鍚︽彁浜や繚瀛�?', {
+          title: '鎻愮ず',
+          confirmButtonText: '纭畾',
+          cancelButtonText: '鍙栨秷',
+          showClose: false
+        }).then(async () => {
+          _this.answer.verifyStatus = 2
+          _this.submitAnswer('鏁版嵁宸茬粡鎴愬姛鐨勪笂浼犺嚦鏈嶅姟鍣紝骞跺凡缁忎繚瀛樺ソ銆傝阿璋€��')
+        }).catch(async () => {
+          _this.formLoading = false
+          _this.submitDisable = false
+        })
+      } else {
+        _this.answer.verifyStatus = 1
+        _this.answer.finish = 1
+        _this.submitAnswer('鎮ㄥ凡缁忓畬鎴愪簡宸ヤ綔琛屼负闂嵎锛屾暟鎹凡缁忔垚鍔熺殑涓婁紶鑷虫湇鍔″櫒锛屽苟宸茬粡淇濆瓨濂姐�傝阿璋€��')
+      }
+    },
+    startDo: function () {
+      let _this = this
+      _this.guide = false
+    },
+    submitAnswer: function (mess) {
+      let _this = this
+      examPaperAnswerApi.answerSubmit(this.answer, _this.memberToken).then(re => {
+        if (re.code === 1) {
+          _this.$router.push({ path: '/exam/finish', query: { name: _this.form.name, content: mess } })
+        } else {
+          _this.$message.error(re.message + '/exam/finish')
+        }
+        _this.formLoading = false
+      }).catch(e => {
+        _this.formLoading = false
+      })
+    }
+  },
+  computed: {
+    ...mapGetters('enumItem', ['enumFormat']),
+    ...mapState('enumItem', { doCompletedTag: state => state.exam.question.answer.doCompletedTag }),
+    ...mapState('user', { memberToken: state => state.memberToken })
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+  .align-center {
+    text-align: center;
+  }
+
+  .exam-question-item {
+    padding: 10px;
+
+    .el-form-item__label {
+      font-size: 15px !important;
+    }
+  }
+
+  .question-title-padding {
+    padding-left: 25px;
+    padding-right: 25px;
+  }
+  .footer {
+    position: absolute;
+    position: fixed;
+    z-index: 1000;
+    bottom: 0px;
+  }
+</style>
diff --git a/src/views/exam/paper/doPuzzle.vue b/src/views/exam/paper/doPuzzle.vue
new file mode 100644
index 0000000..bb835a7
--- /dev/null
+++ b/src/views/exam/paper/doPuzzle.vue
@@ -0,0 +1,285 @@
+<template>
+  <div>
+    <el-container  class="app-item-contain">
+      <el-header class="align-center" v-if="guide">
+        <h1 v-html="titleItems[0].name+ ' 鎸囧璇�' "></h1>
+      </el-header>
+      <el-header class="align-center" style="height: 80px; padding: 2%" v-else>
+        <h1>{{form.name}}</h1>
+        <div>
+          <span class="question-title-padding">璇曞嵎鎬诲垎锛歿{form.score}}</span>
+          <span class="question-title-padding">鑰冭瘯鏃堕棿锛歿{form.suggestTime}}鍒嗛挓</span>
+        </div>
+      </el-header>
+      <el-main>
+        <div v-html="titleItems[0].guide" v-if="guide"></div>
+        <el-row class="do-align-center" v-if="guide">
+          <el-button @click="startDo" type="primary">寮�濮�</el-button>
+        </el-row >
+        <el-form :model="form" ref="form" v-loading="formLoading" label-width="100%" v-else>
+          <el-row :key="index"  v-for="(titleItem,index) in titleItems">
+            <h3>绗�1娈�:{{titleItem.name}}</h3>
+            <div class="q-content">{{titleItem.description}}</div>
+            <el-card class="exampaper-item-box" v-if="titleItem.questionItems.length!==0">
+              <el-form-item :key="itemOrder" :label="itemOrder+'.'" class="exam-question-item" label-width="50px">
+                <QuestionEdit :qType="questionItem.questionType" :question="questionItem"
+                              :answer="answer.answerItems[questionItem.itemOrder-1]"/>
+              </el-form-item>
+            </el-card>
+          </el-row>
+          <el-row class="do-align-center" v-if="order < problemLength">
+            <el-button @click="preSubject" type="warning" round>涓婁竴棰�</el-button>
+            <el-button @click="nextSubject" type="primary" round>涓嬩竴棰�</el-button>
+          </el-row>
+          <el-row class="do-align-center" v-else>
+            <el-button @click="preSubject" type="warning" round>涓婁竴棰�</el-button>
+            <el-button @click="submitForm" type="primary" :disabled="submitDisable" round>鎻愪氦</el-button>
+          </el-row>
+        </el-form>
+
+      </el-main>
+    </el-container>
+    <el-row class="do-exam-title footer">
+      <el-col :span="24">
+        <el-popover placement="top" title="棰樼洰鍒楄〃" width="200" trigger="click" ref="popovertag">
+          <el-tag type="success" slot="reference">棰樼洰</el-tag>
+          <span :key="item.itemOrder" v-for="(item) in answer.answerItems">
+             <el-tag :type="questionCompleted(item.completed)" class="do-exam-title-tag"
+                     @click="goAnchor('#question-'+item.itemOrder)">{{item.itemOrder}}</el-tag>
+        </span>
+        </el-popover>
+        <span class="do-exam-time">
+          <label>鍓╀綑鏃堕棿锛�</label>
+          <label>{{formatSeconds(remainTime)}}</label>
+        </span>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, mapGetters } from 'vuex'
+import { formatSeconds } from '@/utils'
+import QuestionEdit from '../components/QuestionEdit'
+import examPaperApi from '@/api/examPaper'
+import examPaperAnswerApi from '@/api/examPaperAnswer'
+
+export default {
+  components: { QuestionEdit },
+  data () {
+    return {
+      form: {},
+      formLoading: false,
+      answer: {
+        questionId: null,
+        doTime: 0,
+        answerItems: [],
+        verifyStatus: 2
+      },
+      timer: null,
+      problemLength: 0,
+      titleItemsLength: 0,
+      remainTime: 0,
+      titleItemName: '', // 鑰冭瘯绗簩鏍囬
+      itemOrder: '', // 棰樼洰鐨勫簭鍙�
+      questionItem: {}, // 棰樼洰
+      titleItems: [],
+      order: 0,
+      guide: false,
+      answered: [],
+      submitDisable: false,
+      doTime: 0
+    }
+  },
+  created () {
+    let _this = this
+    _this.form = this.$route.query.formDo
+    if (_this.form !== {} && _this.form !== undefined) {
+      _this.formLoading = true
+      _this.remainTime = _this.form.suggestTime * 60
+      _this.problemLength = _this.form.titleItems[0].questionItems.length - 1
+      _this.titleItemsLength = _this.form.titleItems.length
+      _this.titleItems.push(_this.form.titleItems[0])
+      _this.timeReduce()
+      _this.initAnswer()
+      _this.formLoading = false
+    } else {
+      _this.formLoading = true
+      examPaperApi.select(_this.memberToken).then(re => {
+        _this.form = re.response
+        _this.remainTime = re.response.suggestTime * 60
+        _this.problemLength = _this.form.titleItems[0].questionItems.length - 1
+         _this.titleItemsLength = _this.form.titleItems.length
+        _this.titleItems.push(_this.form.titleItems[0])
+      _this.itemOrder = _this.form.titleItems[0].questionItems[_this.order].itemOrder
+        _this.questionItem = _this.form.titleItems[0].questionItems[_this.order]
+        _this.initAnswer()
+        _this.formLoading = false
+        examPaperApi.selectTokenId(_this.memberToken).then(re => {
+          _this.answered = re.response.examItemOrderAndContentList
+          _this.doTime = re.response.doTime
+          _this.timeReduce()
+          _this.answered.forEach(it => {
+            _this.answer.answerItems[parseInt(it.itemOrder) - 1].content = it.content
+            _this.answer.answerItems[parseInt(it.itemOrder) - 1].completed = true
+          })
+        }).catch(e => {
+          // _this.$message.error('棰樼洰鏌ヨ寮傚父')
+        })
+      }).catch(e => {
+        _this.$message.info('鏃犳祴璇曢鐩�')
+      })
+    }
+  },
+  mounted () {
+  },
+  beforeDestroy () {
+    window.clearInterval(this.timer)
+  },
+  methods: {
+    formatSeconds (theTime) {
+      return formatSeconds(theTime)
+    },
+    timeReduce () {
+      let _this = this
+      _this.answer.doTime += _this.doTime
+      _this.remainTime -= _this.doTime
+      this.timer = setInterval(function () {
+        if (_this.remainTime <= 0) {
+          _this.remainTime = 0
+          ++_this.answer.doTime
+        } else {
+          ++_this.answer.doTime
+          --_this.remainTime
+        }
+      }, 1000)
+    },
+    questionCompleted (completed) {
+      return this.enumFormat(this.doCompletedTag, completed)
+    },
+    goAnchor (selector) {
+      let _this = this
+      let num = parseInt(selector.substr(10)) -1
+      this.itemOrder = _this.form.titleItems[0].questionItems[num].itemOrder
+      this.questionItem = _this.form.titleItems[0].questionItems[num]
+      setTimeout(function () {
+        _this.$el.querySelector(selector).scrollIntoView({ behavior: 'instant', block: 'center', inline: 'nearest' })
+      }, 200)
+      _this.$refs['popovertag'].doClose()
+    },
+    initAnswer () {
+      this.answer.id = this.form.id
+      let titleItemArray = this.form.titleItems
+      for (let tIndex in titleItemArray) {
+        let questionArray = titleItemArray[tIndex].questionItems
+        for (let qIndex in questionArray) {
+          let question = questionArray[qIndex]
+          this.answer.answerItems.push({ questionId: question.id, content: null, contentArray: [], completed: false, itemOrder: question.itemOrder, lastContent: null })
+        }
+      }
+    },
+    nextSubject: function () {
+      let _this = this
+      _this.guide = false
+      if (_this.order < _this.problemLength) {
+        let num = ++_this.order
+        this.itemOrder = _this.form.titleItems[0].questionItems[num].itemOrder
+        this.questionItem = _this.form.titleItems[0].questionItems[num]
+      }
+      examPaperAnswerApi.answerSubmit(this.answer, _this.memberToken).then(re => {
+        if (re.code === 1) {
+        } else {
+          _this.$message.error(re.message)
+        }
+      }).catch(e => {
+        _this.$message.error('鎻愪氦闂嵎鍚庡彴閿欒')
+      })
+    },
+    preSubject () {
+      let _this = this
+      _this.guide = false
+      if (_this.order > 0) {
+        let num = --_this.order
+        this.itemOrder = _this.form.titleItems[0].questionItems[num].itemOrder
+        this.questionItem = _this.form.titleItems[0].questionItems[num]
+      }
+    },
+    submitForm () {
+      let _this = this
+      _this.submitDisable = true
+      window.clearInterval(_this.timer)
+      _this.formLoading = true
+      let unFinish = false
+      for (let i = 0; i < _this.answer.answerItems.length; i++) {
+        if (_this.answer.answerItems[i].content === null) {
+          unFinish = true
+        }
+      }
+      if (unFinish) {
+        _this.$confirm('浣犳湁鏈瓟瀹岀殑棰樼洰锛屾槸鍚︽彁浜や繚瀛�?', {
+          title: '鎻愮ず',
+          confirmButtonText: '纭畾',
+          cancelButtonText: '鍙栨秷',
+          showClose: false
+        }).then(async () => {
+          _this.answer.verifyStatus = 2
+          _this.submitAnswer('鏁版嵁宸茬粡鎴愬姛鐨勪笂浼犺嚦鏈嶅姟鍣紝骞跺凡缁忎繚瀛樺ソ銆傝阿璋€��')
+        }).catch(async () => {
+          _this.formLoading = false
+          _this.submitDisable = false
+        })
+      } else {
+        _this.answer.verifyStatus = 1
+        _this.submitAnswer('鎮ㄥ凡缁忓畬鎴愪簡宸ヤ綔琛屼负闂嵎锛屾暟鎹凡缁忔垚鍔熺殑涓婁紶鑷虫湇鍔″櫒锛屽苟宸茬粡淇濆瓨濂姐�傝阿璋€��')
+      }
+    },
+    startDo: function () {
+      let _this = this
+      _this.guide = false
+    },
+    submitAnswer: function (mess) {
+      let _this = this
+      examPaperAnswerApi.answerSubmit(this.answer, _this.memberToken).then(re => {
+        if (re.code === 1) {
+          _this.$router.push({ path: '/exam/finish', query: { name: _this.form.name, content: mess } })
+        } else {
+          _this.$message.error(re.message)
+        }
+        _this.formLoading = false
+      }).catch(e => {
+        _this.formLoading = false
+      })
+    }
+  },
+  computed: {
+    ...mapGetters('enumItem', ['enumFormat']),
+    ...mapState('enumItem', { doCompletedTag: state => state.exam.question.answer.doCompletedTag }),
+    ...mapState('user', { memberToken: state => state.memberToken })
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+  .align-center {
+    text-align: center;
+  }
+
+  .exam-question-item {
+    padding: 10px;
+
+    .el-form-item__label {
+      font-size: 15px !important;
+    }
+  }
+
+  .question-title-padding {
+    padding-left: 25px;
+    padding-right: 25px;
+  }
+  .footer {
+    position: absolute;
+    position: fixed;
+    z-index: 1000;
+    bottom: 0px;
+  }
+</style>
diff --git a/src/views/exam/paper/exception.vue b/src/views/exam/paper/exception.vue
new file mode 100644
index 0000000..41aaaf0
--- /dev/null
+++ b/src/views/exam/paper/exception.vue
@@ -0,0 +1,55 @@
+<template>
+  <div>
+    <el-container class="app-item-contain">
+      <el-header class="align-center" style="height: 0px; margin: 8%;">
+      </el-header>
+      <el-main class="align-center">
+        <H1 v-html="'id:'+memberId" v-if="memberId!==null"></H1>
+        <H1 v-html="content"></H1>
+      </el-main>
+    </el-container>
+  </div>
+</template>
+
+<script>
+import { mapState } from 'vuex'
+export default {
+  data () {
+    return {
+      name: this.$route.query.name,
+      content: this.$route.query.content
+    }
+  },
+  created () {
+  },
+  mounted () {
+
+  },
+  beforeDestroy () {
+  },
+  methods: {
+  },
+  computed: {
+    ...mapState('user', { memberId: state => state.memberId })
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+  .align-center {
+    text-align: center
+  }
+
+  .exam-question-item {
+    padding: 10px;
+
+    .el-form-item__label {
+      font-size: 15px !important;
+    }
+  }
+
+  .question-title-padding {
+    padding-left: 25px;
+    padding-right: 25px;
+  }
+</style>
diff --git a/src/views/exam/paper/finish.vue b/src/views/exam/paper/finish.vue
new file mode 100644
index 0000000..1a9360e
--- /dev/null
+++ b/src/views/exam/paper/finish.vue
@@ -0,0 +1,53 @@
+<template>
+  <div>
+    <el-container class="app-item-contain">
+      <el-header class="align-center" style="height: 0px; margin: 8%;">
+      </el-header>
+      <el-main class="align-center">
+        <H1 v-if="content!==null && content.trim()!==''">{{content}}</H1>
+        <H1 v-else>{{$t('finishMsg')}}</H1>
+      </el-main>
+    </el-container>
+  </div>
+</template>
+
+<script>
+export default {
+  data () {
+    return {
+      name: this.$route.query.name,
+      content: this.$route.query.content
+    }
+  },
+  created () {
+  },
+  mounted () {
+
+  },
+  beforeDestroy () {
+  },
+  methods: {
+  },
+  computed: {
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+  .align-center {
+    text-align: center
+  }
+
+  .exam-question-item {
+    padding: 10px;
+
+    .el-form-item__label {
+      font-size: 15px !important;
+    }
+  }
+
+  .question-title-padding {
+    padding-left: 25px;
+    padding-right: 25px;
+  }
+</style>
diff --git a/src/views/exam/paper/guide.vue b/src/views/exam/paper/guide.vue
new file mode 100644
index 0000000..b3d3d46
--- /dev/null
+++ b/src/views/exam/paper/guide.vue
@@ -0,0 +1,68 @@
+<template>
+  <div>
+    <el-container class="app-item-contain">
+      <el-header class="align-center" style="height: 50px;padding: 1%;">
+        <H2 v-html="$t('guide')" v-if="formDo.questionTemplateId !== 'job'"></H2>
+      </el-header>
+      <el-main style="padding-top:0%">
+        <div v-html="formDo.guide"></div>
+        <el-row class="do-align-center">
+          <el-button @click="doExam" type="primary" round>{{$t('startDo')}}</el-button>
+        </el-row>
+      </el-main>
+    </el-container>
+  </div>
+</template>
+
+<script>
+import { mapState } from 'vuex'
+import examPaperApi from '@/api/examPaper'
+export default {
+  data () {
+    return {
+      formDo: this.$route.query.formDo
+    }
+  },
+  created () {
+  },
+  mounted () {
+
+  },
+  beforeDestroy () {
+    window.clearInterval(this.timer)
+  },
+  methods: {
+    doExam: function () {
+      let _this = this
+      examPaperApi.updateTestMemberStatus(_this.memberToken).then(re => {
+        _this.$router.push({ path: '/exam/' + _this.doUrl, query: { formDo: _this.$route.query.formDo } })
+      }).catch(re => {
+        _this.$message.error(re.message + ' 鏇存柊鐘舵�佸け璐�')
+      })
+    }
+  },
+  computed: {
+    ...mapState('exam', { doUrl: state => state.doUrl }),
+    ...mapState('user', { memberToken: state => state.memberToken })
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+  .align-center {
+    text-align: center
+  }
+
+  .exam-question-item {
+    padding: 10px;
+
+    .el-form-item__label {
+      font-size: 15px !important;
+    }
+  }
+
+  .question-title-padding {
+    padding-left: 25px;
+    padding-right: 25px;
+  }
+</style>
diff --git a/src/views/exam/paper/intelligence.vue b/src/views/exam/paper/intelligence.vue
new file mode 100644
index 0000000..05f0bb3
--- /dev/null
+++ b/src/views/exam/paper/intelligence.vue
@@ -0,0 +1,814 @@
+<template>
+  <div>
+    <el-container  class="app-item-contain">
+      <el-header class="align-center" v-if="guide">
+        <h1></h1>
+      </el-header>
+      <el-main style="padding-top: 3%;">
+        <div v-html="guideDescirption" v-if="guide" :style="ismobile?'padding-top: 2%;':'padding-top: 2%;margin: 0 auto;width:66%'"></div>
+        <el-row class="do-align-center" v-if="guide">
+          <el-button @click="startDo" type="primary" :disable="startDoDisable">{{$t('start')}}</el-button>
+        </el-row >
+        <el-form :model="form" ref="form" v-loading="formLoading" label-width="100%" v-else>
+          <el-row :key="index"  v-for="(titleItem,index) in titleItems">
+            <div class="q-content">{{titleItem.description}}</div>
+            <el-card class="exampaper-item-box" style="border:2px solid #2b90ff;">
+              <div class="align-center"><span style="font-size: small; float: left">{{$t('examinee')}}{{memberName}}</span><span style="margin-top: 0px;padding-right: 11%">鈼弡{form.name}}鈼�</span><span style="font-size: small; float: right">{{$t('partRemailTime')}}{{formatSecondsG(remainTime,$t('hour'),$t('min'),$t('second'))}}</span></div>
+              <hr style="border : 1px dashed #b3d8ff;" />
+              <el-form-item :key="index" label-width="1px" v-for="(questionItem, index) in questionItems">
+                <QuestionIntelligenceEdit @callNextSubject="onChoice" :qType="questionItem.questionType" :question="questionItem"
+                              :answer="answer.answerItems[questionItem.itemOrder-1]" :qLabel="questionItem.questionNumber" :order = "questionItem.itemOrder-1" :displayVal="displayVal"/>
+              </el-form-item>
+              <hr style="border : 0.5px dashed #b3d8ff;" />
+              <div style="color: red;font-size: smaller">{{$t('pleaseAnswerCarefully')}}</div>
+              <el-row class="do-align-center" v-if="order < problemLength">
+            <el-button @click="preSubject" type="warning"  v-if ="preDisable" round>{{$t('lastQuestion')}}</el-button>
+            <el-button @click="nextOrder" type="primary" v-if ="nextDisable" round>{{$t('nextQuestion')}}</el-button>
+            <el-button @click="submitClick" type="success" v-if ="submitDisable"  round>{{$t('submission')}}</el-button>
+          </el-row>
+          <el-row class="do-align-center" v-else>
+            <el-button @click="preSubject" type="warning" v-if ="preDisable" round>{{$t('lastQuestion')}}</el-button>
+            <el-button @click="submitForm" type="success" v-if ="submitDisable"  round>{{$t('submission')}}</el-button>
+          </el-row>
+            </el-card>
+          </el-row>
+        </el-form>
+
+      </el-main>
+    </el-container>
+    <el-row class="do-exam-title footer">
+      <el-col :span="24">
+        <!--娴嬭瘯鐨勬椂鍊欐墦寮�-->
+        <!--<span class="do-exam-time">-->
+          <!--<label>{{$t('remainingTime')}}</label>-->
+          <!--<label>{{formatSecondsG(remainTime,$t('hour'),$t('min'),$t('second'))}}</label>-->
+        <!--</span>-->
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, mapGetters, mapMutations } from 'vuex'
+import { formatSeconds, formatSecondsG, formatDate } from '@/utils'
+import QuestionIntelligenceEdit from '../components/QuestionIntelligenceEdit'
+import examPaperApi from '@/api/examPaper'
+import examPaperAnswerApi from '@/api/examPaperAnswer'
+import demographyApi from '@/api/demography'
+
+export default {
+  name: 'intelligence',
+  components: { QuestionIntelligenceEdit },
+  data () {
+    return {
+      form: {},
+      formLoading: false,
+      answer: {
+        questionId: null,
+        doTime: 0,
+        answerItems: [],
+        verifyStatus: 2
+      },
+      timer: null,
+      problemLength: 0,
+      titleItemsLength: 0,
+      remainTime: 999999,
+      titleItemName: '', // 鑰冭瘯绗簩鏍囬
+      itemOrder: '', // 棰樼洰鐨勫簭鍙�
+      questionItem: {}, // 棰樼洰
+      titleItems: [],
+      order: 0,
+      guide: false,
+      answered: [],
+      submitDisable: false,
+      doTime: 0,
+      preDisable: false,
+      nextDisable: true,
+      partOrder: 1,
+      parts: [],
+      guideTitle: '',
+      guideDescirption: '',
+      isCallTain: '',
+      memberName: '',
+      startDoDisable: true,
+      ismobile: false,
+      questionItems: [],
+      isNotToTime: false,
+      originalTime: 0,
+      isSubmiting: false,
+      displayVal: 'block',
+      isSubmitClick: false,
+      timeoutValue: 6
+    }
+  },
+  created: function () {
+    let _this = this
+    window.addEventListener('beforeunload', e => this.beforeunloadFn(e))
+    _this.ismobile = /ipad|iphone|midp|rv:1.2.3.4|ucweb|android|windows ce|windows mobile/.test(navigator.userAgent.toLowerCase())
+    // 澶氳瑷�
+    _this.setLangFlag(false)
+    _this.form = this.$route.query.formDo
+    if (_this.form !== {} && _this.form !== undefined) {
+      _this.timeReduce()
+      _this.initAnswer()
+      this.initCreate()
+      _this.showNextGuide(false)
+    } else {
+      // 闃叉鍒锋柊鎴愪簡涓嶅悓鐨勮瑷�
+      demographyApi.queryDemographyParamInfo(_this.memberToken).then(
+        re => {
+          if (re.response[0].langType !== null || re.response[0].langType.trim() !== '') {
+            _this.setLangType(re.response[0].langType)
+          }
+          // 鍔犺浇棰樼洰
+          examPaperApi.select(_this.memberToken, _this.langType).then(re => {
+            _this.form = re.response
+            _this.initAnswer()
+            examPaperApi.selectTokenId(_this.memberToken).then(re => {
+              _this.answered = re.response.examItemOrderAndContentList
+              _this.remainTime = re.response.remainTime
+              let intelligenceRemainTime = this.getLocalValue('intelligenceRemainTime')
+              if (this.isNotEmpty(intelligenceRemainTime) && intelligenceRemainTime > 0 && intelligenceRemainTime <= _this.remainTime) {
+                _this.remainTime = intelligenceRemainTime
+              }
+              this.initCreate()
+              _this.originalTime = _this.remainTime // 涓棿鍙橀噺锛屽師鏉ョ殑鏃堕棿
+              _this.isNotToTime = true // 鍏堜笉璁版椂
+              _this.timeReduce()
+              if (_this.answered !== null) {
+                _this.answered.forEach(it => {
+                  _this.answer.answerItems[parseInt(it.itemOrder) - 1].content = it.content
+                  _this.answer.answerItems[parseInt(it.itemOrder) - 1].completed = true
+                })
+              }
+              for (let i = 0; i < _this.answer.answerItems.length; i++) {
+                if (!_this.answer.answerItems[i].completed || _this.answer.answerItems[i].content === null || _this.answer.answerItems[i].content === '') {
+                  _this.questionItem = _this.form.titleItems[0].questionItems[i]
+                  _this.partOrder = _this.questionItem.partOrder
+                  _this.itemOrder = _this.form.titleItems[0].questionItems[i].itemOrder
+                  _this.order = i
+                  _this.preDisable = true
+                  break
+                }
+                _this.isNotToTime = false
+
+                if (_this.isForFinish(i)) {
+                  _this.setSubmiting(true)
+                  _this.$router.push({ path: '/exam/finish', query: { name: '', content: _this.$t('finishMsg') } })
+                }
+              }
+              // 濡傛灉涓婁竴棰樹笉鏄湰娈碉紝鍒欎笉鑳借繑鍥炰笂涓�娈�
+              if (this.isDiffPartOrder()) {
+                _this.isNotToTime = true
+                _this.preDisable = false
+              }
+
+              if (this.isDiffPartOrder()) {
+                _this.showNextGuide(false)
+              }
+
+              this.determineWhetherIntelligenceTitle()
+            }).catch(e => {
+              // _this.$message.error('棰樼洰鏌ヨ寮傚父')
+            })
+          }).catch(e => {
+            _this.$message.info(_this.$t('noquestionMsg'))
+          })
+        }
+      ).catch(e => {
+      })
+    }
+  },
+  mounted () {
+  },
+  beforeDestroy () {
+    window.clearInterval(this.timer)
+  },
+  destroyed () {
+    window.removeEventListener('beforeunload', e => this.beforeunloadFn(e))
+  },
+  methods: {
+    beforeunloadFn (e) {
+      if (!this.isSubmiting) {
+        if (this.isLastQuestionOrderNum(this.order)) {
+          this.answer.answerItems[this.order].content = ''
+          this.answer.answerItems[this.order].completed = false
+        }
+        this.submitStage()
+      }
+    },
+    autoChoiceTitleAndSwer: function (order) {
+      let _this = this
+      if (_this.form.titleItems[0].questionItems[order].template === 'intelligence_title') {
+        _this.answer.answerItems[order].content = '1'
+        _this.answer.answerItems[order].completed = true
+      }
+    },
+    doCanNotOption: function (flag) {
+      for (let i = 0; i < this.answer.answerItems.length; i++) {
+        this.answer.answerItems[i].readOnly = flag
+      }
+    },
+    determineWhetherIntelligenceTitle: function () {
+      let _this = this
+      _this.questionItems = []
+      if (_this.remainTime === 0) {
+        this.doCanNotOption(true)
+      }
+      while (_this.isNotEmpty(_this.form.titleItems[0].questionItems[_this.order].parentQuestionId)) {
+        _this.order--
+        // 濡傛灉鏄涓�棰橈紝涓婁竴棰樹笉鏄剧ず浜�
+        if (_this.order === 0) {
+          _this.preDisable = false
+        }
+      }
+      if (_this.form.titleItems[0].questionItems[_this.order].template === 'intelligence_title') {
+        _this.autoChoiceTitleAndSwer(_this.order)
+        // 绛旈瑕佹斁杩涘幓鍏�
+        _this.questionItems.push(_this.form.titleItems[0].questionItems[_this.order])
+        let id = _this.form.titleItems[0].questionItems[_this.order].id
+        for (let i = _this.order + 1; i < _this.form.titleItems[0].questionItems.length; i++) {
+          // 鍚庡彴宸茬粡鎺掑ソ椤哄簭浜嗐��
+          if (_this.form.titleItems[0].questionItems[i].parentQuestionId !== id.toString()) {
+            break
+          }
+          _this.order = i
+          _this.questionItems.push(_this.form.titleItems[0].questionItems[_this.order])
+          _this.partOrder = _this.form.titleItems[0].questionItems[_this.order].partOrder
+        }
+
+        // 妯帓杩樻槸绔栨帓
+        _this.displayVal = 'block'
+      } else {
+        _this.questionItems.push(_this.form.titleItems[0].questionItems[_this.order])
+        _this.partOrder = _this.form.titleItems[0].questionItems[_this.order].partOrder
+        _this.displayVal = null
+      }
+      // 濡傛灉鏄湰娈电殑鏈�鍚庝竴棰橈紝鏄剧ず鎻愪氦鎸夐挳
+      if (_this.isLastQuestionOrder()) {
+        _this.submitDisable = true
+      } else {
+        _this.submitDisable = false
+      }
+    },
+    initCreate: function () {
+      let _this = this
+      _this.formLoading = true
+      if (_this.isEmpty(_this.remainTime)) {
+        _this.remainTime = _this.form.parts[0].timeOut * 60
+      }
+      _this.problemLength = _this.form.titleItems[0].questionItems.length - 1
+      _this.titleItemsLength = _this.form.titleItems.length
+      _this.titleItems.push(_this.form.titleItems[0])
+      _this.questionItem = _this.form.titleItems[0].questionItems[0]
+      _this.partOrder = _this.questionItem.partOrder
+      _this.itemOrder = _this.form.titleItems[0].questionItems[0].itemOrder
+      _this.formLoading = false
+      _this.memberName = _this.form.memberName
+      _this.questionItems.push(_this.form.titleItems[0].questionItems[0])
+      this.determineWhetherIntelligenceTitle()
+    },
+    formatSeconds (theTime) {
+      return formatSeconds(theTime)
+    },
+    formatSecondsG (theTime, hour, min, second) {
+      return formatSecondsG(theTime, hour, min, second)
+    },
+    formatDate (time, formatsrc) {
+      return formatDate(time, formatsrc)
+    },
+    // 杩涘叆绗簩娈电殑鏃跺�欙紝鎶婄涓�娈垫病鏈夌瓟鐨勯兘绛斾竴涓嬨��
+    setPartDefaulAnswer: function (answerSubmit) {
+      let _this = this
+      answerSubmit.answerItems.forEach(it => {
+        if (_this.partOrder > it.partOrder && it.content === null) {
+          it.content = '0'
+        }
+      })
+    },
+    submitNextSubject: function (answerSubmit, nowPartOrder) {
+      let _this = this
+      _this.setSubmiting(true)
+      // _this.setPartDefaulAnswer(answerSubmit)
+      examPaperAnswerApi.answerSubmit(answerSubmit, _this.memberToken).then(re => {
+        _this.formLoading = false // 鎺у埗涓嶈浆鍦�
+        _this.setSubmiting(false)
+        if (re.code === 1) {
+          // 璺冲埌涓嬩竴娈�
+          if (!_this.isNull(re.response) && re.response.jump === 'next') {
+          }
+        } else {
+          _this.$message.error(re.message)
+        }
+        // 灞曠ず鎸囧璇�
+        if (_this.isNextShowGuide(nowPartOrder)) {
+          // 灞曠ず鎸囧璇�
+          _this.showNextGuide(true)
+        } else {
+          _this.nextQuestionOrder(nowPartOrder)
+        }
+      }).catch(e => {
+        _this.reloadPage(e)
+      })
+    },
+    submitStage: function () {
+      let _this = this
+      let nowPartOrder = _this.partOrder
+      let answerSubmit = _this.getSubmitAnswerValue(nowPartOrder)
+      _this.preDisable = false
+      _this.questionItems = []
+      this.submitNextSubject(answerSubmit, nowPartOrder)
+    },
+    timeOutNextPart: function () {
+      let _this = this
+      // 鑷姩璺冲埌涓嬩竴娈�
+      let questionNum = 0
+      while (_this.isLastQuestionOrderNum(questionNum) || _this.form.titleItems[0].questionItems[questionNum].partOrder <= _this.partOrder) {
+        if (!_this.isContentNotEmpty(questionNum)) {
+          _this.answer.answerItems[questionNum].content = '0'
+          _this.answer.answerItems[questionNum].completed = true
+        }
+        if (_this.isLastQuestionOrderNum(questionNum)) {
+          _this.answer.finish = _this.timeoutValue
+          _this.submitForm()
+          return
+        }
+        _this.order = questionNum++
+      }
+      // if (!_this.isContentNotEmpty(_this.order)) {
+      //   _this.answer.answerItems[_this.order].content = '0'
+      //   _this.answer.answerItems[_this.order].completed = true
+      // }
+      this.submitStage()
+      _this.isNotToTime = true
+    },
+    setLocalValue: function (key, value) {
+      localStorage.setItem(key, value)
+    },
+    getLocalValue: function (key) {
+      return localStorage.getItem(key)
+    },
+    removeLocalValue: function (key) {
+      localStorage.removeItem(key)
+    },
+    timeReduce: function () {
+      let _this = this
+      _this.answer.doTime += _this.doTime
+      _this.remainTime -= _this.doTime
+      this.timer = setInterval(function () {
+        if (_this.isNotToTime) {
+          _this.remainTime = 0
+        } else if (_this.remainTime <= 0) {
+          _this.remainTime = 0
+          ++_this.answer.doTime
+          _this.formLoading = true
+          _this.originalTime = 0 // 璺冲埌涓嬩竴娈典箣鍚庯紝灏变笉鑳界敤鍚庡彴杩斿洖鐨勬椂闂翠簡
+          _this.timeOutNextPart()
+        } else {
+          ++_this.answer.doTime
+          --_this.remainTime
+        }
+        // 娴嬭瘯鐨勬椂鍊欏幓鎺�
+        _this.setLocalValue('intelligenceRemainTime', _this.remainTime)
+      }, 1000)
+    },
+    questionCompleted (completed) {
+      return this.enumFormat(this.doCompletedTag, completed)
+    },
+    goAnchor (selector) {
+      let _this = this
+      let num = parseInt(selector.substr(10)) - 1
+      this.itemOrder = _this.form.titleItems[0].questionItems[num].itemOrder
+      this.questionItem = _this.form.titleItems[0].questionItems[num]
+      _this.order = num
+      setTimeout(function () {
+        _this.$el.querySelector(selector).scrollIntoView({ behavior: 'instant', block: 'center', inline: 'nearest' })
+      }, 200)
+      _this.$refs['popovertag'].doClose()
+    },
+    initAnswer () {
+      this.answer.id = this.form.id
+      this.answer.questionOrder = this.form.questionOrder
+      this.answer.optionOrder = this.form.optionOrder
+      let titleItemArray = this.form.titleItems
+      for (let tIndex in titleItemArray) {
+        let questionArray = titleItemArray[tIndex].questionItems
+        for (let qIndex in questionArray) {
+          let question = questionArray[qIndex]
+          this.answer.answerItems.push({ title: question.title, permanentId: question.permanentId, questionId: question.id, content: null, contentArray: [], completed: false, itemOrder: question.itemOrder, lastContent: null, startTime: question.startTime, endTime: question.endTime, partOrder: question.partOrder, questionReport: {}, readOnly: false })
+        }
+      }
+
+      // 鍒濆鍖栧紑濮嬫椂闂达紝璁剧疆绗竴涓椂闂�
+      for (let i = 0; i < this.answer.answerItems.length; i++) {
+        if (this.answer.answerItems[i].startTime == null || this.answer.answerItems[i].startTime.trim() === '') {
+          this.answer.answerItems[i].startTime = this.formatDate(new Date(), 'yyyy-MM-dd hh:mm:ss')
+          break
+        }
+      }
+    },
+    isContentNotEmpty: function (num) {
+      let _this = this
+      return _this.answer.answerItems[num].content !== '' && _this.answer.answerItems[num].content !== null && _this.answer.answerItems[num].content.trim() !== ''
+    },
+    nextQuestion: function (nowPartOrder) {
+      let _this = this
+      let num = ++_this.order
+      // 璺冲埌娌℃湁绛旂殑棰樼洰鐨勬
+      while (_this.isContentNotEmpty(num) && num !== _this.answer.answerItems.length - 1) {
+        num = ++_this.order
+        this.getEmptySubjct(num)
+      }
+      this.determineWhetherIntelligenceTitle()
+      if (_this.partOrder !== nowPartOrder) {
+        _this.isShowGuide(true)
+      }
+      _this.preDisable = true
+      _this.isShowNextQuestionButton(_this)
+      _this.answer.answerItems[_this.order].startTime = _this.formatDate(new Date(), 'yyyy-MM-dd hh:mm:ss')
+
+      // 濡傛灉鏄渶鍚庝竴涓苟涓斿凡缁忓畬鎴愪簡锛屽氨鎻愪氦
+      if (num === _this.answer.answerItems.length - 1 && _this.isForFinish(num)) {
+        this.submitForm()
+      }
+    },
+    nextQuestionOrder: function (nowPartOrder) {
+      if (this.order < this.problemLength) {
+        this.nextQuestion(nowPartOrder)
+      }
+    },
+    isNextShowGuide: function (nowPartOrder) {
+      let _this = this
+      // 鏈鐨勬瘡涓�棰橀兘鎵撳畬瑕佹寚瀵艰
+      let showGuideFlag = true
+      for (let i = 0; i < _this.answer.answerItems.length; i++) {
+        if (_this.form.titleItems[0].questionItems[i].partOrder === nowPartOrder && !_this.isContentNotEmpty(i)) {
+          showGuideFlag = false
+        }
+      }
+      return showGuideFlag
+    },
+    catThaiSubmit: function (answerSubmit) {
+      answerSubmit.isCallTain = 'CallThai'
+    },
+    getEmptySubjct: function (order) {
+      let _this = this
+      _this.itemOrder = _this.form.titleItems[0].questionItems[order].itemOrder
+      _this.questionItem = _this.form.titleItems[0].questionItems[order]
+      _this.partOrder = _this.questionItem.partOrder
+      _this.preDisable = false
+      _this.order = order
+      _this.determineWhetherIntelligenceTitle()
+    },
+    onChoice () { // 鏄惁鏄剧ず鎻愪氦鎸夐挳
+      if (this.isLastQuestionOrder()) {
+        return
+      }
+      this.isShowNextQuestionButton(this)
+    },
+    // 涓嬩竴棰�
+    nextSubject: function (data) {
+      let _this = this
+      _this.isShowGuide(false)
+      let nowPartOrder = _this.partOrder
+      // 璁剧疆涓婁竴棰樼殑缁撴潫鏃堕棿
+      this.answer.answerItems[data[0]].endTime = _this.formatDate(new Date(), 'yyyy-MM-dd hh:mm:ss')
+      // 璺冲埌杩樻病瀹屾垚鐨勬嬁鍒伴鐨�
+      let complateOrder = _this.order
+      // 鍋滅暀鍦ㄨ繖閬撻
+      if (_this.form.titleItems[0].questionItems[_this.order].parentQuestionId !== '') {
+        complateOrder++
+      }
+      for (let i = 0; i < complateOrder; i++) {
+        if (!_this.isContentNotEmpty(i)) {
+          return
+        }
+      }
+      // 寰幆娌℃湁绛旂殑棰樼洰
+      for (let i = 0; i < _this.order; i++) {
+        if (!this.isContentNotEmpty(i)) {
+          // 杩斿洖涔嬪墠娌″仛鐨勯偅閬撻
+          this.getEmptySubjct(i)
+          return
+        }
+        // 濡傛灉寰幆鍒版渶鍚庝竴棰樺氨鎻愪氦
+        if (_this.isForFinish(i)) {
+          _this.submitForm()
+          return
+        }
+      }
+
+      // 鍏ㄩ儴绛斿畬浜嗗氨鍙互鎻愪氦浜�,浣嗘槸濡傛灉鏄渶鍚庝竴棰樺氨鑷繁鎻愪氦
+      for (let i = 0; i < _this.answer.answerItems.length; i++) {
+        if (!_this.isContentNotEmpty(i)) {
+          break
+        }
+        if (i === _this.answer.answerItems.length - 1 && _this.order !== _this.answer.answerItems.length - 1) {
+          _this.submitForm()
+          return
+        }
+      }
+      // this.answer.answerItems[_this.order].readOnly = true
+      let answerSubmit = _this.getSubmitAnswerValue(nowPartOrder)
+      // 宸茬粡绛斿埌浜嗘渶鍚庝竴棰樹簡,涓嶇敤鑷姩璺冲埌涓嬩竴棰�
+      if (this.order + 1 > this.problemLength) {
+        return
+      }
+      _this.preDisable = false
+      this.submitNextSubject(answerSubmit, nowPartOrder)
+    },
+    isLastQuestionOrder: function () {
+      let _this = this
+      return _this.order >= _this.form.titleItems[0].questionItems.length - 1
+    },
+    isLastQuestionOrderNum: function (num) {
+      let _this = this
+      return num >= _this.form.titleItems[0].questionItems.length - 1
+    },
+    isSamePartOrder: function () {
+      return this.form.titleItems[0].questionItems[this.order].partOrder === this.form.titleItems[0].questionItems[this.order + 1].partOrder
+    },
+    isPreSamePartOrder: function () {
+      if (this.isEmpty(this.form.titleItems[0].questionItems[this.order - 1])) {
+        return false
+      }
+      return this.form.titleItems[0].questionItems[this.order].partOrder === this.form.titleItems[0].questionItems[this.order - 1].partOrder
+    },
+    isShowNextQuestionButton: function (_this) {
+      if (_this.isLastQuestionOrder()) {
+        _this.nextDisable = false
+        return
+      }
+      _this.nextDisable = true
+    },
+    isFinishThisPart () {
+      for (let i = 0; i <= this.order; i++) {
+        if (!this.isContentNotEmpty(i)) {
+          return false
+        }
+      }
+      return true
+    },
+    nextOrder () {
+      let _this = this
+      _this.order++
+      // 濡傛灉鏄凡缁忓畬鎴愭湰娈碉紝鎻愪氦灞曠ず鎸囧璇�
+      if (_this.isPreSamePartOrder(this)) {
+        _this.preDisable = true
+      } else {
+        _this.preDisable = false
+      }
+      _this.determineWhetherIntelligenceTitle()
+      // 灞曠ず鎸囧璇�
+      if (_this.isDiffPartOrder()) {
+        this.showGuideDetail()
+        this.submitStage() // 璺冲埌涓嬩竴娈电殑鏃跺�欙紝鍏抽棴娴忚鍣ㄦ湁淇濆瓨涓嶄笂鐨勭幇璞★紝鎵�浠ヨ繖閲屼腑閫斾繚瀛樹竴涓�
+      }
+      _this.isShowNextQuestionButton(_this)
+    },
+    getSubmitAnswerValue (nowPartOrder) {
+      let _this = this
+      let answerSubmit = JSON.parse(JSON.stringify(_this.answer))
+      answerSubmit.answerItems.forEach(answerItem => {
+        // 棰樼洰鎶ヨ〃锛屽鏋滄病鏈夌粨鏉熸椂闂达紝寮�濮嬫椂闂翠篃涓嶉渶瑕�
+        if (answerItem.endTime == null || answerItem.endTime === '') {
+          answerItem.startTime = ''
+        }
+        answerItem.questionReport = { questionOrder: answerItem.questionId, questionTitle: answerItem.title, permanentId: answerItem.permanentId, startTime: answerItem.startTime, endTime: answerItem.endTime, langType: _this.langType, partOrder: answerItem.partOrder, answer: answerItem.content }
+      })
+      answerSubmit.langType = _this.langType
+      answerSubmit.isCallTain = _this.isCallTain
+      answerSubmit.partOrder = nowPartOrder
+      answerSubmit.itemOrder = _this.itemOrder
+      answerSubmit.remainTime = _this.remainTime
+      answerSubmit.submitClick = _this.isSubmitClick
+      return answerSubmit
+    },
+    preSubject () {
+      let _this = this
+      _this.isShowGuide(false)
+      if (_this.order <= 0) {
+        _this.preDisable = false
+        return
+      }
+      --this.order
+      // 寰幆涓�鐩存壘鍒颁笂涓�棰�
+      if (_this.isNotEmpty(_this.form.titleItems[0].questionItems[_this.order].parentQuestionId)) {
+        while (_this.isNotEmpty(_this.form.titleItems[0].questionItems[_this.order].parentQuestionId) && _this.form.titleItems[0].questionItems[_this.order].template !== 'intelligence_title') {
+          --this.order
+        }
+        --this.order
+        // 鍥炲埌涓婁竴棰樼殑涓婁竴棰�
+        while (_this.isNotEmpty(_this.form.titleItems[0].questionItems[_this.order].parentQuestionId) && _this.form.titleItems[0].questionItems[_this.order].template !== 'intelligence_title') {
+          --this.order
+        }
+      }
+      // 鎺у埗鍥炲埌涓婁竴棰樼殑鎸夐挳鐨勫嚭鐜�
+      if (_this.order > 0 && _this.form.titleItems[0].questionItems[_this.order].partOrder === _this.form.titleItems[0].questionItems[_this.order - 1].partOrder) {
+        _this.preDisable = true
+      } else {
+        _this.preDisable = false
+      }
+      _this.determineWhetherIntelligenceTitle()
+      _this.isShowNextQuestionButton(_this)
+    },
+    isNotEmpty (obj) {
+      return obj !== null && obj !== undefined && obj !== ''
+    },
+    isEmpty (obj) {
+      return !this.isNotEmpty(obj)
+    },
+    submitClick () {
+      let _this = this
+      _this.isSubmitClick = true
+      _this.$confirm(_this.$t('unfinish'), {
+        title: _this.$t('prompt'),
+        confirmButtonText: _this.$t('determine'),
+        cancelButtonText: _this.$t('cancel'),
+        showClose: false
+      }).then(async () => {
+        _this.submitForm()
+      }).catch(async () => {
+      })
+    },
+    submitForm () {
+      let _this = this
+      _this.submitDisable = false
+      window.clearInterval(_this.timer)
+      _this.formLoading = true
+      if (_this.answer.finish === _this.timeoutValue) {
+        _this.answer.verifyStatus = 1
+        _this.submitAnswer(_this.$t('timeOutSubmit'))
+      } else {
+        _this.answer.verifyStatus = 1
+        _this.answer.finish = 1
+        for (let i = 0; i < _this.answer.answerItems.length; i++) {
+          if (_this.answer.answerItems[i].content === null) {
+            _this.answer.answerItems[i].content = '0'
+          }
+        }
+        _this.submitAnswer(_this.$t('finishIntelligenceInfo'))
+      }
+    },
+    startDo: function () {
+      let _this = this
+      _this.guide = false
+      _this.isCallTain = ''
+      _this.isNotToTime = false
+      // _this.originalTime 璺冲埌涓嬩竴娈典箣鍚庝細杩斿洖0鐨�
+      _this.remainTime = _this.originalTime !== 0 ? _this.originalTime : _this.form.parts[_this.partOrder - 1].timeOut * 60
+      this.doCanNotOption(false)
+    },
+    isTimeoutFinish: function () { // 瓒呮椂鎻愪氦
+      let _this = this
+      return _this.answer.finish === _this.timeoutValue
+    },
+    submitAnswer: function (mess) {
+      let _this = this
+      this.answer.answerItems[_this.order].endTime = this.formatDate(new Date(), 'yyyy-MM-dd hh:mm:ss')
+      // 鎻愪氦涔嬪墠鎻愪氦鏈�鍚庝竴娈�
+      let answerSubmit = _this.getSubmitAnswerValue(_this.partOrder)
+      _this.catThaiSubmit(answerSubmit)
+      let loading = _this.$loading({
+        lock: false,
+        text: _this.$t('uploadInfo'),
+        spinner: 'el-icon-loading'
+      })
+      // 瓒呮椂椹笂杩斿洖
+      if (this.isTimeoutFinish()) {
+        loading.close()
+        _this.$router.push({ path: '/exam/finish', query: { name: _this.form.name, content: mess } })
+      }
+      _this.setSubmiting(true)
+      examPaperAnswerApi.answerSubmit(answerSubmit, _this.memberToken).then(re => {
+        this.removeLocalValue('intelligenceRemainTime')
+        if (re.code === 1) {
+          loading.close()
+          if (re.response.signalObject.code === 'fail') {
+            _this.$router.push({
+              path: '/exam/exception',
+              query: { name: _this.form.name, content: _this.$t('submitExceptionInfo') }
+            })
+            return
+          }
+          if (this.isTimeoutFinish()) {
+            return
+          }
+          _this.$router.push({ path: '/exam/finish', query: { name: _this.form.name, content: mess } })
+        } else {
+          _this.$message.error(re.message + '/exam/finish')
+        }
+        _this.formLoading = false
+      }).catch(e => {
+        _this.reloadPage(e)
+        loading.close()
+      })
+    },
+    setSubmiting (flag) {
+      this.isSubmiting = flag
+    },
+    guideView: function () {
+      // 鏁扮粍鐨勪笅鏍囪鍑�1
+      let _this = this
+      if (_this.isNotEmpty(_this.guideDescirption)) {
+        _this.isNotToTime = true
+        _this.isShowGuide(true)
+        _this.preDisable = false
+      } else {
+        _this.isShowGuide(false)
+        _this.preDisable = false
+      }
+    },
+    showGuideDetail: function () {
+      let _this = this
+      if (_this.form.parts[_this.partOrder - 1].signals.length > 0) {
+        _this.guideDescirption = _this.form.parts[_this.partOrder - 1].signals[0].signalDescription
+      }
+      // 鎸囧璇睍绀�
+      _this.guideView()
+      _this.startDoDisable = false
+    },
+    showNextGuide: function (nextQuestion) {
+      let _this = this
+      if (!nextQuestion) {
+        this.showGuideDetail()
+        return
+      }
+      _this.isShowGuide(true)
+      _this.nextQuestionOrder()
+      this.showGuideDetail()
+    },
+    isNull: function (obj) {
+      return obj === null || obj === undefined
+    },
+    isShowGuide (flag) {
+      let _this = this
+      _this.guide = flag
+    },
+    reloadPage (e) {
+      let _this = this
+      let mes = ''
+      if (e.message !== null && e.message !== undefined && e.message.indexOf('timeout') !== -1) {
+        mes = _this.$t('submitTimeout') + ',' + 'order:' + _this.order + ',' + e.message// 鎻愪氦鍚庡彴瓒呮椂
+      } else {
+        mes = JSON.stringify(e) + ',' + 'order:' + _this.order + ',' + e.message
+      }
+      // 璋冭瘯鐢�
+      // _this.$router.push({ path: '/exam/exception', query: { name: _this.form.name, content: _this.$t('submitExceptionInfo') + '<br>' + mes } })
+      _this.$router.push({ path: '/exam/exception', query: { name: _this.form.name, content: _this.$t('submitExceptionInfo') } })
+      _this.formLoading = false
+    },
+    isForFinish (i) {
+      return i === this.answer.answerItems.length - 1 && (this.answer.answerItems[i].content !== null && this.answer.answerItems[i].content !== '')
+    },
+    isDiffPartOrder: function () {
+      let _this = this
+      return _this.form.titleItems[0].questionItems[_this.order].partOrder !== _this.form.titleItems[0].questionItems[_this.order - 1].partOrder
+    },
+    isLastPartOrder: function () {
+      let _this = this
+      // 鏈�鍚庝竴棰樺拰绗竴棰樹笉鏄剧ず鎻愪氦鎸夐挳
+      if (_this.isEmpty(_this.form.titleItems[0].questionItems[_this.order + 1]) || _this.form.titleItems[0].questionItems[_this.order].partOrder === 0) {
+        return false
+      }
+      return _this.form.titleItems[0].questionItems[_this.order].partOrder !== _this.form.titleItems[0].questionItems[_this.order + 1].partOrder
+    },
+    ...mapMutations('user', ['setLangType']),
+    ...mapMutations('user', ['setLangFlag'])
+  },
+  computed: {
+    ...mapGetters('enumItem', ['enumFormat']),
+    ...mapState('enumItem', { doCompletedTag: state => state.exam.question.answer.doCompletedTag }),
+    ...mapState('user', { memberToken: state => state.memberToken }),
+    ...mapState('user', { langType: state => state.langType }),
+    ...mapState('user', { langFlag: state => state.langFlag }),
+    ...mapState('exam', { doUrl: state => state.doUrl })
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+  .align-center {
+    text-align: center;
+  }
+
+  .exam-question-item {
+    padding: 10px;
+    font-size: large;
+
+    .el-form-item__label {
+      font-size: large !important;
+    }
+  }
+
+  .question-title-padding {
+    padding-left: 25px;
+    padding-right: 25px;
+  }
+  .footer {
+    position: absolute;
+    position: fixed;
+    z-index: 1000;
+    bottom: 0px;
+  }
+</style>
diff --git a/src/views/exam/paper/job.vue b/src/views/exam/paper/job.vue
new file mode 100644
index 0000000..18b341c
--- /dev/null
+++ b/src/views/exam/paper/job.vue
@@ -0,0 +1,431 @@
+<template>
+  <div>
+    <el-container  class="app-item-contain">
+      <el-header class="align-center" v-if="guide">
+        <h1 v-html="titleItems[0].name+ +' '+ $t('guide') "></h1>
+      </el-header>
+      <el-header class="align-center" style="height: 90px; padding: 2%" v-else>
+        <h1>{{form.name}}</h1>
+        <div>
+          <span class="question-title-padding" v-if="form.suggestTime !== null && form.suggestTime != '' && form.suggestTime > 0">{{$t('recommendedTime')}}{{form.suggestTime}}{{$t('minute')}}</span>
+        </div>
+      </el-header>
+      <el-main>
+        <div v-html="titleItems[0].guide" v-if="guide"></div>
+        <el-row class="do-align-center" v-if="guide">
+          <el-button @click="startDo" type="primary">{{$t('start')}}</el-button>
+        </el-row>
+        <el-form :model="form" ref="form" v-loading="formLoading" label-width="100%" v-else>
+          <el-row :key="index"  v-for="(titleItem,index) in titleItems">
+            <h3 v-bind:class="{langKaiStyle : isLangKaiStyle}" v-if="langType === 'Chinese'">绗瑊{order+1}}棰�/鎬粄{totalTitleNum}}棰�: {{titleItem.name}}</h3>
+            <h3 v-bind:class="{langKaiStyle : isLangKaiStyle}" v-else>{{order+1}}/{{totalTitleNum}}:&nbsp;&nbsp;{{titleItem.name}}</h3>
+            <div class="q-content" v-html="titleItem.description"></div>
+            <el-card class="exampaper-item-box" v-if="titleItem.questionItems.length!==0">
+              <el-form-item :key="questionItem.itemOrder" class="exam-question-item" label-width="0%"
+                            v-for="questionItem in titleItem.questionItems" :id="'question-'+ questionItem.itemOrder">
+                <QuestionJobEdit @callNextSubject="callNext" :qType="questionItem.questionType" :question="questionItem"
+                              :answer="answer.answerItems[questionItem.itemOrder-1]"  :isReadOnly="autoNext"/>
+              </el-form-item>
+            </el-card>
+          </el-row>
+          <el-row class="do-align-center" v-if="order < form.titleItems.length - 1">
+            <el-button @click="preSubject" type="warning" v-if ="preDisable" round>{{$t('lastQuestion')}}</el-button>
+            <el-button @click="nextSubject" type="primary" v-if ="nextDisable" round>{{$t('nextQuestion')}}</el-button>
+          </el-row>
+          <el-row class="do-align-center" v-else>
+            <el-button @click="preSubject" type="warning" v-if ="preDisable" round>{{$t('lastQuestion')}}</el-button>
+            <el-button @click="submitForm" type="primary" :disabled="submitDisable" round>{{$t('submission')}}</el-button>
+          </el-row>
+        </el-form>
+      </el-main>
+    </el-container>
+    <el-row class="do-exam-title footer">
+      <el-col :span="24">
+        <!--<el-popover placement="top" title="棰樼洰鍒楄〃" trigger="click" ref="popovertag">-->
+          <!--<el-tag type="success" slot="reference">棰樼洰</el-tag>-->
+          <!--<span :key="item.itemOrder" v-for="(item) in answer.titleItems">-->
+             <!--<el-tag :type="questionCompleted(item.completed)" class="do-exam-title-tag"-->
+                     <!--@click="goAnchor(item.itemOrder)">{{item.itemOrder + 1}}</el-tag>-->
+        <!--</span>-->
+        <!--</el-popover>-->
+        <span class="do-exam-time">
+          <label v-if="form.suggestTime !== null && form.suggestTime != '' && form.suggestTime > 0">{{$t('remainingTime')}}</label>
+          <label v-if="form.suggestTime !== null && form.suggestTime != '' && form.suggestTime > 0">{{formatSecondsG(remainTime,$t('hour'),$t('min'),$t('second'))}}</label>
+        </span>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, mapGetters, mapMutations } from 'vuex'
+import { formatSeconds, formatSecondsG, formatDate } from '@/utils'
+import QuestionJobEdit from '../components/QuestionJobEdit'
+import examPaperApi from '@/api/examPaper'
+import examPaperAnswerApi from '@/api/examPaperAnswer'
+
+export default {
+  name: 'job',
+  components: { QuestionJobEdit },
+  data () {
+    return {
+      form: {},
+      formLoading: false,
+      answer: {
+        questionId: null,
+        doTime: 0,
+        titleItems: null,
+        answerItems: [],
+        verifyStatus: 2,
+        finish: 0,
+        questionOrder: []
+      },
+      timer: null,
+      problemLength: 0,
+      remainTime: 0,
+      titleItemName: '', // 鑰冭瘯绗簩鏍囬
+      itemOrder: '', // 棰樼洰鐨勫簭鍙�
+      questionItem: {}, // 棰樼洰
+      titleItems: [],
+      order: 0,
+      guide: false,
+      answered: [],
+      submitDisable: false,
+      doTime: 0,
+      preDisable: false,
+      nextDisable: false,
+      autoNext: true,
+      isCallTain: false, // 鏄惁瑕佽皟鐢ㄦ嘲鍥藉洟闃熸帴鍙�
+      isLangKaiStyle: false,
+      totalTitleNum: 0
+    }
+  },
+  created () {
+    let _this = this
+    // 澶氳瑷�
+    _this.setLangFlag(false)
+    _this.form = this.$route.query.formDo
+    if (_this.form !== {} && _this.form !== undefined) {
+      _this.formLoading = true
+      _this.remainTime = _this.form.suggestTime * 60
+      _this.problemLength = _this.form.titleItems[0].questionItems.length - 1
+      _this.titleItems.push(_this.form.titleItems[0])
+      _this.timeReduce()
+      _this.initAnswer()
+      _this.formLoading = false
+      // 鎬婚鐩�
+      _this.totalTitleNum = _this.form.titleItems.length
+    } else {
+      _this.formLoading = true
+      examPaperApi.select(_this.memberToken, _this.langType).then(re => {
+        _this.form = re.response
+        // 鎬婚鐩�
+        _this.totalTitleNum = _this.form.titleItems.length
+        _this.remainTime = re.response.suggestTime * 60
+        _this.problemLength = _this.form.titleItems[0].questionItems.length - 1
+        _this.titleItems.push(_this.form.titleItems[0])
+        _this.initAnswer()
+        _this.formLoading = false
+        examPaperApi.selectTokenId(_this.memberToken).then(re => {
+          _this.answered = re.response.examItemOrderAndContentList
+          _this.doTime = re.response.doTime
+          _this.timeReduce()
+          _this.answered.forEach(it => {
+            _this.answer.answerItems[parseInt(it.itemOrder) - 1].content = it.content
+            _this.answer.answerItems[parseInt(it.itemOrder) - 1].completed = true
+          })
+          // 鍥炲埌鏈瓟鐨勯鐩�
+          let notContinue = false
+          for (let i = 0; i < _this.answer.answerItems.length; i++) {
+            // 鍒ゆ柇鏄惁鍕鹃��
+            if (!_this.answer.answerItems[i].completed) {
+              // 瀹氫綅鍒版湭鍕鹃�夌殑鍦版柟
+              for (let j = 0; j < _this.form.titleItems.length; j++) {
+                _this.form.titleItems[j].questionItems.forEach(it => {
+                  if (it.itemOrder === _this.answer.answerItems[i].itemOrder) {
+                    _this.goHere(j)
+                    notContinue = true
+                  }
+                })
+              }
+            }
+            if (notContinue) {
+              _this.preDisable = true
+              _this.autoNext = true
+              break
+            }
+          }
+        }).catch(e => {
+        })
+      }).catch(e => {
+        _this.$message.info(_this.$t('noquestionMsg'))
+      })
+    }
+
+    // 涓枃鐨勬牱寮忎笉涓�鏍�
+    if (_this.langType === 'Chinese') {
+      _this.isLangKaiStyle = true
+    }
+  },
+  mounted () {
+  },
+  beforeDestroy () {
+    window.clearInterval(this.timer)
+  },
+  methods: {
+    formatSeconds (theTime) {
+      return formatSeconds(theTime)
+    },
+    formatSecondsG (theTime, hour, min, second) {
+      return formatSecondsG(theTime, hour, min, second)
+    },
+    formatDate (time, formatsrc) {
+      return formatDate(time, formatsrc)
+    },
+    timeReduce () {
+      let _this = this
+      _this.answer.doTime += _this.doTime
+      _this.remainTime -= _this.doTime
+      this.timer = setInterval(function () {
+        if (_this.remainTime <= 0) {
+          _this.remainTime = 0
+          ++_this.answer.doTime
+        } else {
+          ++_this.answer.doTime
+          --_this.remainTime
+        }
+      }, 1000)
+    },
+    questionCompleted (completed) {
+      return this.enumFormat(this.doCompletedTag, completed)
+    },
+    goAnchor (selector) {
+      let _this = this
+      let num = selector
+      _this.goHere(num)
+      _this.$refs['popovertag'].doClose()
+    },
+    initAnswer () {
+      this.answer.id = this.form.id
+      this.answer.questionOrder = this.form.questionOrder
+      let titleItemArray = this.form.titleItems
+      this.answer.titleItems = this.form.titleItems
+      for (let tIndex in titleItemArray) {
+        let questionArray = titleItemArray[tIndex].questionItems
+        // titleItem 鏄竴娈典竴娈电殑棰樼洰
+        for (let qIndex in questionArray) {
+          let question = questionArray[qIndex]
+          this.answer.answerItems.push({ questionId: question.id, content: null, contentArray: [], permanentId: question.permanentId, completed: false, itemOrder: question.itemOrder, lastContent: null, questionReport: {}, readOnly: false })
+        }
+      }
+      // 璁剧疆绗竴棰樼殑寮�濮嬫椂闂�
+      for (let i = 0; i < this.form.titleItems.length; i++) {
+        if (this.form.titleItems[i].startTime == null || this.form.titleItems[i].startTime.trim() === '') {
+          this.form.titleItems[i].startTime = this.formatDate(new Date(), 'yyyy-MM-dd hh:mm:ss')
+          break
+        }
+      }
+    },
+    nextSubject: function () {
+      let _this = this
+      // 璁剧疆涓婁竴棰樼粨鏉熸椂闂�
+      _this.form.titleItems[_this.order].endTime = _this.formatDate(new Date(), 'yyyy-MM-dd hh:mm:ss')
+      _this.isShowGuide(false)
+      if (_this.order < _this.form.titleItems.length - 1) {
+        _this.titleItems = []
+        let num = ++_this.order
+        _this.titleItems.push(_this.form.titleItems[num])
+        // 璁剧疆涓嬩竴棰樼殑寮�濮嬫椂闂�
+        _this.form.titleItems[_this.order].startTime = _this.formatDate(new Date(), 'yyyy-MM-dd hh:mm:ss')
+      } else {
+        return
+      }
+      let answerSubmit = _this.getSubmitAnswerValue()
+      examPaperAnswerApi.answerSubmit(answerSubmit, _this.memberToken).then(re => {
+        if (re.code === 1) {
+        } else {
+          _this.$message.error(re.message + 'answerSubmit')
+        }
+      }).catch(e => {
+        _this.$message.error(_this.$t('submitErro'))
+      })
+      _this.preDisable = true
+      _this.autoNext = true
+      _this.nextDisable = false
+    },
+    preSubject () {
+      let _this = this
+      _this.isShowGuide(false)
+      if (_this.order > 0) {
+        _this.titleItems = []
+        let num = --_this.order
+        _this.titleItems.push(_this.form.titleItems[num])
+        _this.titleItems.forEach(it => {
+          it.questionItems.forEach(i => {
+            _this.answer.answerItems[parseInt(i.itemOrder) - 1].lastContent = _this.answer.answerItems[parseInt(i.itemOrder) - 1].content
+            _this.answer.answerItems[parseInt(i.itemOrder) - 1].readOnly = false
+          })
+        })
+        _this.preDisable = false
+        _this.autoNext = false
+        _this.nextDisable = true
+      }
+    },
+    setReadOnly: function (readOnly) {
+      this.titleItems.forEach(it => {
+        it.questionItems.forEach(i => {
+          this.answer.answerItems[parseInt(i.itemOrder) - 1].readOnly = readOnly
+        })
+      })
+    },
+    // 濡傛灉鏄瓟瀹岄鐩簡锛岃嚜鍔ㄨ烦鍒颁笅涓�棰�
+    callNext () {
+      let _this = this
+      if (!_this.autoNext) {
+        _this.setReadOnly(false)
+        return
+      }
+      let jumpNextFlag = true
+      for (let i = 0; i < _this.titleItems.length; i++) {
+        _this.titleItems[i].questionItems.forEach(questionItme => {
+          if (!_this.answer.answerItems[questionItme.itemOrder - 1].completed) {
+            jumpNextFlag = false
+          }
+        })
+      }
+      if (jumpNextFlag) {
+        _this.nextSubject()
+      }
+    },
+    submitForm () {
+      let _this = this
+      _this.submitDisable = true
+      window.clearInterval(_this.timer)
+      _this.formLoading = true
+      let unFinish = false
+      for (let i = 0; i < _this.answer.answerItems.length; i++) {
+        if (_this.answer.answerItems[i].content === null) {
+          unFinish = true
+          _this.answer.finish = 0
+        }
+      }
+      if (unFinish) {
+        _this.$confirm(_this.$t('unfinish'), {
+          title: this.$t('prompt'),
+          confirmButtonText: _this.$t('determine'),
+          cancelButtonText: _this.$t('cancel'),
+          showClose: false
+        }).then(async () => {
+          _this.answer.verifyStatus = 2
+          _this.submitAnswer(_this.$t('unfinishSubmit'))
+        }).catch(async () => {
+          _this.formLoading = false
+          _this.submitDisable = false
+        })
+      } else {
+        _this.answer.verifyStatus = 1
+        _this.answer.finish = 1
+        _this.submitAnswer(_this.$t('finishSubmit'))
+      }
+    },
+    startDo: function () {
+      let _this = this
+      _this.isShowGuide(false)
+    },
+    goHere: function (num) {
+      let _this = this
+      _this.titleItems = []
+      _this.titleItems.push(_this.form.titleItems[num])
+      _this.order = num
+    },
+    submitAnswer: function (mess) {
+      let _this = this
+      this.answer.answerItems[_this.order].endTime = this.formatDate(new Date(), 'yyyy-MM-dd hh:mm:ss')
+      let answerSubmit = _this.getSubmitAnswerValue()
+      examPaperAnswerApi.answerSubmit(answerSubmit, _this.memberToken).then(re => {
+        if (re.code === 1) {
+          _this.$router.push({ path: '/exam/finish', query: { name: _this.form.name, content: mess } })
+        } else {
+          _this.$message.error(re.message + '/exam/finish')
+        }
+        _this.formLoading = false
+      }).catch(e => {
+        _this.formLoading = false
+        _this.$router.push({ path: '/exam/exception', query: { name: _this.form.name, content: _this.$t('submitExceptionInfo') } })
+      })
+    },
+    getSubmitAnswerValue () {
+      let _this = this
+      let answerSubmit = JSON.parse(JSON.stringify(this.answer))
+      let tagNum = 0
+      answerSubmit.titleItems.forEach(titleItem => {
+        // titleItem.name = ''
+        titleItem.questionItems.forEach(questionItem => {
+          questionItem.title = ''
+          questionItem.content = answerSubmit.answerItems[tagNum++].content
+        })
+
+        // 杩欎釜鏄竴涓釜灏忛
+        answerSubmit.answerItems.forEach(answerItem => {
+        // 棰樼洰鎶ヨ〃锛屽鏋滄病鏈夌粨鏉熸椂闂达紝寮�濮嬫椂闂翠篃涓嶉渶瑕�
+          if (answerItem.endTime == null || answerItem.endTime === '') {
+            answerItem.startTime = ''
+          }
+          answerItem.questionReport = { questionOrder: answerItem.questionId, questionTitle: answerItem.title, permanentId: answerItem.permanentId, startTime: answerItem.startTime, endTime: answerItem.endTime, langType: _this.langType, partOrder: answerItem.partOrder }
+        })
+        // 棰樼洰鎶ヨ〃锛屽鏋滄病鏈夌粨鏉熸椂闂达紝寮�濮嬫椂闂翠篃涓嶉渶瑕�
+        if (titleItem.endTime == null) {
+          titleItem.startTime = ''
+        }
+        titleItem.questionReport = { questionOrder: titleItem.questionOrder, questionTitle: titleItem.name, permanentId: titleItem.permanentId, startTime: titleItem.startTime, endTime: titleItem.endTime, langType: _this.langType, questionItems: titleItem.questionItems }
+      })
+      answerSubmit.langType = _this.langType
+      return answerSubmit
+    },
+    isShowGuide (flag) {
+      let _this = this
+      _this.guide = flag
+      _this.isCallTain = flag
+    },
+    ...mapMutations('user', ['setLangType']),
+    ...mapMutations('user', ['setLangFlag'])
+  },
+  computed: {
+    ...mapGetters('enumItem', ['enumFormat']),
+    ...mapState('enumItem', { doCompletedTag: state => state.exam.question.answer.doCompletedTag }),
+    ...mapState('user', { memberToken: state => state.memberToken }),
+    ...mapState('user', { langType: state => state.langType }),
+    ...mapState('user', { langFlag: state => state.langFlag })
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+  .align-center {
+    text-align: center;
+  }
+
+  .exam-question-item {
+    padding: 10px;
+
+    .el-form-item__label {
+      font-size: 15px !important;
+    }
+  }
+
+  .question-title-padding {
+    padding-left: 25px;
+    padding-right: 25px;
+  }
+  .footer {
+    position: absolute;
+    position: fixed;
+    z-index: 1000;
+    bottom: 0px;
+  }
+
+  .langKaiStyle {
+    font-size:xx-large;
+    font-family: 妤蜂綋;
+  }
+</style>
diff --git a/src/views/exam/paper/personality.vue b/src/views/exam/paper/personality.vue
new file mode 100644
index 0000000..d07b95d
--- /dev/null
+++ b/src/views/exam/paper/personality.vue
@@ -0,0 +1,561 @@
+<template>
+  <div>
+    <el-container  class="app-item-contain">
+      <el-header class="align-center" v-if="guide">
+        <h1></h1>
+      </el-header>
+      <el-main style="padding-top: 3%;">
+        <div v-html="guideDescirption" v-if="guide" :style="ismobile?'padding-top: 2%;':'padding-top: 2%;margin: 0 auto;width:66%'"></div>
+        <el-row class="do-align-center" v-if="guide">
+          <el-button @click="startDo" type="primary" :disable="startDoDisable">{{$t('start')}}</el-button>
+        </el-row >
+        <el-form :model="form" ref="form" v-loading="formLoading" label-width="100%" v-else>
+          <el-row :key="index"  v-for="(titleItem,index) in titleItems">
+            <div class="q-content">{{titleItem.description}}</div>
+            <el-card class="exampaper-item-box" v-if="titleItem.questionItems.length!==0"  style="border:2px solid #2b90ff;">
+              <div class="align-center"><span style="font-size: small; float: left">{{$t('examinee')}}{{memberName}}</span><span style="margin-top: 0px;padding-right: 11%">鈼弡{form.name}}鈼�</span></div>
+              <hr style="border : 1px dashed #b3d8ff;" />
+              <el-form-item :key="itemOrder" label-width="1px">
+                <QuestionEdit @callNextSubject="nextSubject" :qType="questionItem.questionType" :question="questionItem"
+                              :answer="answer.answerItems[questionItem.itemOrder-1]" :qLabel="itemOrder+'/'+itemSize"/>
+              </el-form-item>
+              <hr style="border : 0.5px dashed #b3d8ff;" />
+              <div style="color: red;font-size: smaller">{{$t('pleaseAnswerCarefully')}}</div>
+              <el-row class="do-align-center" v-if="order < problemLength">
+            <el-button @click="preSubject" type="warning"  v-if ="preDisable" round>{{$t('lastQuestion')}}</el-button>
+            <el-button @click="nextSubject" type="primary" v-if ="nextDisable" round>{{$t('nextQuestion')}}</el-button>
+          </el-row>
+          <el-row class="do-align-center" v-else>
+            <el-button @click="preSubject" type="warning" v-if ="preDisable" round>{{$t('lastQuestion')}}</el-button>
+            <el-button @click="submitForm" type="primary" :disabled="submitDisable" round>{{$t('submission')}}</el-button>
+          </el-row>
+            </el-card>
+          </el-row>
+        </el-form>
+
+      </el-main>
+    </el-container>
+    <el-row class="do-exam-title footer">
+      <el-col :span="24">
+        <!--<el-popover placement="top" title="棰樼洰鍒楄〃" width="200" trigger="click" ref="popovertag">-->
+          <!--<el-tag type="success" slot="reference">棰樼洰</el-tag>-->
+          <!--<span :key="item.itemOrder" v-for="(item) in answer.answerItems">-->
+             <!--<el-tag :type="questionCompleted(item.completed)" class="do-exam-title-tag"-->
+                     <!--&gt;{{item.itemOrder}}</el-tag>-->
+        <!--</span>-->
+        <!--</el-popover>-->
+        <span class="do-exam-time">
+          <!--<label>{{$t('remainingTime')}}</label>-->
+          <!--<label>{{formatSecondsG(remainTime,$t('hour'),$t('min'),$t('second'))}}</label>-->
+        </span>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, mapGetters, mapMutations } from 'vuex'
+import { formatSeconds, formatSecondsG, formatDate } from '@/utils'
+import QuestionEdit from '../components/QuestionEdit'
+import examPaperApi from '@/api/examPaper'
+import examPaperAnswerApi from '@/api/examPaperAnswer'
+import demographyApi from '@/api/demography'
+
+export default {
+  name: 'personality',
+  components: { QuestionEdit },
+  data () {
+    return {
+      form: {},
+      formLoading: false,
+      answer: {
+        questionId: null,
+        doTime: 0,
+        answerItems: [],
+        verifyStatus: 2
+      },
+      timer: null,
+      problemLength: 0,
+      titleItemsLength: 0,
+      remainTime: 0,
+      titleItemName: '', // 鑰冭瘯绗簩鏍囬
+      itemOrder: '', // 棰樼洰鐨勫簭鍙�
+      questionItem: {}, // 棰樼洰
+      titleItems: [],
+      order: 0,
+      guide: false,
+      answered: [],
+      submitDisable: true,
+      doTime: 0,
+      preDisable: false,
+      nextDisable: false,
+      partOrder: 0,
+      parts: [],
+      guideTitle: '',
+      guideDescirption: '',
+      isCallTain: '',
+      memberName: '',
+      itemSize: '', // 棰樼洰闀垮害
+      startDoDisable: true,
+      ismobile: false
+    }
+  },
+  created: function () {
+    let _this = this
+    _this.ismobile = /ipad|iphone|midp|rv:1.2.3.4|ucweb|android|windows ce|windows mobile/.test(navigator.userAgent.toLowerCase())
+    // 澶氳瑷�
+    _this.setLangFlag(false)
+    _this.form = this.$route.query.formDo
+    if (_this.form !== {} && _this.form !== undefined) {
+      _this.formLoading = true
+      _this.remainTime = _this.form.suggestTime * 60
+      _this.problemLength = _this.form.titleItems[0].questionItems.length - 1
+      _this.titleItemsLength = _this.form.titleItems.length
+      _this.titleItems.push(_this.form.titleItems[0])
+      _this.questionItem = _this.form.titleItems[0].questionItems[0]
+      _this.partOrder = _this.questionItem.partOrder
+      _this.itemOrder = _this.form.titleItems[0].questionItems[0].itemOrder
+      _this.timeReduce()
+      _this.initAnswer()
+      _this.formLoading = false
+      _this.memberName = _this.form.memberName
+      _this.itemSize = _this.form.titleItems[0].questionItems.length
+    } else {
+      _this.formLoading = true
+      // 闃叉鍒锋柊鎴愪簡涓嶅悓鐨勮瑷�
+      demographyApi.queryDemographyParamInfo(_this.memberToken).then(
+        re => {
+          if (re.response[0].langType !== null || re.response[0].langType.trim() !== '') {
+            _this.setLangType(re.response[0].langType)
+          }
+          // 鍔犺浇棰樼洰
+          examPaperApi.select(_this.memberToken, _this.langType).then(re => {
+            _this.form = re.response
+            _this.remainTime = re.response.suggestTime * 60
+            _this.problemLength = _this.form.titleItems[0].questionItems.length - 1
+            _this.titleItemsLength = _this.form.titleItems.length
+            _this.titleItems.push(_this.form.titleItems[0])
+            _this.itemOrder = _this.form.titleItems[0].questionItems[_this.order].itemOrder
+            _this.itemSize = _this.form.titleItems[0].questionItems.length
+            _this.questionItem = _this.form.titleItems[0].questionItems[_this.order]
+            _this.partOrder = _this.questionItem.partOrder
+            _this.initAnswer()
+            _this.formLoading = false
+            _this.memberName = _this.form.memberName
+
+            examPaperApi.selectTokenId(_this.memberToken).then(re => {
+              _this.answered = re.response.examItemOrderAndContentList
+              _this.doTime = re.response.doTime
+              _this.timeReduce()
+
+              if (_this.answered !== null) {
+                _this.answered.forEach(it => {
+                  _this.answer.answerItems[parseInt(it.itemOrder) - 1].content = it.content
+                  _this.answer.answerItems[parseInt(it.itemOrder) - 1].completed = true
+                })
+              }
+
+              for (let i = 0; i < _this.answer.answerItems.length; i++) {
+                if (!_this.answer.answerItems[i].completed || _this.answer.answerItems[i].content === null || _this.answer.answerItems[i].content === '') {
+                  _this.questionItem = _this.form.titleItems[0].questionItems[i]
+                  _this.partOrder = _this.questionItem.partOrder
+                  _this.itemOrder = _this.form.titleItems[0].questionItems[i].itemOrder
+                  _this.order = i
+                  _this.preDisable = true
+                  break
+                }
+
+                if (_this.isForFinish(i)) {
+                  _this.$router.push({ path: '/exam/finish', query: { name: '', content: _this.$t('finishMsg') } })
+                }
+              }
+              // 濡傛灉涓婁竴棰樹笉鏄湰娈碉紝鍒欎笉鑳借繑鍥炰笂涓�娈�
+              if (this.isDiffPartOrder()) {
+                _this.preDisable = false
+              }
+
+              if (this.isDiffPartOrder()) {
+                _this.showNextGuide(re.response.signalObject, false)
+              }
+            }).catch(e => {
+              // _this.$message.error('棰樼洰鏌ヨ寮傚父')
+            })
+          }).catch(e => {
+            _this.$message.info(_this.$t('noquestionMsg'))
+          })
+        }
+      ).catch(e => {
+      })
+    }
+  },
+  mounted () {
+  },
+  beforeDestroy () {
+    window.clearInterval(this.timer)
+  },
+  methods: {
+    formatSeconds (theTime) {
+      return formatSeconds(theTime)
+    },
+    formatSecondsG (theTime, hour, min, second) {
+      return formatSecondsG(theTime, hour, min, second)
+    },
+    formatDate (time, formatsrc) {
+      return formatDate(time, formatsrc)
+    },
+    timeReduce: function () {
+      let _this = this
+      _this.answer.doTime += _this.doTime
+      this.timer = setInterval(function () {
+        if (_this.answer.doTime <= 0) {
+          _this.answer.doTime = 0
+        }
+        ++_this.answer.doTime
+      }, 1000)
+    },
+    questionCompleted (completed) {
+      return this.enumFormat(this.doCompletedTag, completed)
+    },
+    goAnchor (selector) {
+      let _this = this
+      let num = parseInt(selector.substr(10)) - 1
+      this.itemOrder = _this.form.titleItems[0].questionItems[num].itemOrder
+      this.questionItem = _this.form.titleItems[0].questionItems[num]
+      _this.order = num
+      setTimeout(function () {
+        _this.$el.querySelector(selector).scrollIntoView({ behavior: 'instant', block: 'center', inline: 'nearest' })
+      }, 200)
+      _this.$refs['popovertag'].doClose()
+    },
+    initAnswer () {
+      this.answer.id = this.form.id
+      this.answer.questionOrder = this.form.questionOrder
+      let titleItemArray = this.form.titleItems
+      for (let tIndex in titleItemArray) {
+        let questionArray = titleItemArray[tIndex].questionItems
+        for (let qIndex in questionArray) {
+          let question = questionArray[qIndex]
+          this.answer.answerItems.push({ title: question.title, permanentId: question.permanentId, questionId: question.id, content: null, contentArray: [], completed: false, itemOrder: question.itemOrder, lastContent: null, startTime: question.startTime, endTime: question.endTime, partOrder: question.partOrder, questionReport: {}, readOnly: false })
+        }
+      }
+
+      // 鍒濆鍖栧紑濮嬫椂闂达紝璁剧疆绗竴涓椂闂�
+      for (let i = 0; i < this.answer.answerItems.length; i++) {
+        if (this.answer.answerItems[i].startTime == null || this.answer.answerItems[i].startTime.trim() === '') {
+          this.answer.answerItems[i].startTime = this.formatDate(new Date(), 'yyyy-MM-dd hh:mm:ss')
+          break
+        }
+      }
+    },
+    isContentNotEmpty: function (num) {
+      let _this = this
+      return _this.answer.answerItems[num].content !== '' && _this.answer.answerItems[num].content !== null && _this.answer.answerItems[num].content.trim() !== ''
+    },
+    nextQuestion: function (nowPartOrder) {
+      let _this = this
+      let num = ++_this.order
+      _this.itemOrder = _this.form.titleItems[0].questionItems[num].itemOrder
+      // 璺冲埌娌℃湁绛旂殑棰樼洰
+      while (_this.isContentNotEmpty(num) && num !== _this.answer.answerItems.length - 1) {
+        num = ++_this.order
+        this.getEmptySubjct(num)
+      }
+      _this.questionItem = _this.form.titleItems[0].questionItems[num]
+      _this.partOrder = _this.questionItem.partOrder
+      if (_this.partOrder !== nowPartOrder) {
+        _this.isShowGuide(true)
+      }
+      _this.preDisable = true
+      _this.nextDisable = false
+      _this.answer.answerItems[_this.order].startTime = _this.formatDate(new Date(), 'yyyy-MM-dd hh:mm:ss')
+
+      // 濡傛灉鏄渶鍚庝竴涓苟涓斿凡缁忓畬鎴愪簡锛屽氨鎻愪氦
+      if (num === _this.answer.answerItems.length - 1 && _this.isForFinish(num)) {
+        this.submitForm()
+      }
+    },
+    nextQuestionOrder: function (nowPartOrder) {
+      if (this.order < this.problemLength) {
+        this.nextQuestion(nowPartOrder)
+      } else {
+        this.submitDisable = false
+      }
+    },
+    isNextShowGuide: function (nowPartOrder) {
+      let _this = this
+      // 鏈鐨勬瘡涓�棰橀兘鎵撳畬瑕佹寚瀵艰
+      let showGuideFlag = true
+      for (let i = 0; i < _this.answer.answerItems.length; i++) {
+        if (_this.form.titleItems[0].questionItems[i].partOrder === nowPartOrder && !_this.isContentNotEmpty(i)) {
+          showGuideFlag = false
+        }
+      }
+      return showGuideFlag
+    },
+    catThaiSubmit: function (answerSubmit) {
+      answerSubmit.isCallTain = 'CallThai'
+    },
+    getEmptySubjct: function (order) {
+      let _this = this
+      _this.itemOrder = _this.form.titleItems[0].questionItems[order].itemOrder
+      _this.questionItem = _this.form.titleItems[0].questionItems[order]
+      _this.partOrder = _this.questionItem.partOrder
+      _this.preDisable = false
+      _this.answer.answerItems[order].readOnly = false
+      // _this.answer.answerItems[order].content = ''
+      // _this.answer.answerItems[order].completed = false
+      _this.order = order
+    },
+    isNotEmpty (obj) {
+      return obj !== null && obj !== undefined && obj !== ''
+    },
+    isEmpty (obj) {
+      return !this.isNotEmpty(obj)
+    },
+    nextSubject: function () {
+      let _this = this
+      _this.isShowGuide(false)
+      let nowPartOrder = _this.partOrder
+      // 璁剧疆涓婁竴棰樼殑缁撴潫鏃堕棿
+      this.answer.answerItems[_this.order].endTime = _this.formatDate(new Date(), 'yyyy-MM-dd hh:mm:ss')
+      // 寰幆娌℃湁绛旂殑棰樼洰,杩欓噷鍚屾椂鍐冲畾浜嗛棶绛旈鎵撳畬鍙互杩涘叆涓嬩竴棰�
+      for (let i = 0; i < _this.order; i++) {
+        if (!this.isContentNotEmpty(i)) {
+          // 杩斿洖涔嬪墠娌″仛鐨勯偅閬撻
+          this.getEmptySubjct(i)
+          return
+        }
+        // 濡傛灉寰幆鍒版渶鍚庝竴棰樺氨鎻愪氦
+        if (_this.isForFinish(i)) {
+          _this.submitForm()
+          return
+        }
+      }
+
+      // 鍏ㄩ儴绛斿畬浜嗗氨鍙互鎻愪氦浜�,浣嗘槸濡傛灉鏄渶鍚庝竴棰樺氨鑷繁鎻愪氦
+      for (let i = 0; i < _this.answer.answerItems.length; i++) {
+        if (!_this.isContentNotEmpty(i)) {
+          break
+        }
+        if (i === _this.answer.answerItems.length - 1 && _this.order !== _this.answer.answerItems.length - 1) {
+          _this.submitForm()
+          return
+        }
+      }
+      this.answer.answerItems[_this.order].readOnly = true
+      let answerSubmit = _this.getSubmitAnswerValue(nowPartOrder)
+      // 宸茬粡绛斿埌浜嗘渶鍚庝竴棰樹簡,涓嶇敤鑷姩璺冲埌涓嬩竴棰�
+      if (this.order + 1 > this.problemLength) {
+        this.submitDisable = false
+        return
+      }
+      // 濡傛灉鏄渶鍚庝竴棰樺氨涓婇潰鎻愪氦浜嗭紝涓嶄細璧板埌杩欓噷
+      let loading = null
+      if (this.isNextShowGuide(nowPartOrder)) {
+        this.catThaiSubmit(answerSubmit)
+        loading = _this.$loading({
+          lock: false,
+          text: _this.$t('nextPartInfo'),
+          spinner: 'el-icon-loading'
+        })
+      }
+      examPaperAnswerApi.answerSubmit(answerSubmit, _this.memberToken).then(re => {
+        if (_this.isNotEmpty(loading)) {
+          loading.close()
+        }
+        if (re.code !== 1) {
+          _this.$message.error(re.message)
+          throw (re.message)
+        }
+
+        // 灞曠ず鎸囧璇�
+        if (this.isNextShowGuide(nowPartOrder)) {
+          // 灞曠ず鎸囧璇�
+          _this.showNextGuide(re.response.signalObject, true)
+        } else {
+          this.nextQuestionOrder(nowPartOrder)
+        }
+      }).catch(e => {
+        if (_this.isNotEmpty(loading)) {
+          loading.close()
+        }
+        _this.reloadPage(e)
+      })
+    },
+    getSubmitAnswerValue (nowPartOrder) {
+      let _this = this
+      let answerSubmit = JSON.parse(JSON.stringify(_this.answer))
+      answerSubmit.answerItems.forEach(answerItem => {
+        // 棰樼洰鎶ヨ〃锛屽鏋滄病鏈夌粨鏉熸椂闂达紝寮�濮嬫椂闂翠篃涓嶉渶瑕�
+        if (answerItem.endTime == null || answerItem.endTime === '') {
+          answerItem.startTime = ''
+        }
+        answerItem.questionReport = { questionOrder: answerItem.questionId, questionTitle: answerItem.title, permanentId: answerItem.permanentId, startTime: answerItem.startTime, endTime: answerItem.endTime, langType: _this.langType, partOrder: answerItem.partOrder, answer: answerItem.content }
+      })
+      answerSubmit.langType = _this.langType
+      answerSubmit.isCallTain = _this.isCallTain
+      answerSubmit.partOrder = nowPartOrder
+      answerSubmit.itemOrder = _this.itemOrder
+      return answerSubmit
+    },
+    preSubject () {
+      let _this = this
+      _this.isShowGuide(false)
+      if (_this.order > 0) {
+        let num = --_this.order
+        _this.itemOrder = _this.form.titleItems[0].questionItems[num].itemOrder
+        _this.questionItem = _this.form.titleItems[0].questionItems[num]
+        _this.partOrder = _this.questionItem.partOrder
+        _this.preDisable = false
+        _this.nextDisable = true
+        _this.answer.answerItems[_this.order].readOnly = false
+      }
+    },
+    submitForm () {
+      let _this = this
+      _this.submitDisable = true
+      window.clearInterval(_this.timer)
+      _this.formLoading = true
+      let unFinish = false
+      for (let i = 0; i < _this.answer.answerItems.length; i++) {
+        if (_this.answer.answerItems[i].content === null) {
+          unFinish = true
+          _this.answer.finish = 0
+        }
+      }
+      if (unFinish) {
+        // 鐩存帴鍋滅暀鍦ㄦ病鏈夋墦瀹岀殑棰樼洰
+        for (let i = 0; i < _this.answer.answerItems.length; i++) {
+          if (!_this.isContentNotEmpty(i)) {
+            _this.questionItem = _this.form.titleItems[0].questionItems[i]
+            _this.partOrder = _this.questionItem.partOrder
+            _this.itemOrder = _this.form.titleItems[0].questionItems[i].itemOrder
+            _this.order = i
+            _this.preDisable = true
+            break
+          }
+          _this.formLoading = false
+          _this.submitDisable = false
+        }
+      } else {
+        _this.answer.verifyStatus = 1
+        _this.answer.finish = 1
+        _this.submitAnswer(_this.$t('finishSubmit'))
+      }
+    },
+    startDo: function () {
+      let _this = this
+      _this.guide = false
+      _this.isCallTain = ''
+    },
+    submitAnswer: function (mess) {
+      let _this = this
+      this.answer.answerItems[_this.order].endTime = this.formatDate(new Date(), 'yyyy-MM-dd hh:mm:ss')
+      // 鎻愪氦涔嬪墠鎻愪氦鏈�鍚庝竴娈�
+      let answerSubmit = _this.getSubmitAnswerValue(_this.partOrder)
+      _this.catThaiSubmit(answerSubmit)
+      let loading = _this.$loading({
+        lock: false,
+        text: _this.$t('uploadInfo'),
+        spinner: 'el-icon-loading'
+      })
+      examPaperAnswerApi.answerSubmit(answerSubmit, _this.memberToken).then(re => {
+        loading.close()
+        if (re.code === 1) {
+          _this.$router.push({ path: '/exam/finish', query: { name: _this.form.name, content: mess } })
+        } else {
+          _this.$message.error(re.message + '/exam/finish')
+        }
+        _this.formLoading = false
+      }).catch(e => {
+        _this.reloadPage(e)
+        loading.close()
+      })
+    },
+    showNextGuide: function (signalObject, nextQuestion) {
+      let _this = this
+      _this.guideDescirption = signalObject.signalDescription
+      if (_this.guideDescirption !== null && _this.guideDescirption !== undefined && _this.guideDescirption !== '') {
+        _this.isShowGuide(true)
+        _this.preDisable = false
+      } else {
+        throw (signalObject.message)
+      }
+      if (Object.keys(_this.guideDescirption).length === 0) {
+        _this.isShowGuide(false)
+        _this.preDisable = false
+      }
+      _this.startDoDisable = false
+      if (!nextQuestion) {
+        return
+      }
+      _this.nextQuestionOrder()
+    },
+    isNull: function (obj) {
+      return obj === null || obj === undefined
+    },
+    isShowGuide (flag) {
+      let _this = this
+      _this.guide = flag
+      // _this.isCallTain = flag ? 'callTain' : ''
+    },
+    reloadPage (e) {
+      let _this = this
+      let mes = ''
+      if (e.message !== null && e.message !== undefined && e.message.indexOf('timeout') !== -1) {
+        mes = _this.$t('submitTimeout') + ',' + 'order:' + _this.order + ',' + e.message// 鎻愪氦鍚庡彴瓒呮椂
+      } else {
+        mes = JSON.stringify(e) + ',' + 'order:' + _this.order + ',' + e.message
+      }
+      // 璋冭瘯鐢�
+      // _this.$router.push({ path: '/exam/exception', query: { name: _this.form.name, content: _this.$t('submitExceptionInfo') + '<br>' + mes } })
+      _this.$router.push({ path: '/exam/exception', query: { name: _this.form.name, content: _this.$t('submitExceptionInfo') } })
+      _this.formLoading = false
+      _this.submitDisable = false
+    },
+    isForFinish (i) {
+      return i === this.answer.answerItems.length - 1 && (this.answer.answerItems[i].content !== null && this.answer.answerItems[i].content !== '')
+    },
+    isDiffPartOrder: function () {
+      let _this = this
+      return _this.form.titleItems[0].questionItems[_this.order].partOrder !== _this.form.titleItems[0].questionItems[_this.order - 1].partOrder
+    },
+    ...mapMutations('user', ['setLangType']),
+    ...mapMutations('user', ['setLangFlag'])
+  },
+  computed: {
+    ...mapGetters('enumItem', ['enumFormat']),
+    ...mapState('enumItem', { doCompletedTag: state => state.exam.question.answer.doCompletedTag }),
+    ...mapState('user', { memberToken: state => state.memberToken }),
+    ...mapState('user', { langType: state => state.langType }),
+    ...mapState('user', { langFlag: state => state.langFlag }),
+    ...mapState('exam', { doUrl: state => state.doUrl })
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+  .align-center {
+    text-align: center;
+  }
+
+  .exam-question-item {
+    padding: 10px;
+    font-size: large;
+
+    .el-form-item__label {
+      font-size: large !important;
+    }
+  }
+
+  .question-title-padding {
+    padding-left: 25px;
+    padding-right: 25px;
+  }
+  .footer {
+    position: absolute;
+    position: fixed;
+    z-index: 1000;
+    bottom: 0px;
+  }
+</style>
diff --git a/src/views/exam/paper/read.vue b/src/views/exam/paper/read.vue
new file mode 100644
index 0000000..35ebcaf
--- /dev/null
+++ b/src/views/exam/paper/read.vue
@@ -0,0 +1,111 @@
+<template>
+<div>
+  <el-row  class="do-exam-title" style="background-color: #F5F5DC">
+    <el-col :span="24">
+        <span :key="item.itemOrder"  v-for="item in answer.answerItems">
+             <el-tag :type="questionDoRightTag(item.doRight)" class="do-exam-title-tag" @click="goAnchor('#question-'+item.itemOrder)">{{item.itemOrder}}</el-tag>
+        </span>
+    </el-col>
+  </el-row>
+  <el-row  class="do-exam-title-hidden">
+    <el-col :span="24">
+        <span :key="item.itemOrder"  v-for="item in answer.answerItems">
+             <el-tag  class="do-exam-title-tag" >{{item.itemOrder}}</el-tag>
+        </span>
+    </el-col>
+  </el-row>
+  <el-container  class="app-item-contain">
+    <el-header class="align-center">
+      <h1>{{form.name}}</h1>
+      <div>
+        <span class="question-title-padding">璇曞嵎寰楀垎锛歿{answer.score}}</span>
+        <span class="question-title-padding">璇曞嵎鑰楁椂锛歿{formatSeconds(answer.doTime)}}</span>
+      </div>
+    </el-header>
+    <el-main>
+      <el-form :model="form" ref="form" v-loading="formLoading" label-width="100px">
+        <el-row :key="index"  v-for="(titleItem,index) in form.titleItems">
+          <h3>{{titleItem.name}}</h3>
+          <el-card class="exampaper-item-box" v-if="titleItem.questionItems.length!==0">
+            <el-form-item :key="questionItem.itemOrder" :label="questionItem.itemOrder+'.'"
+                          v-for="questionItem in titleItem.questionItems"
+                          class="exam-question-item"  label-width="50px" :id="'question-'+ questionItem.itemOrder">
+              <QuestionAnswerShow :qType="questionItem.questionType" :question="questionItem"  :answer="answer.answerItems[questionItem.itemOrder-1]"/>
+            </el-form-item>
+          </el-card>
+        </el-row>
+      </el-form>
+    </el-main>
+  </el-container>
+</div>
+</template>
+
+<script>
+import { mapState, mapGetters } from 'vuex'
+import { formatSeconds } from '@/utils'
+import QuestionAnswerShow from '../components/QuestionAnswerShow'
+import examPaperAnswerApi from '@/api/examPaperAnswer'
+export default {
+  components: { QuestionAnswerShow },
+  data () {
+    return {
+      form: {},
+      formLoading: false,
+      answer: {
+        id: null,
+        score: 0,
+        doTime: 0,
+        answerItems: [],
+        doRight: false
+      }
+    }
+  },
+  created () {
+    let id = this.$route.query.id
+    let _this = this
+    if (id && parseInt(id) !== 0) {
+      _this.formLoading = true
+      examPaperAnswerApi.read(id).then(re => {
+        _this.form = re.response.paper
+        _this.answer = re.response.answer
+        _this.formLoading = false
+      })
+    }
+  },
+  methods: {
+    formatSeconds (theTime) {
+      return formatSeconds(theTime)
+    },
+    questionDoRightTag (status) {
+      return this.enumFormat(this.doRightTag, status)
+    },
+    goAnchor (selector) {
+      this.$el.querySelector(selector).scrollIntoView({ behavior: 'instant', block: 'center', inline: 'nearest' })
+    }
+  },
+  computed: {
+    ...mapGetters('enumItem', ['enumFormat']),
+    ...mapState('enumItem', {
+      doRightTag: state => state.exam.question.answer.doRightTag
+    })
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+  .align-center {
+    text-align: center
+  }
+
+  .exam-question-item{
+    padding: 10px;
+    .el-form-item__label{
+      font-size: 15px !important;
+    }
+  }
+
+  .question-title-padding{
+    padding-left: 25px;
+    padding-right: 25px;
+  }
+</style>
diff --git a/src/views/paper/index.vue b/src/views/paper/index.vue
new file mode 100644
index 0000000..b300e6a
--- /dev/null
+++ b/src/views/paper/index.vue
@@ -0,0 +1,90 @@
+<template>
+  <div style="margin-top: 10px" class="app-contain">
+    <el-tabs tab-position="left"  v-model="tabId"  @tab-click="subjectChange" >
+      <el-tab-pane :label="item.name"  :key="item.id" :name="item.id" v-for="item in subjectList" style="margin-left: 20px;" >
+        <el-row  style="float: right">
+          <el-radio-group v-model="queryParam.paperType" size="mini" @change="paperTypeChange" >
+            <el-radio v-for="item in paperTypeEnum" size="mini" :key="item.key" :label="item.key">{{item.value}}</el-radio>
+          </el-radio-group>
+        </el-row>
+        <el-table v-loading="listLoading" :data="tableData" fit highlight-current-row style="width: 100%">
+          <el-table-column prop="id" label="搴忓彿" width="90px"/>
+          <el-table-column prop="name" label="鍚嶇О"  />
+          <el-table-column align="right">
+            <template slot-scope="{row}">
+              <router-link target="_blank" :to="{path:'/exam/do',query:{id:row.id}}">
+                <el-button  type="text" size="small">寮�濮嬬瓟棰�</el-button>
+              </router-link>
+            </template>
+          </el-table-column>
+        </el-table>
+        <pagination v-show="total>0" :total="total" :background="false" :page.sync="queryParam.pageIndex" :limit.sync="queryParam.pageSize"
+                    @pagination="search" style="margin-top: 20px"/>
+      </el-tab-pane>
+    </el-tabs>
+
+  </div>
+</template>
+
+<script>
+import { mapState } from 'vuex'
+import Pagination from '@/components/Pagination'
+import examPaperApi from '@/api/examPaper'
+import subjectApi from '@/api/subject'
+
+export default {
+  components: { Pagination },
+  data () {
+    return {
+      queryParam: {
+        paperType: 1,
+        subjectId: 0,
+        pageIndex: 1,
+        pageSize: 10
+      },
+      tabId: '',
+      listLoading: true,
+      subjectList: [],
+      tableData: [],
+      total: 0
+    }
+  },
+  created () {
+    this.initSubject()
+  },
+  methods: {
+    initSubject () {
+      let _this = this
+      subjectApi.list().then(re => {
+        _this.subjectList = re.response
+        let subjectId = _this.subjectList[0].id
+        _this.queryParam.subjectId = subjectId
+        _this.tabId = subjectId.toString()
+        _this.search()
+      })
+    },
+    search () {
+      this.listLoading = true
+      examPaperApi.pageList(this.queryParam).then(data => {
+        const re = data.response
+        this.tableData = re.list
+        this.total = re.total
+        this.queryParam.pageIndex = re.pageNum
+        this.listLoading = false
+      })
+    },
+    paperTypeChange (val) {
+      this.search()
+    },
+    subjectChange (tab, event) {
+      this.queryParam.subjectId = Number(this.tabId)
+      this.search()
+    }
+  },
+  computed: {
+    ...mapState('enumItem', {
+      paperTypeEnum: state => state.exam.examPaper.paperTypeEnum
+    })
+  }
+}
+</script>
diff --git a/src/views/question-error/index.vue b/src/views/question-error/index.vue
new file mode 100644
index 0000000..7e1a4ba
--- /dev/null
+++ b/src/views/question-error/index.vue
@@ -0,0 +1,99 @@
+<template>
+  <div style="margin-top: 10px" class="app-contain">
+    <el-row :gutter="50">
+      <el-col :span="14">
+        <el-table v-loading="listLoading" :data="tableData" fit highlight-current-row style="width: 100%" @row-click="itemSelect">
+          <el-table-column prop="shortTitle" label="棰樺共"  show-overflow-tooltip />
+          <el-table-column prop="questionType" label="棰樺瀷"  :formatter="questionTypeFormatter" width="70" />
+          <el-table-column prop="subjectName" label="瀛︾"  width="50" />
+          <el-table-column prop="createTime" label="鍋氶鏃堕棿"  width="170" />
+        </el-table>
+        <pagination v-show="total>0" :total="total" :background="false" :page.sync="queryParam.pageIndex" :limit.sync="queryParam.pageSize"
+                    @pagination="search" style="margin-top: 20px"/>
+      </el-col>
+      <el-col  :span="10" >
+        <el-card  class="record-answer-info">
+          <el-form>
+            <el-form-item>
+              <QuestionAnswerShow :qType="selectItem.questionType" :qLoading="qAnswerLoading" :question="selectItem.questionItem"  :answer="selectItem.answerItem"/>
+            </el-form-item>
+          </el-form>
+        </el-card>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, mapGetters } from 'vuex'
+import Pagination from '@/components/Pagination'
+import questionAnswerApi from '@/api/questionAnswer'
+import QuestionAnswerShow from '../exam/components/QuestionAnswerShow'
+
+export default {
+  components: { Pagination, QuestionAnswerShow },
+  data () {
+    return {
+      queryParam: {
+        pageIndex: 1,
+        pageSize: 10
+      },
+      listLoading: false,
+      tableData: [],
+      total: 0,
+      qAnswerLoading: false,
+      selectItem: {
+        questionType: 0,
+        questionItem: null,
+        answerItem: null
+      }
+    }
+  },
+  created () {
+    this.search()
+  },
+  methods: {
+    search () {
+      this.listLoading = true
+      let _this = this
+      questionAnswerApi.pageList(this.queryParam).then(data => {
+        const re = data.response
+        _this.tableData = re.list
+        _this.total = re.total
+        _this.queryParam.pageIndex = re.pageNum
+        _this.listLoading = false
+        if (re.list.length !== 0) {
+          _this.qAnswerShow(re.list[0].id)
+        }
+      })
+    },
+    itemSelect (row, column, event) {
+      this.qAnswerShow(row.id)
+    },
+    qAnswerShow (id) {
+      let _this = this
+      this.qAnswerLoading = true
+      questionAnswerApi.select(id).then(re => {
+        let response = re.response
+        _this.selectItem.questionType = response.questionVM.questionType
+        _this.selectItem.questionItem = response.questionVM
+        _this.selectItem.answerItem = response.questionAnswerVM
+        _this.qAnswerLoading = false
+      })
+    },
+    questionTypeFormatter (row, column, cellValue, index) {
+      return this.enumFormat(this.questionTypeEnum, cellValue)
+    }
+  },
+  computed: {
+    ...mapGetters('enumItem', ['enumFormat']),
+    ...mapState('enumItem', {
+      questionTypeEnum: state => state.exam.question.typeEnum
+    })
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+
+</style>
diff --git a/src/views/record/index.vue b/src/views/record/index.vue
new file mode 100644
index 0000000..54e11a1
--- /dev/null
+++ b/src/views/record/index.vue
@@ -0,0 +1,125 @@
+<template>
+  <div style="margin-top: 10px" class="app-contain">
+     <el-row :gutter="50">
+       <el-col :span="18">
+         <el-table v-loading="listLoading" :data="tableData" fit highlight-current-row style="width: 100%" @row-click="itemSelect">
+           <el-table-column prop="id" label="搴忓彿" width="90px"/>
+           <el-table-column prop="paperName" label="鍚嶇О"  />
+           <el-table-column prop="subjectName" label="瀛︾"  width="70" />
+           <el-table-column label="鐘舵��" prop="status" width="100px">
+             <template slot-scope="{row}">
+               <el-tag :type="statusTagFormatter(row.status)">
+                 {{ statusTextFormatter(row.status) }}
+               </el-tag>
+             </template>
+           </el-table-column>
+           <el-table-column prop="createTime" label="鍋氶鏃堕棿"  width="170" />
+           <el-table-column  align="right" width="70">
+             <template slot-scope="{row}">
+               <router-link target="_blank" :to="{path:'/edit',query:{id:row.id}}" v-if="row.status === 1 ">
+                 <el-button  type="text" size="small">鎵规敼</el-button>
+               </router-link>
+               <router-link target="_blank" :to="{path:'/read',query:{id:row.id}}" v-if="row.status === 2 ">
+                 <el-button  type="text" size="small">鏌ョ湅璇曞嵎</el-button>
+               </router-link>
+             </template>
+           </el-table-column>
+         </el-table>
+         <pagination v-show="total>0" :total="total" :background="false" :page.sync="queryParam.pageIndex" :limit.sync="queryParam.pageSize"
+                     @pagination="search" style="margin-top: 20px"/>
+       </el-col>
+       <el-col  :span="6" >
+         <el-card  class="record-answer-info">
+            <el-form label-width="50%" >
+              <el-form-item label="绯荤粺鍒ゅ垎锛�">
+                <span>{{selectItem.systemScore}}</span>
+              </el-form-item>
+              <el-form-item label="鏈�缁堝緱鍒嗭細">
+                <span>{{selectItem.userScore}}</span>
+              </el-form-item>
+              <el-form-item label="璇曞嵎鎬诲垎锛�">
+                <span>{{selectItem.paperScore}}</span>
+              </el-form-item>
+              <el-form-item label="姝g‘棰樻暟锛�">
+                <span>{{selectItem.questionCorrect}}</span>
+              </el-form-item>
+              <el-form-item label="鎬婚鏁帮細">
+                <span>{{selectItem.questionCount}}</span>
+              </el-form-item>
+              <el-form-item label="鐢ㄦ椂锛�">
+                <span>{{selectItem.doTime}}</span>
+              </el-form-item>
+            </el-form>
+         </el-card>
+       </el-col>
+     </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, mapGetters } from 'vuex'
+import Pagination from '@/components/Pagination'
+import examPaperAnswerApi from '@/api/examPaperAnswer'
+import { scrollTo } from '@/utils/scroll-to'
+export default {
+  components: { Pagination },
+  data () {
+    return {
+      queryParam: {
+        pageIndex: 1,
+        pageSize: 10
+      },
+      listLoading: false,
+      tableData: [],
+      total: 0,
+      selectItem: {
+        systemScore: '0',
+        userScore: '0',
+        doTime: '0',
+        paperScore: '0',
+        questionCorrect: 0,
+        questionCount: 0
+      }
+    }
+  },
+  created () {
+    this.search()
+    scrollTo(0, 800)
+  },
+  methods: {
+    search () {
+      this.listLoading = true
+      let _this = this
+      examPaperAnswerApi.pageList(this.queryParam).then(data => {
+        const re = data.response
+        _this.tableData = re.list
+        _this.total = re.total
+        _this.queryParam.pageIndex = re.pageNum
+        _this.listLoading = false
+      })
+    },
+    itemSelect (row, column, event) {
+      this.selectItem = row
+    },
+    statusTagFormatter (status) {
+      return this.enumFormat(this.statusTag, status)
+    },
+    statusTextFormatter (status) {
+      return this.enumFormat(this.statusEnum, status)
+    }
+  },
+  computed: {
+    ...mapGetters('enumItem', [
+      'enumFormat'
+    ]),
+    ...mapState('enumItem', {
+      statusEnum: state => state.exam.examPaperAnswer.statusEnum,
+      statusTag: state => state.exam.examPaperAnswer.statusTag
+    })
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+
+</style>
diff --git a/vue.config.js b/vue.config.js
new file mode 100644
index 0000000..84c0d8f
--- /dev/null
+++ b/vue.config.js
@@ -0,0 +1,55 @@
+'use strict'
+const path = require('path')
+
+function resolve (dir) {
+  return path.join(__dirname, dir)
+}
+
+module.exports = {
+  publicPath: './',
+  outputDir: 'dist',
+  assetsDir: 'static',
+  lintOnSave: true,
+  productionSourceMap: false,
+  devServer: {
+    open: true,
+    host: 'localhost',
+    port: 82,
+    https: false,
+    hotOnly: false,
+    proxy: {
+      '/': {
+        target: 'http://127.0.0.1:8090',
+        changeOrigin: true
+      }
+    }
+  },
+  configureWebpack: {
+    devtool: 'source-map'
+  },
+  pages: {
+    index: {
+      entry: 'src/main.js',
+      template: 'public/index.html',
+      filename: 'index.html'
+    }
+  },
+  chainWebpack (config) {
+    // set svg-sprite-loader
+    config.module
+      .rule('svg')
+      .exclude.add(resolve('src/icons'))
+      .end()
+    config.module
+      .rule('icons')
+      .test(/\.svg$/)
+      .include.add(resolve('src/icons'))
+      .end()
+      .use('svg-sprite-loader')
+      .loader('svg-sprite-loader')
+      .options({
+        symbolId: 'icon-[name]'
+      })
+      .end()
+  }
+}

--
Gitblit v1.9.1