Repository: vuejs/eslint-plugin-vue
Pull request #512 (2018-07-06 00:43:20)

add missing urls


Patch:
diff --git a/.gitignore b/.gitignore
index 165f7657..1828a214 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,4 @@
 /node_modules
 /test.*
 yarn.lock
+yarn-error.log
diff --git a/README.md b/README.md
index 015e2922..0c46adab 100644
--- a/README.md
+++ b/README.md
@@ -45,6 +45,17 @@ module.exports = {
 }
 ```
 
+### Single File Components
+
+ESLint only targets `.js` files by default. You must include the `.vue` extension using [the `--ext` option](https://eslint.org/docs/user-guide/configuring#specifying-file-extensions-to-lint) or a glob pattern.
+
+Examples:
+
+```bash
+eslint --ext .js,.vue src
+eslint src/**/*.{js,vue}
+```
+
 ### Attention
 
 All component-related rules are being applied to code that passes any of the following checks:
@@ -140,6 +151,7 @@ Enforce all the rules in this category, as well as all higher priority rules, wi
 |  | [vue/no-template-key](./docs/rules/no-template-key.md) | disallow `key` attribute on `<template>` |
 |  | [vue/no-textarea-mustache](./docs/rules/no-textarea-mustache.md) | disallow mustaches in `<textarea>` |
 |  | [vue/no-unused-vars](./docs/rules/no-unused-vars.md) | disallow unused variable definitions of v-for directives or scope attributes |
+|  | [vue/no-use-v-if-with-v-for](./docs/rules/no-use-v-if-with-v-for.md) | disallow use v-if on the same element as v-for. |
 |  | [vue/require-component-is](./docs/rules/require-component-is.md) | require `v-bind:is` of `<component>` elements |
 |  | [vue/require-render-return](./docs/rules/require-render-return.md) | enforce render function to always return value |
 |  | [vue/require-v-for-key](./docs/rules/require-v-for-key.md) | require `v-bind:key` with `v-for` directives |
@@ -251,7 +263,7 @@ The `vue-eslint-parser` uses the parser which is set by `parserOptions.parser` t
 
 2. Make sure your tool is set to lint `.vue` files.
   - CLI targets only `.js` files by default. You have to specify additional extensions by `--ext` option or glob patterns. E.g. `eslint "src/**/*.{js,vue}"` or `eslint src --ext .vue`.
-  - VSCode targets only JavaScript or HTML files by default. You have to add `{"autoFix": true, "language": "vue"}` into `eslint.validate` entry.
+  - VSCode targets only JavaScript or HTML files by default. You have to add `"vue"` to the `"eslint.validate"` array in vscode settings. e.g. `"eslint.validate": [ "javascript", "javascriptreact", "vue" ]`
 
 ## :anchor: Semantic Versioning Policy
 
diff --git a/docs/rules/html-closing-bracket-newline.md b/docs/rules/html-closing-bracket-newline.md
index 4d2e9aed..889b6ddf 100644
--- a/docs/rules/html-closing-bracket-newline.md
+++ b/docs/rules/html-closing-bracket-newline.md
@@ -22,7 +22,7 @@ This rule enforces a line break (or no line break) before tag's closing brackets
 
 ```json
 {
-    "html-closing-bracket-newline": ["error", {
+    "vue/html-closing-bracket-newline": ["error", {
         "singleline": "never",
         "multiline": "never"
     }]
diff --git a/docs/rules/html-closing-bracket-spacing.md b/docs/rules/html-closing-bracket-spacing.md
index 4e92f547..0316f2b9 100644
--- a/docs/rules/html-closing-bracket-spacing.md
+++ b/docs/rules/html-closing-bracket-spacing.md
@@ -15,7 +15,7 @@ This rule has options.
 
 ```json
 {
-    "html-closing-bracket-spacing": ["error", {
+    "vue/html-closing-bracket-spacing": ["error", {
         "startTag": "always" | "never",
         "endTag": "always" | "never",
         "selfClosingTag": "always" | "never"
diff --git a/docs/rules/no-side-effects-in-computed-properties.md b/docs/rules/no-side-effects-in-computed-properties.md
index 36066d82..e8966625 100644
--- a/docs/rules/no-side-effects-in-computed-properties.md
+++ b/docs/rules/no-side-effects-in-computed-properties.md
@@ -16,7 +16,7 @@ computed: {
     return `${this.firstName} ${this.lastName}`
   },
   reversedArray () {
-    return this.array.reverse() // <- side effect
+    return this.array.reverse() // <- side effect - orginal array is being mutated
   }
 }
 ```
@@ -29,7 +29,7 @@ computed: {
     return `${this.firstName} ${this.lastName}`
   },
   reversedArray () {
-    return this.array.slice(0).reverse()
+    return this.array.slice(0).reverse() // .slice makes a copy of the array, instead of mutating the orginal
   }
 }
 ```
diff --git a/docs/rules/no-use-v-if-with-v-for.md b/docs/rules/no-use-v-if-with-v-for.md
new file mode 100644
index 00000000..cbe33005
--- /dev/null
+++ b/docs/rules/no-use-v-if-with-v-for.md
@@ -0,0 +1,98 @@
+# disallow use v-if on the same element as v-for. (vue/no-use-v-if-with-v-for)
+
+> Never use `v-if` on the same element as `v-for`.
+>
+> There are two common cases where this can be tempting:
+>
+> * To filter items in a list (e.g. `v-for="user in users" v-if="user.isActive"`). In these cases, replace `users` with a new computed property that returns your filtered list (e.g. `activeUsers`).
+>
+> * To avoid rendering a list if it should be hidden (e.g. `v-for="user in users" v-if="shouldShowUsers"`). In these cases, move the `v-if` to a container element (e.g. `ul`, `ol`).
+>
+> https://vuejs.org/v2/style-guide/#Avoid-v-if-with-v-for-essential
+
+
+## :book: Rule Details
+
+:-1: Examples of **incorrect** code for this rule:
+
+```html
+<TodoItem
+  v-if="complete"
+  v-for="todo in todos"
+  :todo="todo"
+/>
+```
+
+In this case, the `v-if` should be written on the wrapper element.
+
+
+```html
+<TodoItem
+  v-for="todo in todos"
+  v-if="todo.shown"
+  :todo="todo"
+/>
+```
+
+In this case, the `v-for` list variable should be replace with a computed property that returns your filtered list.
+
+
+:+1: Examples of **correct** code for this rule:
+
+
+```html
+<ul v-if="complete">
+  <TodoItem
+    v-for="todo in todos"
+    :todo="todo"
+  />
+</ul>
+```
+
+
+
+```html
+<TodoItem
+  v-for="todo in shownTodos"
+  :todo="todo"
+/>
+```
+
+```js
+computed: {
+  shownTodos() {
+    return this.todos.filter((todo) => todo.shown)
+  }
+}
+```
+
+## :wrench: Options
+
+`allowUsingIterationVar` - Enables The `v-if` directive use the reference which is to the variables which are defined by the `v-for` directives.
+
+```js
+'vue/no-use-v-if-with-v-for': ['error', {
+  allowUsingIterationVar: true // default: false
+}]
+```
+
+:+1: Examples of additional **correct** code for this rule with sample `"allowUsingIterationVar": true` options:
+
+```html
+<TodoItem
+  v-for="todo in todos"
+  v-if="todo.shown"
+  :todo="todo"
+/>
+```
+
+:-1: Examples of additional **incorrect** code for this rule with sample `"allowUsingIterationVar": true` options:
+
+```html
+<TodoItem
+  v-if="complete"
+  v-for="todo in todos"
+  :todo="todo"
+/>
+```
+
diff --git a/lib/index.js b/lib/index.js
index d96fd38e..008a3c4d 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -32,6 +32,7 @@ module.exports = {
     'no-template-key': require('./rules/no-template-key'),
     'no-textarea-mustache': require('./rules/no-textarea-mustache'),
     'no-unused-vars': require('./rules/no-unused-vars'),
+    'no-use-v-if-with-v-for': require('./rules/no-use-v-if-with-v-for'),
     'order-in-components': require('./rules/order-in-components'),
     'prop-name-casing': require('./rules/prop-name-casing'),
     'require-component-is': require('./rules/require-component-is'),
diff --git a/lib/rules/attributes-order.js b/lib/rules/attributes-order.js
index 0ae63b95..04a5f771 100644
--- a/lib/rules/attributes-order.js
+++ b/lib/rules/attributes-order.js
@@ -108,7 +108,8 @@ module.exports = {
   meta: {
     docs: {
       description: 'enforce order of attributes',
-      category: 'recommended'
+      category: 'recommended',
+      url: 'https://github.com/vuejs/eslint-plugin-vue/blob/v4.5.0/docs/rules/attributes-order.md'
     },
     fixable: 'code',
     schema: {
diff --git a/lib/rules/no-side-effects-in-computed-properties.js b/lib/rules/no-side-effects-in-computed-properties.js
index 149abac5..9ef2d8b7 100644
--- a/lib/rules/no-side-effects-in-computed-properties.js
+++ b/lib/rules/no-side-effects-in-computed-properties.js
@@ -41,7 +41,7 @@ module.exports = {
         },
         // this.xxx.func()
         'CallExpression' (node) {
-          const code = context.getSourceCode().getText(node)
+          const code = utils.parseMemberOrCallExpression(node)
           const MUTATION_REGEX = /(this.)((?!(concat|slice|map|filter)\().)[^\)]*((push|pop|shift|unshift|reverse|splice|sort|copyWithin|fill)\()/g
 
           if (MUTATION_REGEX.test(code)) {
diff --git a/lib/rules/no-use-v-if-with-v-for.js b/lib/rules/no-use-v-if-with-v-for.js
new file mode 100644
index 00000000..e76bf824
--- /dev/null
+++ b/lib/rules/no-use-v-if-with-v-for.js
@@ -0,0 +1,99 @@
+/**
+ * @author Yosuke Ota
+ *
+ * issue        https://github.com/vuejs/eslint-plugin-vue/issues/403
+ * Style guide: https://vuejs.org/v2/style-guide/#Avoid-v-if-with-v-for-essential
+ *
+ * I implemented it with reference to `no-confusing-v-for-v-if`
+ */
+'use strict'
+
+// ------------------------------------------------------------------------------
+// Requirements
+// ------------------------------------------------------------------------------
+
+const utils = require('../utils')
+
+// ------------------------------------------------------------------------------
+// Helpers
+// ------------------------------------------------------------------------------
+
+/**
+ * Check whether the given `v-if` node is using the variable which is defined by the `v-for` directive.
+ * @param {ASTNode} vIf The `v-if` attribute node to check.
+ * @returns {boolean} `true` if the `v-if` is using the variable which is defined by the `v-for` directive.
+ */
+function isUsingIterationVar (vIf) {
+  return !!getVForUsingIterationVar(vIf)
+}
+
+function getVForUsingIterationVar (vIf) {
+  const element = vIf.parent.parent
+  for (var i = 0; i < vIf.value.references.length; i++) {
+    const reference = vIf.value.references[i]
+
+    const targetVFor = element.variables.find(variable =>
+      variable.id.name === reference.id.name &&
+      variable.kind === 'v-for'
+    )
+    if (targetVFor) {
+      return targetVFor.id.parent
+    }
+  }
+  return undefined
+}
+
+// ------------------------------------------------------------------------------
+// Rule Definition
+// ------------------------------------------------------------------------------
+
+module.exports = {
+  meta: {
+    docs: {
+      description: 'disallow use v-if on the same element as v-for',
+      category: undefined,
+      url: 'https://github.com/vuejs/eslint-plugin-vue/blob/v4.3.0/docs/rules/no-use-v-if-with-v-for.md'
+    },
+    fixable: null,
+    schema: [{
+      type: 'object',
+      properties: {
+        allowUsingIterationVar: {
+          type: 'boolean'
+        }
+      }
+    }]
+  },
+
+  create (context) {
+    const options = context.options[0] || {}
+    const allowUsingIterationVar = options.allowUsingIterationVar === true // default false
+    return utils.defineTemplateBodyVisitor(context, {
+      "VAttribute[directive=true][key.name='if']" (node) {
+        const element = node.parent.parent
+
+        if (utils.hasDirective(element, 'for')) {
+          if (isUsingIterationVar(node)) {
+            if (!allowUsingIterationVar) {
+              const vFor = getVForUsingIterationVar(node)
+              context.report({
+                node,
+                loc: node.loc,
+                message: "The '{{iteratorName}}' variable inside 'v-for' directive should be replaced with a computed property that returns filtered array instead. You should not mix 'v-for' with 'v-if'.",
+                data: {
+                  iteratorName: vFor.right.name
+                }
+              })
+            }
+          } else {
+            context.report({
+              node,
+              loc: node.loc,
+              message: "This 'v-if' should be moved to the wrapper element."
+            })
+          }
+        }
+      }
+    })
+  }
+}
diff --git a/lib/rules/prop-name-casing.js b/lib/rules/prop-name-casing.js
index 90d9ca2f..a728a6cf 100644
--- a/lib/rules/prop-name-casing.js
+++ b/lib/rules/prop-name-casing.js
@@ -90,7 +90,8 @@ module.exports = {
   meta: {
     docs: {
       description: 'enforce specific casing for the Prop name in Vue components',
-      category: undefined // 'strongly-recommended'
+      category: undefined, // 'strongly-recommended'
+      url: 'https://github.com/vuejs/eslint-plugin-vue/blob/v4.5.0/docs/rules/prop-name-casing.md'
     },
     fixable: 'code',  // null or "code" or "whitespace"
     schema: [
diff --git a/lib/rules/require-default-prop.js b/lib/rules/require-default-prop.js
index 7dfc8f20..339ae08c 100644
--- a/lib/rules/require-default-prop.js
+++ b/lib/rules/require-default-prop.js
@@ -50,7 +50,10 @@ module.exports = {
      */
     function propHasDefault (prop) {
       const propDefaultNode = prop.value.properties
-        .find(p => p.key && p.key.name === 'default')
+        .find(p =>
+          p.key &&
+          (p.key.name === 'default' || p.key.value === 'default')
+        )
 
       return Boolean(propDefaultNode)
     }
diff --git a/lib/utils/index.js b/lib/utils/index.js
index 677fff6b..f45950fc 100644
--- a/lib/utils/index.js
+++ b/lib/utils/index.js
@@ -344,6 +344,7 @@ module.exports = {
         } else if (cp.value.type === 'ObjectExpression') {
           value = cp.value.properties
             .filter(p =>
+              p.type === 'Property' &&
               p.key.type === 'Identifier' &&
               p.key.name === 'get' &&
               p.value.type === 'FunctionExpression'
@@ -617,5 +618,42 @@ module.exports = {
       return
     }
     return body.errors.some(error => typeof error.code === 'string' && error.code.startsWith('eof-'))
+  },
+
+  /**
+   * Parse CallExpression or MemberExpression to get simplified version without arguments
+   *
+   * @param  {Object} node The node to parse (MemberExpression | CallExpression)
+   * @return {String} eg. 'this.asd.qwe().map().filter().test.reduce()'
+   */
+  parseMemberOrCallExpression (node) {
+    const parsedCallee = []
+    let n = node
+    let isFunc
+
+    while (n.type === 'MemberExpression' || n.type === 'CallExpression') {
+      if (n.type === 'CallExpression') {
+        n = n.callee
+        isFunc = true
+      } else {
+        if (n.computed) {
+          parsedCallee.push('[]')
+        } else if (n.property.type === 'Identifier') {
+          parsedCallee.push(n.property.name + (isFunc ? '()' : ''))
+        }
+        isFunc = false
+        n = n.object
+      }
+    }
+
+    if (n.type === 'Identifier') {
+      parsedCallee.push(n.name)
+    }
+
+    if (n.type === 'ThisExpression') {
+      parsedCallee.push('this')
+    }
+
+    return parsedCallee.reverse().join('.').replace(/\.\[/g, '[')
   }
 }
diff --git a/yarn-error.log b/yarn-error.log
deleted file mode 100644
index dee9e1ac..00000000
--- a/yarn-error.log
+++ /dev/null
@@ -1,2168 +0,0 @@
-Arguments: 
-  /Users/michalsnik/.nvm/versions/node/v8.6.0/bin/node /usr/local/Cellar/yarn/1.5.1_1/libexec/bin/yarn.js test
-
-PATH: 
-  /Users/michalsnik/.rvm/gems/ruby-2.4.3/bin:/Users/michalsnik/.rvm/gems/ruby-2.4.3@global/bin:/Users/michalsnik/.rvm/rubies/ruby-2.4.3/bin:/Users/michalsnik/.rbenv/shims:/Users/michalsnik/.nvm/versions/node/v8.6.0/bin:/Users/michalsnik/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Postgres.app/Contents/Versions/latest/bin:/Users/michalsnik/.rbenv/bin:/Users/michalsnik/.rbenv/shims:/usr/local/bin:/usr/local/opt/qt/bin:/Users/michalsnik/.rvm/bin
-
-Yarn version: 
-  1.5.1
-
-Node version: 
-  8.6.0
-
-Platform: 
-  darwin x64
-
-npm manifest: 
-  {
-    "name": "eslint-plugin-vue",
-    "version": "4.4.0",
-    "description": "Official ESLint plugin for Vue.js",
-    "main": "lib/index.js",
-    "scripts": {
-      "start": "npm run test:base -- --watch --growl",
-      "test:base": "mocha \"tests/lib/**/*.js\" --reporter dot",
-      "test": "nyc npm run test:base -- \"tests/integrations/*.js\" --timeout 60000",
-      "lint": "eslint . --rulesdir eslint-internal-rules",
-      "pretest": "npm run lint",
-      "preversion": "npm test && npm run update && git add .",
-      "version": "npm run lint -- --fix && git add .",
-      "update": "node ./tools/update.js"
-    },
-    "files": [
-      "lib"
-    ],
-    "homepage": "https://github.com/vuejs/eslint-plugin-vue#readme",
-    "keywords": [
-      "eslint",
-      "eslint-plugin",
-      "eslint-config",
-      "vue",
-      "vuejs",
-      "rules"
-    ],
-    "author": "Toru Nagashima (https://github.com/mysticatea)",
-    "contributors": [
-      "Michał Sajnóg <msajnog93@gmail.com> (http://github.com/michalsnik)"
-    ],
-    "license": "MIT",
-    "repository": {
-      "type": "git",
-      "url": "git+https://github.com/vuejs/eslint-plugin-vue.git"
-    },
-    "bugs": {
-      "url": "https://github.com/vuejs/eslint-plugin-vue/issues"
-    },
-    "engines": {
-      "node": ">=4"
-    },
-    "peerDependencies": {
-      "eslint": "^3.18.0 || ^4.0.0"
-    },
-    "dependencies": {
-      "vue-eslint-parser": "^2.0.3"
-    },
-    "devDependencies": {
-      "@types/node": "^4.2.16",
-      "babel-eslint": "^8.2.2",
-      "chai": "^4.1.0",
-      "eslint": "^4.14.0",
-      "eslint-plugin-eslint-plugin": "^0.8.0",
-      "eslint-plugin-html": "^4.0.1",
-      "eslint-plugin-vue-libs": "^2.0.0",
-      "lodash": "^4.17.4",
-      "mocha": "^3.2.0",
-      "nyc": "^11.1.0"
-    }
-  }
-
-yarn manifest: 
-  No manifest
-
-Lockfile: 
-  # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-  # yarn lockfile v1
-  
-  
-  "@babel/code-frame@7.0.0-beta.40", "@babel/code-frame@^7.0.0-beta.40":
-    version "7.0.0-beta.40"
-    resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.40.tgz#37e2b0cf7c56026b4b21d3927cadf81adec32ac6"
-    dependencies:
-      "@babel/highlight" "7.0.0-beta.40"
-  
-  "@babel/generator@7.0.0-beta.40":
-    version "7.0.0-beta.40"
-    resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.40.tgz#ab61f9556f4f71dbd1138949c795bb9a21e302ea"
-    dependencies:
-      "@babel/types" "7.0.0-beta.40"
-      jsesc "^2.5.1"
-      lodash "^4.2.0"
-      source-map "^0.5.0"
-      trim-right "^1.0.1"
-  
-  "@babel/helper-function-name@7.0.0-beta.40":
-    version "7.0.0-beta.40"
-    resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.40.tgz#9d033341ab16517f40d43a73f2d81fc431ccd7b6"
-    dependencies:
-      "@babel/helper-get-function-arity" "7.0.0-beta.40"
-      "@babel/template" "7.0.0-beta.40"
-      "@babel/types" "7.0.0-beta.40"
-  
-  "@babel/helper-get-function-arity@7.0.0-beta.40":
-    version "7.0.0-beta.40"
-    resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.40.tgz#ac0419cf067b0ec16453e1274f03878195791c6e"
-    dependencies:
-      "@babel/types" "7.0.0-beta.40"
-  
-  "@babel/highlight@7.0.0-beta.40":
-    version "7.0.0-beta.40"
-    resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.40.tgz#b43d67d76bf46e1d10d227f68cddcd263786b255"
-    dependencies:
-      chalk "^2.0.0"
-      esutils "^2.0.2"
-      js-tokens "^3.0.0"
-  
-  "@babel/template@7.0.0-beta.40":
-    version "7.0.0-beta.40"
-    resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.40.tgz#034988c6424eb5c3268fe6a608626de1f4410fc8"
-    dependencies:
-      "@babel/code-frame" "7.0.0-beta.40"
-      "@babel/types" "7.0.0-beta.40"
-      babylon "7.0.0-beta.40"
-      lodash "^4.2.0"
-  
-  "@babel/traverse@^7.0.0-beta.40":
-    version "7.0.0-beta.40"
-    resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.40.tgz#d140e449b2e093ef9fe1a2eecc28421ffb4e521e"
-    dependencies:
-      "@babel/code-frame" "7.0.0-beta.40"
-      "@babel/generator" "7.0.0-beta.40"
-      "@babel/helper-function-name" "7.0.0-beta.40"
-      "@babel/types" "7.0.0-beta.40"
-      babylon "7.0.0-beta.40"
-      debug "^3.0.1"
-      globals "^11.1.0"
-      invariant "^2.2.0"
-      lodash "^4.2.0"
-  
-  "@babel/types@7.0.0-beta.40", "@babel/types@^7.0.0-beta.40":
-    version "7.0.0-beta.40"
-    resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.40.tgz#25c3d7aae14126abe05fcb098c65a66b6d6b8c14"
-    dependencies:
-      esutils "^2.0.2"
-      lodash "^4.2.0"
-      to-fast-properties "^2.0.0"
-  
-  "@types/node@^4.2.16":
-    version "4.2.23"
-    resolved "https://registry.yarnpkg.com/@types/node/-/node-4.2.23.tgz#9241f00d64eb91084f68367746ef10d5fb2f2fc4"
-  
-  acorn-jsx@^3.0.0:
-    version "3.0.1"
-    resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
-    dependencies:
-      acorn "^3.0.4"
-  
-  acorn@^3.0.4:
-    version "3.3.0"
-    resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
-  
-  acorn@^5.4.0:
-    version "5.4.1"
-    resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.4.1.tgz#fdc58d9d17f4a4e98d102ded826a9b9759125102"
-  
-  ajv-keywords@^3.0.0:
-    version "3.1.0"
-    resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.1.0.tgz#ac2b27939c543e95d2c06e7f7f5c27be4aa543be"
-  
-  ajv@^5.3.0:
-    version "5.5.2"
-    resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965"
-    dependencies:
-      co "^4.6.0"
-      fast-deep-equal "^1.0.0"
-      fast-json-stable-stringify "^2.0.0"
-      json-schema-traverse "^0.3.0"
-  
-  ajv@^6.0.1:
-    version "6.1.1"
-    resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.1.1.tgz#978d597fbc2b7d0e5a5c3ddeb149a682f2abfa0e"
-    dependencies:
-      fast-deep-equal "^1.0.0"
-      fast-json-stable-stringify "^2.0.0"
-      json-schema-traverse "^0.3.0"
-  
-  align-text@^0.1.1, align-text@^0.1.3:
-    version "0.1.4"
-    resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
-    dependencies:
-      kind-of "^3.0.2"
-      longest "^1.0.1"
-      repeat-string "^1.5.2"
-  
-  amdefine@>=0.0.4:
-    version "1.0.1"
-    resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
-  
-  ansi-escapes@^3.0.0:
-    version "3.0.0"
-    resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92"
-  
-  ansi-regex@^2.0.0:
-    version "2.1.1"
-    resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
-  
-  ansi-regex@^3.0.0:
-    version "3.0.0"
-    resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
-  
-  ansi-styles@^2.2.1:
-    version "2.2.1"
-    resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
-  
-  ansi-styles@^3.2.0:
-    version "3.2.0"
-    resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88"
-    dependencies:
-      color-convert "^1.9.0"
-  
-  append-transform@^0.4.0:
-    version "0.4.0"
-    resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991"
-    dependencies:
-      default-require-extensions "^1.0.0"
-  
-  archy@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40"
-  
-  argparse@^1.0.7:
-    version "1.0.10"
-    resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
-    dependencies:
-      sprintf-js "~1.0.2"
-  
-  arr-diff@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
-    dependencies:
-      arr-flatten "^1.0.1"
-  
-  arr-flatten@^1.0.1:
-    version "1.1.0"
-    resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
-  
-  array-union@^1.0.1:
-    version "1.0.2"
-    resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
-    dependencies:
-      array-uniq "^1.0.1"
-  
-  array-uniq@^1.0.1:
-    version "1.0.3"
-    resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
-  
-  array-unique@^0.2.1:
-    version "0.2.1"
-    resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
-  
-  arrify@^1.0.0, arrify@^1.0.1:
-    version "1.0.1"
-    resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
-  
-  assertion-error@^1.0.1:
-    version "1.1.0"
-    resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b"
-  
-  async@^1.4.0:
-    version "1.5.2"
-    resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
-  
-  babel-code-frame@^6.22.0, babel-code-frame@^6.26.0:
-    version "6.26.0"
-    resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
-    dependencies:
-      chalk "^1.1.3"
-      esutils "^2.0.2"
-      js-tokens "^3.0.2"
-  
-  babel-eslint@^8.2.2:
-    version "8.2.2"
-    resolved "http://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.2.tgz#1102273354c6f0b29b4ea28a65f97d122296b68b"
-    dependencies:
-      "@babel/code-frame" "^7.0.0-beta.40"
-      "@babel/traverse" "^7.0.0-beta.40"
-      "@babel/types" "^7.0.0-beta.40"
-      babylon "^7.0.0-beta.40"
-      eslint-scope "~3.7.1"
-      eslint-visitor-keys "^1.0.0"
-  
-  babel-generator@^6.18.0:
-    version "6.26.1"
-    resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90"
-    dependencies:
-      babel-messages "^6.23.0"
-      babel-runtime "^6.26.0"
-      babel-types "^6.26.0"
-      detect-indent "^4.0.0"
-      jsesc "^1.3.0"
-      lodash "^4.17.4"
-      source-map "^0.5.7"
-      trim-right "^1.0.1"
-  
-  babel-messages@^6.23.0:
-    version "6.23.0"
-    resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
-    dependencies:
-      babel-runtime "^6.22.0"
-  
-  babel-runtime@^6.22.0, babel-runtime@^6.26.0:
-    version "6.26.0"
-    resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
-    dependencies:
-      core-js "^2.4.0"
-      regenerator-runtime "^0.11.0"
-  
-  babel-template@^6.16.0:
-    version "6.26.0"
-    resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02"
-    dependencies:
-      babel-runtime "^6.26.0"
-      babel-traverse "^6.26.0"
-      babel-types "^6.26.0"
-      babylon "^6.18.0"
-      lodash "^4.17.4"
-  
-  babel-traverse@^6.18.0, babel-traverse@^6.26.0:
-    version "6.26.0"
-    resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee"
-    dependencies:
-      babel-code-frame "^6.26.0"
-      babel-messages "^6.23.0"
-      babel-runtime "^6.26.0"
-      babel-types "^6.26.0"
-      babylon "^6.18.0"
-      debug "^2.6.8"
-      globals "^9.18.0"
-      invariant "^2.2.2"
-      lodash "^4.17.4"
-  
-  babel-types@^6.18.0, babel-types@^6.26.0:
-    version "6.26.0"
-    resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497"
-    dependencies:
-      babel-runtime "^6.26.0"
-      esutils "^2.0.2"
-      lodash "^4.17.4"
-      to-fast-properties "^1.0.3"
-  
-  babylon@7.0.0-beta.40, babylon@^7.0.0-beta.40:
-    version "7.0.0-beta.40"
-    resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.40.tgz#91fc8cd56d5eb98b28e6fde41045f2957779940a"
-  
-  babylon@^6.18.0:
-    version "6.18.0"
-    resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
-  
-  balanced-match@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
-  
-  brace-expansion@^1.1.7:
-    version "1.1.11"
-    resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
-    dependencies:
-      balanced-match "^1.0.0"
-      concat-map "0.0.1"
-  
-  braces@^1.8.2:
-    version "1.8.5"
-    resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
-    dependencies:
-      expand-range "^1.8.1"
-      preserve "^0.2.0"
-      repeat-element "^1.1.2"
-  
-  browser-stdout@1.3.0:
-    version "1.3.0"
-    resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f"
-  
-  builtin-modules@^1.0.0:
-    version "1.1.1"
-    resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
-  
-  caching-transform@^1.0.0:
-    version "1.0.1"
-    resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-1.0.1.tgz#6dbdb2f20f8d8fbce79f3e94e9d1742dcdf5c0a1"
-    dependencies:
-      md5-hex "^1.2.0"
-      mkdirp "^0.5.1"
-      write-file-atomic "^1.1.4"
-  
-  caller-path@^0.1.0:
-    version "0.1.0"
-    resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
-    dependencies:
-      callsites "^0.2.0"
-  
-  callsites@^0.2.0:
-    version "0.2.0"
-    resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
-  
-  camelcase@^1.0.2:
-    version "1.2.1"
-    resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
-  
-  camelcase@^4.1.0:
-    version "4.1.0"
-    resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
-  
-  center-align@^0.1.1:
-    version "0.1.3"
-    resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
-    dependencies:
-      align-text "^0.1.3"
-      lazy-cache "^1.0.3"
-  
-  chai@^4.1.0:
-    version "4.1.2"
-    resolved "https://registry.yarnpkg.com/chai/-/chai-4.1.2.tgz#0f64584ba642f0f2ace2806279f4f06ca23ad73c"
-    dependencies:
-      assertion-error "^1.0.1"
-      check-error "^1.0.1"
-      deep-eql "^3.0.0"
-      get-func-name "^2.0.0"
-      pathval "^1.0.0"
-      type-detect "^4.0.0"
-  
-  chalk@^1.1.3:
-    version "1.1.3"
-    resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
-    dependencies:
-      ansi-styles "^2.2.1"
-      escape-string-regexp "^1.0.2"
-      has-ansi "^2.0.0"
-      strip-ansi "^3.0.0"
-      supports-color "^2.0.0"
-  
-  chalk@^2.0.0, chalk@^2.1.0:
-    version "2.3.1"
-    resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.1.tgz#523fe2678aec7b04e8041909292fe8b17059b796"
-    dependencies:
-      ansi-styles "^3.2.0"
-      escape-string-regexp "^1.0.5"
-      supports-color "^5.2.0"
-  
-  chardet@^0.4.0:
-    version "0.4.2"
-    resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2"
-  
-  check-error@^1.0.1:
-    version "1.0.2"
-    resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82"
-  
-  circular-json@^0.3.1:
-    version "0.3.3"
-    resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66"
-  
-  cli-cursor@^2.1.0:
-    version "2.1.0"
-    resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
-    dependencies:
-      restore-cursor "^2.0.0"
-  
-  cli-width@^2.0.0:
-    version "2.2.0"
-    resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
-  
-  cliui@^2.1.0:
-    version "2.1.0"
-    resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
-    dependencies:
-      center-align "^0.1.1"
-      right-align "^0.1.1"
-      wordwrap "0.0.2"
-  
-  cliui@^4.0.0:
-    version "4.0.0"
-    resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.0.0.tgz#743d4650e05f36d1ed2575b59638d87322bfbbcc"
-    dependencies:
-      string-width "^2.1.1"
-      strip-ansi "^4.0.0"
-      wrap-ansi "^2.0.0"
-  
-  co@^4.6.0:
-    version "4.6.0"
-    resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
-  
-  code-point-at@^1.0.0:
-    version "1.1.0"
-    resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
-  
-  color-convert@^1.9.0:
-    version "1.9.1"
-    resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed"
-    dependencies:
-      color-name "^1.1.1"
-  
-  color-name@^1.1.1:
-    version "1.1.3"
-    resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
-  
-  commander@2.9.0:
-    version "2.9.0"
-    resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
-    dependencies:
-      graceful-readlink ">= 1.0.0"
-  
-  commondir@^1.0.1:
-    version "1.0.1"
-    resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
-  
-  concat-map@0.0.1:
-    version "0.0.1"
-    resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
-  
-  concat-stream@^1.6.0:
-    version "1.6.0"
-    resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
-    dependencies:
-      inherits "^2.0.3"
-      readable-stream "^2.2.2"
-      typedarray "^0.0.6"
-  
-  convert-source-map@^1.5.1:
-    version "1.5.1"
-    resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5"
-  
-  core-js@^2.4.0:
-    version "2.5.3"
-    resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e"
-  
-  core-util-is@~1.0.0:
-    version "1.0.2"
-    resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
-  
-  cross-spawn@^4:
-    version "4.0.2"
-    resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41"
-    dependencies:
-      lru-cache "^4.0.1"
-      which "^1.2.9"
-  
-  cross-spawn@^5.0.1, cross-spawn@^5.1.0:
-    version "5.1.0"
-    resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
-    dependencies:
-      lru-cache "^4.0.1"
-      shebang-command "^1.2.0"
-      which "^1.2.9"
-  
-  debug-log@^1.0.1:
-    version "1.0.1"
-    resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f"
-  
-  debug@2.6.8, debug@^2.6.8:
-    version "2.6.8"
-    resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc"
-    dependencies:
-      ms "2.0.0"
-  
-  debug@^3.0.1, debug@^3.1.0:
-    version "3.1.0"
-    resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
-    dependencies:
-      ms "2.0.0"
-  
-  decamelize@^1.0.0, decamelize@^1.1.1:
-    version "1.2.0"
-    resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
-  
-  deep-eql@^3.0.0:
-    version "3.0.1"
-    resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df"
-    dependencies:
-      type-detect "^4.0.0"
-  
-  deep-is@~0.1.3:
-    version "0.1.3"
-    resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
-  
-  default-require-extensions@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8"
-    dependencies:
-      strip-bom "^2.0.0"
-  
-  del@^2.0.2:
-    version "2.2.2"
-    resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8"
-    dependencies:
-      globby "^5.0.0"
-      is-path-cwd "^1.0.0"
-      is-path-in-cwd "^1.0.0"
-      object-assign "^4.0.1"
-      pify "^2.0.0"
-      pinkie-promise "^2.0.0"
-      rimraf "^2.2.8"
-  
-  detect-indent@^4.0.0:
-    version "4.0.0"
-    resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
-    dependencies:
-      repeating "^2.0.0"
-  
-  diff@3.2.0:
-    version "3.2.0"
-    resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9"
-  
-  doctrine@^2.1.0:
-    version "2.1.0"
-    resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
-    dependencies:
-      esutils "^2.0.2"
-  
-  dom-serializer@0:
-    version "0.1.0"
-    resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
-    dependencies:
-      domelementtype "~1.1.1"
-      entities "~1.1.1"
-  
-  domelementtype@1, domelementtype@^1.3.0:
-    version "1.3.0"
-    resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2"
-  
-  domelementtype@~1.1.1:
-    version "1.1.3"
-    resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b"
-  
-  domhandler@^2.3.0:
-    version "2.4.1"
-    resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.1.tgz#892e47000a99be55bbf3774ffea0561d8879c259"
-    dependencies:
-      domelementtype "1"
-  
-  domutils@^1.5.1:
-    version "1.7.0"
-    resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
-    dependencies:
-      dom-serializer "0"
-      domelementtype "1"
-  
-  entities@^1.1.1, entities@~1.1.1:
-    version "1.1.1"
-    resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0"
-  
-  error-ex@^1.2.0:
-    version "1.3.1"
-    resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc"
-    dependencies:
-      is-arrayish "^0.2.1"
-  
-  escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
-    version "1.0.5"
-    resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
-  
-  eslint-plugin-eslint-plugin@^0.8.0:
-    version "0.8.0"
-    resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-0.8.0.tgz#3c493945b092f61a059ed3a38b0a635fd71bb1ac"
-  
-  eslint-plugin-html@^4.0.1:
-    version "4.0.2"
-    resolved "https://registry.yarnpkg.com/eslint-plugin-html/-/eslint-plugin-html-4.0.2.tgz#0e56149e42c2ffc3f0df6261a8bb96b1a9f2280d"
-    dependencies:
-      htmlparser2 "^3.8.2"
-  
-  eslint-plugin-vue-libs@^2.0.0:
-    version "2.1.0"
-    resolved "https://registry.yarnpkg.com/eslint-plugin-vue-libs/-/eslint-plugin-vue-libs-2.1.0.tgz#e7faf4ae11dad58553f63f907d6642e2d816dcef"
-    dependencies:
-      eslint-plugin-html "^4.0.1"
-  
-  eslint-scope@^3.7.1, eslint-scope@~3.7.1:
-    version "3.7.1"
-    resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8"
-    dependencies:
-      esrecurse "^4.1.0"
-      estraverse "^4.1.1"
-  
-  eslint-visitor-keys@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d"
-  
-  eslint@^4.14.0:
-    version "4.18.1"
-    resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.18.1.tgz#b9138440cb1e98b2f44a0d578c6ecf8eae6150b0"
-    dependencies:
-      ajv "^5.3.0"
-      babel-code-frame "^6.22.0"
-      chalk "^2.1.0"
-      concat-stream "^1.6.0"
-      cross-spawn "^5.1.0"
-      debug "^3.1.0"
-      doctrine "^2.1.0"
-      eslint-scope "^3.7.1"
-      eslint-visitor-keys "^1.0.0"
-      espree "^3.5.2"
-      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"
-      require-uncached "^1.0.3"
-      semver "^5.3.0"
-      strip-ansi "^4.0.0"
-      strip-json-comments "~2.0.1"
-      table "^4.0.1"
-      text-table "~0.2.0"
-  
-  espree@^3.5.2:
-    version "3.5.3"
-    resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.3.tgz#931e0af64e7fbbed26b050a29daad1fc64799fa6"
-    dependencies:
-      acorn "^5.4.0"
-      acorn-jsx "^3.0.0"
-  
-  esprima@^4.0.0:
-    version "4.0.0"
-    resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804"
-  
-  esquery@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa"
-    dependencies:
-      estraverse "^4.0.0"
-  
-  esrecurse@^4.1.0:
-    version "4.2.0"
-    resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163"
-    dependencies:
-      estraverse "^4.1.0"
-      object-assign "^4.0.1"
-  
-  estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1:
-    version "4.2.0"
-    resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
-  
-  esutils@^2.0.2:
-    version "2.0.2"
-    resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
-  
-  execa@^0.7.0:
-    version "0.7.0"
-    resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
-    dependencies:
-      cross-spawn "^5.0.1"
-      get-stream "^3.0.0"
-      is-stream "^1.1.0"
-      npm-run-path "^2.0.0"
-      p-finally "^1.0.0"
-      signal-exit "^3.0.0"
-      strip-eof "^1.0.0"
-  
-  expand-brackets@^0.1.4:
-    version "0.1.5"
-    resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
-    dependencies:
-      is-posix-bracket "^0.1.0"
-  
-  expand-range@^1.8.1:
-    version "1.8.2"
-    resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
-    dependencies:
-      fill-range "^2.1.0"
-  
-  external-editor@^2.0.4:
-    version "2.1.0"
-    resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.1.0.tgz#3d026a21b7f95b5726387d4200ac160d372c3b48"
-    dependencies:
-      chardet "^0.4.0"
-      iconv-lite "^0.4.17"
-      tmp "^0.0.33"
-  
-  extglob@^0.3.1:
-    version "0.3.2"
-    resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
-    dependencies:
-      is-extglob "^1.0.0"
-  
-  fast-deep-equal@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff"
-  
-  fast-json-stable-stringify@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
-  
-  fast-levenshtein@~2.0.4:
-    version "2.0.6"
-    resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
-  
-  figures@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
-    dependencies:
-      escape-string-regexp "^1.0.5"
-  
-  file-entry-cache@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361"
-    dependencies:
-      flat-cache "^1.2.1"
-      object-assign "^4.0.1"
-  
-  filename-regex@^2.0.0:
-    version "2.0.1"
-    resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
-  
-  fill-range@^2.1.0:
-    version "2.2.3"
-    resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
-    dependencies:
-      is-number "^2.1.0"
-      isobject "^2.0.0"
-      randomatic "^1.1.3"
-      repeat-element "^1.1.2"
-      repeat-string "^1.5.2"
-  
-  find-cache-dir@^0.1.1:
-    version "0.1.1"
-    resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9"
-    dependencies:
-      commondir "^1.0.1"
-      mkdirp "^0.5.1"
-      pkg-dir "^1.0.0"
-  
-  find-up@^1.0.0:
-    version "1.1.2"
-    resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
-    dependencies:
-      path-exists "^2.0.0"
-      pinkie-promise "^2.0.0"
-  
-  find-up@^2.1.0:
-    version "2.1.0"
-    resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
-    dependencies:
-      locate-path "^2.0.0"
-  
-  flat-cache@^1.2.1:
-    version "1.3.0"
-    resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481"
-    dependencies:
-      circular-json "^0.3.1"
-      del "^2.0.2"
-      graceful-fs "^4.1.2"
-      write "^0.2.1"
-  
-  for-in@^1.0.1:
-    version "1.0.2"
-    resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
-  
-  for-own@^0.1.4:
-    version "0.1.5"
-    resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
-    dependencies:
-      for-in "^1.0.1"
-  
-  foreground-child@^1.5.3, foreground-child@^1.5.6:
-    version "1.5.6"
-    resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9"
-    dependencies:
-      cross-spawn "^4"
-      signal-exit "^3.0.0"
-  
-  fs.realpath@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
-  
-  functional-red-black-tree@^1.0.1:
-    version "1.0.1"
-    resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
-  
-  get-caller-file@^1.0.1:
-    version "1.0.2"
-    resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
-  
-  get-func-name@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41"
-  
-  get-stream@^3.0.0:
-    version "3.0.0"
-    resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
-  
-  glob-base@^0.3.0:
-    version "0.3.0"
-    resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
-    dependencies:
-      glob-parent "^2.0.0"
-      is-glob "^2.0.0"
-  
-  glob-parent@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
-    dependencies:
-      is-glob "^2.0.0"
-  
-  glob@7.1.1:
-    version "7.1.1"
-    resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
-    dependencies:
-      fs.realpath "^1.0.0"
-      inflight "^1.0.4"
-      inherits "2"
-      minimatch "^3.0.2"
-      once "^1.3.0"
-      path-is-absolute "^1.0.0"
-  
-  glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.2:
-    version "7.1.2"
-    resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
-    dependencies:
-      fs.realpath "^1.0.0"
-      inflight "^1.0.4"
-      inherits "2"
-      minimatch "^3.0.4"
-      once "^1.3.0"
-      path-is-absolute "^1.0.0"
-  
-  globals@^11.0.1, globals@^11.1.0:
-    version "11.3.0"
-    resolved "https://registry.yarnpkg.com/globals/-/globals-11.3.0.tgz#e04fdb7b9796d8adac9c8f64c14837b2313378b0"
-  
-  globals@^9.18.0:
-    version "9.18.0"
-    resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
-  
-  globby@^5.0.0:
-    version "5.0.0"
-    resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d"
-    dependencies:
-      array-union "^1.0.1"
-      arrify "^1.0.0"
-      glob "^7.0.3"
-      object-assign "^4.0.1"
-      pify "^2.0.0"
-      pinkie-promise "^2.0.0"
-  
-  graceful-fs@^4.1.11, graceful-fs@^4.1.2:
-    version "4.1.11"
-    resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
-  
-  "graceful-readlink@>= 1.0.0":
-    version "1.0.1"
-    resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
-  
-  growl@1.9.2:
-    version "1.9.2"
-    resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f"
-  
-  handlebars@^4.0.3:
-    version "4.0.11"
-    resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc"
-    dependencies:
-      async "^1.4.0"
-      optimist "^0.6.1"
-      source-map "^0.4.4"
-    optionalDependencies:
-      uglify-js "^2.6"
-  
-  has-ansi@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
-    dependencies:
-      ansi-regex "^2.0.0"
-  
-  has-flag@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
-  
-  has-flag@^3.0.0:
-    version "3.0.0"
-    resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
-  
-  he@1.1.1:
-    version "1.1.1"
-    resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
-  
-  hosted-git-info@^2.1.4:
-    version "2.5.0"
-    resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c"
-  
-  htmlparser2@^3.8.2:
-    version "3.9.2"
-    resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338"
-    dependencies:
-      domelementtype "^1.3.0"
-      domhandler "^2.3.0"
-      domutils "^1.5.1"
-      entities "^1.1.1"
-      inherits "^2.0.1"
-      readable-stream "^2.0.2"
-  
-  iconv-lite@^0.4.17:
-    version "0.4.19"
-    resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
-  
-  ignore@^3.3.3:
-    version "3.3.7"
-    resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021"
-  
-  imurmurhash@^0.1.4:
-    version "0.1.4"
-    resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
-  
-  inflight@^1.0.4:
-    version "1.0.6"
-    resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
-    dependencies:
-      once "^1.3.0"
-      wrappy "1"
-  
-  inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3:
-    version "2.0.3"
-    resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
-  
-  inquirer@^3.0.6:
-    version "3.3.0"
-    resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9"
-    dependencies:
-      ansi-escapes "^3.0.0"
-      chalk "^2.0.0"
-      cli-cursor "^2.1.0"
-      cli-width "^2.0.0"
-      external-editor "^2.0.4"
-      figures "^2.0.0"
-      lodash "^4.3.0"
-      mute-stream "0.0.7"
-      run-async "^2.2.0"
-      rx-lite "^4.0.8"
-      rx-lite-aggregates "^4.0.8"
-      string-width "^2.1.0"
-      strip-ansi "^4.0.0"
-      through "^2.3.6"
-  
-  invariant@^2.2.0, invariant@^2.2.2:
-    version "2.2.3"
-    resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.3.tgz#1a827dfde7dcbd7c323f0ca826be8fa7c5e9d688"
-    dependencies:
-      loose-envify "^1.0.0"
-  
-  invert-kv@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
-  
-  is-arrayish@^0.2.1:
-    version "0.2.1"
-    resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
-  
-  is-buffer@^1.1.5:
-    version "1.1.6"
-    resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
-  
-  is-builtin-module@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
-    dependencies:
-      builtin-modules "^1.0.0"
-  
-  is-dotfile@^1.0.0:
-    version "1.0.3"
-    resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
-  
-  is-equal-shallow@^0.1.3:
-    version "0.1.3"
-    resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
-    dependencies:
-      is-primitive "^2.0.0"
-  
-  is-extendable@^0.1.1:
-    version "0.1.1"
-    resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
-  
-  is-extglob@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
-  
-  is-finite@^1.0.0:
-    version "1.0.2"
-    resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
-    dependencies:
-      number-is-nan "^1.0.0"
-  
-  is-fullwidth-code-point@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
-    dependencies:
-      number-is-nan "^1.0.0"
-  
-  is-fullwidth-code-point@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
-  
-  is-glob@^2.0.0, is-glob@^2.0.1:
-    version "2.0.1"
-    resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
-    dependencies:
-      is-extglob "^1.0.0"
-  
-  is-number@^2.1.0:
-    version "2.1.0"
-    resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
-    dependencies:
-      kind-of "^3.0.2"
-  
-  is-number@^3.0.0:
-    version "3.0.0"
-    resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
-    dependencies:
-      kind-of "^3.0.2"
-  
-  is-path-cwd@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
-  
-  is-path-in-cwd@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc"
-    dependencies:
-      is-path-inside "^1.0.0"
-  
-  is-path-inside@^1.0.0:
-    version "1.0.1"
-    resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036"
-    dependencies:
-      path-is-inside "^1.0.1"
-  
-  is-posix-bracket@^0.1.0:
-    version "0.1.1"
-    resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
-  
-  is-primitive@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
-  
-  is-promise@^2.1.0:
-    version "2.1.0"
-    resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
-  
-  is-resolvable@^1.0.0:
-    version "1.1.0"
-    resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
-  
-  is-stream@^1.1.0:
-    version "1.1.0"
-    resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
-  
-  is-utf8@^0.2.0:
-    version "0.2.1"
-    resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
-  
-  isarray@1.0.0, isarray@~1.0.0:
-    version "1.0.0"
-    resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
-  
-  isexe@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
-  
-  isobject@^2.0.0:
-    version "2.1.0"
-    resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
-    dependencies:
-      isarray "1.0.0"
-  
-  istanbul-lib-coverage@^1.1.2:
-    version "1.1.2"
-    resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.2.tgz#4113c8ff6b7a40a1ef7350b01016331f63afde14"
-  
-  istanbul-lib-hook@^1.1.0:
-    version "1.1.0"
-    resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz#8538d970372cb3716d53e55523dd54b557a8d89b"
-    dependencies:
-      append-transform "^0.4.0"
-  
-  istanbul-lib-instrument@^1.9.2:
-    version "1.9.2"
-    resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.2.tgz#84905bf47f7e0b401d6b840da7bad67086b4aab6"
-    dependencies:
-      babel-generator "^6.18.0"
-      babel-template "^6.16.0"
-      babel-traverse "^6.18.0"
-      babel-types "^6.18.0"
-      babylon "^6.18.0"
-      istanbul-lib-coverage "^1.1.2"
-      semver "^5.3.0"
-  
-  istanbul-lib-report@^1.1.3:
-    version "1.1.3"
-    resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.3.tgz#2df12188c0fa77990c0d2176d2d0ba3394188259"
-    dependencies:
-      istanbul-lib-coverage "^1.1.2"
-      mkdirp "^0.5.1"
-      path-parse "^1.0.5"
-      supports-color "^3.1.2"
-  
-  istanbul-lib-source-maps@^1.2.3:
-    version "1.2.3"
-    resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz#20fb54b14e14b3fb6edb6aca3571fd2143db44e6"
-    dependencies:
-      debug "^3.1.0"
-      istanbul-lib-coverage "^1.1.2"
-      mkdirp "^0.5.1"
-      rimraf "^2.6.1"
-      source-map "^0.5.3"
-  
-  istanbul-reports@^1.1.4:
-    version "1.1.4"
-    resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.4.tgz#5ccba5e22b7b5a5d91d5e0a830f89be334bf97bd"
-    dependencies:
-      handlebars "^4.0.3"
-  
-  js-tokens@^3.0.0, js-tokens@^3.0.2:
-    version "3.0.2"
-    resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
-  
-  js-yaml@^3.9.1:
-    version "3.10.0"
-    resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc"
-    dependencies:
-      argparse "^1.0.7"
-      esprima "^4.0.0"
-  
-  jsesc@^1.3.0:
-    version "1.3.0"
-    resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
-  
-  jsesc@^2.5.1:
-    version "2.5.1"
-    resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe"
-  
-  json-schema-traverse@^0.3.0:
-    version "0.3.1"
-    resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
-  
-  json-stable-stringify-without-jsonify@^1.0.1:
-    version "1.0.1"
-    resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
-  
-  json3@3.3.2:
-    version "3.3.2"
-    resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1"
-  
-  kind-of@^3.0.2:
-    version "3.2.2"
-    resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
-    dependencies:
-      is-buffer "^1.1.5"
-  
-  kind-of@^4.0.0:
-    version "4.0.0"
-    resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
-    dependencies:
-      is-buffer "^1.1.5"
-  
-  lazy-cache@^1.0.3:
-    version "1.0.4"
-    resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
-  
-  lcid@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
-    dependencies:
-      invert-kv "^1.0.0"
-  
-  levn@^0.3.0, levn@~0.3.0:
-    version "0.3.0"
-    resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
-    dependencies:
-      prelude-ls "~1.1.2"
-      type-check "~0.3.2"
-  
-  load-json-file@^1.0.0:
-    version "1.1.0"
-    resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
-    dependencies:
-      graceful-fs "^4.1.2"
-      parse-json "^2.2.0"
-      pify "^2.0.0"
-      pinkie-promise "^2.0.0"
-      strip-bom "^2.0.0"
-  
-  locate-path@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
-    dependencies:
-      p-locate "^2.0.0"
-      path-exists "^3.0.0"
-  
-  lodash._baseassign@^3.0.0:
-    version "3.2.0"
-    resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e"
-    dependencies:
-      lodash._basecopy "^3.0.0"
-      lodash.keys "^3.0.0"
-  
-  lodash._basecopy@^3.0.0:
-    version "3.0.1"
-    resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36"
-  
-  lodash._basecreate@^3.0.0:
-    version "3.0.3"
-    resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821"
-  
-  lodash._getnative@^3.0.0:
-    version "3.9.1"
-    resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
-  
-  lodash._isiterateecall@^3.0.0:
-    version "3.0.9"
-    resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c"
-  
-  lodash.create@3.1.1:
-    version "3.1.1"
-    resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7"
-    dependencies:
-      lodash._baseassign "^3.0.0"
-      lodash._basecreate "^3.0.0"
-      lodash._isiterateecall "^3.0.0"
-  
-  lodash.isarguments@^3.0.0:
-    version "3.1.0"
-    resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
-  
-  lodash.isarray@^3.0.0:
-    version "3.0.4"
-    resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55"
-  
-  lodash.keys@^3.0.0:
-    version "3.1.2"
-    resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a"
-    dependencies:
-      lodash._getnative "^3.0.0"
-      lodash.isarguments "^3.0.0"
-      lodash.isarray "^3.0.0"
-  
-  lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0:
-    version "4.17.5"
-    resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511"
-  
-  longest@^1.0.1:
-    version "1.0.1"
-    resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
-  
-  loose-envify@^1.0.0:
-    version "1.3.1"
-    resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
-    dependencies:
-      js-tokens "^3.0.0"
-  
-  lru-cache@^4.0.1:
-    version "4.1.1"
-    resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55"
-    dependencies:
-      pseudomap "^1.0.2"
-      yallist "^2.1.2"
-  
-  md5-hex@^1.2.0:
-    version "1.3.0"
-    resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-1.3.0.tgz#d2c4afe983c4370662179b8cad145219135046c4"
-    dependencies:
-      md5-o-matic "^0.1.1"
-  
-  md5-o-matic@^0.1.1:
-    version "0.1.1"
-    resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3"
-  
-  mem@^1.1.0:
-    version "1.1.0"
-    resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76"
-    dependencies:
-      mimic-fn "^1.0.0"
-  
-  merge-source-map@^1.0.2:
-    version "1.1.0"
-    resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646"
-    dependencies:
-      source-map "^0.6.1"
-  
-  micromatch@^2.3.11:
-    version "2.3.11"
-    resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
-    dependencies:
-      arr-diff "^2.0.0"
-      array-unique "^0.2.1"
-      braces "^1.8.2"
-      expand-brackets "^0.1.4"
-      extglob "^0.3.1"
-      filename-regex "^2.0.0"
-      is-extglob "^1.0.0"
-      is-glob "^2.0.1"
-      kind-of "^3.0.2"
-      normalize-path "^2.0.1"
-      object.omit "^2.0.0"
-      parse-glob "^3.0.4"
-      regex-cache "^0.4.2"
-  
-  mimic-fn@^1.0.0:
-    version "1.2.0"
-    resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
-  
-  minimatch@^3.0.2, minimatch@^3.0.4:
-    version "3.0.4"
-    resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
-    dependencies:
-      brace-expansion "^1.1.7"
-  
-  minimist@0.0.8, minimist@~0.0.1:
-    version "0.0.8"
-    resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
-  
-  mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1:
-    version "0.5.1"
-    resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
-    dependencies:
-      minimist "0.0.8"
-  
-  mocha@^3.2.0:
-    version "3.5.3"
-    resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.5.3.tgz#1e0480fe36d2da5858d1eb6acc38418b26eaa20d"
-    dependencies:
-      browser-stdout "1.3.0"
-      commander "2.9.0"
-      debug "2.6.8"
-      diff "3.2.0"
-      escape-string-regexp "1.0.5"
-      glob "7.1.1"
-      growl "1.9.2"
-      he "1.1.1"
-      json3 "3.3.2"
-      lodash.create "3.1.1"
-      mkdirp "0.5.1"
-      supports-color "3.1.2"
-  
-  ms@2.0.0:
-    version "2.0.0"
-    resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
-  
-  mute-stream@0.0.7:
-    version "0.0.7"
-    resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
-  
-  natural-compare@^1.4.0:
-    version "1.4.0"
-    resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
-  
-  normalize-package-data@^2.3.2:
-    version "2.4.0"
-    resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f"
-    dependencies:
-      hosted-git-info "^2.1.4"
-      is-builtin-module "^1.0.0"
-      semver "2 || 3 || 4 || 5"
-      validate-npm-package-license "^3.0.1"
-  
-  normalize-path@^2.0.1:
-    version "2.1.1"
-    resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
-    dependencies:
-      remove-trailing-separator "^1.0.1"
-  
-  npm-run-path@^2.0.0:
-    version "2.0.2"
-    resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
-    dependencies:
-      path-key "^2.0.0"
-  
-  number-is-nan@^1.0.0:
-    version "1.0.1"
-    resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
-  
-  nyc@^11.1.0:
-    version "11.5.0"
-    resolved "https://registry.yarnpkg.com/nyc/-/nyc-11.5.0.tgz#29795d8217885e8b384d849fbe74956d58be2252"
-    dependencies:
-      archy "^1.0.0"
-      arrify "^1.0.1"
-      caching-transform "^1.0.0"
-      convert-source-map "^1.5.1"
-      debug-log "^1.0.1"
-      default-require-extensions "^1.0.0"
-      find-cache-dir "^0.1.1"
-      find-up "^2.1.0"
-      foreground-child "^1.5.3"
-      glob "^7.0.6"
-      istanbul-lib-coverage "^1.1.2"
-      istanbul-lib-hook "^1.1.0"
-      istanbul-lib-instrument "^1.9.2"
-      istanbul-lib-report "^1.1.3"
-      istanbul-lib-source-maps "^1.2.3"
-      istanbul-reports "^1.1.4"
-      md5-hex "^1.2.0"
-      merge-source-map "^1.0.2"
-      micromatch "^2.3.11"
-      mkdirp "^0.5.0"
-      resolve-from "^2.0.0"
-      rimraf "^2.5.4"
-      signal-exit "^3.0.1"
-      spawn-wrap "^1.4.2"
-      test-exclude "^4.2.0"
-      yargs "^10.0.3"
-      yargs-parser "^8.0.0"
-  
-  object-assign@^4.0.1, object-assign@^4.1.0:
-    version "4.1.1"
-    resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
-  
-  object.omit@^2.0.0:
-    version "2.0.1"
-    resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
-    dependencies:
-      for-own "^0.1.4"
-      is-extendable "^0.1.1"
-  
-  once@^1.3.0:
-    version "1.4.0"
-    resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
-    dependencies:
-      wrappy "1"
-  
-  onetime@^2.0.0:
-    version "2.0.1"
-    resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
-    dependencies:
-      mimic-fn "^1.0.0"
-  
-  optimist@^0.6.1:
-    version "0.6.1"
-    resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
-    dependencies:
-      minimist "~0.0.1"
-      wordwrap "~0.0.2"
-  
-  optionator@^0.8.2:
-    version "0.8.2"
-    resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
-    dependencies:
-      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"
-  
-  os-homedir@^1.0.1:
-    version "1.0.2"
-    resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
-  
-  os-locale@^2.0.0:
-    version "2.1.0"
-    resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2"
-    dependencies:
-      execa "^0.7.0"
-      lcid "^1.0.0"
-      mem "^1.1.0"
-  
-  os-tmpdir@~1.0.2:
-    version "1.0.2"
-    resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
-  
-  p-finally@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
-  
-  p-limit@^1.1.0:
-    version "1.2.0"
-    resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c"
-    dependencies:
-      p-try "^1.0.0"
-  
-  p-locate@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
-    dependencies:
-      p-limit "^1.1.0"
-  
-  p-try@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
-  
-  parse-glob@^3.0.4:
-    version "3.0.4"
-    resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
-    dependencies:
-      glob-base "^0.3.0"
-      is-dotfile "^1.0.0"
-      is-extglob "^1.0.0"
-      is-glob "^2.0.0"
-  
-  parse-json@^2.2.0:
-    version "2.2.0"
-    resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
-    dependencies:
-      error-ex "^1.2.0"
-  
-  path-exists@^2.0.0:
-    version "2.1.0"
-    resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
-    dependencies:
-      pinkie-promise "^2.0.0"
-  
-  path-exists@^3.0.0:
-    version "3.0.0"
-    resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
-  
-  path-is-absolute@^1.0.0:
-    version "1.0.1"
-    resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
-  
-  path-is-inside@^1.0.1, path-is-inside@^1.0.2:
-    version "1.0.2"
-    resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
-  
-  path-key@^2.0.0:
-    version "2.0.1"
-    resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
-  
-  path-parse@^1.0.5:
-    version "1.0.5"
-    resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
-  
-  path-type@^1.0.0:
-    version "1.1.0"
-    resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
-    dependencies:
-      graceful-fs "^4.1.2"
-      pify "^2.0.0"
-      pinkie-promise "^2.0.0"
-  
-  pathval@^1.0.0:
-    version "1.1.0"
-    resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0"
-  
-  pify@^2.0.0:
-    version "2.3.0"
-    resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
-  
-  pinkie-promise@^2.0.0:
-    version "2.0.1"
-    resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
-    dependencies:
-      pinkie "^2.0.0"
-  
-  pinkie@^2.0.0:
-    version "2.0.4"
-    resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
-  
-  pkg-dir@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4"
-    dependencies:
-      find-up "^1.0.0"
-  
-  pluralize@^7.0.0:
-    version "7.0.0"
-    resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777"
-  
-  prelude-ls@~1.1.2:
-    version "1.1.2"
-    resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
-  
-  preserve@^0.2.0:
-    version "0.2.0"
-    resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
-  
-  process-nextick-args@~2.0.0:
-    version "2.0.0"
-    resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
-  
-  progress@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f"
-  
-  pseudomap@^1.0.2:
-    version "1.0.2"
-    resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
-  
-  randomatic@^1.1.3:
-    version "1.1.7"
-    resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c"
-    dependencies:
-      is-number "^3.0.0"
-      kind-of "^4.0.0"
-  
-  read-pkg-up@^1.0.1:
-    version "1.0.1"
-    resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
-    dependencies:
-      find-up "^1.0.0"
-      read-pkg "^1.0.0"
-  
-  read-pkg@^1.0.0:
-    version "1.1.0"
-    resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
-    dependencies:
-      load-json-file "^1.0.0"
-      normalize-package-data "^2.3.2"
-      path-type "^1.0.0"
-  
-  readable-stream@^2.0.2, readable-stream@^2.2.2:
-    version "2.3.4"
-    resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.4.tgz#c946c3f47fa7d8eabc0b6150f4a12f69a4574071"
-    dependencies:
-      core-util-is "~1.0.0"
-      inherits "~2.0.3"
-      isarray "~1.0.0"
-      process-nextick-args "~2.0.0"
-      safe-buffer "~5.1.1"
-      string_decoder "~1.0.3"
-      util-deprecate "~1.0.1"
-  
-  regenerator-runtime@^0.11.0:
-    version "0.11.1"
-    resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
-  
-  regex-cache@^0.4.2:
-    version "0.4.4"
-    resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd"
-    dependencies:
-      is-equal-shallow "^0.1.3"
-  
-  remove-trailing-separator@^1.0.1:
-    version "1.1.0"
-    resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
-  
-  repeat-element@^1.1.2:
-    version "1.1.2"
-    resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
-  
-  repeat-string@^1.5.2:
-    version "1.6.1"
-    resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
-  
-  repeating@^2.0.0:
-    version "2.0.1"
-    resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
-    dependencies:
-      is-finite "^1.0.0"
-  
-  require-directory@^2.1.1:
-    version "2.1.1"
-    resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
-  
-  require-main-filename@^1.0.1:
-    version "1.0.1"
-    resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
-  
-  require-uncached@^1.0.3:
-    version "1.0.3"
-    resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
-    dependencies:
-      caller-path "^0.1.0"
-      resolve-from "^1.0.0"
-  
-  resolve-from@^1.0.0:
-    version "1.0.1"
-    resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
-  
-  resolve-from@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57"
-  
-  restore-cursor@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
-    dependencies:
-      onetime "^2.0.0"
-      signal-exit "^3.0.2"
-  
-  right-align@^0.1.1:
-    version "0.1.3"
-    resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
-    dependencies:
-      align-text "^0.1.1"
-  
-  rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2:
-    version "2.6.2"
-    resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
-    dependencies:
-      glob "^7.0.5"
-  
-  run-async@^2.2.0:
-    version "2.3.0"
-    resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
-    dependencies:
-      is-promise "^2.1.0"
-  
-  rx-lite-aggregates@^4.0.8:
-    version "4.0.8"
-    resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be"
-    dependencies:
-      rx-lite "*"
-  
-  rx-lite@*, rx-lite@^4.0.8:
-    version "4.0.8"
-    resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
-  
-  safe-buffer@~5.1.0, safe-buffer@~5.1.1:
-    version "5.1.1"
-    resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
-  
-  "semver@2 || 3 || 4 || 5", semver@^5.3.0:
-    version "5.5.0"
-    resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
-  
-  set-blocking@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
-  
-  shebang-command@^1.2.0:
-    version "1.2.0"
-    resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
-    dependencies:
-      shebang-regex "^1.0.0"
-  
-  shebang-regex@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
-  
-  signal-exit@^3.0.0, signal-exit@^3.0.1, signal-exit@^3.0.2:
-    version "3.0.2"
-    resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
-  
-  slice-ansi@1.0.0:
-    version "1.0.0"
-    resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d"
-    dependencies:
-      is-fullwidth-code-point "^2.0.0"
-  
-  slide@^1.1.5:
-    version "1.1.6"
-    resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707"
-  
-  source-map@^0.4.4:
-    version "0.4.4"
-    resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
-    dependencies:
-      amdefine ">=0.0.4"
-  
-  source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.7, source-map@~0.5.1:
-    version "0.5.7"
-    resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
-  
-  source-map@^0.6.1:
-    version "0.6.1"
-    resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
-  
-  spawn-wrap@^1.4.2:
-    version "1.4.2"
-    resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.4.2.tgz#cff58e73a8224617b6561abdc32586ea0c82248c"
-    dependencies:
-      foreground-child "^1.5.6"
-      mkdirp "^0.5.0"
-      os-homedir "^1.0.1"
-      rimraf "^2.6.2"
-      signal-exit "^3.0.2"
-      which "^1.3.0"
-  
-  spdx-correct@~1.0.0:
-    version "1.0.2"
-    resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
-    dependencies:
-      spdx-license-ids "^1.0.2"
-  
-  spdx-expression-parse@~1.0.0:
-    version "1.0.4"
-    resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c"
-  
-  spdx-license-ids@^1.0.2:
-    version "1.2.2"
-    resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
-  
-  sprintf-js@~1.0.2:
-    version "1.0.3"
-    resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
-  
-  string-width@^1.0.1:
-    version "1.0.2"
-    resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
-    dependencies:
-      code-point-at "^1.0.0"
-      is-fullwidth-code-point "^1.0.0"
-      strip-ansi "^3.0.0"
-  
-  string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1:
-    version "2.1.1"
-    resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
-    dependencies:
-      is-fullwidth-code-point "^2.0.0"
-      strip-ansi "^4.0.0"
-  
-  string_decoder@~1.0.3:
-    version "1.0.3"
-    resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab"
-    dependencies:
-      safe-buffer "~5.1.0"
-  
-  strip-ansi@^3.0.0, strip-ansi@^3.0.1:
-    version "3.0.1"
-    resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
-    dependencies:
-      ansi-regex "^2.0.0"
-  
-  strip-ansi@^4.0.0:
-    version "4.0.0"
-    resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
-    dependencies:
-      ansi-regex "^3.0.0"
-  
-  strip-bom@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
-    dependencies:
-      is-utf8 "^0.2.0"
-  
-  strip-eof@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
-  
-  strip-json-comments@~2.0.1:
-    version "2.0.1"
-    resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
-  
-  supports-color@3.1.2, supports-color@^3.1.2:
-    version "3.1.2"
-    resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5"
-    dependencies:
-      has-flag "^1.0.0"
-  
-  supports-color@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
-  
-  supports-color@^5.2.0:
-    version "5.2.0"
-    resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.2.0.tgz#b0d5333b1184dd3666cbe5aa0b45c5ac7ac17a4a"
-    dependencies:
-      has-flag "^3.0.0"
-  
-  table@^4.0.1:
-    version "4.0.3"
-    resolved "https://registry.yarnpkg.com/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc"
-    dependencies:
-      ajv "^6.0.1"
-      ajv-keywords "^3.0.0"
-      chalk "^2.1.0"
-      lodash "^4.17.4"
-      slice-ansi "1.0.0"
-      string-width "^2.1.1"
-  
-  test-exclude@^4.2.0:
-    version "4.2.0"
-    resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.0.tgz#07e3613609a362c74516a717515e13322ab45b3c"
-    dependencies:
-      arrify "^1.0.1"
-      micromatch "^2.3.11"
-      object-assign "^4.1.0"
-      read-pkg-up "^1.0.1"
-      require-main-filename "^1.0.1"
-  
-  text-table@~0.2.0:
-    version "0.2.0"
-    resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
-  
-  through@^2.3.6:
-    version "2.3.8"
-    resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
-  
-  tmp@^0.0.33:
-    version "0.0.33"
-    resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
-    dependencies:
-      os-tmpdir "~1.0.2"
-  
-  to-fast-properties@^1.0.3:
-    version "1.0.3"
-    resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
-  
-  to-fast-properties@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
-  
-  trim-right@^1.0.1:
-    version "1.0.1"
-    resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
-  
-  type-check@~0.3.2:
-    version "0.3.2"
-    resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
-    dependencies:
-      prelude-ls "~1.1.2"
-  
-  type-detect@^4.0.0:
-    version "4.0.8"
-    resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
-  
-  typedarray@^0.0.6:
-    version "0.0.6"
-    resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
-  
-  uglify-js@^2.6:
-    version "2.8.29"
-    resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"
-    dependencies:
-      source-map "~0.5.1"
-      yargs "~3.10.0"
-    optionalDependencies:
-      uglify-to-browserify "~1.0.0"
-  
-  uglify-to-browserify@~1.0.0:
-    version "1.0.2"
-    resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
-  
-  util-deprecate@~1.0.1:
-    version "1.0.2"
-    resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
-  
-  validate-npm-package-license@^3.0.1:
-    version "3.0.1"
-    resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
-    dependencies:
-      spdx-correct "~1.0.0"
-      spdx-expression-parse "~1.0.0"
-  
-  vue-eslint-parser@^2.0.3:
-    version "2.0.3"
-    resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz#c268c96c6d94cfe3d938a5f7593959b0ca3360d1"
-    dependencies:
-      debug "^3.1.0"
-      eslint-scope "^3.7.1"
-      eslint-visitor-keys "^1.0.0"
-      espree "^3.5.2"
-      esquery "^1.0.0"
-      lodash "^4.17.4"
-  
-  which-module@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
-  
-  which@^1.2.9, which@^1.3.0:
-    version "1.3.0"
-    resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a"
-    dependencies:
-      isexe "^2.0.0"
-  
-  window-size@0.1.0:
-    version "0.1.0"
-    resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
-  
-  wordwrap@0.0.2:
-    version "0.0.2"
-    resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
-  
-  wordwrap@~0.0.2:
-    version "0.0.3"
-    resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
-  
-  wordwrap@~1.0.0:
-    version "1.0.0"
-    resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
-  
-  wrap-ansi@^2.0.0:
-    version "2.1.0"
-    resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
-    dependencies:
-      string-width "^1.0.1"
-      strip-ansi "^3.0.1"
-  
-  wrappy@1:
-    version "1.0.2"
-    resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
-  
-  write-file-atomic@^1.1.4:
-    version "1.3.4"
-    resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f"
-    dependencies:
-      graceful-fs "^4.1.11"
-      imurmurhash "^0.1.4"
-      slide "^1.1.5"
-  
-  write@^0.2.1:
-    version "0.2.1"
-    resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757"
-    dependencies:
-      mkdirp "^0.5.1"
-  
-  y18n@^3.2.1:
-    version "3.2.1"
-    resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
-  
-  yallist@^2.1.2:
-    version "2.1.2"
-    resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
-  
-  yargs-parser@^8.0.0, yargs-parser@^8.1.0:
-    version "8.1.0"
-    resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950"
-    dependencies:
-      camelcase "^4.1.0"
-  
-  yargs@^10.0.3:
-    version "10.1.2"
-    resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.1.2.tgz#454d074c2b16a51a43e2fb7807e4f9de69ccb5c5"
-    dependencies:
-      cliui "^4.0.0"
-      decamelize "^1.1.1"
-      find-up "^2.1.0"
-      get-caller-file "^1.0.1"
-      os-locale "^2.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"
-      yargs-parser "^8.1.0"
-  
-  yargs@~3.10.0:
-    version "3.10.0"
-    resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
-    dependencies:
-      camelcase "^1.0.2"
-      cliui "^2.1.0"
-      decamelize "^1.0.0"
-      window-size "0.1.0"
-
-Trace: 
-  Error: Command failed.
-  Exit code: 9
-  Command: sh
-  Arguments: -c nyc npm run test:base -- "tests/integrations/*.js" --timeout 60000
-  Directory: /Users/michalsnik/Code/vue/open-sources/eslint-plugin-vue
-  Output:
-  
-      at ProcessTermError.MessageError (/usr/local/Cellar/yarn/1.5.1_1/libexec/lib/cli.js:186:110)
-      at new ProcessTermError (/usr/local/Cellar/yarn/1.5.1_1/libexec/lib/cli.js:226:113)
-      at ChildProcess.<anonymous> (/usr/local/Cellar/yarn/1.5.1_1/libexec/lib/cli.js:30281:17)
-      at emitTwo (events.js:125:13)
-      at ChildProcess.emit (events.js:213:7)
-      at maybeClose (internal/child_process.js:927:16)
-      at Process.ChildProcess._handle.onexit (internal/child_process.js:211:5)


Test patch:
diff --git a/tests/lib/rules/no-async-in-computed-properties.js b/tests/lib/rules/no-async-in-computed-properties.js
index 746ba319..2e7c2788 100644
--- a/tests/lib/rules/no-async-in-computed-properties.js
+++ b/tests/lib/rules/no-async-in-computed-properties.js
@@ -51,10 +51,14 @@ ruleTester.run('no-async-in-computed-properties', rule, {
                 return bar
               }
             },
-            foo2: {
+            bar: {
               set () {
                 new Promise((resolve, reject) => {})
               }
+            },
+            baz: {
+              ...mapGetters({ get: 'getBaz' }),
+              ...mapActions({ set: 'setBaz' })
             }
           }
         }
diff --git a/tests/lib/rules/no-side-effects-in-computed-properties.js b/tests/lib/rules/no-side-effects-in-computed-properties.js
index cfd71c7d..3eadc45c 100644
--- a/tests/lib/rules/no-side-effects-in-computed-properties.js
+++ b/tests/lib/rules/no-side-effects-in-computed-properties.js
@@ -81,6 +81,25 @@ ruleTester.run('no-side-effects-in-computed-properties', rule, {
             get() {
               return Object.keys(this.a).sort()
             }
+          },
+          test11() {
+            const categories = {}
+
+            this.types.forEach(c => {
+              categories[c.category] = categories[c.category] || []
+              categories[c.category].push(c)
+            })
+
+            return categories
+          },
+          test12() {
+            return this.types.map(t => {
+              // [].push('xxx')
+              return t
+            })
+          },
+          test13 () {
+            this.someArray.forEach(arr => console.log(arr))
           }
         }
       })`,
diff --git a/tests/lib/rules/no-use-v-if-with-v-for.js b/tests/lib/rules/no-use-v-if-with-v-for.js
new file mode 100644
index 00000000..4ee3bb8a
--- /dev/null
+++ b/tests/lib/rules/no-use-v-if-with-v-for.js
@@ -0,0 +1,144 @@
+/**
+ * @author Yosuke Ota
+ */
+'use strict'
+
+// ------------------------------------------------------------------------------
+// Requirements
+// ------------------------------------------------------------------------------
+
+const RuleTester = require('eslint').RuleTester
+const rule = require('../../../lib/rules/no-use-v-if-with-v-for')
+
+// ------------------------------------------------------------------------------
+// Tests
+// ------------------------------------------------------------------------------
+
+const tester = new RuleTester({
+  parser: 'vue-eslint-parser',
+  parserOptions: { ecmaVersion: 2015 }
+})
+
+tester.run('no-use-v-if-with-v-for', rule, {
+  valid: [
+    {
+      filename: 'test.vue',
+      code: ''
+    },
+    {
+      filename: 'test.vue',
+      code: '<template><div><div v-for="x in list" v-if="x"></div></div></template>',
+      options: [{ allowUsingIterationVar: true }]
+    },
+    {
+      filename: 'test.vue',
+      code: '<template><div><div v-for="x in list" v-if="x.foo"></div></div></template>',
+      options: [{ allowUsingIterationVar: true }]
+    },
+    {
+      filename: 'test.vue',
+      code: '<template><div><div v-for="(x,i) in list" v-if="i%2==0"></div></div></template>',
+      options: [{ allowUsingIterationVar: true }]
+    },
+    {
+      filename: 'test.vue',
+      code: '<template><div v-if="shown"><div v-for="(x,i) in list"></div></div></template>'
+    },
+    {
+      filename: 'test.vue',
+      code: `
+        <template>
+          <ul>
+            <li
+              v-for="user in activeUsers"
+              :key="user.id"
+            >
+              {{ user.name }}
+            <li>
+          </ul>
+        </template>
+      `
+    },
+    {
+      filename: 'test.vue',
+      code: `
+        <template>
+          <ul v-if="shouldShowUsers">
+            <li
+              v-for="user in users"
+              :key="user.id"
+            >
+              {{ user.name }}
+            <li>
+          </ul>
+        </template>
+      `
+    }
+  ],
+  invalid: [
+    {
+      filename: 'test.vue',
+      code: '<template><div><div v-for="x in list" v-if="shown"></div></div></template>',
+      errors: [{
+        message: "This 'v-if' should be moved to the wrapper element.",
+        line: 1
+      }]
+    },
+    {
+      filename: 'test.vue',
+      code: '<template><div><div v-for="x in list" v-if="list.length&gt;0"></div></div></template>',
+      errors: [{
+        message: "This 'v-if' should be moved to the wrapper element.",
+        line: 1
+      }]
+    },
+    {
+      filename: 'test.vue',
+      code: '<template><div><div v-for="x in list" v-if="x.isActive"></div></div></template>',
+      errors: [{
+        message: "The 'list' variable inside 'v-for' directive should be replaced with a computed property that returns filtered array instead. You should not mix 'v-for' with 'v-if'.",
+        line: 1
+      }]
+    },
+    {
+      filename: 'test.vue',
+      code: `
+        <template>
+          <ul>
+            <li
+              v-for="user in users"
+              v-if="user.isActive"
+              :key="user.id"
+            >
+              {{ user.name }}
+            <li>
+          </ul>
+        </template>
+      `,
+      errors: [{
+        message: "The 'users' variable inside 'v-for' directive should be replaced with a computed property that returns filtered array instead. You should not mix 'v-for' with 'v-if'.",
+        line: 6
+      }]
+    },
+    {
+      filename: 'test.vue',
+      code: `
+        <template>
+          <ul>
+            <li
+              v-for="user in users"
+              v-if="shouldShowUsers"
+              :key="user.id"
+            >
+              {{ user.name }}
+            <li>
+          </ul>
+        </template>
+      `,
+      errors: [{
+        message: "This 'v-if' should be moved to the wrapper element.",
+        line: 6
+      }]
+    }
+  ]
+})
diff --git a/tests/lib/rules/require-default-prop.js b/tests/lib/rules/require-default-prop.js
index 5aa7d71a..df5fc0af 100644
--- a/tests/lib/rules/require-default-prop.js
+++ b/tests/lib/rules/require-default-prop.js
@@ -39,11 +39,16 @@ ruleTester.run('require-default-prop', rule, {
             },
             c: {
               type: Number,
-              default: 0,
-              required: false
+              required: false,
+              default: 0
+            },
+            d: {
+              type: String,
+              required: false,
+              'default': 'lorem'
             },
             // eslint-disable-next-line require-default-prop
-            d: Number
+            e: Number
           }
         }
       `,
diff --git a/tests/lib/utils/index.js b/tests/lib/utils/index.js
index 2189f896..09e39ef2 100644
--- a/tests/lib/utils/index.js
+++ b/tests/lib/utils/index.js
@@ -120,6 +120,28 @@ describe('getComputedProperties', () => {
 
     assert.ok(computedProperties[0].value)
   })
+
+  it('should not collide with object spread operator inside CP', () => {
+    node = parse(`const test = {
+      name: 'test',
+      computed: {
+        foo: {
+          ...mapGetters({ get: 'getFoo' }),
+          ...mapActions({ set: 'setFoo' })
+        }
+      }
+    }`)
+
+    const computedProperties = utils.getComputedProperties(node)
+
+    assert.equal(
+      computedProperties.length,
+      1,
+      'it detects all computed properties'
+    )
+
+    assert.notOk(computedProperties[0].value)
+  })
 })
 
 describe('getStaticPropertyName', () => {
@@ -166,3 +188,23 @@ describe('getStaticPropertyName', () => {
     assert.ok(parsed === 'computed')
   })
 })
+
+describe('parseMemberOrCallExpression', () => {
+  let node
+
+  const parse = function (code) {
+    return babelEslint.parse(code).body[0].declarations[0].init
+  }
+
+  it('should parse CallExpression', () => {
+    node = parse(`const test = this.lorem['ipsum'].map(d => d.id).filter((a, b) => a > b).reduce((acc, d) => acc + d, 0)`)
+    const parsed = utils.parseMemberOrCallExpression(node)
+    assert.equal(parsed, 'this.lorem[].map().filter().reduce()')
+  })
+
+  it('should parse MemberExpression', () => {
+    node = parse(`const test = this.lorem['ipsum'][0].map(d => d.id).dolor.reduce((acc, d) => acc + d, 0).sit`)
+    const parsed = utils.parseMemberOrCallExpression(node)
+    assert.equal(parsed, 'this.lorem[][].map().dolor.reduce().sit')
+  })
+})