airavata-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From machris...@apache.org
Subject [airavata-django-portal] branch master updated: AIRAVATA-2876 Sharing button for deployments
Date Mon, 17 Sep 2018 16:03:28 GMT
This is an automated email from the ASF dual-hosted git repository.

machristie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-django-portal.git


The following commit(s) were added to refs/heads/master by this push:
     new 37a98f8  AIRAVATA-2876 Sharing button for deployments
37a98f8 is described below

commit 37a98f884c606582f3d21072c10c7e38aad10ff4
Author: Marcus Christie <machrist@iu.edu>
AuthorDate: Mon Sep 17 12:03:17 2018 -0400

    AIRAVATA-2876 Sharing button for deployments
---
 django_airavata/apps/admin/package-lock.json       | 5294 +++++++++++++++++---
 .../GroupComputeResourcePreference.vue             |    6 +-
 .../applications/ApplicationDeploymentEditor.vue   |   20 +-
 .../applications/ApplicationEditorContainer.vue    |   43 +-
 django_airavata/apps/api/serializers.py            |   20 +-
 .../api/static/django_airavata_api/js/index.js     |   23 +-
 .../django_airavata_api/js/models/SharedEntity.js  |   70 +-
 .../django_airavata_api/js/service_config.js       |   14 +-
 django_airavata/apps/api/views.py                  |   25 +
 .../static/common/js/components/ShareButton.vue    |  579 ++-
 django_airavata/templates/base.html                |  349 +-
 11 files changed, 5182 insertions(+), 1261 deletions(-)

diff --git a/django_airavata/apps/admin/package-lock.json b/django_airavata/apps/admin/package-lock.json
index 3b1c1a4..f12d604 100644
--- a/django_airavata/apps/admin/package-lock.json
+++ b/django_airavata/apps/admin/package-lock.json
@@ -1593,7 +1593,7 @@
     },
     "browserify-aes": {
       "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
+      "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
       "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
       "dev": true,
       "requires": {
@@ -1630,7 +1630,7 @@
     },
     "browserify-rsa": {
       "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
+      "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
       "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
       "dev": true,
       "requires": {
@@ -1989,9 +1989,9 @@
       }
     },
     "chownr": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz",
-      "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=",
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz",
+      "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==",
       "dev": true
     },
     "cipher-base": {
@@ -2230,9 +2230,9 @@
       }
     },
     "config-chain": {
-      "version": "1.1.11",
-      "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz",
-      "integrity": "sha1-q6CXR9++TD5w52am5BWG4YWfxvI=",
+      "version": "1.1.12",
+      "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz",
+      "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==",
       "dev": true,
       "requires": {
         "ini": "^1.3.4",
@@ -2375,7 +2375,7 @@
     },
     "create-hash": {
       "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
+      "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
       "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
       "dev": true,
       "requires": {
@@ -2388,7 +2388,7 @@
     },
     "create-hmac": {
       "version": "1.1.7",
-      "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
+      "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
       "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
       "dev": true,
       "requires": {
@@ -2850,7 +2850,7 @@
     },
     "diffie-hellman": {
       "version": "5.0.3",
-      "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
+      "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
       "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
       "dev": true,
       "requires": {
@@ -2877,6 +2877,180 @@
         "uuid": "^3.3.2"
       },
       "dependencies": {
+        "@babel/code-frame": {
+          "version": "7.0.0",
+          "bundled": true,
+          "requires": {
+            "@babel/highlight": "^7.0.0"
+          }
+        },
+        "@babel/generator": {
+          "version": "7.0.0",
+          "bundled": true,
+          "requires": {
+            "@babel/types": "^7.0.0",
+            "jsesc": "^2.5.1",
+            "lodash": "^4.17.10",
+            "source-map": "^0.5.0",
+            "trim-right": "^1.0.1"
+          },
+          "dependencies": {
+            "jsesc": {
+              "version": "2.5.1",
+              "bundled": true
+            }
+          }
+        },
+        "@babel/helper-function-name": {
+          "version": "7.0.0",
+          "bundled": true,
+          "requires": {
+            "@babel/helper-get-function-arity": "^7.0.0",
+            "@babel/template": "^7.0.0",
+            "@babel/types": "^7.0.0"
+          }
+        },
+        "@babel/helper-get-function-arity": {
+          "version": "7.0.0",
+          "bundled": true,
+          "requires": {
+            "@babel/types": "^7.0.0"
+          }
+        },
+        "@babel/helper-split-export-declaration": {
+          "version": "7.0.0",
+          "bundled": true,
+          "requires": {
+            "@babel/types": "^7.0.0"
+          }
+        },
+        "@babel/highlight": {
+          "version": "7.0.0",
+          "bundled": true,
+          "requires": {
+            "chalk": "^2.0.0",
+            "esutils": "^2.0.2",
+            "js-tokens": "^4.0.0"
+          },
+          "dependencies": {
+            "ansi-styles": {
+              "version": "3.2.1",
+              "bundled": true,
+              "requires": {
+                "color-convert": "^1.9.0"
+              }
+            },
+            "chalk": {
+              "version": "2.4.1",
+              "bundled": true,
+              "requires": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+              }
+            },
+            "js-tokens": {
+              "version": "4.0.0",
+              "bundled": true
+            },
+            "supports-color": {
+              "version": "5.5.0",
+              "bundled": true,
+              "requires": {
+                "has-flag": "^3.0.0"
+              }
+            }
+          }
+        },
+        "@babel/parser": {
+          "version": "7.0.0",
+          "bundled": true
+        },
+        "@babel/template": {
+          "version": "7.0.0",
+          "bundled": true,
+          "requires": {
+            "@babel/code-frame": "^7.0.0",
+            "@babel/parser": "^7.0.0",
+            "@babel/types": "^7.0.0"
+          }
+        },
+        "@babel/traverse": {
+          "version": "7.0.0",
+          "bundled": true,
+          "requires": {
+            "@babel/code-frame": "^7.0.0",
+            "@babel/generator": "^7.0.0",
+            "@babel/helper-function-name": "^7.0.0",
+            "@babel/helper-split-export-declaration": "^7.0.0",
+            "@babel/parser": "^7.0.0",
+            "@babel/types": "^7.0.0",
+            "debug": "^3.1.0",
+            "globals": "^11.1.0",
+            "lodash": "^4.17.10"
+          },
+          "dependencies": {
+            "debug": {
+              "version": "3.2.5",
+              "bundled": true,
+              "requires": {
+                "ms": "^2.1.1"
+              }
+            },
+            "globals": {
+              "version": "11.7.0",
+              "bundled": true
+            },
+            "ms": {
+              "version": "2.1.1",
+              "bundled": true
+            }
+          }
+        },
+        "@babel/types": {
+          "version": "7.0.0",
+          "bundled": true,
+          "requires": {
+            "esutils": "^2.0.2",
+            "lodash": "^4.17.10",
+            "to-fast-properties": "^2.0.0"
+          },
+          "dependencies": {
+            "to-fast-properties": {
+              "version": "2.0.0",
+              "bundled": true
+            }
+          }
+        },
+        "acorn": {
+          "version": "5.7.3",
+          "bundled": true
+        },
+        "acorn-jsx": {
+          "version": "4.1.1",
+          "bundled": true,
+          "requires": {
+            "acorn": "^5.0.3"
+          }
+        },
+        "ajv": {
+          "version": "6.5.3",
+          "bundled": true,
+          "requires": {
+            "fast-deep-equal": "^2.0.1",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
+          }
+        },
+        "ajv-keywords": {
+          "version": "3.2.0",
+          "bundled": true
+        },
+        "ansi-escapes": {
+          "version": "3.1.0",
+          "bundled": true
+        },
         "ansi-regex": {
           "version": "2.1.1",
           "bundled": true
@@ -2894,6 +3068,13 @@
             "normalize-path": "^2.0.0"
           }
         },
+        "argparse": {
+          "version": "1.0.10",
+          "bundled": true,
+          "requires": {
+            "sprintf-js": "~1.0.2"
+          }
+        },
         "arr-diff": {
           "version": "2.0.0",
           "bundled": true,
@@ -2907,11 +3088,26 @@
           "bundled": true,
           "optional": true
         },
+        "array-union": {
+          "version": "1.0.2",
+          "bundled": true,
+          "requires": {
+            "array-uniq": "^1.0.1"
+          }
+        },
+        "array-uniq": {
+          "version": "1.0.3",
+          "bundled": true
+        },
         "array-unique": {
           "version": "0.2.1",
           "bundled": true,
           "optional": true
         },
+        "arrify": {
+          "version": "1.0.1",
+          "bundled": true
+        },
         "async-each": {
           "version": "1.0.1",
           "bundled": true,
@@ -2972,6 +3168,28 @@
             "source-map": "^0.5.7"
           }
         },
+        "babel-eslint": {
+          "version": "9.0.0",
+          "bundled": true,
+          "requires": {
+            "@babel/code-frame": "^7.0.0",
+            "@babel/parser": "^7.0.0",
+            "@babel/traverse": "^7.0.0",
+            "@babel/types": "^7.0.0",
+            "eslint-scope": "3.7.1",
+            "eslint-visitor-keys": "^1.0.0"
+          },
+          "dependencies": {
+            "eslint-scope": {
+              "version": "3.7.1",
+              "bundled": true,
+              "requires": {
+                "esrecurse": "^4.1.0",
+                "estraverse": "^4.1.1"
+              }
+            }
+          }
+        },
         "babel-generator": {
           "version": "6.26.1",
           "bundled": true,
@@ -3360,7 +3578,14 @@
           "bundled": true,
           "requires": {
             "babel-runtime": "^6.26.0",
-            "core-js": "^2.5.0"
+            "core-js": "^2.5.0",
+            "regenerator-runtime": "^0.10.5"
+          },
+          "dependencies": {
+            "regenerator-runtime": {
+              "version": "0.10.5",
+              "bundled": true
+            }
           }
         },
         "babel-preset-env": {
@@ -3495,6 +3720,17 @@
             "electron-to-chromium": "^1.3.47"
           }
         },
+        "caller-path": {
+          "version": "0.1.0",
+          "bundled": true,
+          "requires": {
+            "callsites": "^0.2.0"
+          }
+        },
+        "callsites": {
+          "version": "0.2.0",
+          "bundled": true
+        },
         "caniuse-lite": {
           "version": "1.0.30000865",
           "bundled": true
@@ -3510,6 +3746,10 @@
             "supports-color": "^2.0.0"
           }
         },
+        "chardet": {
+          "version": "0.7.0",
+          "bundled": true
+        },
         "chokidar": {
           "version": "1.7.0",
           "bundled": true,
@@ -3526,6 +3766,32 @@
             "readdirp": "^2.0.0"
           }
         },
+        "circular-json": {
+          "version": "0.3.3",
+          "bundled": true
+        },
+        "cli-cursor": {
+          "version": "2.1.0",
+          "bundled": true,
+          "requires": {
+            "restore-cursor": "^2.0.0"
+          }
+        },
+        "cli-width": {
+          "version": "2.2.0",
+          "bundled": true
+        },
+        "color-convert": {
+          "version": "1.9.3",
+          "bundled": true,
+          "requires": {
+            "color-name": "1.1.3"
+          }
+        },
+        "color-name": {
+          "version": "1.1.3",
+          "bundled": true
+        },
         "commander": {
           "version": "2.16.0",
           "bundled": true
@@ -3547,6 +3813,17 @@
           "bundled": true,
           "optional": true
         },
+        "cross-spawn": {
+          "version": "6.0.5",
+          "bundled": true,
+          "requires": {
+            "nice-try": "^1.0.4",
+            "path-key": "^2.0.1",
+            "semver": "^5.5.0",
+            "shebang-command": "^1.2.0",
+            "which": "^1.2.9"
+          }
+        },
         "debug": {
           "version": "2.6.9",
           "bundled": true,
@@ -3554,6 +3831,23 @@
             "ms": "2.0.0"
           }
         },
+        "deep-is": {
+          "version": "0.1.3",
+          "bundled": true
+        },
+        "del": {
+          "version": "2.2.2",
+          "bundled": true,
+          "requires": {
+            "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": {
           "version": "4.0.0",
           "bundled": true,
@@ -3561,6 +3855,13 @@
             "repeating": "^2.0.0"
           }
         },
+        "doctrine": {
+          "version": "2.1.0",
+          "bundled": true,
+          "requires": {
+            "esutils": "^2.0.2"
+          }
+        },
         "electron-to-chromium": {
           "version": "1.3.52",
           "bundled": true
@@ -3569,250 +3870,1049 @@
           "version": "1.0.5",
           "bundled": true
         },
-        "esutils": {
-          "version": "2.0.2",
-          "bundled": true
-        },
-        "expand-brackets": {
-          "version": "0.1.5",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "is-posix-bracket": "^0.1.0"
-          }
-        },
-        "expand-range": {
-          "version": "1.8.2",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "fill-range": "^2.1.0"
-          }
-        },
-        "extglob": {
-          "version": "0.3.2",
+        "eslint": {
+          "version": "5.6.0",
           "bundled": true,
-          "optional": true,
           "requires": {
-            "is-extglob": "^1.0.0"
-          }
-        },
-        "filename-regex": {
-          "version": "2.0.1",
-          "bundled": true,
-          "optional": true
+            "@babel/code-frame": "^7.0.0",
+            "ajv": "^6.5.3",
+            "chalk": "^2.1.0",
+            "cross-spawn": "^6.0.5",
+            "debug": "^3.1.0",
+            "doctrine": "^2.1.0",
+            "eslint-scope": "^4.0.0",
+            "eslint-utils": "^1.3.1",
+            "eslint-visitor-keys": "^1.0.0",
+            "espree": "^4.0.0",
+            "esquery": "^1.0.1",
+            "esutils": "^2.0.2",
+            "file-entry-cache": "^2.0.0",
+            "functional-red-black-tree": "^1.0.1",
+            "glob": "^7.1.2",
+            "globals": "^11.7.0",
+            "ignore": "^4.0.6",
+            "imurmurhash": "^0.1.4",
+            "inquirer": "^6.1.0",
+            "is-resolvable": "^1.1.0",
+            "js-yaml": "^3.12.0",
+            "json-stable-stringify-without-jsonify": "^1.0.1",
+            "levn": "^0.3.0",
+            "lodash": "^4.17.5",
+            "minimatch": "^3.0.4",
+            "mkdirp": "^0.5.1",
+            "natural-compare": "^1.4.0",
+            "optionator": "^0.8.2",
+            "path-is-inside": "^1.0.2",
+            "pluralize": "^7.0.0",
+            "progress": "^2.0.0",
+            "regexpp": "^2.0.0",
+            "require-uncached": "^1.0.3",
+            "semver": "^5.5.1",
+            "strip-ansi": "^4.0.0",
+            "strip-json-comments": "^2.0.1",
+            "table": "^4.0.3",
+            "text-table": "^0.2.0"
+          },
+          "dependencies": {
+            "ansi-regex": {
+              "version": "3.0.0",
+              "bundled": true
+            },
+            "ansi-styles": {
+              "version": "3.2.1",
+              "bundled": true,
+              "requires": {
+                "color-convert": "^1.9.0"
+              }
+            },
+            "chalk": {
+              "version": "2.4.1",
+              "bundled": true,
+              "requires": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+              }
+            },
+            "debug": {
+              "version": "3.2.5",
+              "bundled": true,
+              "requires": {
+                "ms": "^2.1.1"
+              }
+            },
+            "globals": {
+              "version": "11.7.0",
+              "bundled": true
+            },
+            "ms": {
+              "version": "2.1.1",
+              "bundled": true
+            },
+            "semver": {
+              "version": "5.5.1",
+              "bundled": true
+            },
+            "strip-ansi": {
+              "version": "4.0.0",
+              "bundled": true,
+              "requires": {
+                "ansi-regex": "^3.0.0"
+              }
+            },
+            "supports-color": {
+              "version": "5.5.0",
+              "bundled": true,
+              "requires": {
+                "has-flag": "^3.0.0"
+              }
+            }
+          }
         },
-        "fill-range": {
-          "version": "2.2.4",
+        "eslint-plugin-vue": {
+          "version": "4.7.1",
           "bundled": true,
-          "optional": true,
           "requires": {
-            "is-number": "^2.1.0",
-            "isobject": "^2.0.0",
-            "randomatic": "^3.0.0",
-            "repeat-element": "^1.1.2",
-            "repeat-string": "^1.5.2"
+            "vue-eslint-parser": "^2.0.3"
           }
         },
-        "for-in": {
-          "version": "1.0.2",
-          "bundled": true,
-          "optional": true
-        },
-        "for-own": {
-          "version": "0.1.5",
+        "eslint-scope": {
+          "version": "4.0.0",
           "bundled": true,
-          "optional": true,
           "requires": {
-            "for-in": "^1.0.1"
+            "esrecurse": "^4.1.0",
+            "estraverse": "^4.1.1"
           }
         },
-        "fs-readdir-recursive": {
-          "version": "1.1.0",
+        "eslint-utils": {
+          "version": "1.3.1",
           "bundled": true
         },
-        "fs.realpath": {
+        "eslint-visitor-keys": {
           "version": "1.0.0",
           "bundled": true
         },
-        "fsevents": {
-          "version": "1.2.4",
+        "espree": {
+          "version": "4.0.0",
           "bundled": true,
-          "optional": true,
           "requires": {
-            "nan": "^2.9.2"
+            "acorn": "^5.6.0",
+            "acorn-jsx": "^4.1.1"
           }
         },
-        "glob": {
-          "version": "7.1.2",
-          "bundled": true,
-          "requires": {
-            "fs.realpath": "^1.0.0",
-            "inflight": "^1.0.4",
-            "inherits": "2",
-            "minimatch": "^3.0.4",
-            "once": "^1.3.0",
-            "path-is-absolute": "^1.0.0"
-          }
+        "esprima": {
+          "version": "4.0.1",
+          "bundled": true
         },
-        "glob-base": {
-          "version": "0.3.0",
+        "esquery": {
+          "version": "1.0.1",
           "bundled": true,
-          "optional": true,
           "requires": {
-            "glob-parent": "^2.0.0",
-            "is-glob": "^2.0.0"
+            "estraverse": "^4.0.0"
           }
         },
-        "glob-parent": {
-          "version": "2.0.0",
+        "esrecurse": {
+          "version": "4.2.1",
           "bundled": true,
           "requires": {
-            "is-glob": "^2.0.0"
+            "estraverse": "^4.1.0"
           }
         },
-        "globals": {
-          "version": "9.18.0",
+        "estraverse": {
+          "version": "4.2.0",
           "bundled": true
         },
-        "graceful-fs": {
-          "version": "4.1.11",
+        "esutils": {
+          "version": "2.0.2",
           "bundled": true
         },
-        "has-ansi": {
-          "version": "2.0.0",
-          "bundled": true,
-          "requires": {
-            "ansi-regex": "^2.0.0"
-          }
-        },
-        "home-or-tmp": {
-          "version": "2.0.0",
+        "expand-brackets": {
+          "version": "0.1.5",
           "bundled": true,
+          "optional": true,
           "requires": {
-            "os-homedir": "^1.0.0",
-            "os-tmpdir": "^1.0.1"
+            "is-posix-bracket": "^0.1.0"
           }
         },
-        "inflight": {
-          "version": "1.0.6",
+        "expand-range": {
+          "version": "1.8.2",
           "bundled": true,
+          "optional": true,
           "requires": {
-            "once": "^1.3.0",
-            "wrappy": "1"
+            "fill-range": "^2.1.0"
           }
         },
-        "inherits": {
-          "version": "2.0.3",
-          "bundled": true
-        },
-        "invariant": {
-          "version": "2.2.4",
+        "external-editor": {
+          "version": "3.0.3",
           "bundled": true,
           "requires": {
-            "loose-envify": "^1.0.0"
+            "chardet": "^0.7.0",
+            "iconv-lite": "^0.4.24",
+            "tmp": "^0.0.33"
           }
         },
-        "is-binary-path": {
-          "version": "1.0.1",
+        "extglob": {
+          "version": "0.3.2",
           "bundled": true,
           "optional": true,
           "requires": {
-            "binary-extensions": "^1.0.0"
+            "is-extglob": "^1.0.0"
           }
         },
-        "is-buffer": {
-          "version": "1.1.6",
+        "fast-deep-equal": {
+          "version": "2.0.1",
           "bundled": true
         },
-        "is-dotfile": {
-          "version": "1.0.3",
-          "bundled": true,
-          "optional": true
+        "fast-json-stable-stringify": {
+          "version": "2.0.0",
+          "bundled": true
         },
-        "is-equal-shallow": {
-          "version": "0.1.3",
+        "fast-levenshtein": {
+          "version": "2.0.6",
+          "bundled": true
+        },
+        "figures": {
+          "version": "2.0.0",
           "bundled": true,
-          "optional": true,
           "requires": {
-            "is-primitive": "^2.0.0"
+            "escape-string-regexp": "^1.0.5"
           }
         },
-        "is-extendable": {
-          "version": "0.1.1",
-          "bundled": true,
-          "optional": true
-        },
-        "is-extglob": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "is-finite": {
-          "version": "1.0.2",
+        "file-entry-cache": {
+          "version": "2.0.0",
           "bundled": true,
           "requires": {
-            "number-is-nan": "^1.0.0"
+            "flat-cache": "^1.2.1",
+            "object-assign": "^4.0.1"
           }
         },
-        "is-glob": {
+        "filename-regex": {
           "version": "2.0.1",
           "bundled": true,
-          "requires": {
-            "is-extglob": "^1.0.0"
-          }
+          "optional": true
         },
-        "is-number": {
-          "version": "2.1.0",
+        "fill-range": {
+          "version": "2.2.4",
           "bundled": true,
           "optional": true,
           "requires": {
-            "kind-of": "^3.0.2"
+            "is-number": "^2.1.0",
+            "isobject": "^2.0.0",
+            "randomatic": "^3.0.0",
+            "repeat-element": "^1.1.2",
+            "repeat-string": "^1.5.2"
           }
         },
-        "is-posix-bracket": {
-          "version": "0.1.1",
+        "flat-cache": {
+          "version": "1.3.0",
           "bundled": true,
-          "optional": true
+          "requires": {
+            "circular-json": "^0.3.1",
+            "del": "^2.0.2",
+            "graceful-fs": "^4.1.2",
+            "write": "^0.2.1"
+          }
         },
-        "is-primitive": {
-          "version": "2.0.0",
+        "for-in": {
+          "version": "1.0.2",
           "bundled": true,
           "optional": true
         },
-        "isarray": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "isobject": {
-          "version": "2.1.0",
+        "for-own": {
+          "version": "0.1.5",
           "bundled": true,
           "optional": true,
           "requires": {
-            "isarray": "1.0.0"
+            "for-in": "^1.0.1"
           }
         },
-        "js-tokens": {
-          "version": "3.0.2",
-          "bundled": true
-        },
-        "jsesc": {
-          "version": "1.3.0",
+        "fs-readdir-recursive": {
+          "version": "1.1.0",
           "bundled": true
         },
-        "json5": {
-          "version": "0.5.1",
+        "fs.realpath": {
+          "version": "1.0.0",
           "bundled": true
         },
-        "kind-of": {
-          "version": "3.2.2",
+        "fsevents": {
+          "version": "1.2.4",
           "bundled": true,
+          "optional": true,
           "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        },
-        "lodash": {
-          "version": "4.17.10",
-          "bundled": true
+            "nan": "^2.9.2",
+            "node-pre-gyp": "^0.10.0"
+          },
+          "dependencies": {
+            "abbrev": {
+              "version": "1.1.1",
+              "bundled": true,
+              "optional": true
+            },
+            "ansi-regex": {
+              "version": "2.1.1",
+              "bundled": true
+            },
+            "aproba": {
+              "version": "1.2.0",
+              "bundled": true,
+              "optional": true
+            },
+            "are-we-there-yet": {
+              "version": "1.1.4",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "delegates": "^1.0.0",
+                "readable-stream": "^2.0.6"
+              }
+            },
+            "balanced-match": {
+              "version": "1.0.0",
+              "bundled": true
+            },
+            "brace-expansion": {
+              "version": "1.1.11",
+              "bundled": true,
+              "requires": {
+                "balanced-match": "^1.0.0",
+                "concat-map": "0.0.1"
+              }
+            },
+            "chownr": {
+              "version": "1.0.1",
+              "bundled": true,
+              "optional": true
+            },
+            "code-point-at": {
+              "version": "1.1.0",
+              "bundled": true
+            },
+            "concat-map": {
+              "version": "0.0.1",
+              "bundled": true
+            },
+            "console-control-strings": {
+              "version": "1.1.0",
+              "bundled": true
+            },
+            "core-util-is": {
+              "version": "1.0.2",
+              "bundled": true,
+              "optional": true
+            },
+            "debug": {
+              "version": "2.6.9",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "ms": "2.0.0"
+              }
+            },
+            "deep-extend": {
+              "version": "0.5.1",
+              "bundled": true,
+              "optional": true
+            },
+            "delegates": {
+              "version": "1.0.0",
+              "bundled": true,
+              "optional": true
+            },
+            "detect-libc": {
+              "version": "1.0.3",
+              "bundled": true,
+              "optional": true
+            },
+            "fs-minipass": {
+              "version": "1.2.5",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "minipass": "^2.2.1"
+              }
+            },
+            "fs.realpath": {
+              "version": "1.0.0",
+              "bundled": true,
+              "optional": true
+            },
+            "gauge": {
+              "version": "2.7.4",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "aproba": "^1.0.3",
+                "console-control-strings": "^1.0.0",
+                "has-unicode": "^2.0.0",
+                "object-assign": "^4.1.0",
+                "signal-exit": "^3.0.0",
+                "string-width": "^1.0.1",
+                "strip-ansi": "^3.0.1",
+                "wide-align": "^1.1.0"
+              }
+            },
+            "glob": {
+              "version": "7.1.2",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "fs.realpath": "^1.0.0",
+                "inflight": "^1.0.4",
+                "inherits": "2",
+                "minimatch": "^3.0.4",
+                "once": "^1.3.0",
+                "path-is-absolute": "^1.0.0"
+              }
+            },
+            "has-unicode": {
+              "version": "2.0.1",
+              "bundled": true,
+              "optional": true
+            },
+            "iconv-lite": {
+              "version": "0.4.21",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "safer-buffer": "^2.1.0"
+              }
+            },
+            "ignore-walk": {
+              "version": "3.0.1",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "minimatch": "^3.0.4"
+              }
+            },
+            "inflight": {
+              "version": "1.0.6",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "once": "^1.3.0",
+                "wrappy": "1"
+              }
+            },
+            "inherits": {
+              "version": "2.0.3",
+              "bundled": true
+            },
+            "ini": {
+              "version": "1.3.5",
+              "bundled": true,
+              "optional": true
+            },
+            "is-fullwidth-code-point": {
+              "version": "1.0.0",
+              "bundled": true,
+              "requires": {
+                "number-is-nan": "^1.0.0"
+              }
+            },
+            "isarray": {
+              "version": "1.0.0",
+              "bundled": true,
+              "optional": true
+            },
+            "minimatch": {
+              "version": "3.0.4",
+              "bundled": true,
+              "requires": {
+                "brace-expansion": "^1.1.7"
+              }
+            },
+            "minimist": {
+              "version": "0.0.8",
+              "bundled": true
+            },
+            "minipass": {
+              "version": "2.2.4",
+              "bundled": true,
+              "requires": {
+                "safe-buffer": "^5.1.1",
+                "yallist": "^3.0.0"
+              }
+            },
+            "minizlib": {
+              "version": "1.1.0",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "minipass": "^2.2.1"
+              }
+            },
+            "mkdirp": {
+              "version": "0.5.1",
+              "bundled": true,
+              "requires": {
+                "minimist": "0.0.8"
+              }
+            },
+            "ms": {
+              "version": "2.0.0",
+              "bundled": true,
+              "optional": true
+            },
+            "needle": {
+              "version": "2.2.0",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "debug": "^2.1.2",
+                "iconv-lite": "^0.4.4",
+                "sax": "^1.2.4"
+              }
+            },
+            "node-pre-gyp": {
+              "version": "0.10.0",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "detect-libc": "^1.0.2",
+                "mkdirp": "^0.5.1",
+                "needle": "^2.2.0",
+                "nopt": "^4.0.1",
+                "npm-packlist": "^1.1.6",
+                "npmlog": "^4.0.2",
+                "rc": "^1.1.7",
+                "rimraf": "^2.6.1",
+                "semver": "^5.3.0",
+                "tar": "^4"
+              }
+            },
+            "nopt": {
+              "version": "4.0.1",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "abbrev": "1",
+                "osenv": "^0.1.4"
+              }
+            },
+            "npm-bundled": {
+              "version": "1.0.3",
+              "bundled": true,
+              "optional": true
+            },
+            "npm-packlist": {
+              "version": "1.1.10",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "ignore-walk": "^3.0.1",
+                "npm-bundled": "^1.0.1"
+              }
+            },
+            "npmlog": {
+              "version": "4.1.2",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "are-we-there-yet": "~1.1.2",
+                "console-control-strings": "~1.1.0",
+                "gauge": "~2.7.3",
+                "set-blocking": "~2.0.0"
+              }
+            },
+            "number-is-nan": {
+              "version": "1.0.1",
+              "bundled": true
+            },
+            "object-assign": {
+              "version": "4.1.1",
+              "bundled": true,
+              "optional": true
+            },
+            "once": {
+              "version": "1.4.0",
+              "bundled": true,
+              "requires": {
+                "wrappy": "1"
+              }
+            },
+            "os-homedir": {
+              "version": "1.0.2",
+              "bundled": true,
+              "optional": true
+            },
+            "os-tmpdir": {
+              "version": "1.0.2",
+              "bundled": true,
+              "optional": true
+            },
+            "osenv": {
+              "version": "0.1.5",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "os-homedir": "^1.0.0",
+                "os-tmpdir": "^1.0.0"
+              }
+            },
+            "path-is-absolute": {
+              "version": "1.0.1",
+              "bundled": true,
+              "optional": true
+            },
+            "process-nextick-args": {
+              "version": "2.0.0",
+              "bundled": true,
+              "optional": true
+            },
+            "rc": {
+              "version": "1.2.7",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "deep-extend": "^0.5.1",
+                "ini": "~1.3.0",
+                "minimist": "^1.2.0",
+                "strip-json-comments": "~2.0.1"
+              },
+              "dependencies": {
+                "minimist": {
+                  "version": "1.2.0",
+                  "bundled": true,
+                  "optional": true
+                }
+              }
+            },
+            "readable-stream": {
+              "version": "2.3.6",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+              }
+            },
+            "rimraf": {
+              "version": "2.6.2",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "glob": "^7.0.5"
+              }
+            },
+            "safe-buffer": {
+              "version": "5.1.1",
+              "bundled": true
+            },
+            "safer-buffer": {
+              "version": "2.1.2",
+              "bundled": true,
+              "optional": true
+            },
+            "sax": {
+              "version": "1.2.4",
+              "bundled": true,
+              "optional": true
+            },
+            "semver": {
+              "version": "5.5.0",
+              "bundled": true,
+              "optional": true
+            },
+            "set-blocking": {
+              "version": "2.0.0",
+              "bundled": true,
+              "optional": true
+            },
+            "signal-exit": {
+              "version": "3.0.2",
+              "bundled": true,
+              "optional": true
+            },
+            "string-width": {
+              "version": "1.0.2",
+              "bundled": true,
+              "requires": {
+                "code-point-at": "^1.0.0",
+                "is-fullwidth-code-point": "^1.0.0",
+                "strip-ansi": "^3.0.0"
+              }
+            },
+            "string_decoder": {
+              "version": "1.1.1",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "safe-buffer": "~5.1.0"
+              }
+            },
+            "strip-ansi": {
+              "version": "3.0.1",
+              "bundled": true,
+              "requires": {
+                "ansi-regex": "^2.0.0"
+              }
+            },
+            "strip-json-comments": {
+              "version": "2.0.1",
+              "bundled": true,
+              "optional": true
+            },
+            "tar": {
+              "version": "4.4.1",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "chownr": "^1.0.1",
+                "fs-minipass": "^1.2.5",
+                "minipass": "^2.2.4",
+                "minizlib": "^1.1.0",
+                "mkdirp": "^0.5.0",
+                "safe-buffer": "^5.1.1",
+                "yallist": "^3.0.2"
+              }
+            },
+            "util-deprecate": {
+              "version": "1.0.2",
+              "bundled": true,
+              "optional": true
+            },
+            "wide-align": {
+              "version": "1.1.2",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "string-width": "^1.0.2"
+              }
+            },
+            "wrappy": {
+              "version": "1.0.2",
+              "bundled": true
+            },
+            "yallist": {
+              "version": "3.0.2",
+              "bundled": true
+            }
+          }
+        },
+        "functional-red-black-tree": {
+          "version": "1.0.1",
+          "bundled": true
+        },
+        "glob": {
+          "version": "7.1.2",
+          "bundled": true,
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^3.0.4",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
+        },
+        "glob-base": {
+          "version": "0.3.0",
+          "bundled": true,
+          "optional": true,
+          "requires": {
+            "glob-parent": "^2.0.0",
+            "is-glob": "^2.0.0"
+          }
+        },
+        "glob-parent": {
+          "version": "2.0.0",
+          "bundled": true,
+          "requires": {
+            "is-glob": "^2.0.0"
+          }
+        },
+        "globals": {
+          "version": "9.18.0",
+          "bundled": true
+        },
+        "globby": {
+          "version": "5.0.0",
+          "bundled": true,
+          "requires": {
+            "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": {
+          "version": "4.1.11",
+          "bundled": true
+        },
+        "has-ansi": {
+          "version": "2.0.0",
+          "bundled": true,
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        },
+        "has-flag": {
+          "version": "3.0.0",
+          "bundled": true
+        },
+        "home-or-tmp": {
+          "version": "2.0.0",
+          "bundled": true,
+          "requires": {
+            "os-homedir": "^1.0.0",
+            "os-tmpdir": "^1.0.1"
+          }
+        },
+        "iconv-lite": {
+          "version": "0.4.24",
+          "bundled": true,
+          "requires": {
+            "safer-buffer": ">= 2.1.2 < 3"
+          }
+        },
+        "ignore": {
+          "version": "4.0.6",
+          "bundled": true
+        },
+        "imurmurhash": {
+          "version": "0.1.4",
+          "bundled": true
+        },
+        "inflight": {
+          "version": "1.0.6",
+          "bundled": true,
+          "requires": {
+            "once": "^1.3.0",
+            "wrappy": "1"
+          }
+        },
+        "inherits": {
+          "version": "2.0.3",
+          "bundled": true
+        },
+        "inquirer": {
+          "version": "6.2.0",
+          "bundled": true,
+          "requires": {
+            "ansi-escapes": "^3.0.0",
+            "chalk": "^2.0.0",
+            "cli-cursor": "^2.1.0",
+            "cli-width": "^2.0.0",
+            "external-editor": "^3.0.0",
+            "figures": "^2.0.0",
+            "lodash": "^4.17.10",
+            "mute-stream": "0.0.7",
+            "run-async": "^2.2.0",
+            "rxjs": "^6.1.0",
+            "string-width": "^2.1.0",
+            "strip-ansi": "^4.0.0",
+            "through": "^2.3.6"
+          },
+          "dependencies": {
+            "ansi-regex": {
+              "version": "3.0.0",
+              "bundled": true
+            },
+            "ansi-styles": {
+              "version": "3.2.1",
+              "bundled": true,
+              "requires": {
+                "color-convert": "^1.9.0"
+              }
+            },
+            "chalk": {
+              "version": "2.4.1",
+              "bundled": true,
+              "requires": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+              }
+            },
+            "strip-ansi": {
+              "version": "4.0.0",
+              "bundled": true,
+              "requires": {
+                "ansi-regex": "^3.0.0"
+              }
+            },
+            "supports-color": {
+              "version": "5.5.0",
+              "bundled": true,
+              "requires": {
+                "has-flag": "^3.0.0"
+              }
+            }
+          }
+        },
+        "invariant": {
+          "version": "2.2.4",
+          "bundled": true,
+          "requires": {
+            "loose-envify": "^1.0.0"
+          }
+        },
+        "is-binary-path": {
+          "version": "1.0.1",
+          "bundled": true,
+          "optional": true,
+          "requires": {
+            "binary-extensions": "^1.0.0"
+          }
+        },
+        "is-buffer": {
+          "version": "1.1.6",
+          "bundled": true
+        },
+        "is-dotfile": {
+          "version": "1.0.3",
+          "bundled": true,
+          "optional": true
+        },
+        "is-equal-shallow": {
+          "version": "0.1.3",
+          "bundled": true,
+          "optional": true,
+          "requires": {
+            "is-primitive": "^2.0.0"
+          }
+        },
+        "is-extendable": {
+          "version": "0.1.1",
+          "bundled": true,
+          "optional": true
+        },
+        "is-extglob": {
+          "version": "1.0.0",
+          "bundled": true
+        },
+        "is-finite": {
+          "version": "1.0.2",
+          "bundled": true,
+          "requires": {
+            "number-is-nan": "^1.0.0"
+          }
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "bundled": true
+        },
+        "is-glob": {
+          "version": "2.0.1",
+          "bundled": true,
+          "requires": {
+            "is-extglob": "^1.0.0"
+          }
+        },
+        "is-number": {
+          "version": "2.1.0",
+          "bundled": true,
+          "optional": true,
+          "requires": {
+            "kind-of": "^3.0.2"
+          }
+        },
+        "is-path-cwd": {
+          "version": "1.0.0",
+          "bundled": true
+        },
+        "is-path-in-cwd": {
+          "version": "1.0.1",
+          "bundled": true,
+          "requires": {
+            "is-path-inside": "^1.0.0"
+          }
+        },
+        "is-path-inside": {
+          "version": "1.0.1",
+          "bundled": true,
+          "requires": {
+            "path-is-inside": "^1.0.1"
+          }
+        },
+        "is-posix-bracket": {
+          "version": "0.1.1",
+          "bundled": true,
+          "optional": true
+        },
+        "is-primitive": {
+          "version": "2.0.0",
+          "bundled": true,
+          "optional": true
+        },
+        "is-promise": {
+          "version": "2.1.0",
+          "bundled": true
+        },
+        "is-resolvable": {
+          "version": "1.1.0",
+          "bundled": true
+        },
+        "isarray": {
+          "version": "1.0.0",
+          "bundled": true
+        },
+        "isexe": {
+          "version": "2.0.0",
+          "bundled": true
+        },
+        "isobject": {
+          "version": "2.1.0",
+          "bundled": true,
+          "optional": true,
+          "requires": {
+            "isarray": "1.0.0"
+          }
+        },
+        "js-tokens": {
+          "version": "3.0.2",
+          "bundled": true
+        },
+        "js-yaml": {
+          "version": "3.12.0",
+          "bundled": true,
+          "requires": {
+            "argparse": "^1.0.7",
+            "esprima": "^4.0.0"
+          }
+        },
+        "jsesc": {
+          "version": "1.3.0",
+          "bundled": true
+        },
+        "json-schema-traverse": {
+          "version": "0.4.1",
+          "bundled": true
+        },
+        "json-stable-stringify-without-jsonify": {
+          "version": "1.0.1",
+          "bundled": true
+        },
+        "json5": {
+          "version": "0.5.1",
+          "bundled": true
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "bundled": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        },
+        "levn": {
+          "version": "0.3.0",
+          "bundled": true,
+          "requires": {
+            "prelude-ls": "~1.1.2",
+            "type-check": "~0.3.2"
+          }
+        },
+        "lodash": {
+          "version": "4.17.10",
+          "bundled": true
         },
         "loose-envify": {
           "version": "1.4.0",
@@ -3846,6 +4946,10 @@
             "regex-cache": "^0.4.2"
           }
         },
+        "mimic-fn": {
+          "version": "1.2.0",
+          "bundled": true
+        },
         "minimatch": {
           "version": "3.0.4",
           "bundled": true,
@@ -3868,11 +4972,23 @@
           "version": "2.0.0",
           "bundled": true
         },
+        "mute-stream": {
+          "version": "0.0.7",
+          "bundled": true
+        },
         "nan": {
           "version": "2.10.0",
           "bundled": true,
           "optional": true
         },
+        "natural-compare": {
+          "version": "1.4.0",
+          "bundled": true
+        },
+        "nice-try": {
+          "version": "1.0.5",
+          "bundled": true
+        },
         "normalize-path": {
           "version": "2.1.1",
           "bundled": true,
@@ -3904,6 +5020,25 @@
             "wrappy": "1"
           }
         },
+        "onetime": {
+          "version": "2.0.1",
+          "bundled": true,
+          "requires": {
+            "mimic-fn": "^1.0.0"
+          }
+        },
+        "optionator": {
+          "version": "0.8.2",
+          "bundled": true,
+          "requires": {
+            "deep-is": "~0.1.3",
+            "fast-levenshtein": "~2.0.4",
+            "levn": "~0.3.0",
+            "prelude-ls": "~1.1.2",
+            "type-check": "~0.3.2",
+            "wordwrap": "~1.0.0"
+          }
+        },
         "os-homedir": {
           "version": "1.0.2",
           "bundled": true
@@ -3936,6 +5071,37 @@
           "version": "1.0.1",
           "bundled": true
         },
+        "path-is-inside": {
+          "version": "1.0.2",
+          "bundled": true
+        },
+        "path-key": {
+          "version": "2.0.1",
+          "bundled": true
+        },
+        "pify": {
+          "version": "2.3.0",
+          "bundled": true
+        },
+        "pinkie": {
+          "version": "2.0.4",
+          "bundled": true
+        },
+        "pinkie-promise": {
+          "version": "2.0.1",
+          "bundled": true,
+          "requires": {
+            "pinkie": "^2.0.0"
+          }
+        },
+        "pluralize": {
+          "version": "7.0.0",
+          "bundled": true
+        },
+        "prelude-ls": {
+          "version": "1.1.2",
+          "bundled": true
+        },
         "preserve": {
           "version": "0.2.0",
           "bundled": true,
@@ -3950,6 +5116,14 @@
           "bundled": true,
           "optional": true
         },
+        "progress": {
+          "version": "2.0.0",
+          "bundled": true
+        },
+        "punycode": {
+          "version": "2.1.1",
+          "bundled": true
+        },
         "querystringify": {
           "version": "2.0.0",
           "bundled": true
@@ -3959,7 +5133,21 @@
           "bundled": true,
           "optional": true,
           "requires": {
+            "is-number": "^4.0.0",
+            "kind-of": "^6.0.0",
             "math-random": "^1.0.1"
+          },
+          "dependencies": {
+            "is-number": {
+              "version": "4.0.0",
+              "bundled": true,
+              "optional": true
+            },
+            "kind-of": {
+              "version": "6.0.2",
+              "bundled": true,
+              "optional": true
+            }
           }
         },
         "readable-stream": {
@@ -4012,6 +5200,10 @@
             "is-equal-shallow": "^0.1.3"
           }
         },
+        "regexpp": {
+          "version": "2.0.0",
+          "bundled": true
+        },
         "regexpu-core": {
           "version": "2.0.0",
           "bundled": true,
@@ -4027,7 +5219,16 @@
         },
         "regjsparser": {
           "version": "0.1.5",
-          "bundled": true
+          "bundled": true,
+          "requires": {
+            "jsesc": "~0.5.0"
+          },
+          "dependencies": {
+            "jsesc": {
+              "version": "0.5.0",
+              "bundled": true
+            }
+          }
         },
         "remove-trailing-separator": {
           "version": "1.1.0",
@@ -4049,14 +5250,59 @@
             "is-finite": "^1.0.0"
           }
         },
+        "require-uncached": {
+          "version": "1.0.3",
+          "bundled": true,
+          "requires": {
+            "caller-path": "^0.1.0",
+            "resolve-from": "^1.0.0"
+          }
+        },
         "requires-port": {
           "version": "1.0.0",
           "bundled": true
         },
+        "resolve-from": {
+          "version": "1.0.1",
+          "bundled": true
+        },
+        "restore-cursor": {
+          "version": "2.0.0",
+          "bundled": true,
+          "requires": {
+            "onetime": "^2.0.0",
+            "signal-exit": "^3.0.2"
+          }
+        },
+        "rimraf": {
+          "version": "2.6.2",
+          "bundled": true,
+          "requires": {
+            "glob": "^7.0.5"
+          }
+        },
+        "run-async": {
+          "version": "2.3.0",
+          "bundled": true,
+          "requires": {
+            "is-promise": "^2.1.0"
+          }
+        },
+        "rxjs": {
+          "version": "6.3.2",
+          "bundled": true,
+          "requires": {
+            "tslib": "^1.9.0"
+          }
+        },
         "safe-buffer": {
           "version": "5.1.2",
           "bundled": true
         },
+        "safer-buffer": {
+          "version": "2.1.2",
+          "bundled": true
+        },
         "semver": {
           "version": "5.5.0",
           "bundled": true
@@ -4066,10 +5312,32 @@
           "bundled": true,
           "optional": true
         },
+        "shebang-command": {
+          "version": "1.2.0",
+          "bundled": true,
+          "requires": {
+            "shebang-regex": "^1.0.0"
+          }
+        },
+        "shebang-regex": {
+          "version": "1.0.0",
+          "bundled": true
+        },
+        "signal-exit": {
+          "version": "3.0.2",
+          "bundled": true
+        },
         "slash": {
           "version": "1.0.0",
           "bundled": true
         },
+        "slice-ansi": {
+          "version": "1.0.0",
+          "bundled": true,
+          "requires": {
+            "is-fullwidth-code-point": "^2.0.0"
+          }
+        },
         "source-map": {
           "version": "0.5.7",
           "bundled": true
@@ -4081,6 +5349,31 @@
             "source-map": "^0.5.6"
           }
         },
+        "sprintf-js": {
+          "version": "1.0.3",
+          "bundled": true
+        },
+        "string-width": {
+          "version": "2.1.1",
+          "bundled": true,
+          "requires": {
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^4.0.0"
+          },
+          "dependencies": {
+            "ansi-regex": {
+              "version": "3.0.0",
+              "bundled": true
+            },
+            "strip-ansi": {
+              "version": "4.0.0",
+              "bundled": true,
+              "requires": {
+                "ansi-regex": "^3.0.0"
+              }
+            }
+          }
+        },
         "string_decoder": {
           "version": "1.1.1",
           "bundled": true,
@@ -4096,10 +5389,66 @@
             "ansi-regex": "^2.0.0"
           }
         },
+        "strip-json-comments": {
+          "version": "2.0.1",
+          "bundled": true
+        },
         "supports-color": {
           "version": "2.0.0",
           "bundled": true
         },
+        "table": {
+          "version": "4.0.3",
+          "bundled": true,
+          "requires": {
+            "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"
+          },
+          "dependencies": {
+            "ansi-styles": {
+              "version": "3.2.1",
+              "bundled": true,
+              "requires": {
+                "color-convert": "^1.9.0"
+              }
+            },
+            "chalk": {
+              "version": "2.4.1",
+              "bundled": true,
+              "requires": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+              }
+            },
+            "supports-color": {
+              "version": "5.5.0",
+              "bundled": true,
+              "requires": {
+                "has-flag": "^3.0.0"
+              }
+            }
+          }
+        },
+        "text-table": {
+          "version": "0.2.0",
+          "bundled": true
+        },
+        "through": {
+          "version": "2.3.8",
+          "bundled": true
+        },
+        "tmp": {
+          "version": "0.0.33",
+          "bundled": true,
+          "requires": {
+            "os-tmpdir": "~1.0.2"
+          }
+        },
         "to-fast-properties": {
           "version": "1.0.3",
           "bundled": true
@@ -4108,6 +5457,24 @@
           "version": "1.0.1",
           "bundled": true
         },
+        "tslib": {
+          "version": "1.9.3",
+          "bundled": true
+        },
+        "type-check": {
+          "version": "0.3.2",
+          "bundled": true,
+          "requires": {
+            "prelude-ls": "~1.1.2"
+          }
+        },
+        "uri-js": {
+          "version": "4.2.2",
+          "bundled": true,
+          "requires": {
+            "punycode": "^2.1.0"
+          }
+        },
         "url-parse": {
           "version": "1.4.3",
           "bundled": true,
@@ -4133,35 +5500,245 @@
           "version": "2.1.1",
           "bundled": true,
           "requires": {
-            "user-home": "^1.1.1"
+            "user-home": "^1.1.1"
+          }
+        },
+        "vue-eslint-parser": {
+          "version": "2.0.3",
+          "bundled": true,
+          "requires": {
+            "debug": "^3.1.0",
+            "eslint-scope": "^3.7.1",
+            "eslint-visitor-keys": "^1.0.0",
+            "espree": "^3.5.2",
+            "esquery": "^1.0.0",
+            "lodash": "^4.17.4"
+          },
+          "dependencies": {
+            "acorn-jsx": {
+              "version": "3.0.1",
+              "bundled": true,
+              "requires": {
+                "acorn": "^3.0.4"
+              },
+              "dependencies": {
+                "acorn": {
+                  "version": "3.3.0",
+                  "bundled": true
+                }
+              }
+            },
+            "debug": {
+              "version": "3.2.5",
+              "bundled": true,
+              "requires": {
+                "ms": "^2.1.1"
+              }
+            },
+            "eslint-scope": {
+              "version": "3.7.3",
+              "bundled": true,
+              "requires": {
+                "esrecurse": "^4.1.0",
+                "estraverse": "^4.1.1"
+              }
+            },
+            "espree": {
+              "version": "3.5.4",
+              "bundled": true,
+              "requires": {
+                "acorn": "^5.5.0",
+                "acorn-jsx": "^3.0.0"
+              }
+            },
+            "ms": {
+              "version": "2.1.1",
+              "bundled": true
+            }
+          }
+        },
+        "which": {
+          "version": "1.3.1",
+          "bundled": true,
+          "requires": {
+            "isexe": "^2.0.0"
+          }
+        },
+        "wordwrap": {
+          "version": "1.0.0",
+          "bundled": true
+        },
+        "wrappy": {
+          "version": "1.0.2",
+          "bundled": true
+        },
+        "write": {
+          "version": "0.2.1",
+          "bundled": true,
+          "requires": {
+            "mkdirp": "^0.5.1"
+          }
+        }
+      }
+    },
+    "django-airavata-common-ui": {
+      "version": "file:../../static/common",
+      "requires": {
+        "bootstrap": "^4.0.0",
+        "bootstrap-vue": "^1.5.1",
+        "django-airavata-api": "file:../api",
+        "vue": "^2.3.3"
+      },
+      "dependencies": {
+        "@babel/code-frame": {
+          "version": "7.0.0",
+          "bundled": true,
+          "requires": {
+            "@babel/highlight": "^7.0.0"
+          }
+        },
+        "@babel/generator": {
+          "version": "7.0.0",
+          "bundled": true,
+          "requires": {
+            "@babel/types": "^7.0.0",
+            "jsesc": "^2.5.1",
+            "lodash": "^4.17.10",
+            "source-map": "^0.5.0",
+            "trim-right": "^1.0.1"
+          },
+          "dependencies": {
+            "jsesc": {
+              "version": "2.5.1",
+              "bundled": true
+            }
+          }
+        },
+        "@babel/helper-function-name": {
+          "version": "7.0.0",
+          "bundled": true,
+          "requires": {
+            "@babel/helper-get-function-arity": "^7.0.0",
+            "@babel/template": "^7.0.0",
+            "@babel/types": "^7.0.0"
+          }
+        },
+        "@babel/helper-get-function-arity": {
+          "version": "7.0.0",
+          "bundled": true,
+          "requires": {
+            "@babel/types": "^7.0.0"
+          }
+        },
+        "@babel/helper-split-export-declaration": {
+          "version": "7.0.0",
+          "bundled": true,
+          "requires": {
+            "@babel/types": "^7.0.0"
+          }
+        },
+        "@babel/highlight": {
+          "version": "7.0.0",
+          "bundled": true,
+          "requires": {
+            "chalk": "^2.0.0",
+            "esutils": "^2.0.2",
+            "js-tokens": "^4.0.0"
+          },
+          "dependencies": {
+            "ansi-styles": {
+              "version": "3.2.1",
+              "bundled": true,
+              "requires": {
+                "color-convert": "^1.9.0"
+              }
+            },
+            "chalk": {
+              "version": "2.4.1",
+              "bundled": true,
+              "requires": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+              }
+            },
+            "has-flag": {
+              "version": "3.0.0",
+              "bundled": true
+            },
+            "js-tokens": {
+              "version": "4.0.0",
+              "bundled": true
+            },
+            "supports-color": {
+              "version": "5.5.0",
+              "bundled": true,
+              "requires": {
+                "has-flag": "^3.0.0"
+              }
+            }
+          }
+        },
+        "@babel/parser": {
+          "version": "7.0.0",
+          "bundled": true
+        },
+        "@babel/template": {
+          "version": "7.0.0",
+          "bundled": true,
+          "requires": {
+            "@babel/code-frame": "^7.0.0",
+            "@babel/parser": "^7.0.0",
+            "@babel/types": "^7.0.0"
+          }
+        },
+        "@babel/traverse": {
+          "version": "7.0.0",
+          "bundled": true,
+          "requires": {
+            "@babel/code-frame": "^7.0.0",
+            "@babel/generator": "^7.0.0",
+            "@babel/helper-function-name": "^7.0.0",
+            "@babel/helper-split-export-declaration": "^7.0.0",
+            "@babel/parser": "^7.0.0",
+            "@babel/types": "^7.0.0",
+            "debug": "^3.1.0",
+            "globals": "^11.1.0",
+            "lodash": "^4.17.10"
+          },
+          "dependencies": {
+            "debug": {
+              "version": "3.2.5",
+              "bundled": true,
+              "requires": {
+                "ms": "^2.1.1"
+              }
+            },
+            "globals": {
+              "version": "11.7.0",
+              "bundled": true
+            },
+            "ms": {
+              "version": "2.1.1",
+              "bundled": true
+            }
           }
         },
-        "wrappy": {
-          "version": "1.0.2",
-          "bundled": true
-        }
-      }
-    },
-    "django-airavata-common-ui": {
-      "version": "file:../../static/common",
-      "requires": {
-        "bootstrap": "^4.0.0",
-        "bootstrap-vue": "^1.5.1",
-        "django-airavata-api": "file:../api",
-        "vue": "^2.3.3"
-      },
-      "dependencies": {
-        "@types/commander": {
-          "version": "2.12.2",
+        "@babel/types": {
+          "version": "7.0.0",
           "bundled": true,
           "requires": {
-            "commander": "*"
+            "esutils": "^2.0.2",
+            "lodash": "^4.17.10",
+            "to-fast-properties": "^2.0.0"
+          },
+          "dependencies": {
+            "to-fast-properties": {
+              "version": "2.0.0",
+              "bundled": true
+            }
           }
         },
-        "@types/semver": {
-          "version": "5.5.0",
-          "bundled": true
-        },
         "abbrev": {
           "version": "1.1.1",
           "bundled": true
@@ -4175,7 +5752,7 @@
           }
         },
         "acorn": {
-          "version": "5.7.3",
+          "version": "5.7.1",
           "bundled": true
         },
         "acorn-dynamic-import": {
@@ -4191,6 +5768,13 @@
             }
           }
         },
+        "acorn-jsx": {
+          "version": "4.1.1",
+          "bundled": true,
+          "requires": {
+            "acorn": "^5.0.3"
+          }
+        },
         "ajv": {
           "version": "5.5.2",
           "bundled": true,
@@ -4317,6 +5901,10 @@
           "version": "0.3.2",
           "bundled": true
         },
+        "arrify": {
+          "version": "1.0.1",
+          "bundled": true
+        },
         "asn1": {
           "version": "0.2.4",
           "bundled": true,
@@ -4381,7 +5969,7 @@
           "bundled": true
         },
         "atob": {
-          "version": "2.1.2",
+          "version": "2.1.1",
           "bundled": true
         },
         "autoprefixer": {
@@ -4449,6 +6037,28 @@
             "source-map": "^0.5.7"
           }
         },
+        "babel-eslint": {
+          "version": "9.0.0",
+          "bundled": true,
+          "requires": {
+            "@babel/code-frame": "^7.0.0",
+            "@babel/parser": "^7.0.0",
+            "@babel/traverse": "^7.0.0",
+            "@babel/types": "^7.0.0",
+            "eslint-scope": "3.7.1",
+            "eslint-visitor-keys": "^1.0.0"
+          },
+          "dependencies": {
+            "eslint-scope": {
+              "version": "3.7.1",
+              "bundled": true,
+              "requires": {
+                "esrecurse": "^4.1.0",
+                "estraverse": "^4.1.1"
+              }
+            }
+          }
+        },
         "babel-generator": {
           "version": "6.26.1",
           "bundled": true,
@@ -5030,7 +6640,7 @@
           }
         },
         "bluebird": {
-          "version": "3.5.2",
+          "version": "3.5.1",
           "bundled": true
         },
         "bn.js": {
@@ -5237,6 +6847,17 @@
             "unset-value": "^1.0.0"
           }
         },
+        "caller-path": {
+          "version": "0.1.0",
+          "bundled": true,
+          "requires": {
+            "callsites": "^0.2.0"
+          }
+        },
+        "callsites": {
+          "version": "0.2.0",
+          "bundled": true
+        },
         "camelcase": {
           "version": "2.1.1",
           "bundled": true
@@ -5270,11 +6891,11 @@
           }
         },
         "caniuse-db": {
-          "version": "1.0.30000885",
+          "version": "1.0.30000877",
           "bundled": true
         },
         "caniuse-lite": {
-          "version": "1.0.30000885",
+          "version": "1.0.30000877",
           "bundled": true
         },
         "caseless": {
@@ -5331,6 +6952,10 @@
             "safe-buffer": "^5.0.1"
           }
         },
+        "circular-json": {
+          "version": "0.3.3",
+          "bundled": true
+        },
         "clap": {
           "version": "1.2.3",
           "bundled": true,
@@ -5442,14 +7067,14 @@
           }
         },
         "color-convert": {
-          "version": "1.9.3",
+          "version": "1.9.2",
           "bundled": true,
           "requires": {
-            "color-name": "1.1.3"
+            "color-name": "1.1.1"
           }
         },
         "color-name": {
-          "version": "1.1.3",
+          "version": "1.1.1",
           "bundled": true
         },
         "color-string": {
@@ -5480,7 +7105,7 @@
           }
         },
         "commander": {
-          "version": "2.18.0",
+          "version": "2.17.1",
           "bundled": true
         },
         "commondir": {
@@ -5558,12 +7183,9 @@
           "bundled": true
         },
         "convert-source-map": {
-          "version": "1.6.0",
+          "version": "1.5.1",
           "bundled": true,
-          "dev": true,
-          "requires": {
-            "safe-buffer": "~5.1.1"
-          }
+          "dev": true
         },
         "cookie": {
           "version": "0.3.1",
@@ -5815,6 +7437,10 @@
           "version": "1.0.1",
           "bundled": true
         },
+        "deep-is": {
+          "version": "0.1.3",
+          "bundled": true
+        },
         "define-properties": {
           "version": "1.1.3",
           "bundled": true,
@@ -5834,97 +7460,271 @@
               "version": "1.0.0",
               "bundled": true,
               "requires": {
-                "kind-of": "^6.0.0"
+                "kind-of": "^6.0.0"
+              }
+            },
+            "is-data-descriptor": {
+              "version": "1.0.0",
+              "bundled": true,
+              "requires": {
+                "kind-of": "^6.0.0"
+              }
+            },
+            "is-descriptor": {
+              "version": "1.0.2",
+              "bundled": true,
+              "requires": {
+                "is-accessor-descriptor": "^1.0.0",
+                "is-data-descriptor": "^1.0.0",
+                "kind-of": "^6.0.2"
+              }
+            }
+          }
+        },
+        "defined": {
+          "version": "1.0.0",
+          "bundled": true
+        },
+        "del": {
+          "version": "3.0.0",
+          "bundled": true,
+          "requires": {
+            "globby": "^6.1.0",
+            "is-path-cwd": "^1.0.0",
+            "is-path-in-cwd": "^1.0.0",
+            "p-map": "^1.1.1",
+            "pify": "^3.0.0",
+            "rimraf": "^2.2.8"
+          }
+        },
+        "delayed-stream": {
+          "version": "1.0.0",
+          "bundled": true
+        },
+        "delegates": {
+          "version": "1.0.0",
+          "bundled": true
+        },
+        "depd": {
+          "version": "1.1.2",
+          "bundled": true
+        },
+        "des.js": {
+          "version": "1.0.0",
+          "bundled": true,
+          "requires": {
+            "inherits": "^2.0.1",
+            "minimalistic-assert": "^1.0.0"
+          }
+        },
+        "destroy": {
+          "version": "1.0.4",
+          "bundled": true
+        },
+        "detect-indent": {
+          "version": "4.0.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "repeating": "^2.0.0"
+          }
+        },
+        "detect-node": {
+          "version": "2.0.3",
+          "bundled": true
+        },
+        "diffie-hellman": {
+          "version": "5.0.3",
+          "bundled": true,
+          "requires": {
+            "bn.js": "^4.1.0",
+            "miller-rabin": "^4.0.0",
+            "randombytes": "^2.0.0"
+          }
+        },
+        "django-airavata-api": {
+          "version": "file:../api",
+          "bundled": true,
+          "requires": {
+            "babel-runtime": "^6.26.0",
+            "url-parse": "^1.4.3",
+            "uuid": "^3.3.2"
+          },
+          "dependencies": {
+            "@babel/code-frame": {
+              "version": "7.0.0",
+              "bundled": true,
+              "requires": {
+                "@babel/highlight": "^7.0.0"
+              }
+            },
+            "@babel/generator": {
+              "version": "7.0.0",
+              "bundled": true,
+              "requires": {
+                "@babel/types": "^7.0.0",
+                "jsesc": "^2.5.1",
+                "lodash": "^4.17.10",
+                "source-map": "^0.5.0",
+                "trim-right": "^1.0.1"
+              },
+              "dependencies": {
+                "jsesc": {
+                  "version": "2.5.1",
+                  "bundled": true
+                }
+              }
+            },
+            "@babel/helper-function-name": {
+              "version": "7.0.0",
+              "bundled": true,
+              "requires": {
+                "@babel/helper-get-function-arity": "^7.0.0",
+                "@babel/template": "^7.0.0",
+                "@babel/types": "^7.0.0"
+              }
+            },
+            "@babel/helper-get-function-arity": {
+              "version": "7.0.0",
+              "bundled": true,
+              "requires": {
+                "@babel/types": "^7.0.0"
+              }
+            },
+            "@babel/helper-split-export-declaration": {
+              "version": "7.0.0",
+              "bundled": true,
+              "requires": {
+                "@babel/types": "^7.0.0"
+              }
+            },
+            "@babel/highlight": {
+              "version": "7.0.0",
+              "bundled": true,
+              "requires": {
+                "chalk": "^2.0.0",
+                "esutils": "^2.0.2",
+                "js-tokens": "^4.0.0"
+              },
+              "dependencies": {
+                "ansi-styles": {
+                  "version": "3.2.1",
+                  "bundled": true,
+                  "requires": {
+                    "color-convert": "^1.9.0"
+                  }
+                },
+                "chalk": {
+                  "version": "2.4.1",
+                  "bundled": true,
+                  "requires": {
+                    "ansi-styles": "^3.2.1",
+                    "escape-string-regexp": "^1.0.5",
+                    "supports-color": "^5.3.0"
+                  }
+                },
+                "js-tokens": {
+                  "version": "4.0.0",
+                  "bundled": true
+                },
+                "supports-color": {
+                  "version": "5.5.0",
+                  "bundled": true,
+                  "requires": {
+                    "has-flag": "^3.0.0"
+                  }
+                }
+              }
+            },
+            "@babel/parser": {
+              "version": "7.0.0",
+              "bundled": true
+            },
+            "@babel/template": {
+              "version": "7.0.0",
+              "bundled": true,
+              "requires": {
+                "@babel/code-frame": "^7.0.0",
+                "@babel/parser": "^7.0.0",
+                "@babel/types": "^7.0.0"
+              }
+            },
+            "@babel/traverse": {
+              "version": "7.0.0",
+              "bundled": true,
+              "requires": {
+                "@babel/code-frame": "^7.0.0",
+                "@babel/generator": "^7.0.0",
+                "@babel/helper-function-name": "^7.0.0",
+                "@babel/helper-split-export-declaration": "^7.0.0",
+                "@babel/parser": "^7.0.0",
+                "@babel/types": "^7.0.0",
+                "debug": "^3.1.0",
+                "globals": "^11.1.0",
+                "lodash": "^4.17.10"
+              },
+              "dependencies": {
+                "debug": {
+                  "version": "3.2.5",
+                  "bundled": true,
+                  "requires": {
+                    "ms": "^2.1.1"
+                  }
+                },
+                "globals": {
+                  "version": "11.7.0",
+                  "bundled": true
+                },
+                "ms": {
+                  "version": "2.1.1",
+                  "bundled": true
+                }
+              }
+            },
+            "@babel/types": {
+              "version": "7.0.0",
+              "bundled": true,
+              "requires": {
+                "esutils": "^2.0.2",
+                "lodash": "^4.17.10",
+                "to-fast-properties": "^2.0.0"
+              },
+              "dependencies": {
+                "to-fast-properties": {
+                  "version": "2.0.0",
+                  "bundled": true
+                }
               }
             },
-            "is-data-descriptor": {
-              "version": "1.0.0",
+            "acorn": {
+              "version": "5.7.3",
+              "bundled": true
+            },
+            "acorn-jsx": {
+              "version": "4.1.1",
               "bundled": true,
               "requires": {
-                "kind-of": "^6.0.0"
+                "acorn": "^5.0.3"
               }
             },
-            "is-descriptor": {
-              "version": "1.0.2",
+            "ajv": {
+              "version": "6.5.3",
               "bundled": true,
               "requires": {
-                "is-accessor-descriptor": "^1.0.0",
-                "is-data-descriptor": "^1.0.0",
-                "kind-of": "^6.0.2"
+                "fast-deep-equal": "^2.0.1",
+                "fast-json-stable-stringify": "^2.0.0",
+                "json-schema-traverse": "^0.4.1",
+                "uri-js": "^4.2.2"
               }
-            }
-          }
-        },
-        "defined": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "del": {
-          "version": "3.0.0",
-          "bundled": true,
-          "requires": {
-            "globby": "^6.1.0",
-            "is-path-cwd": "^1.0.0",
-            "is-path-in-cwd": "^1.0.0",
-            "p-map": "^1.1.1",
-            "pify": "^3.0.0",
-            "rimraf": "^2.2.8"
-          }
-        },
-        "delayed-stream": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "delegates": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "depd": {
-          "version": "1.1.2",
-          "bundled": true
-        },
-        "des.js": {
-          "version": "1.0.0",
-          "bundled": true,
-          "requires": {
-            "inherits": "^2.0.1",
-            "minimalistic-assert": "^1.0.0"
-          }
-        },
-        "destroy": {
-          "version": "1.0.4",
-          "bundled": true
-        },
-        "detect-indent": {
-          "version": "4.0.0",
-          "bundled": true,
-          "dev": true,
-          "requires": {
-            "repeating": "^2.0.0"
-          }
-        },
-        "detect-node": {
-          "version": "2.0.4",
-          "bundled": true
-        },
-        "diffie-hellman": {
-          "version": "5.0.3",
-          "bundled": true,
-          "requires": {
-            "bn.js": "^4.1.0",
-            "miller-rabin": "^4.0.0",
-            "randombytes": "^2.0.0"
-          }
-        },
-        "django-airavata-api": {
-          "version": "file:../api",
-          "bundled": true,
-          "requires": {
-            "babel-runtime": "^6.26.0",
-            "url-parse": "^1.4.3",
-            "uuid": "^3.3.2"
-          },
-          "dependencies": {
+            },
+            "ajv-keywords": {
+              "version": "3.2.0",
+              "bundled": true
+            },
+            "ansi-escapes": {
+              "version": "3.1.0",
+              "bundled": true
+            },
             "ansi-regex": {
               "version": "2.1.1",
               "bundled": true
@@ -5942,6 +7742,13 @@
                 "normalize-path": "^2.0.0"
               }
             },
+            "argparse": {
+              "version": "1.0.10",
+              "bundled": true,
+              "requires": {
+                "sprintf-js": "~1.0.2"
+              }
+            },
             "arr-diff": {
               "version": "2.0.0",
               "bundled": true,
@@ -5955,11 +7762,26 @@
               "bundled": true,
               "optional": true
             },
+            "array-union": {
+              "version": "1.0.2",
+              "bundled": true,
+              "requires": {
+                "array-uniq": "^1.0.1"
+              }
+            },
+            "array-uniq": {
+              "version": "1.0.3",
+              "bundled": true
+            },
             "array-unique": {
               "version": "0.2.1",
               "bundled": true,
               "optional": true
             },
+            "arrify": {
+              "version": "1.0.1",
+              "bundled": true
+            },
             "async-each": {
               "version": "1.0.1",
               "bundled": true,
@@ -6020,6 +7842,28 @@
                 "source-map": "^0.5.7"
               }
             },
+            "babel-eslint": {
+              "version": "9.0.0",
+              "bundled": true,
+              "requires": {
+                "@babel/code-frame": "^7.0.0",
+                "@babel/parser": "^7.0.0",
+                "@babel/traverse": "^7.0.0",
+                "@babel/types": "^7.0.0",
+                "eslint-scope": "3.7.1",
+                "eslint-visitor-keys": "^1.0.0"
+              },
+              "dependencies": {
+                "eslint-scope": {
+                  "version": "3.7.1",
+                  "bundled": true,
+                  "requires": {
+                    "esrecurse": "^4.1.0",
+                    "estraverse": "^4.1.1"
+                  }
+                }
+              }
+            },
             "babel-generator": {
               "version": "6.26.1",
               "bundled": true,
@@ -6408,7 +8252,14 @@
               "bundled": true,
               "requires": {
                 "babel-runtime": "^6.26.0",
-                "core-js": "^2.5.0"
+                "core-js": "^2.5.0",
+                "regenerator-runtime": "^0.10.5"
+              },
+              "dependencies": {
+                "regenerator-runtime": {
+                  "version": "0.10.5",
+                  "bundled": true
+                }
               }
             },
             "babel-preset-env": {
@@ -6543,6 +8394,17 @@
                 "electron-to-chromium": "^1.3.47"
               }
             },
+            "caller-path": {
+              "version": "0.1.0",
+              "bundled": true,
+              "requires": {
+                "callsites": "^0.2.0"
+              }
+            },
+            "callsites": {
+              "version": "0.2.0",
+              "bundled": true
+            },
             "caniuse-lite": {
               "version": "1.0.30000865",
               "bundled": true
@@ -6558,6 +8420,10 @@
                 "supports-color": "^2.0.0"
               }
             },
+            "chardet": {
+              "version": "0.7.0",
+              "bundled": true
+            },
             "chokidar": {
               "version": "1.7.0",
               "bundled": true,
@@ -6574,6 +8440,32 @@
                 "readdirp": "^2.0.0"
               }
             },
+            "circular-json": {
+              "version": "0.3.3",
+              "bundled": true
+            },
+            "cli-cursor": {
+              "version": "2.1.0",
+              "bundled": true,
+              "requires": {
+                "restore-cursor": "^2.0.0"
+              }
+            },
+            "cli-width": {
+              "version": "2.2.0",
+              "bundled": true
+            },
+            "color-convert": {
+              "version": "1.9.3",
+              "bundled": true,
+              "requires": {
+                "color-name": "1.1.3"
+              }
+            },
+            "color-name": {
+              "version": "1.1.3",
+              "bundled": true
+            },
             "commander": {
               "version": "2.16.0",
               "bundled": true
@@ -6582,39 +8474,226 @@
               "version": "0.0.1",
               "bundled": true
             },
-            "convert-source-map": {
-              "version": "1.5.1",
+            "convert-source-map": {
+              "version": "1.5.1",
+              "bundled": true
+            },
+            "core-js": {
+              "version": "2.5.7",
+              "bundled": true
+            },
+            "core-util-is": {
+              "version": "1.0.2",
+              "bundled": true,
+              "optional": true
+            },
+            "cross-spawn": {
+              "version": "6.0.5",
+              "bundled": true,
+              "requires": {
+                "nice-try": "^1.0.4",
+                "path-key": "^2.0.1",
+                "semver": "^5.5.0",
+                "shebang-command": "^1.2.0",
+                "which": "^1.2.9"
+              }
+            },
+            "debug": {
+              "version": "2.6.9",
+              "bundled": true,
+              "requires": {
+                "ms": "2.0.0"
+              }
+            },
+            "deep-is": {
+              "version": "0.1.3",
+              "bundled": true
+            },
+            "del": {
+              "version": "2.2.2",
+              "bundled": true,
+              "requires": {
+                "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": {
+              "version": "4.0.0",
+              "bundled": true,
+              "requires": {
+                "repeating": "^2.0.0"
+              }
+            },
+            "doctrine": {
+              "version": "2.1.0",
+              "bundled": true,
+              "requires": {
+                "esutils": "^2.0.2"
+              }
+            },
+            "electron-to-chromium": {
+              "version": "1.3.52",
+              "bundled": true
+            },
+            "escape-string-regexp": {
+              "version": "1.0.5",
+              "bundled": true
+            },
+            "eslint": {
+              "version": "5.6.0",
+              "bundled": true,
+              "requires": {
+                "@babel/code-frame": "^7.0.0",
+                "ajv": "^6.5.3",
+                "chalk": "^2.1.0",
+                "cross-spawn": "^6.0.5",
+                "debug": "^3.1.0",
+                "doctrine": "^2.1.0",
+                "eslint-scope": "^4.0.0",
+                "eslint-utils": "^1.3.1",
+                "eslint-visitor-keys": "^1.0.0",
+                "espree": "^4.0.0",
+                "esquery": "^1.0.1",
+                "esutils": "^2.0.2",
+                "file-entry-cache": "^2.0.0",
+                "functional-red-black-tree": "^1.0.1",
+                "glob": "^7.1.2",
+                "globals": "^11.7.0",
+                "ignore": "^4.0.6",
+                "imurmurhash": "^0.1.4",
+                "inquirer": "^6.1.0",
+                "is-resolvable": "^1.1.0",
+                "js-yaml": "^3.12.0",
+                "json-stable-stringify-without-jsonify": "^1.0.1",
+                "levn": "^0.3.0",
+                "lodash": "^4.17.5",
+                "minimatch": "^3.0.4",
+                "mkdirp": "^0.5.1",
+                "natural-compare": "^1.4.0",
+                "optionator": "^0.8.2",
+                "path-is-inside": "^1.0.2",
+                "pluralize": "^7.0.0",
+                "progress": "^2.0.0",
+                "regexpp": "^2.0.0",
+                "require-uncached": "^1.0.3",
+                "semver": "^5.5.1",
+                "strip-ansi": "^4.0.0",
+                "strip-json-comments": "^2.0.1",
+                "table": "^4.0.3",
+                "text-table": "^0.2.0"
+              },
+              "dependencies": {
+                "ansi-regex": {
+                  "version": "3.0.0",
+                  "bundled": true
+                },
+                "ansi-styles": {
+                  "version": "3.2.1",
+                  "bundled": true,
+                  "requires": {
+                    "color-convert": "^1.9.0"
+                  }
+                },
+                "chalk": {
+                  "version": "2.4.1",
+                  "bundled": true,
+                  "requires": {
+                    "ansi-styles": "^3.2.1",
+                    "escape-string-regexp": "^1.0.5",
+                    "supports-color": "^5.3.0"
+                  }
+                },
+                "debug": {
+                  "version": "3.2.5",
+                  "bundled": true,
+                  "requires": {
+                    "ms": "^2.1.1"
+                  }
+                },
+                "globals": {
+                  "version": "11.7.0",
+                  "bundled": true
+                },
+                "ms": {
+                  "version": "2.1.1",
+                  "bundled": true
+                },
+                "semver": {
+                  "version": "5.5.1",
+                  "bundled": true
+                },
+                "strip-ansi": {
+                  "version": "4.0.0",
+                  "bundled": true,
+                  "requires": {
+                    "ansi-regex": "^3.0.0"
+                  }
+                },
+                "supports-color": {
+                  "version": "5.5.0",
+                  "bundled": true,
+                  "requires": {
+                    "has-flag": "^3.0.0"
+                  }
+                }
+              }
+            },
+            "eslint-plugin-vue": {
+              "version": "4.7.1",
+              "bundled": true,
+              "requires": {
+                "vue-eslint-parser": "^2.0.3"
+              }
+            },
+            "eslint-scope": {
+              "version": "4.0.0",
+              "bundled": true,
+              "requires": {
+                "esrecurse": "^4.1.0",
+                "estraverse": "^4.1.1"
+              }
+            },
+            "eslint-utils": {
+              "version": "1.3.1",
               "bundled": true
             },
-            "core-js": {
-              "version": "2.5.7",
+            "eslint-visitor-keys": {
+              "version": "1.0.0",
               "bundled": true
             },
-            "core-util-is": {
-              "version": "1.0.2",
+            "espree": {
+              "version": "4.0.0",
               "bundled": true,
-              "optional": true
+              "requires": {
+                "acorn": "^5.6.0",
+                "acorn-jsx": "^4.1.1"
+              }
             },
-            "debug": {
-              "version": "2.6.9",
+            "esprima": {
+              "version": "4.0.1",
+              "bundled": true
+            },
+            "esquery": {
+              "version": "1.0.1",
               "bundled": true,
               "requires": {
-                "ms": "2.0.0"
+                "estraverse": "^4.0.0"
               }
             },
-            "detect-indent": {
-              "version": "4.0.0",
+            "esrecurse": {
+              "version": "4.2.1",
               "bundled": true,
               "requires": {
-                "repeating": "^2.0.0"
+                "estraverse": "^4.1.0"
               }
             },
-            "electron-to-chromium": {
-              "version": "1.3.52",
-              "bundled": true
-            },
-            "escape-string-regexp": {
-              "version": "1.0.5",
+            "estraverse": {
+              "version": "4.2.0",
               "bundled": true
             },
             "esutils": {
@@ -6637,6 +8716,15 @@
                 "fill-range": "^2.1.0"
               }
             },
+            "external-editor": {
+              "version": "3.0.3",
+              "bundled": true,
+              "requires": {
+                "chardet": "^0.7.0",
+                "iconv-lite": "^0.4.24",
+                "tmp": "^0.0.33"
+              }
+            },
             "extglob": {
               "version": "0.3.2",
               "bundled": true,
@@ -6645,6 +8733,33 @@
                 "is-extglob": "^1.0.0"
               }
             },
+            "fast-deep-equal": {
+              "version": "2.0.1",
+              "bundled": true
+            },
+            "fast-json-stable-stringify": {
+              "version": "2.0.0",
+              "bundled": true
+            },
+            "fast-levenshtein": {
+              "version": "2.0.6",
+              "bundled": true
+            },
+            "figures": {
+              "version": "2.0.0",
+              "bundled": true,
+              "requires": {
+                "escape-string-regexp": "^1.0.5"
+              }
+            },
+            "file-entry-cache": {
+              "version": "2.0.0",
+              "bundled": true,
+              "requires": {
+                "flat-cache": "^1.2.1",
+                "object-assign": "^4.0.1"
+              }
+            },
             "filename-regex": {
               "version": "2.0.1",
               "bundled": true,
@@ -6662,6 +8777,16 @@
                 "repeat-string": "^1.5.2"
               }
             },
+            "flat-cache": {
+              "version": "1.3.0",
+              "bundled": true,
+              "requires": {
+                "circular-json": "^0.3.1",
+                "del": "^2.0.2",
+                "graceful-fs": "^4.1.2",
+                "write": "^0.2.1"
+              }
+            },
             "for-in": {
               "version": "1.0.2",
               "bundled": true,
@@ -6675,22 +8800,479 @@
                 "for-in": "^1.0.1"
               }
             },
-            "fs-readdir-recursive": {
-              "version": "1.1.0",
-              "bundled": true
-            },
-            "fs.realpath": {
-              "version": "1.0.0",
+            "fs-readdir-recursive": {
+              "version": "1.1.0",
+              "bundled": true
+            },
+            "fs.realpath": {
+              "version": "1.0.0",
+              "bundled": true
+            },
+            "fsevents": {
+              "version": "1.2.4",
+              "bundled": true,
+              "optional": true,
+              "requires": {
+                "nan": "^2.9.2",
+                "node-pre-gyp": "^0.10.0"
+              },
+              "dependencies": {
+                "abbrev": {
+                  "version": "1.1.1",
+                  "bundled": true,
+                  "optional": true
+                },
+                "ansi-regex": {
+                  "version": "2.1.1",
+                  "bundled": true
+                },
+                "aproba": {
+                  "version": "1.2.0",
+                  "bundled": true,
+                  "optional": true
+                },
+                "are-we-there-yet": {
+                  "version": "1.1.4",
+                  "bundled": true,
+                  "optional": true,
+                  "requires": {
+                    "delegates": "^1.0.0",
+                    "readable-stream": "^2.0.6"
+                  }
+                },
+                "balanced-match": {
+                  "version": "1.0.0",
+                  "bundled": true
+                },
+                "brace-expansion": {
+                  "version": "1.1.11",
+                  "bundled": true,
+                  "requires": {
+                    "balanced-match": "^1.0.0",
+                    "concat-map": "0.0.1"
+                  }
+                },
+                "chownr": {
+                  "version": "1.0.1",
+                  "bundled": true,
+                  "optional": true
+                },
+                "code-point-at": {
+                  "version": "1.1.0",
+                  "bundled": true
+                },
+                "concat-map": {
+                  "version": "0.0.1",
+                  "bundled": true
+                },
+                "console-control-strings": {
+                  "version": "1.1.0",
+                  "bundled": true
+                },
+                "core-util-is": {
+                  "version": "1.0.2",
+                  "bundled": true,
+                  "optional": true
+                },
+                "debug": {
+                  "version": "2.6.9",
+                  "bundled": true,
+                  "optional": true,
+                  "requires": {
+                    "ms": "2.0.0"
+                  }
+                },
+                "deep-extend": {
+                  "version": "0.5.1",
+                  "bundled": true,
+                  "optional": true
+                },
+                "delegates": {
+                  "version": "1.0.0",
+                  "bundled": true,
+                  "optional": true
+                },
+                "detect-libc": {
+                  "version": "1.0.3",
+                  "bundled": true,
+                  "optional": true
+                },
+                "fs-minipass": {
+                  "version": "1.2.5",
+                  "bundled": true,
+                  "optional": true,
+                  "requires": {
+                    "minipass": "^2.2.1"
+                  }
+                },
+                "fs.realpath": {
+                  "version": "1.0.0",
+                  "bundled": true,
+                  "optional": true
+                },
+                "gauge": {
+                  "version": "2.7.4",
+                  "bundled": true,
+                  "optional": true,
+                  "requires": {
+                    "aproba": "^1.0.3",
+                    "console-control-strings": "^1.0.0",
+                    "has-unicode": "^2.0.0",
+                    "object-assign": "^4.1.0",
+                    "signal-exit": "^3.0.0",
+                    "string-width": "^1.0.1",
+                    "strip-ansi": "^3.0.1",
+                    "wide-align": "^1.1.0"
+                  }
+                },
+                "glob": {
+                  "version": "7.1.2",
+                  "bundled": true,
+                  "optional": true,
+                  "requires": {
+                    "fs.realpath": "^1.0.0",
+                    "inflight": "^1.0.4",
+                    "inherits": "2",
+                    "minimatch": "^3.0.4",
+                    "once": "^1.3.0",
+                    "path-is-absolute": "^1.0.0"
+                  }
+                },
+                "has-unicode": {
+                  "version": "2.0.1",
+                  "bundled": true,
+                  "optional": true
+                },
+                "iconv-lite": {
+                  "version": "0.4.21",
+                  "bundled": true,
+                  "optional": true,
+                  "requires": {
+                    "safer-buffer": "^2.1.0"
+                  }
+                },
+                "ignore-walk": {
+                  "version": "3.0.1",
+                  "bundled": true,
+                  "optional": true,
+                  "requires": {
+                    "minimatch": "^3.0.4"
+                  }
+                },
+                "inflight": {
+                  "version": "1.0.6",
+                  "bundled": true,
+                  "optional": true,
+                  "requires": {
+                    "once": "^1.3.0",
+                    "wrappy": "1"
+                  }
+                },
+                "inherits": {
+                  "version": "2.0.3",
+                  "bundled": true
+                },
+                "ini": {
+                  "version": "1.3.5",
+                  "bundled": true,
+                  "optional": true
+                },
+                "is-fullwidth-code-point": {
+                  "version": "1.0.0",
+                  "bundled": true,
+                  "requires": {
+                    "number-is-nan": "^1.0.0"
+                  }
+                },
+                "isarray": {
+                  "version": "1.0.0",
+                  "bundled": true,
+                  "optional": true
+                },
+                "minimatch": {
+                  "version": "3.0.4",
+                  "bundled": true,
+                  "requires": {
+                    "brace-expansion": "^1.1.7"
+                  }
+                },
+                "minimist": {
+                  "version": "0.0.8",
+                  "bundled": true
+                },
+                "minipass": {
+                  "version": "2.2.4",
+                  "bundled": true,
+                  "requires": {
+                    "safe-buffer": "^5.1.1",
+                    "yallist": "^3.0.0"
+                  }
+                },
+                "minizlib": {
+                  "version": "1.1.0",
+                  "bundled": true,
+                  "optional": true,
+                  "requires": {
+                    "minipass": "^2.2.1"
+                  }
+                },
+                "mkdirp": {
+                  "version": "0.5.1",
+                  "bundled": true,
+                  "requires": {
+                    "minimist": "0.0.8"
+                  }
+                },
+                "ms": {
+                  "version": "2.0.0",
+                  "bundled": true,
+                  "optional": true
+                },
+                "needle": {
+                  "version": "2.2.0",
+                  "bundled": true,
+                  "optional": true,
+                  "requires": {
+                    "debug": "^2.1.2",
+                    "iconv-lite": "^0.4.4",
+                    "sax": "^1.2.4"
+                  }
+                },
+                "node-pre-gyp": {
+                  "version": "0.10.0",
+                  "bundled": true,
+                  "optional": true,
+                  "requires": {
+                    "detect-libc": "^1.0.2",
+                    "mkdirp": "^0.5.1",
+                    "needle": "^2.2.0",
+                    "nopt": "^4.0.1",
+                    "npm-packlist": "^1.1.6",
+                    "npmlog": "^4.0.2",
+                    "rc": "^1.1.7",
+                    "rimraf": "^2.6.1",
+                    "semver": "^5.3.0",
+                    "tar": "^4"
+                  }
+                },
+                "nopt": {
+                  "version": "4.0.1",
+                  "bundled": true,
+                  "optional": true,
+                  "requires": {
+                    "abbrev": "1",
+                    "osenv": "^0.1.4"
+                  }
+                },
+                "npm-bundled": {
+                  "version": "1.0.3",
+                  "bundled": true,
+                  "optional": true
+                },
+                "npm-packlist": {
+                  "version": "1.1.10",
+                  "bundled": true,
+                  "optional": true,
+                  "requires": {
+                    "ignore-walk": "^3.0.1",
+                    "npm-bundled": "^1.0.1"
+                  }
+                },
+                "npmlog": {
+                  "version": "4.1.2",
+                  "bundled": true,
+                  "optional": true,
+                  "requires": {
+                    "are-we-there-yet": "~1.1.2",
+                    "console-control-strings": "~1.1.0",
+                    "gauge": "~2.7.3",
+                    "set-blocking": "~2.0.0"
+                  }
+                },
+                "number-is-nan": {
+                  "version": "1.0.1",
+                  "bundled": true
+                },
+                "object-assign": {
+                  "version": "4.1.1",
+                  "bundled": true,
+                  "optional": true
+                },
+                "once": {
+                  "version": "1.4.0",
+                  "bundled": true,
+                  "requires": {
+                    "wrappy": "1"
+                  }
+                },
+                "os-homedir": {
+                  "version": "1.0.2",
+                  "bundled": true,
+                  "optional": true
+                },
+                "os-tmpdir": {
+                  "version": "1.0.2",
+                  "bundled": true,
+                  "optional": true
+                },
+                "osenv": {
+                  "version": "0.1.5",
+                  "bundled": true,
+                  "optional": true,
+                  "requires": {
+                    "os-homedir": "^1.0.0",
+                    "os-tmpdir": "^1.0.0"
+                  }
+                },
+                "path-is-absolute": {
+                  "version": "1.0.1",
+                  "bundled": true,
+                  "optional": true
+                },
+                "process-nextick-args": {
+                  "version": "2.0.0",
+                  "bundled": true,
+                  "optional": true
+                },
+                "rc": {
+                  "version": "1.2.7",
+                  "bundled": true,
+                  "optional": true,
+                  "requires": {
+                    "deep-extend": "^0.5.1",
+                    "ini": "~1.3.0",
+                    "minimist": "^1.2.0",
+                    "strip-json-comments": "~2.0.1"
+                  },
+                  "dependencies": {
+                    "minimist": {
+                      "version": "1.2.0",
+                      "bundled": true,
+                      "optional": true
+                    }
+                  }
+                },
+                "readable-stream": {
+                  "version": "2.3.6",
+                  "bundled": true,
+                  "optional": true,
+                  "requires": {
+                    "core-util-is": "~1.0.0",
+                    "inherits": "~2.0.3",
+                    "isarray": "~1.0.0",
+                    "process-nextick-args": "~2.0.0",
+                    "safe-buffer": "~5.1.1",
+                    "string_decoder": "~1.1.1",
+                    "util-deprecate": "~1.0.1"
+                  }
+                },
+                "rimraf": {
+                  "version": "2.6.2",
+                  "bundled": true,
+                  "optional": true,
+                  "requires": {
+                    "glob": "^7.0.5"
+                  }
+                },
+                "safe-buffer": {
+                  "version": "5.1.1",
+                  "bundled": true
+                },
+                "safer-buffer": {
+                  "version": "2.1.2",
+                  "bundled": true,
+                  "optional": true
+                },
+                "sax": {
+                  "version": "1.2.4",
+                  "bundled": true,
+                  "optional": true
+                },
+                "semver": {
+                  "version": "5.5.0",
+                  "bundled": true,
+                  "optional": true
+                },
+                "set-blocking": {
+                  "version": "2.0.0",
+                  "bundled": true,
+                  "optional": true
+                },
+                "signal-exit": {
+                  "version": "3.0.2",
+                  "bundled": true,
+                  "optional": true
+                },
+                "string-width": {
+                  "version": "1.0.2",
+                  "bundled": true,
+                  "requires": {
+                    "code-point-at": "^1.0.0",
+                    "is-fullwidth-code-point": "^1.0.0",
+                    "strip-ansi": "^3.0.0"
+                  }
+                },
+                "string_decoder": {
+                  "version": "1.1.1",
+                  "bundled": true,
+                  "optional": true,
+                  "requires": {
+                    "safe-buffer": "~5.1.0"
+                  }
+                },
+                "strip-ansi": {
+                  "version": "3.0.1",
+                  "bundled": true,
+                  "requires": {
+                    "ansi-regex": "^2.0.0"
+                  }
+                },
+                "strip-json-comments": {
+                  "version": "2.0.1",
+                  "bundled": true,
+                  "optional": true
+                },
+                "tar": {
+                  "version": "4.4.1",
+                  "bundled": true,
+                  "optional": true,
+                  "requires": {
+                    "chownr": "^1.0.1",
+                    "fs-minipass": "^1.2.5",
+                    "minipass": "^2.2.4",
+                    "minizlib": "^1.1.0",
+                    "mkdirp": "^0.5.0",
+                    "safe-buffer": "^5.1.1",
+                    "yallist": "^3.0.2"
+                  }
+                },
+                "util-deprecate": {
+                  "version": "1.0.2",
+                  "bundled": true,
+                  "optional": true
+                },
+                "wide-align": {
+                  "version": "1.1.2",
+                  "bundled": true,
+                  "optional": true,
+                  "requires": {
+                    "string-width": "^1.0.2"
+                  }
+                },
+                "wrappy": {
+                  "version": "1.0.2",
+                  "bundled": true
+                },
+                "yallist": {
+                  "version": "3.0.2",
+                  "bundled": true
+                }
+              }
+            },
+            "functional-red-black-tree": {
+              "version": "1.0.1",
               "bundled": true
             },
-            "fsevents": {
-              "version": "1.2.4",
-              "bundled": true,
-              "optional": true,
-              "requires": {
-                "nan": "^2.9.2"
-              }
-            },
             "glob": {
               "version": "7.1.2",
               "bundled": true,
@@ -6723,6 +9305,18 @@
               "version": "9.18.0",
               "bundled": true
             },
+            "globby": {
+              "version": "5.0.0",
+              "bundled": true,
+              "requires": {
+                "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": {
               "version": "4.1.11",
               "bundled": true
@@ -6734,6 +9328,10 @@
                 "ansi-regex": "^2.0.0"
               }
             },
+            "has-flag": {
+              "version": "3.0.0",
+              "bundled": true
+            },
             "home-or-tmp": {
               "version": "2.0.0",
               "bundled": true,
@@ -6742,6 +9340,21 @@
                 "os-tmpdir": "^1.0.1"
               }
             },
+            "iconv-lite": {
+              "version": "0.4.24",
+              "bundled": true,
+              "requires": {
+                "safer-buffer": ">= 2.1.2 < 3"
+              }
+            },
+            "ignore": {
+              "version": "4.0.6",
+              "bundled": true
+            },
+            "imurmurhash": {
+              "version": "0.1.4",
+              "bundled": true
+            },
             "inflight": {
               "version": "1.0.6",
               "bundled": true,
@@ -6754,6 +9367,61 @@
               "version": "2.0.3",
               "bundled": true
             },
+            "inquirer": {
+              "version": "6.2.0",
+              "bundled": true,
+              "requires": {
+                "ansi-escapes": "^3.0.0",
+                "chalk": "^2.0.0",
+                "cli-cursor": "^2.1.0",
+                "cli-width": "^2.0.0",
+                "external-editor": "^3.0.0",
+                "figures": "^2.0.0",
+                "lodash": "^4.17.10",
+                "mute-stream": "0.0.7",
+                "run-async": "^2.2.0",
+                "rxjs": "^6.1.0",
+                "string-width": "^2.1.0",
+                "strip-ansi": "^4.0.0",
+                "through": "^2.3.6"
+              },
+              "dependencies": {
+                "ansi-regex": {
+                  "version": "3.0.0",
+                  "bundled": true
+                },
+                "ansi-styles": {
+                  "version": "3.2.1",
+                  "bundled": true,
+                  "requires": {
+                    "color-convert": "^1.9.0"
+                  }
+                },
+                "chalk": {
+                  "version": "2.4.1",
+                  "bundled": true,
+                  "requires": {
+                    "ansi-styles": "^3.2.1",
+                    "escape-string-regexp": "^1.0.5",
+                    "supports-color": "^5.3.0"
+                  }
+                },
+                "strip-ansi": {
+                  "version": "4.0.0",
+                  "bundled": true,
+                  "requires": {
+                    "ansi-regex": "^3.0.0"
+                  }
+                },
+                "supports-color": {
+                  "version": "5.5.0",
+                  "bundled": true,
+                  "requires": {
+                    "has-flag": "^3.0.0"
+                  }
+                }
+              }
+            },
             "invariant": {
               "version": "2.2.4",
               "bundled": true,
@@ -6802,6 +9470,10 @@
                 "number-is-nan": "^1.0.0"
               }
             },
+            "is-fullwidth-code-point": {
+              "version": "2.0.0",
+              "bundled": true
+            },
             "is-glob": {
               "version": "2.0.1",
               "bundled": true,
@@ -6817,6 +9489,24 @@
                 "kind-of": "^3.0.2"
               }
             },
+            "is-path-cwd": {
+              "version": "1.0.0",
+              "bundled": true
+            },
+            "is-path-in-cwd": {
+              "version": "1.0.1",
+              "bundled": true,
+              "requires": {
+                "is-path-inside": "^1.0.0"
+              }
+            },
+            "is-path-inside": {
+              "version": "1.0.1",
+              "bundled": true,
+              "requires": {
+                "path-is-inside": "^1.0.1"
+              }
+            },
             "is-posix-bracket": {
               "version": "0.1.1",
               "bundled": true,
@@ -6827,10 +9517,22 @@
               "bundled": true,
               "optional": true
             },
+            "is-promise": {
+              "version": "2.1.0",
+              "bundled": true
+            },
+            "is-resolvable": {
+              "version": "1.1.0",
+              "bundled": true
+            },
             "isarray": {
               "version": "1.0.0",
               "bundled": true
             },
+            "isexe": {
+              "version": "2.0.0",
+              "bundled": true
+            },
             "isobject": {
               "version": "2.1.0",
               "bundled": true,
@@ -6843,10 +9545,26 @@
               "version": "3.0.2",
               "bundled": true
             },
+            "js-yaml": {
+              "version": "3.12.0",
+              "bundled": true,
+              "requires": {
+                "argparse": "^1.0.7",
+                "esprima": "^4.0.0"
+              }
+            },
             "jsesc": {
               "version": "1.3.0",
               "bundled": true
             },
+            "json-schema-traverse": {
+              "version": "0.4.1",
+              "bundled": true
+            },
+            "json-stable-stringify-without-jsonify": {
+              "version": "1.0.1",
+              "bundled": true
+            },
             "json5": {
               "version": "0.5.1",
               "bundled": true
@@ -6858,6 +9576,14 @@
                 "is-buffer": "^1.1.5"
               }
             },
+            "levn": {
+              "version": "0.3.0",
+              "bundled": true,
+              "requires": {
+                "prelude-ls": "~1.1.2",
+                "type-check": "~0.3.2"
+              }
+            },
             "lodash": {
               "version": "4.17.10",
               "bundled": true
@@ -6894,6 +9620,10 @@
                 "regex-cache": "^0.4.2"
               }
             },
+            "mimic-fn": {
+              "version": "1.2.0",
+              "bundled": true
+            },
             "minimatch": {
               "version": "3.0.4",
               "bundled": true,
@@ -6916,11 +9646,23 @@
               "version": "2.0.0",
               "bundled": true
             },
+            "mute-stream": {
+              "version": "0.0.7",
+              "bundled": true
+            },
             "nan": {
               "version": "2.10.0",
               "bundled": true,
               "optional": true
             },
+            "natural-compare": {
+              "version": "1.4.0",
+              "bundled": true
+            },
+            "nice-try": {
+              "version": "1.0.5",
+              "bundled": true
+            },
             "normalize-path": {
               "version": "2.1.1",
               "bundled": true,
@@ -6952,6 +9694,25 @@
                 "wrappy": "1"
               }
             },
+            "onetime": {
+              "version": "2.0.1",
+              "bundled": true,
+              "requires": {
+                "mimic-fn": "^1.0.0"
+              }
+            },
+            "optionator": {
+              "version": "0.8.2",
+              "bundled": true,
+              "requires": {
+                "deep-is": "~0.1.3",
+                "fast-levenshtein": "~2.0.4",
+                "levn": "~0.3.0",
+                "prelude-ls": "~1.1.2",
+                "type-check": "~0.3.2",
+                "wordwrap": "~1.0.0"
+              }
+            },
             "os-homedir": {
               "version": "1.0.2",
               "bundled": true
@@ -6984,6 +9745,37 @@
               "version": "1.0.1",
               "bundled": true
             },
+            "path-is-inside": {
+              "version": "1.0.2",
+              "bundled": true
+            },
+            "path-key": {
+              "version": "2.0.1",
+              "bundled": true
+            },
+            "pify": {
+              "version": "2.3.0",
+              "bundled": true
+            },
+            "pinkie": {
+              "version": "2.0.4",
+              "bundled": true
+            },
+            "pinkie-promise": {
+              "version": "2.0.1",
+              "bundled": true,
+              "requires": {
+                "pinkie": "^2.0.0"
+              }
+            },
+            "pluralize": {
+              "version": "7.0.0",
+              "bundled": true
+            },
+            "prelude-ls": {
+              "version": "1.1.2",
+              "bundled": true
+            },
             "preserve": {
               "version": "0.2.0",
               "bundled": true,
@@ -6998,6 +9790,14 @@
               "bundled": true,
               "optional": true
             },
+            "progress": {
+              "version": "2.0.0",
+              "bundled": true
+            },
+            "punycode": {
+              "version": "2.1.1",
+              "bundled": true
+            },
             "querystringify": {
               "version": "2.0.0",
               "bundled": true
@@ -7007,7 +9807,21 @@
               "bundled": true,
               "optional": true,
               "requires": {
+                "is-number": "^4.0.0",
+                "kind-of": "^6.0.0",
                 "math-random": "^1.0.1"
+              },
+              "dependencies": {
+                "is-number": {
+                  "version": "4.0.0",
+                  "bundled": true,
+                  "optional": true
+                },
+                "kind-of": {
+                  "version": "6.0.2",
+                  "bundled": true,
+                  "optional": true
+                }
               }
             },
             "readable-stream": {
@@ -7060,6 +9874,10 @@
                 "is-equal-shallow": "^0.1.3"
               }
             },
+            "regexpp": {
+              "version": "2.0.0",
+              "bundled": true
+            },
             "regexpu-core": {
               "version": "2.0.0",
               "bundled": true,
@@ -7075,7 +9893,16 @@
             },
             "regjsparser": {
               "version": "0.1.5",
-              "bundled": true
+              "bundled": true,
+              "requires": {
+                "jsesc": "~0.5.0"
+              },
+              "dependencies": {
+                "jsesc": {
+                  "version": "0.5.0",
+                  "bundled": true
+                }
+              }
             },
             "remove-trailing-separator": {
               "version": "1.1.0",
@@ -7097,14 +9924,59 @@
                 "is-finite": "^1.0.0"
               }
             },
+            "require-uncached": {
+              "version": "1.0.3",
+              "bundled": true,
+              "requires": {
+                "caller-path": "^0.1.0",
+                "resolve-from": "^1.0.0"
+              }
+            },
             "requires-port": {
               "version": "1.0.0",
               "bundled": true
             },
+            "resolve-from": {
+              "version": "1.0.1",
+              "bundled": true
+            },
+            "restore-cursor": {
+              "version": "2.0.0",
+              "bundled": true,
+              "requires": {
+                "onetime": "^2.0.0",
+                "signal-exit": "^3.0.2"
+              }
+            },
+            "rimraf": {
+              "version": "2.6.2",
+              "bundled": true,
+              "requires": {
+                "glob": "^7.0.5"
+              }
+            },
+            "run-async": {
+              "version": "2.3.0",
+              "bundled": true,
+              "requires": {
+                "is-promise": "^2.1.0"
+              }
+            },
+            "rxjs": {
+              "version": "6.3.2",
+              "bundled": true,
+              "requires": {
+                "tslib": "^1.9.0"
+              }
+            },
             "safe-buffer": {
               "version": "5.1.2",
               "bundled": true
             },
+            "safer-buffer": {
+              "version": "2.1.2",
+              "bundled": true
+            },
             "semver": {
               "version": "5.5.0",
               "bundled": true
@@ -7114,10 +9986,32 @@
               "bundled": true,
               "optional": true
             },
+            "shebang-command": {
+              "version": "1.2.0",
+              "bundled": true,
+              "requires": {
+                "shebang-regex": "^1.0.0"
+              }
+            },
+            "shebang-regex": {
+              "version": "1.0.0",
+              "bundled": true
+            },
+            "signal-exit": {
+              "version": "3.0.2",
+              "bundled": true
+            },
             "slash": {
               "version": "1.0.0",
               "bundled": true
             },
+            "slice-ansi": {
+              "version": "1.0.0",
+              "bundled": true,
+              "requires": {
+                "is-fullwidth-code-point": "^2.0.0"
+              }
+            },
             "source-map": {
               "version": "0.5.7",
               "bundled": true
@@ -7129,6 +10023,31 @@
                 "source-map": "^0.5.6"
               }
             },
+            "sprintf-js": {
+              "version": "1.0.3",
+              "bundled": true
+            },
+            "string-width": {
+              "version": "2.1.1",
+              "bundled": true,
+              "requires": {
+                "is-fullwidth-code-point": "^2.0.0",
+                "strip-ansi": "^4.0.0"
+              },
+              "dependencies": {
+                "ansi-regex": {
+                  "version": "3.0.0",
+                  "bundled": true
+                },
+                "strip-ansi": {
+                  "version": "4.0.0",
+                  "bundled": true,
+                  "requires": {
+                    "ansi-regex": "^3.0.0"
+                  }
+                }
+              }
+            },
             "string_decoder": {
               "version": "1.1.1",
               "bundled": true,
@@ -7144,10 +10063,66 @@
                 "ansi-regex": "^2.0.0"
               }
             },
+            "strip-json-comments": {
+              "version": "2.0.1",
+              "bundled": true
+            },
             "supports-color": {
               "version": "2.0.0",
               "bundled": true
             },
+            "table": {
+              "version": "4.0.3",
+              "bundled": true,
+              "requires": {
+                "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"
+              },
+              "dependencies": {
+                "ansi-styles": {
+                  "version": "3.2.1",
+                  "bundled": true,
+                  "requires": {
+                    "color-convert": "^1.9.0"
+                  }
+                },
+                "chalk": {
+                  "version": "2.4.1",
+                  "bundled": true,
+                  "requires": {
+                    "ansi-styles": "^3.2.1",
+                    "escape-string-regexp": "^1.0.5",
+                    "supports-color": "^5.3.0"
+                  }
+                },
+                "supports-color": {
+                  "version": "5.5.0",
+                  "bundled": true,
+                  "requires": {
+                    "has-flag": "^3.0.0"
+                  }
+                }
+              }
+            },
+            "text-table": {
+              "version": "0.2.0",
+              "bundled": true
+            },
+            "through": {
+              "version": "2.3.8",
+              "bundled": true
+            },
+            "tmp": {
+              "version": "0.0.33",
+              "bundled": true,
+              "requires": {
+                "os-tmpdir": "~1.0.2"
+              }
+            },
             "to-fast-properties": {
               "version": "1.0.3",
               "bundled": true
@@ -7156,6 +10131,24 @@
               "version": "1.0.1",
               "bundled": true
             },
+            "tslib": {
+              "version": "1.9.3",
+              "bundled": true
+            },
+            "type-check": {
+              "version": "0.3.2",
+              "bundled": true,
+              "requires": {
+                "prelude-ls": "~1.1.2"
+              }
+            },
+            "uri-js": {
+              "version": "4.2.2",
+              "bundled": true,
+              "requires": {
+                "punycode": "^2.1.0"
+              }
+            },
             "url-parse": {
               "version": "1.4.3",
               "bundled": true,
@@ -7184,9 +10177,81 @@
                 "user-home": "^1.1.1"
               }
             },
+            "vue-eslint-parser": {
+              "version": "2.0.3",
+              "bundled": true,
+              "requires": {
+                "debug": "^3.1.0",
+                "eslint-scope": "^3.7.1",
+                "eslint-visitor-keys": "^1.0.0",
+                "espree": "^3.5.2",
+                "esquery": "^1.0.0",
+                "lodash": "^4.17.4"
+              },
+              "dependencies": {
+                "acorn-jsx": {
+                  "version": "3.0.1",
+                  "bundled": true,
+                  "requires": {
+                    "acorn": "^3.0.4"
+                  },
+                  "dependencies": {
+                    "acorn": {
+                      "version": "3.3.0",
+                      "bundled": true
+                    }
+                  }
+                },
+                "debug": {
+                  "version": "3.2.5",
+                  "bundled": true,
+                  "requires": {
+                    "ms": "^2.1.1"
+                  }
+                },
+                "eslint-scope": {
+                  "version": "3.7.3",
+                  "bundled": true,
+                  "requires": {
+                    "esrecurse": "^4.1.0",
+                    "estraverse": "^4.1.1"
+                  }
+                },
+                "espree": {
+                  "version": "3.5.4",
+                  "bundled": true,
+                  "requires": {
+                    "acorn": "^5.5.0",
+                    "acorn-jsx": "^3.0.0"
+                  }
+                },
+                "ms": {
+                  "version": "2.1.1",
+                  "bundled": true
+                }
+              }
+            },
+            "which": {
+              "version": "1.3.1",
+              "bundled": true,
+              "requires": {
+                "isexe": "^2.0.0"
+              }
+            },
+            "wordwrap": {
+              "version": "1.0.0",
+              "bundled": true
+            },
             "wrappy": {
               "version": "1.0.2",
               "bundled": true
+            },
+            "write": {
+              "version": "0.2.1",
+              "bundled": true,
+              "requires": {
+                "mkdirp": "^0.5.1"
+              }
             }
           }
         },
@@ -7209,6 +10274,13 @@
             "buffer-indexof": "^1.0.0"
           }
         },
+        "doctrine": {
+          "version": "2.1.0",
+          "bundled": true,
+          "requires": {
+            "esutils": "^2.0.2"
+          }
+        },
         "domain-browser": {
           "version": "1.2.0",
           "bundled": true
@@ -7223,15 +10295,23 @@
           }
         },
         "editorconfig": {
-          "version": "0.15.0",
+          "version": "0.13.3",
           "bundled": true,
           "requires": {
-            "@types/commander": "^2.11.0",
-            "@types/semver": "^5.4.0",
-            "commander": "^2.11.0",
-            "lru-cache": "^4.1.1",
-            "semver": "^5.4.1",
+            "bluebird": "^3.0.5",
+            "commander": "^2.9.0",
+            "lru-cache": "^3.2.0",
+            "semver": "^5.1.0",
             "sigmund": "^1.0.1"
+          },
+          "dependencies": {
+            "lru-cache": {
+              "version": "3.2.0",
+              "bundled": true,
+              "requires": {
+                "pseudomap": "^1.0.1"
+              }
+            }
           }
         },
         "ee-first": {
@@ -7239,7 +10319,7 @@
           "bundled": true
         },
         "electron-to-chromium": {
-          "version": "1.3.64",
+          "version": "1.3.58",
           "bundled": true
         },
         "elliptic": {
@@ -7373,28 +10453,253 @@
             "es6-symbol": "^3.1.1"
           }
         },
-        "escape-html": {
-          "version": "1.0.3",
+        "escape-html": {
+          "version": "1.0.3",
+          "bundled": true
+        },
+        "escape-string-regexp": {
+          "version": "1.0.5",
+          "bundled": true
+        },
+        "escope": {
+          "version": "3.6.0",
+          "bundled": true,
+          "requires": {
+            "es6-map": "^0.1.3",
+            "es6-weak-map": "^2.0.1",
+            "esrecurse": "^4.1.0",
+            "estraverse": "^4.1.1"
+          }
+        },
+        "eslint": {
+          "version": "5.6.0",
+          "bundled": true,
+          "requires": {
+            "@babel/code-frame": "^7.0.0",
+            "ajv": "^6.5.3",
+            "chalk": "^2.1.0",
+            "cross-spawn": "^6.0.5",
+            "debug": "^3.1.0",
+            "doctrine": "^2.1.0",
+            "eslint-scope": "^4.0.0",
+            "eslint-utils": "^1.3.1",
+            "eslint-visitor-keys": "^1.0.0",
+            "espree": "^4.0.0",
+            "esquery": "^1.0.1",
+            "esutils": "^2.0.2",
+            "file-entry-cache": "^2.0.0",
+            "functional-red-black-tree": "^1.0.1",
+            "glob": "^7.1.2",
+            "globals": "^11.7.0",
+            "ignore": "^4.0.6",
+            "imurmurhash": "^0.1.4",
+            "inquirer": "^6.1.0",
+            "is-resolvable": "^1.1.0",
+            "js-yaml": "^3.12.0",
+            "json-stable-stringify-without-jsonify": "^1.0.1",
+            "levn": "^0.3.0",
+            "lodash": "^4.17.5",
+            "minimatch": "^3.0.4",
+            "mkdirp": "^0.5.1",
+            "natural-compare": "^1.4.0",
+            "optionator": "^0.8.2",
+            "path-is-inside": "^1.0.2",
+            "pluralize": "^7.0.0",
+            "progress": "^2.0.0",
+            "regexpp": "^2.0.0",
+            "require-uncached": "^1.0.3",
+            "semver": "^5.5.1",
+            "strip-ansi": "^4.0.0",
+            "strip-json-comments": "^2.0.1",
+            "table": "^4.0.3",
+            "text-table": "^0.2.0"
+          },
+          "dependencies": {
+            "ajv": {
+              "version": "6.5.3",
+              "bundled": true,
+              "requires": {
+                "fast-deep-equal": "^2.0.1",
+                "fast-json-stable-stringify": "^2.0.0",
+                "json-schema-traverse": "^0.4.1",
+                "uri-js": "^4.2.2"
+              }
+            },
+            "ansi-escapes": {
+              "version": "3.1.0",
+              "bundled": true
+            },
+            "ansi-regex": {
+              "version": "3.0.0",
+              "bundled": true
+            },
+            "ansi-styles": {
+              "version": "3.2.1",
+              "bundled": true,
+              "requires": {
+                "color-convert": "^1.9.0"
+              }
+            },
+            "chalk": {
+              "version": "2.4.1",
+              "bundled": true,
+              "requires": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+              }
+            },
+            "chardet": {
+              "version": "0.7.0",
+              "bundled": true
+            },
+            "cross-spawn": {
+              "version": "6.0.5",
+              "bundled": true,
+              "requires": {
+                "nice-try": "^1.0.4",
+                "path-key": "^2.0.1",
+                "semver": "^5.5.0",
+                "shebang-command": "^1.2.0",
+                "which": "^1.2.9"
+              }
+            },
+            "debug": {
+              "version": "3.2.5",
+              "bundled": true,
+              "requires": {
+                "ms": "^2.1.1"
+              }
+            },
+            "esprima": {
+              "version": "4.0.1",
+              "bundled": true
+            },
+            "external-editor": {
+              "version": "3.0.3",
+              "bundled": true,
+              "requires": {
+                "chardet": "^0.7.0",
+                "iconv-lite": "^0.4.24",
+                "tmp": "^0.0.33"
+              }
+            },
+            "fast-deep-equal": {
+              "version": "2.0.1",
+              "bundled": true
+            },
+            "globals": {
+              "version": "11.7.0",
+              "bundled": true
+            },
+            "has-flag": {
+              "version": "3.0.0",
+              "bundled": true
+            },
+            "iconv-lite": {
+              "version": "0.4.24",
+              "bundled": true,
+              "requires": {
+                "safer-buffer": ">= 2.1.2 < 3"
+              }
+            },
+            "inquirer": {
+              "version": "6.2.0",
+              "bundled": true,
+              "requires": {
+                "ansi-escapes": "^3.0.0",
+                "chalk": "^2.0.0",
+                "cli-cursor": "^2.1.0",
+                "cli-width": "^2.0.0",
+                "external-editor": "^3.0.0",
+                "figures": "^2.0.0",
+                "lodash": "^4.17.10",
+                "mute-stream": "0.0.7",
+                "run-async": "^2.2.0",
+                "rxjs": "^6.1.0",
+                "string-width": "^2.1.0",
+                "strip-ansi": "^4.0.0",
+                "through": "^2.3.6"
+              }
+            },
+            "js-yaml": {
+              "version": "3.12.0",
+              "bundled": true,
+              "requires": {
+                "argparse": "^1.0.7",
+                "esprima": "^4.0.0"
+              }
+            },
+            "json-schema-traverse": {
+              "version": "0.4.1",
+              "bundled": true
+            },
+            "ms": {
+              "version": "2.1.1",
+              "bundled": true
+            },
+            "semver": {
+              "version": "5.5.1",
+              "bundled": true
+            },
+            "strip-ansi": {
+              "version": "4.0.0",
+              "bundled": true,
+              "requires": {
+                "ansi-regex": "^3.0.0"
+              }
+            },
+            "supports-color": {
+              "version": "5.5.0",
+              "bundled": true,
+              "requires": {
+                "has-flag": "^3.0.0"
+              }
+            }
+          }
+        },
+        "eslint-plugin-vue": {
+          "version": "4.7.1",
+          "bundled": true,
+          "requires": {
+            "vue-eslint-parser": "^2.0.3"
+          }
+        },
+        "eslint-scope": {
+          "version": "4.0.0",
+          "bundled": true,
+          "requires": {
+            "esrecurse": "^4.1.0",
+            "estraverse": "^4.1.1"
+          }
+        },
+        "eslint-utils": {
+          "version": "1.3.1",
           "bundled": true
         },
-        "escape-string-regexp": {
-          "version": "1.0.5",
+        "eslint-visitor-keys": {
+          "version": "1.0.0",
           "bundled": true
         },
-        "escope": {
-          "version": "3.6.0",
+        "espree": {
+          "version": "4.0.0",
           "bundled": true,
           "requires": {
-            "es6-map": "^0.1.3",
-            "es6-weak-map": "^2.0.1",
-            "esrecurse": "^4.1.0",
-            "estraverse": "^4.1.1"
+            "acorn": "^5.6.0",
+            "acorn-jsx": "^4.1.1"
           }
         },
         "esprima": {
           "version": "2.7.3",
           "bundled": true
         },
+        "esquery": {
+          "version": "1.0.1",
+          "bundled": true,
+          "requires": {
+            "estraverse": "^4.0.0"
+          }
+        },
         "esrecurse": {
           "version": "4.2.1",
           "bundled": true,
@@ -7683,6 +10988,10 @@
           "version": "2.0.0",
           "bundled": true
         },
+        "fast-levenshtein": {
+          "version": "2.0.6",
+          "bundled": true
+        },
         "fastparse": {
           "version": "1.1.1",
           "bundled": true
@@ -7701,6 +11010,14 @@
             "escape-string-regexp": "^1.0.5"
           }
         },
+        "file-entry-cache": {
+          "version": "2.0.0",
+          "bundled": true,
+          "requires": {
+            "flat-cache": "^1.2.1",
+            "object-assign": "^4.0.1"
+          }
+        },
         "file-loader": {
           "version": "0.9.0",
           "bundled": true,
@@ -7772,12 +11089,53 @@
             "locate-path": "^2.0.0"
           }
         },
+        "flat-cache": {
+          "version": "1.3.0",
+          "bundled": true,
+          "requires": {
+            "circular-json": "^0.3.1",
+            "del": "^2.0.2",
+            "graceful-fs": "^4.1.2",
+            "write": "^0.2.1"
+          },
+          "dependencies": {
+            "del": {
+              "version": "2.2.2",
+              "bundled": true,
+              "requires": {
+                "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"
+              }
+            },
+            "globby": {
+              "version": "5.0.0",
+              "bundled": true,
+              "requires": {
+                "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"
+              }
+            },
+            "pify": {
+              "version": "2.3.0",
+              "bundled": true
+            }
+          }
+        },
         "flatten": {
           "version": "1.0.2",
           "bundled": true
         },
         "follow-redirects": {
-          "version": "1.5.7",
+          "version": "1.5.5",
           "bundled": true,
           "requires": {
             "debug": "^3.1.0"
@@ -8310,6 +11668,10 @@
           "version": "1.1.1",
           "bundled": true
         },
+        "functional-red-black-tree": {
+          "version": "1.0.1",
+          "bundled": true
+        },
         "gauge": {
           "version": "2.7.4",
           "bundled": true,
@@ -8373,7 +11735,7 @@
           }
         },
         "glob": {
-          "version": "7.1.3",
+          "version": "7.1.2",
           "bundled": true,
           "requires": {
             "fs.realpath": "^1.0.0",
@@ -8730,7 +12092,7 @@
           "bundled": true
         },
         "iconv-lite": {
-          "version": "0.4.24",
+          "version": "0.4.23",
           "bundled": true,
           "requires": {
             "safer-buffer": ">= 2.1.2 < 3"
@@ -8744,6 +12106,10 @@
           "version": "1.1.12",
           "bundled": true
         },
+        "ignore": {
+          "version": "4.0.6",
+          "bundled": true
+        },
         "import-local": {
           "version": "1.0.0",
           "bundled": true,
@@ -8752,6 +12118,10 @@
             "resolve-cwd": "^2.0.0"
           }
         },
+        "imurmurhash": {
+          "version": "0.1.4",
+          "bundled": true
+        },
         "in-publish": {
           "version": "2.0.0",
           "bundled": true
@@ -9022,6 +12392,10 @@
             "has": "^1.0.1"
           }
         },
+        "is-resolvable": {
+          "version": "1.1.0",
+          "bundled": true
+        },
         "is-stream": {
           "version": "1.1.0",
           "bundled": true
@@ -9070,27 +12444,17 @@
           "bundled": true
         },
         "js-base64": {
-          "version": "2.4.9",
+          "version": "2.4.8",
           "bundled": true
         },
         "js-beautify": {
-          "version": "1.8.4",
+          "version": "1.7.5",
           "bundled": true,
           "requires": {
             "config-chain": "~1.1.5",
-            "editorconfig": "^0.15.0",
+            "editorconfig": "^0.13.2",
             "mkdirp": "~0.5.0",
-            "nopt": "~4.0.1"
-          },
-          "dependencies": {
-            "nopt": {
-              "version": "4.0.1",
-              "bundled": true,
-              "requires": {
-                "abbrev": "1",
-                "osenv": "^0.1.4"
-              }
-            }
+            "nopt": "~3.0.1"
           }
         },
         "js-tokens": {
@@ -9127,6 +12491,10 @@
           "version": "0.3.1",
           "bundled": true
         },
+        "json-stable-stringify-without-jsonify": {
+          "version": "1.0.1",
+          "bundled": true
+        },
         "json-stringify-safe": {
           "version": "5.0.1",
           "bundled": true
@@ -9150,7 +12518,7 @@
           }
         },
         "killable": {
-          "version": "1.0.1",
+          "version": "1.0.0",
           "bundled": true
         },
         "kind-of": {
@@ -9168,6 +12536,14 @@
             "invert-kv": "^1.0.0"
           }
         },
+        "levn": {
+          "version": "0.3.0",
+          "bundled": true,
+          "requires": {
+            "prelude-ls": "~1.1.2",
+            "type-check": "~0.3.2"
+          }
+        },
         "load-json-file": {
           "version": "1.1.0",
           "bundled": true,
@@ -9419,14 +12795,14 @@
           "bundled": true
         },
         "mime-db": {
-          "version": "1.36.0",
+          "version": "1.35.0",
           "bundled": true
         },
         "mime-types": {
-          "version": "2.1.20",
+          "version": "2.1.19",
           "bundled": true,
           "requires": {
-            "mime-db": "~1.36.0"
+            "mime-db": "~1.35.0"
           }
         },
         "mimic-fn": {
@@ -9517,7 +12893,7 @@
           "bundled": true
         },
         "nan": {
-          "version": "2.11.0",
+          "version": "2.10.0",
           "bundled": true
         },
         "nanomatch": {
@@ -9537,6 +12913,10 @@
             "to-regex": "^3.0.1"
           }
         },
+        "natural-compare": {
+          "version": "1.4.0",
+          "bundled": true
+        },
         "negotiator": {
           "version": "0.6.1",
           "bundled": true
@@ -9549,6 +12929,10 @@
           "version": "1.0.0",
           "bundled": true
         },
+        "nice-try": {
+          "version": "1.0.5",
+          "bundled": true
+        },
         "node-fetch": {
           "version": "1.6.3",
           "bundled": true,
@@ -9829,6 +13213,24 @@
             "pinkie-promise": "^2.0.0"
           }
         },
+        "optionator": {
+          "version": "0.8.2",
+          "bundled": true,
+          "requires": {
+            "deep-is": "~0.1.3",
+            "fast-levenshtein": "~2.0.4",
+            "levn": "~0.3.0",
+            "prelude-ls": "~1.1.2",
+            "type-check": "~0.3.2",
+            "wordwrap": "~1.0.0"
+          },
+          "dependencies": {
+            "wordwrap": {
+              "version": "1.0.0",
+              "bundled": true
+            }
+          }
+        },
         "original": {
           "version": "1.0.2",
           "bundled": true,
@@ -10026,12 +13428,16 @@
             "find-up": "^2.1.0"
           }
         },
+        "pluralize": {
+          "version": "7.0.0",
+          "bundled": true
+        },
         "popper.js": {
           "version": "1.14.4",
           "bundled": true
         },
         "portfinder": {
-          "version": "1.0.17",
+          "version": "1.0.16",
           "bundled": true,
           "requires": {
             "async": "^1.5.2",
@@ -10282,7 +13688,7 @@
               "bundled": true
             },
             "supports-color": {
-              "version": "5.5.0",
+              "version": "5.4.0",
               "bundled": true,
               "requires": {
                 "has-flag": "^3.0.0"
@@ -10350,7 +13756,7 @@
               "bundled": true
             },
             "supports-color": {
-              "version": "5.5.0",
+              "version": "5.4.0",
               "bundled": true,
               "requires": {
                 "has-flag": "^3.0.0"
@@ -10418,7 +13824,7 @@
               "bundled": true
             },
             "supports-color": {
-              "version": "5.5.0",
+              "version": "5.4.0",
               "bundled": true,
               "requires": {
                 "has-flag": "^3.0.0"
@@ -10468,7 +13874,7 @@
               "bundled": true
             },
             "supports-color": {
-              "version": "5.5.0",
+              "version": "5.4.0",
               "bundled": true,
               "requires": {
                 "has-flag": "^3.0.0"
@@ -10566,6 +13972,10 @@
             "uniqs": "^2.0.0"
           }
         },
+        "prelude-ls": {
+          "version": "1.1.2",
+          "bundled": true
+        },
         "prepend-http": {
           "version": "1.0.4",
           "bundled": true
@@ -10586,6 +13996,10 @@
           "version": "2.0.0",
           "bundled": true
         },
+        "progress": {
+          "version": "2.0.0",
+          "bundled": true
+        },
         "proto-list": {
           "version": "1.2.4",
           "bundled": true
@@ -10842,6 +14256,10 @@
             "safe-regex": "^1.1.0"
           }
         },
+        "regexpp": {
+          "version": "2.0.0",
+          "bundled": true
+        },
         "regexpu-core": {
           "version": "2.0.0",
           "bundled": true,
@@ -10873,7 +14291,7 @@
           "bundled": true
         },
         "repeat-element": {
-          "version": "1.1.3",
+          "version": "1.1.2",
           "bundled": true
         },
         "repeat-string": {
@@ -10925,6 +14343,20 @@
           "version": "1.0.1",
           "bundled": true
         },
+        "require-uncached": {
+          "version": "1.0.3",
+          "bundled": true,
+          "requires": {
+            "caller-path": "^0.1.0",
+            "resolve-from": "^1.0.0"
+          },
+          "dependencies": {
+            "resolve-from": {
+              "version": "1.0.1",
+              "bundled": true
+            }
+          }
+        },
         "requires-port": {
           "version": "1.0.0",
           "bundled": true
@@ -10996,6 +14428,13 @@
           "version": "4.1.0",
           "bundled": true
         },
+        "rxjs": {
+          "version": "6.3.2",
+          "bundled": true,
+          "requires": {
+            "tslib": "^1.9.0"
+          }
+        },
         "safe-buffer": {
           "version": "5.1.2",
           "bundled": true
@@ -11072,7 +14511,7 @@
           }
         },
         "semver": {
-          "version": "5.5.1",
+          "version": "5.5.0",
           "bundled": true
         },
         "send": {
@@ -11199,6 +14638,13 @@
           "bundled": true,
           "dev": true
         },
+        "slice-ansi": {
+          "version": "1.0.0",
+          "bundled": true,
+          "requires": {
+            "is-fullwidth-code-point": "^2.0.0"
+          }
+        },
         "snapdragon": {
           "version": "0.8.2",
           "bundled": true,
@@ -11295,7 +14741,7 @@
           }
         },
         "sockjs-client": {
-          "version": "1.1.5",
+          "version": "1.1.4",
           "bundled": true,
           "requires": {
             "debug": "^2.6.6",
@@ -11374,7 +14820,7 @@
           }
         },
         "spdx-license-ids": {
-          "version": "3.0.1",
+          "version": "3.0.0",
           "bundled": true
         },
         "spdy": {
@@ -11450,7 +14896,7 @@
           "bundled": true
         },
         "stdout-stream": {
-          "version": "1.4.1",
+          "version": "1.4.0",
           "bundled": true,
           "requires": {
             "readable-stream": "^2.0.1"
@@ -11532,6 +14978,10 @@
             "get-stdin": "^4.0.1"
           }
         },
+        "strip-json-comments": {
+          "version": "2.0.1",
+          "bundled": true
+        },
         "style-loader": {
           "version": "0.20.3",
           "bundled": true,
@@ -11585,6 +15035,65 @@
             "whet.extend": "~0.9.9"
           }
         },
+        "table": {
+          "version": "4.0.3",
+          "bundled": true,
+          "requires": {
+            "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"
+          },
+          "dependencies": {
+            "ajv": {
+              "version": "6.5.3",
+              "bundled": true,
+              "requires": {
+                "fast-deep-equal": "^2.0.1",
+                "fast-json-stable-stringify": "^2.0.0",
+                "json-schema-traverse": "^0.4.1",
+                "uri-js": "^4.2.2"
+              }
+            },
+            "ansi-styles": {
+              "version": "3.2.1",
+              "bundled": true,
+              "requires": {
+                "color-convert": "^1.9.0"
+              }
+            },
+            "chalk": {
+              "version": "2.4.1",
+              "bundled": true,
+              "requires": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+              }
+            },
+            "fast-deep-equal": {
+              "version": "2.0.1",
+              "bundled": true
+            },
+            "has-flag": {
+              "version": "3.0.0",
+              "bundled": true
+            },
+            "json-schema-traverse": {
+              "version": "0.4.1",
+              "bundled": true
+            },
+            "supports-color": {
+              "version": "5.5.0",
+              "bundled": true,
+              "requires": {
+                "has-flag": "^3.0.0"
+              }
+            }
+          }
+        },
         "tapable": {
           "version": "0.2.8",
           "bundled": true
@@ -11598,6 +15107,10 @@
             "inherits": "2"
           }
         },
+        "text-table": {
+          "version": "0.2.0",
+          "bundled": true
+        },
         "through": {
           "version": "2.3.8",
           "bundled": true
@@ -11607,7 +15120,7 @@
           "bundled": true
         },
         "time-stamp": {
-          "version": "2.1.0",
+          "version": "2.0.1",
           "bundled": true
         },
         "timers-browserify": {
@@ -11679,16 +15192,32 @@
         },
         "trim-right": {
           "version": "1.0.1",
-          "bundled": true,
-          "dev": true
+          "bundled": true
         },
         "true-case-path": {
-          "version": "1.0.3",
+          "version": "1.0.2",
           "bundled": true,
           "requires": {
-            "glob": "^7.1.2"
+            "glob": "^6.0.4"
+          },
+          "dependencies": {
+            "glob": {
+              "version": "6.0.4",
+              "bundled": true,
+              "requires": {
+                "inflight": "^1.0.4",
+                "inherits": "2",
+                "minimatch": "2 || 3",
+                "once": "^1.3.0",
+                "path-is-absolute": "^1.0.0"
+              }
+            }
           }
         },
+        "tslib": {
+          "version": "1.9.3",
+          "bundled": true
+        },
         "tty-browserify": {
           "version": "0.0.0",
           "bundled": true
@@ -11705,6 +15234,13 @@
           "bundled": true,
           "optional": true
         },
+        "type-check": {
+          "version": "0.3.2",
+          "bundled": true,
+          "requires": {
+            "prelude-ls": "~1.1.2"
+          }
+        },
         "type-is": {
           "version": "1.6.16",
           "bundled": true,
@@ -11932,12 +15468,66 @@
             "indexof": "0.0.1"
           }
         },
-        "vue": {
-          "version": "2.5.17",
-          "bundled": true
-        },
+        "vue": {
+          "version": "2.5.17",
+          "bundled": true
+        },
+        "vue-eslint-parser": {
+          "version": "2.0.3",
+          "bundled": true,
+          "requires": {
+            "debug": "^3.1.0",
+            "eslint-scope": "^3.7.1",
+            "eslint-visitor-keys": "^1.0.0",
+            "espree": "^3.5.2",
+            "esquery": "^1.0.0",
+            "lodash": "^4.17.4"
+          },
+          "dependencies": {
+            "acorn-jsx": {
+              "version": "3.0.1",
+              "bundled": true,
+              "requires": {
+                "acorn": "^3.0.4"
+              },
+              "dependencies": {
+                "acorn": {
+                  "version": "3.3.0",
+                  "bundled": true
+                }
+              }
+            },
+            "debug": {
+              "version": "3.2.5",
+              "bundled": true,
+              "requires": {
+                "ms": "^2.1.1"
+              }
+            },
+            "eslint-scope": {
+              "version": "3.7.3",
+              "bundled": true,
+              "requires": {
+                "esrecurse": "^4.1.0",
+                "estraverse": "^4.1.1"
+              }
+            },
+            "espree": {
+              "version": "3.5.4",
+              "bundled": true,
+              "requires": {
+                "acorn": "^5.5.0",
+                "acorn-jsx": "^3.0.0"
+              }
+            },
+            "ms": {
+              "version": "2.1.1",
+              "bundled": true
+            }
+          }
+        },
         "vue-functional-data-merge": {
-          "version": "2.0.7",
+          "version": "2.0.6",
           "bundled": true
         },
         "vue-hot-reload-api": {
@@ -12161,7 +15751,7 @@
           }
         },
         "webpack-dev-server": {
-          "version": "2.11.3",
+          "version": "2.11.2",
           "bundled": true,
           "requires": {
             "ansi-html": "0.0.7",
@@ -12185,7 +15775,7 @@
             "selfsigned": "^1.9.1",
             "serve-index": "^1.7.2",
             "sockjs": "0.3.19",
-            "sockjs-client": "1.1.5",
+            "sockjs-client": "1.1.4",
             "spdy": "^3.4.1",
             "strip-ansi": "^3.0.0",
             "supports-color": "^5.1.0",
@@ -12232,7 +15822,7 @@
               }
             },
             "supports-color": {
-              "version": "5.5.0",
+              "version": "5.4.0",
               "bundled": true,
               "requires": {
                 "has-flag": "^3.0.0"
@@ -12267,7 +15857,7 @@
           }
         },
         "webpack-sources": {
-          "version": "1.2.0",
+          "version": "1.1.0",
           "bundled": true,
           "requires": {
             "source-list-map": "^2.0.0",
@@ -12356,6 +15946,13 @@
           "version": "1.0.2",
           "bundled": true
         },
+        "write": {
+          "version": "0.2.1",
+          "bundled": true,
+          "requires": {
+            "mkdirp": "^0.5.1"
+          }
+        },
         "xtend": {
           "version": "4.0.1",
           "bundled": true
@@ -12426,7 +16023,7 @@
     },
     "dom-converter": {
       "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz",
+      "resolved": "http://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz",
       "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=",
       "dev": true,
       "requires": {
@@ -12492,7 +16089,7 @@
     },
     "duplexer": {
       "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
+      "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
       "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
       "dev": true
     },
@@ -12540,9 +16137,9 @@
       "dev": true
     },
     "electron-to-chromium": {
-      "version": "1.3.65",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.65.tgz",
-      "integrity": "sha512-tyGr+wh2c/JYBVMeflKpZ3ricwtBPyVBMtRNxYGObl7TP5bAeupgz4VZnBzQSFleZViXYTws1yZtKKFQYZyiYw==",
+      "version": "1.3.67",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.67.tgz",
+      "integrity": "sha512-h3zEBLdHvsKfaXv1SHAtykJyNtwYFEKkrWGSFyW1BzGgPQ4ykAzD5Hd8C5MZGTAEhkCKmtyIwYUrapsI0xfKww==",
       "dev": true
     },
     "elliptic": {
@@ -12927,12 +16524,12 @@
       }
     },
     "follow-redirects": {
-      "version": "1.5.7",
-      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.7.tgz",
-      "integrity": "sha512-NONJVIFiX7Z8k2WxfqBjtwqMifx7X42ORLFrOZ2LTKGj71G3C0kfdyTqGqr8fx5zSX6Foo/D95dgGWbPUiwnew==",
+      "version": "1.5.8",
+      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.8.tgz",
+      "integrity": "sha512-sy1mXPmv7kLAMKW/8XofG7o9T+6gAjzdZK4AJF6ryqQYUa/hnzgiypoeUecZ53x7XiqKNEpNqLtS97MshW2nxg==",
       "dev": true,
       "requires": {
-        "debug": "^3.1.0"
+        "debug": "=3.1.0"
       },
       "dependencies": {
         "debug": {
@@ -13048,28 +16645,24 @@
       "dependencies": {
         "abbrev": {
           "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
-          "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+          "bundled": true,
           "dev": true,
           "optional": true
         },
         "ansi-regex": {
           "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+          "bundled": true,
           "dev": true
         },
         "aproba": {
           "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
-          "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+          "bundled": true,
           "dev": true,
           "optional": true
         },
         "are-we-there-yet": {
           "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz",
-          "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=",
+          "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
@@ -13079,14 +16672,12 @@
         },
         "balanced-match": {
           "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
-          "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+          "bundled": true,
           "dev": true
         },
         "brace-expansion": {
           "version": "1.1.11",
-          "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-          "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+          "bundled": true,
           "dev": true,
           "requires": {
             "balanced-match": "^1.0.0",
@@ -13095,40 +16686,34 @@
         },
         "chownr": {
           "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz",
-          "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=",
+          "bundled": true,
           "dev": true,
           "optional": true
         },
         "code-point-at": {
           "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
-          "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+          "bundled": true,
           "dev": true
         },
         "concat-map": {
           "version": "0.0.1",
-          "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-          "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+          "bundled": true,
           "dev": true
         },
         "console-control-strings": {
           "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
-          "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
+          "bundled": true,
           "dev": true
         },
         "core-util-is": {
           "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
-          "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+          "bundled": true,
           "dev": true,
           "optional": true
         },
         "debug": {
           "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
@@ -13137,29 +16722,25 @@
         },
         "deep-extend": {
           "version": "0.5.1",
-          "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz",
-          "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==",
+          "bundled": true,
           "dev": true,
           "optional": true
         },
         "delegates": {
           "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
-          "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
+          "bundled": true,
           "dev": true,
           "optional": true
         },
         "detect-libc": {
           "version": "1.0.3",
-          "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
-          "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=",
+          "bundled": true,
           "dev": true,
           "optional": true
         },
         "fs-minipass": {
           "version": "1.2.5",
-          "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz",
-          "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==",
+          "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
@@ -13168,15 +16749,13 @@
         },
         "fs.realpath": {
           "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-          "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+          "bundled": true,
           "dev": true,
           "optional": true
         },
         "gauge": {
           "version": "2.7.4",
-          "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
-          "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+          "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
@@ -13192,8 +16771,7 @@
         },
         "glob": {
           "version": "7.1.2",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
-          "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+          "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
@@ -13207,15 +16785,13 @@
         },
         "has-unicode": {
           "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
-          "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
+          "bundled": true,
           "dev": true,
           "optional": true
         },
         "iconv-lite": {
           "version": "0.4.21",
-          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.21.tgz",
-          "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==",
+          "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
@@ -13224,8 +16800,7 @@
         },
         "ignore-walk": {
           "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz",
-          "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==",
+          "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
@@ -13234,8 +16809,7 @@
         },
         "inflight": {
           "version": "1.0.6",
-          "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-          "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+          "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
@@ -13245,21 +16819,18 @@
         },
         "inherits": {
           "version": "2.0.3",
-          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+          "bundled": true,
           "dev": true
         },
         "ini": {
           "version": "1.3.5",
-          "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
-          "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
+          "bundled": true,
           "dev": true,
           "optional": true
         },
         "is-fullwidth-code-point": {
           "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
-          "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+          "bundled": true,
           "dev": true,
           "requires": {
             "number-is-nan": "^1.0.0"
@@ -13267,15 +16838,13 @@
         },
         "isarray": {
           "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+          "bundled": true,
           "dev": true,
           "optional": true
         },
         "minimatch": {
           "version": "3.0.4",
-          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
-          "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+          "bundled": true,
           "dev": true,
           "requires": {
             "brace-expansion": "^1.1.7"
@@ -13283,14 +16852,12 @@
         },
         "minimist": {
           "version": "0.0.8",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
-          "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+          "bundled": true,
           "dev": true
         },
         "minipass": {
           "version": "2.2.4",
-          "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.2.4.tgz",
-          "integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==",
+          "bundled": true,
           "dev": true,
           "requires": {
             "safe-buffer": "^5.1.1",
@@ -13299,8 +16866,7 @@
         },
         "minizlib": {
           "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz",
-          "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==",
+          "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
@@ -13309,8 +16875,7 @@
         },
         "mkdirp": {
           "version": "0.5.1",
-          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
-          "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+          "bundled": true,
           "dev": true,
           "requires": {
             "minimist": "0.0.8"
@@ -13318,15 +16883,13 @@
         },
         "ms": {
           "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "bundled": true,
           "dev": true,
           "optional": true
         },
         "needle": {
           "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.0.tgz",
-          "integrity": "sha512-eFagy6c+TYayorXw/qtAdSvaUpEbBsDwDyxYFgLZ0lTojfH7K+OdBqAF7TAFwDokJaGpubpSGG0wO3iC0XPi8w==",
+          "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
@@ -13337,8 +16900,7 @@
         },
         "node-pre-gyp": {
           "version": "0.10.0",
-          "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz",
-          "integrity": "sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ==",
+          "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
@@ -13356,8 +16918,7 @@
         },
         "nopt": {
           "version": "4.0.1",
-          "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
-          "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
+          "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
@@ -13367,15 +16928,13 @@
         },
         "npm-bundled": {
           "version": "1.0.3",
-          "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.3.tgz",
-          "integrity": "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow==",
+          "bundled": true,
           "dev": true,
           "optional": true
         },
         "npm-packlist": {
           "version": "1.1.10",
-          "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.1.10.tgz",
-          "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==",
+          "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
@@ -13385,8 +16944,7 @@
         },
         "npmlog": {
           "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
-          "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+          "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
@@ -13398,21 +16956,18 @@
         },
         "number-is-nan": {
           "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
-          "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+          "bundled": true,
           "dev": true
         },
         "object-assign": {
           "version": "4.1.1",
-          "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-          "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+          "bundled": true,
           "dev": true,
           "optional": true
         },
         "once": {
           "version": "1.4.0",
-          "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-          "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+          "bundled": true,
           "dev": true,
           "requires": {
             "wrappy": "1"
@@ -13420,22 +16975,19 @@
         },
         "os-homedir": {
           "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
-          "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+          "bundled": true,
           "dev": true,
           "optional": true
         },
         "os-tmpdir": {
           "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
-          "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+          "bundled": true,
           "dev": true,
           "optional": true
         },
         "osenv": {
           "version": "0.1.5",
-          "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
-          "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+          "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
@@ -13445,22 +16997,19 @@
         },
         "path-is-absolute": {
           "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-          "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+          "bundled": true,
           "dev": true,
           "optional": true
         },
         "process-nextick-args": {
           "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
-          "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
+          "bundled": true,
           "dev": true,
           "optional": true
         },
         "rc": {
           "version": "1.2.7",
-          "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz",
-          "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==",
+          "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
@@ -13472,8 +17021,7 @@
           "dependencies": {
             "minimist": {
               "version": "1.2.0",
-              "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-              "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+              "bundled": true,
               "dev": true,
               "optional": true
             }
@@ -13481,8 +17029,7 @@
         },
         "readable-stream": {
           "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
-          "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+          "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
@@ -13497,8 +17044,7 @@
         },
         "rimraf": {
           "version": "2.6.2",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
-          "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
+          "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
@@ -13507,49 +17053,42 @@
         },
         "safe-buffer": {
           "version": "5.1.1",
-          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
-          "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
+          "bundled": true,
           "dev": true
         },
         "safer-buffer": {
           "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
-          "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+          "bundled": true,
           "dev": true,
           "optional": true
         },
         "sax": {
           "version": "1.2.4",
-          "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
-          "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+          "bundled": true,
           "dev": true,
           "optional": true
         },
         "semver": {
           "version": "5.5.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
-          "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
+          "bundled": true,
           "dev": true,
           "optional": true
         },
         "set-blocking": {
           "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
-          "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+          "bundled": true,
           "dev": true,
           "optional": true
         },
         "signal-exit": {
           "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
-          "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+          "bundled": true,
           "dev": true,
           "optional": true
         },
         "string-width": {
           "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-          "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+          "bundled": true,
           "dev": true,
           "requires": {
             "code-point-at": "^1.0.0",
@@ -13559,8 +17098,7 @@
         },
         "string_decoder": {
           "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+          "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
@@ -13569,8 +17107,7 @@
         },
         "strip-ansi": {
           "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+          "bundled": true,
           "dev": true,
           "requires": {
             "ansi-regex": "^2.0.0"
@@ -13578,15 +17115,13 @@
         },
         "strip-json-comments": {
           "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
-          "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+          "bundled": true,
           "dev": true,
           "optional": true
         },
         "tar": {
           "version": "4.4.1",
-          "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.1.tgz",
-          "integrity": "sha512-O+v1r9yN4tOsvl90p5HAP4AEqbYhx4036AGMm075fH9F8Qwi3oJ+v4u50FkT/KkvywNGtwkk0zRI+8eYm1X/xg==",
+          "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
@@ -13601,15 +17136,13 @@
         },
         "util-deprecate": {
           "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-          "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+          "bundled": true,
           "dev": true,
           "optional": true
         },
         "wide-align": {
           "version": "1.1.2",
-          "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz",
-          "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==",
+          "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
@@ -13618,14 +17151,12 @@
         },
         "wrappy": {
           "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-          "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+          "bundled": true,
           "dev": true
         },
         "yallist": {
           "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz",
-          "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=",
+          "bundled": true,
           "dev": true
         }
       }
@@ -14499,9 +18030,9 @@
       "dev": true
     },
     "js-beautify": {
-      "version": "1.8.4",
-      "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.8.4.tgz",
-      "integrity": "sha512-mlWlABWrhXiTz0Snh1dAjIcll2kWJv4Fw+RP7dY0QhaN5ftH8PQsS4BJ1Uw+coVcVblzxLvC97MYpIgSM4TcyA==",
+      "version": "1.8.6",
+      "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.8.6.tgz",
+      "integrity": "sha512-TYDZa+lg8vEC5U0OmGQEEwiZ0XFBfvZAUeNOtqflLe+woKuIqF4JzlsBx/C1KVYW5lUewZy2ODL4Obq6sH7a4Q==",
       "dev": true,
       "requires": {
         "config-chain": "~1.1.5",
@@ -14651,9 +18182,9 @@
       }
     },
     "lodash": {
-      "version": "4.17.10",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
-      "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg=="
+      "version": "4.17.11",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
+      "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
     },
     "lodash.camelcase": {
       "version": "4.3.0",
@@ -15493,7 +19024,7 @@
     },
     "parse-asn1": {
       "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz",
+      "resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz",
       "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==",
       "dev": true,
       "requires": {
@@ -17553,7 +21084,7 @@
     },
     "public-encrypt": {
       "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz",
+      "resolved": "http://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz",
       "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==",
       "dev": true,
       "requires": {
@@ -17574,238 +21105,513 @@
         "once": "^1.3.1"
       }
     },
-    "pumpify": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
-      "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
+    "pumpify": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
+      "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
+      "dev": true,
+      "requires": {
+        "duplexify": "^3.6.0",
+        "inherits": "^2.0.3",
+        "pump": "^2.0.0"
+      }
+    },
+    "punycode": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+      "dev": true
+    },
+    "q": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
+      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+      "dev": true
+    },
+    "qs": {
+      "version": "6.5.1",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
+      "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
+      "dev": true
+    },
+    "query-string": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz",
+      "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==",
+      "requires": {
+        "decode-uri-component": "^0.2.0",
+        "object-assign": "^4.1.0",
+        "strict-uri-encode": "^1.0.0"
+      }
+    },
+    "querystring": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+      "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
+      "dev": true
+    },
+    "querystring-es3": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
+      "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
+      "dev": true
+    },
+    "randomatic": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz",
+      "integrity": "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==",
+      "dev": true,
+      "requires": {
+        "is-number": "^4.0.0",
+        "kind-of": "^6.0.0",
+        "math-random": "^1.0.1"
+      },
+      "dependencies": {
+        "is-number": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
+          "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
+          "dev": true
+        },
+        "kind-of": {
+          "version": "6.0.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+          "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+          "dev": true
+        }
+      }
+    },
+    "randombytes": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz",
+      "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "randomfill": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
+      "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+      "dev": true,
+      "requires": {
+        "randombytes": "^2.0.5",
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "range-parser": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
+      "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
+      "dev": true
+    },
+    "raw-body": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
+      "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
+      "dev": true,
+      "requires": {
+        "bytes": "3.0.0",
+        "http-errors": "1.6.2",
+        "iconv-lite": "0.4.19",
+        "unpipe": "1.0.0"
+      },
+      "dependencies": {
+        "depd": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
+          "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=",
+          "dev": true
+        },
+        "http-errors": {
+          "version": "1.6.2",
+          "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
+          "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
+          "dev": true,
+          "requires": {
+            "depd": "1.1.1",
+            "inherits": "2.0.3",
+            "setprototypeof": "1.0.3",
+            "statuses": ">= 1.3.1 < 2"
+          }
+        },
+        "iconv-lite": {
+          "version": "0.4.19",
+          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
+          "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
+          "dev": true
+        },
+        "setprototypeof": {
+          "version": "1.0.3",
+          "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
+          "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=",
+          "dev": true
+        }
+      }
+    },
+    "read-pkg": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+      "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+      "dev": true,
+      "requires": {
+        "load-json-file": "^1.0.0",
+        "normalize-package-data": "^2.3.2",
+        "path-type": "^1.0.0"
+      },
+      "dependencies": {
+        "path-type": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+          "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.2",
+            "pify": "^2.0.0",
+            "pinkie-promise": "^2.0.0"
+          }
+        },
+        "pify": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+          "dev": true
+        }
+      }
+    },
+    "read-pkg-up": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+      "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
       "dev": true,
       "requires": {
-        "duplexify": "^3.6.0",
-        "inherits": "^2.0.3",
-        "pump": "^2.0.0"
+        "find-up": "^1.0.0",
+        "read-pkg": "^1.0.0"
+      },
+      "dependencies": {
+        "find-up": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+          "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+          "dev": true,
+          "requires": {
+            "path-exists": "^2.0.0",
+            "pinkie-promise": "^2.0.0"
+          }
+        },
+        "path-exists": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+          "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+          "dev": true,
+          "requires": {
+            "pinkie-promise": "^2.0.0"
+          }
+        }
       }
     },
-    "punycode": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
-      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
-      "dev": true
-    },
-    "q": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
-      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
-      "dev": true
-    },
-    "qs": {
-      "version": "6.5.1",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
-      "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
-      "dev": true
-    },
-    "query-string": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz",
-      "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==",
+    "readable-stream": {
+      "version": "2.3.6",
+      "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+      "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
       "requires": {
-        "decode-uri-component": "^0.2.0",
-        "object-assign": "^4.1.0",
-        "strict-uri-encode": "^1.0.0"
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.1.1",
+        "util-deprecate": "~1.0.1"
       }
     },
-    "querystring": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
-      "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
-      "dev": true
-    },
-    "querystring-es3": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
-      "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
-      "dev": true
-    },
-    "randomatic": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz",
-      "integrity": "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==",
+    "readdirp": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
+      "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
       "dev": true,
       "requires": {
-        "is-number": "^4.0.0",
-        "kind-of": "^6.0.0",
-        "math-random": "^1.0.1"
+        "graceful-fs": "^4.1.11",
+        "micromatch": "^3.1.10",
+        "readable-stream": "^2.0.2"
       },
       "dependencies": {
-        "is-number": {
+        "arr-diff": {
           "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
-          "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
+          "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+          "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
           "dev": true
         },
-        "kind-of": {
-          "version": "6.0.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
-          "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
-          "dev": true
-        }
-      }
-    },
-    "randombytes": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz",
-      "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==",
-      "dev": true,
-      "requires": {
-        "safe-buffer": "^5.1.0"
-      }
-    },
-    "randomfill": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
-      "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
-      "dev": true,
-      "requires": {
-        "randombytes": "^2.0.5",
-        "safe-buffer": "^5.1.0"
-      }
-    },
-    "range-parser": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
-      "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
-      "dev": true
-    },
-    "raw-body": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
-      "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
-      "dev": true,
-      "requires": {
-        "bytes": "3.0.0",
-        "http-errors": "1.6.2",
-        "iconv-lite": "0.4.19",
-        "unpipe": "1.0.0"
-      },
-      "dependencies": {
-        "depd": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
-          "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=",
-          "dev": true
+        "array-unique": {
+          "version": "0.3.2",
+          "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+          "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+          "dev": true
+        },
+        "braces": {
+          "version": "2.3.2",
+          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+          "dev": true,
+          "requires": {
+            "arr-flatten": "^1.1.0",
+            "array-unique": "^0.3.2",
+            "extend-shallow": "^2.0.1",
+            "fill-range": "^4.0.0",
+            "isobject": "^3.0.1",
+            "repeat-element": "^1.1.2",
+            "snapdragon": "^0.8.1",
+            "snapdragon-node": "^2.0.1",
+            "split-string": "^3.0.2",
+            "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "dev": true,
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "expand-brackets": {
+          "version": "2.1.4",
+          "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+          "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+          "dev": true,
+          "requires": {
+            "debug": "^2.3.3",
+            "define-property": "^0.2.5",
+            "extend-shallow": "^2.0.1",
+            "posix-character-classes": "^0.1.0",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "define-property": {
+              "version": "0.2.5",
+              "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+              "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+              "dev": true,
+              "requires": {
+                "is-descriptor": "^0.1.0"
+              }
+            },
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "dev": true,
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            },
+            "is-accessor-descriptor": {
+              "version": "0.1.6",
+              "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+              "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+              "dev": true,
+              "requires": {
+                "kind-of": "^3.0.2"
+              },
+              "dependencies": {
+                "kind-of": {
+                  "version": "3.2.2",
+                  "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+                  "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+                  "dev": true,
+                  "requires": {
+                    "is-buffer": "^1.1.5"
+                  }
+                }
+              }
+            },
+            "is-data-descriptor": {
+              "version": "0.1.4",
+              "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+              "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+              "dev": true,
+              "requires": {
+                "kind-of": "^3.0.2"
+              },
+              "dependencies": {
+                "kind-of": {
+                  "version": "3.2.2",
+                  "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+                  "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+                  "dev": true,
+                  "requires": {
+                    "is-buffer": "^1.1.5"
+                  }
+                }
+              }
+            },
+            "is-descriptor": {
+              "version": "0.1.6",
+              "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+              "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+              "dev": true,
+              "requires": {
+                "is-accessor-descriptor": "^0.1.6",
+                "is-data-descriptor": "^0.1.4",
+                "kind-of": "^5.0.0"
+              }
+            },
+            "kind-of": {
+              "version": "5.1.0",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+              "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+              "dev": true
+            }
+          }
+        },
+        "extglob": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+          "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+          "dev": true,
+          "requires": {
+            "array-unique": "^0.3.2",
+            "define-property": "^1.0.0",
+            "expand-brackets": "^2.1.4",
+            "extend-shallow": "^2.0.1",
+            "fragment-cache": "^0.2.1",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "define-property": {
+              "version": "1.0.0",
+              "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+              "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+              "dev": true,
+              "requires": {
+                "is-descriptor": "^1.0.0"
+              }
+            },
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "dev": true,
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "fill-range": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+          "dev": true,
+          "requires": {
+            "extend-shallow": "^2.0.1",
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1",
+            "to-regex-range": "^2.1.0"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "dev": true,
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
         },
-        "http-errors": {
-          "version": "1.6.2",
-          "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
-          "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
           "dev": true,
           "requires": {
-            "depd": "1.1.1",
-            "inherits": "2.0.3",
-            "setprototypeof": "1.0.3",
-            "statuses": ">= 1.3.1 < 2"
+            "kind-of": "^6.0.0"
           }
         },
-        "iconv-lite": {
-          "version": "0.4.19",
-          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
-          "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
-          "dev": true
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
         },
-        "setprototypeof": {
-          "version": "1.0.3",
-          "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
-          "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=",
-          "dev": true
-        }
-      }
-    },
-    "read-pkg": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
-      "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
-      "dev": true,
-      "requires": {
-        "load-json-file": "^1.0.0",
-        "normalize-package-data": "^2.3.2",
-        "path-type": "^1.0.0"
-      },
-      "dependencies": {
-        "path-type": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
-          "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
           "dev": true,
           "requires": {
-            "graceful-fs": "^4.1.2",
-            "pify": "^2.0.0",
-            "pinkie-promise": "^2.0.0"
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
           }
         },
-        "pify": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
-          "dev": true
-        }
-      }
-    },
-    "read-pkg-up": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
-      "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
-      "dev": true,
-      "requires": {
-        "find-up": "^1.0.0",
-        "read-pkg": "^1.0.0"
-      },
-      "dependencies": {
-        "find-up": {
-          "version": "1.1.2",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
-          "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+        "is-number": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
           "dev": true,
           "requires": {
-            "path-exists": "^2.0.0",
-            "pinkie-promise": "^2.0.0"
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+              "dev": true,
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
           }
         },
-        "path-exists": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
-          "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+        "isobject": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+          "dev": true
+        },
+        "kind-of": {
+          "version": "6.0.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+          "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+          "dev": true
+        },
+        "micromatch": {
+          "version": "3.1.10",
+          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+          "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
           "dev": true,
           "requires": {
-            "pinkie-promise": "^2.0.0"
+            "arr-diff": "^4.0.0",
+            "array-unique": "^0.3.2",
+            "braces": "^2.3.1",
+            "define-property": "^2.0.2",
+            "extend-shallow": "^3.0.2",
+            "extglob": "^2.0.4",
+            "fragment-cache": "^0.2.1",
+            "kind-of": "^6.0.2",
+            "nanomatch": "^1.2.9",
+            "object.pick": "^1.3.0",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.2"
           }
         }
       }
     },
-    "readable-stream": {
-      "version": "2.3.6",
-      "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
-      "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
-      "requires": {
-        "core-util-is": "~1.0.0",
-        "inherits": "~2.0.3",
-        "isarray": "~1.0.0",
-        "process-nextick-args": "~2.0.0",
-        "safe-buffer": "~5.1.1",
-        "string_decoder": "~1.1.1",
-        "util-deprecate": "~1.0.1"
-      }
-    },
-    "readdirp": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz",
-      "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "^4.1.2",
-        "minimatch": "^3.0.2",
-        "readable-stream": "^2.0.2",
-        "set-immediate-shim": "^1.0.1"
-      }
-    },
     "rechoir": {
       "version": "0.6.2",
       "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
@@ -18177,12 +21983,6 @@
       "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
       "dev": true
     },
-    "set-immediate-shim": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
-      "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
-      "dev": true
-    },
     "set-value": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
@@ -18220,7 +22020,7 @@
     },
     "sha.js": {
       "version": "2.4.11",
-      "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
+      "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
       "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
       "dev": true,
       "requires": {
@@ -18702,7 +22502,7 @@
     },
     "through": {
       "version": "2.3.8",
-      "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+      "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz",
       "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
     },
     "through2": {
@@ -19419,9 +23219,9 @@
       }
     },
     "webpack-hot-middleware": {
-      "version": "2.23.1",
-      "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.23.1.tgz",
-      "integrity": "sha512-oUdCGDHONJrARtqxPSiON4db4dRWUsRiPwD7dYkglrTc3vF7LKa2jncwN0lIVkNwtoCh/yiHVTzz3Hbcux8ikA==",
+      "version": "2.24.0",
+      "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.24.0.tgz",
+      "integrity": "sha512-H6EMooeJMOEmEOx8OFllW3VRUdeA6CqQhdB1AlB+ReRFhISxypmDyt7YU0qEMCrPL06kYuXghnhDCi57wz6ORg==",
       "dev": true,
       "requires": {
         "ansi-html": "0.0.7",
diff --git a/django_airavata/apps/admin/static/django_airavata_admin/src/components/admin/group_resource_preferences/GroupComputeResourcePreference.vue b/django_airavata/apps/admin/static/django_airavata_admin/src/components/admin/group_resource_preferences/GroupComputeResourcePreference.vue
index 1cacce5..15d8a52 100644
--- a/django_airavata/apps/admin/static/django_airavata_admin/src/components/admin/group_resource_preferences/GroupComputeResourcePreference.vue
+++ b/django_airavata/apps/admin/static/django_airavata_admin/src/components/admin/group_resource_preferences/GroupComputeResourcePreference.vue
@@ -86,9 +86,9 @@ export default {
           .retrieve({ lookup: this.id })
           .then(grp => (this.data = grp));
       }
-      services.ServiceFactory.service("SharedEntities")
-        .retrieve({ lookup: this.id })
-        .then(sharedEntity => (this.sharedEntity = sharedEntity));
+      services.SharedEntityService.retrieve({ lookup: this.id }).then(
+        sharedEntity => (this.sharedEntity = sharedEntity)
+      );
     }
   },
   data: function() {
diff --git a/django_airavata/apps/admin/static/django_airavata_admin/src/components/applications/ApplicationDeploymentEditor.vue b/django_airavata/apps/admin/static/django_airavata_admin/src/components/applications/ApplicationDeploymentEditor.vue
index 7d27ebb..7091db8 100644
--- a/django_airavata/apps/admin/static/django_airavata_admin/src/components/applications/ApplicationDeploymentEditor.vue
+++ b/django_airavata/apps/admin/static/django_airavata_admin/src/components/applications/ApplicationDeploymentEditor.vue
@@ -5,6 +5,7 @@
         <h1 class="h4 mb-4">
           {{ name }}
         </h1>
+        <share-button v-model="localSharedEntity" @input="sharingChanged" />
         <b-form-group label="Application Executable Path" label-for="executable-path">
           <b-form-input id="executable-path" type="text" v-model="data.executablePath" required :disabled="readonly"></b-form-input>
         </b-form-group>
@@ -63,6 +64,7 @@ import { models, services } from "django-airavata-api";
 import vmodel_mixin from "../commons/vmodel_mixin";
 import CommandObjectsEditor from "./CommandObjectsEditor.vue";
 import SetEnvPathsEditor from "./SetEnvPathsEditor.vue";
+import { components } from "django-airavata-common-ui";
 
 export default {
   name: "application-deployment-editor",
@@ -78,15 +80,21 @@ export default {
     readonly: {
       type: Boolean,
       default: false
+    },
+    sharedEntity: {
+      type: models.SharedEntity,
+      required: true
     }
   },
   components: {
     CommandObjectsEditor,
-    SetEnvPathsEditor
+    SetEnvPathsEditor,
+    "share-button": components.ShareButton
   },
   data() {
     return {
-      computeResource: null
+      computeResource: null,
+      localSharedEntity: this.sharedEntity ? this.sharedEntity.clone() : null
     };
   },
   computed: {
@@ -165,6 +173,14 @@ export default {
       this.data.defaultNodeCount = queue.defaultNodeCount;
       this.data.defaultCPUCount = queue.defaultCPUCount;
       this.data.defaultWalltime = queue.defaultWalltime;
+    },
+    sharingChanged(newSharedEntity) {
+      this.$emit("sharing-changed", newSharedEntity);
+    }
+  },
+  watch: {
+    sharedEntity(newValue, oldValue) {
+      this.localSharedEntity = newValue.clone();
     }
   }
 };
diff --git a/django_airavata/apps/admin/static/django_airavata_admin/src/components/applications/ApplicationEditorContainer.vue b/django_airavata/apps/admin/static/django_airavata_admin/src/components/applications/ApplicationEditorContainer.vue
index 5c18f2c..a736641 100644
--- a/django_airavata/apps/admin/static/django_airavata_admin/src/components/applications/ApplicationEditorContainer.vue
+++ b/django_airavata/apps/admin/static/django_airavata_admin/src/components/applications/ApplicationEditorContainer.vue
@@ -20,7 +20,8 @@
           :readonly="!appInterface.userHasWriteAccess" />
         <router-view name="deployments" v-if="deployments" :deployments="deployments" @new="createNewDeployment" @delete="deleteDeployment"
         />
-        <router-view name="deployment" v-if="deployment" v-model="deployment" @save="saveDeployment" @cancel="cancelDeployment" />
+        <router-view name="deployment" v-if="deployment" v-model="deployment" :shared-entity="deploymentSharedEntity" @sharing-changed="deploymentSharingChanged"
+          @save="saveDeployment" @cancel="cancelDeployment" />
       </div>
     </div>
   </div>
@@ -28,7 +29,7 @@
 
 <script>
 import { mapActions, mapState } from "vuex";
-import { models } from "django-airavata-api";
+import { models, services } from "django-airavata-api";
 import { notifications } from "django-airavata-common-ui";
 
 export default {
@@ -42,7 +43,8 @@ export default {
     return {
       module: null,
       appInterface: null,
-      deployment: null
+      deployment: null,
+      deploymentSharedEntity: null
     };
   },
   computed: {
@@ -66,6 +68,9 @@ export default {
     this.initialize();
     if (this.deployment_id) {
       this.loadApplicationDeployment(this.deployment_id);
+      services.SharedEntityService.retrieve({
+        lookup: this.deployment_id
+      }).then(sharedEntity => (this.deploymentSharedEntity = sharedEntity));
     } else if (this.hostId) {
       this.createNewDeployment(this.hostId);
     }
@@ -149,18 +154,23 @@ export default {
       deployment.appModuleId = this.id;
       deployment.computeHostId = computeHostId;
       this.deployment = deployment;
+      this.deploymentSharedEntity = new models.SharedEntity();
       this.$router.push({
         name: "new_application_deployment",
         params: { id: this.id, hostId: computeHostId }
       });
     },
     saveDeployment() {
-      return this.saveAll().then(appDeployment => {
-        this.$router.push({
-          name: "application_deployments",
-          params: { id: this.id }
+      return this.saveAll()
+        .then(() => {
+          return this.loadApplicationDeployments(this.id);
+        })
+        .then(() => {
+          this.$router.push({
+            name: "application_deployments",
+            params: { id: this.id }
+          });
         });
-      });
     },
     saveAll() {
       const moduleSave = this.id
@@ -184,7 +194,14 @@ export default {
             if (this.deployment.appDeploymentId) {
               return this.updateApplicationDeployment(this.deployment);
             } else {
-              return this.createApplicationDeployment(this.deployment);
+              return this.createApplicationDeployment(this.deployment).then(
+                deployment => {
+                  return services.SharedEntityService.merge({
+                    data: this.deploymentSharedEntity,
+                    lookup: deployment.appDeploymentId
+                  });
+                }
+              );
             }
           } else {
             return Promise.resolve(null);
@@ -212,6 +229,9 @@ export default {
             params: { id: this.id }
           });
         });
+    },
+    deploymentSharingChanged(deploymentSharedEntity) {
+      this.deploymentSharedEntity = deploymentSharedEntity;
     }
   },
   watch: {
@@ -221,6 +241,9 @@ export default {
       }
       if (this.deployment_id) {
         this.loadApplicationDeployment(this.deployment_id);
+        services.SharedEntityService.retrieve({
+          lookup: this.deployment_id
+        }).then(sharedEntity => (this.deploymentSharedEntity = sharedEntity));
       }
     },
     currentModule: function(newModule) {
@@ -231,7 +254,7 @@ export default {
       this.appInterface = newInterface.clone();
     },
     currentDeployment: function(newDeployment) {
-      this.deployment = newDeployment.clone();
+      this.deployment = newDeployment ? newDeployment.clone() : null;
     }
   }
 };
diff --git a/django_airavata/apps/api/serializers.py b/django_airavata/apps/api/serializers.py
index 66d0026..90369ab 100644
--- a/django_airavata/apps/api/serializers.py
+++ b/django_airavata/apps/api/serializers.py
@@ -207,11 +207,9 @@ class GroupSerializer(serializers.Serializer):
         return group.members and username in group.members
 
     def get_isGatewayAdminsGroup(self, group):
-        request = self.context['request']
         return group.id == self._gateway_groups()['adminsGroupId']
 
     def get_isReadOnlyGatewayAdminsGroup(self, group):
-        request = self.context['request']
         return group.id == self._gateway_groups()['readOnlyAdminsGroupId']
 
     def get_isDefaultGatewayUsersGroup(self, group):
@@ -310,22 +308,28 @@ class ApplicationDeploymentDescriptionSerializer(
     userHasWriteAccess = serializers.SerializerMethodField()
     moduleLoadCmds = OrderedListField(
         order_by='commandOrder',
-        child=CommandObjectSerializer())
+        child=CommandObjectSerializer(),
+        allow_null=True)
     preJobCommands = OrderedListField(
         order_by='commandOrder',
-        child=CommandObjectSerializer())
+        child=CommandObjectSerializer(),
+        allow_null=True)
     postJobCommands = OrderedListField(
         order_by='commandOrder',
-        child=CommandObjectSerializer())
+        child=CommandObjectSerializer(),
+        allow_null=True)
     libPrependPaths = OrderedListField(
         order_by='envPathOrder',
-        child=SetEnvPathsSerializer())
+        child=SetEnvPathsSerializer(),
+        allow_null=True)
     libAppendPaths = OrderedListField(
         order_by='envPathOrder',
-        child=SetEnvPathsSerializer())
+        child=SetEnvPathsSerializer(),
+        allow_null=True)
     setEnvironment = OrderedListField(
         order_by='envPathOrder',
-        child=SetEnvPathsSerializer())
+        child=SetEnvPathsSerializer(),
+        allow_null=True)
 
     def get_userHasWriteAccess(self, appDeployment):
         request = self.context['request']
diff --git a/django_airavata/apps/api/static/django_airavata_api/js/index.js b/django_airavata/apps/api/static/django_airavata_api/js/index.js
index 037201d..700b4bd 100644
--- a/django_airavata/apps/api/static/django_airavata_api/js/index.js
+++ b/django_airavata/apps/api/static/django_airavata_api/js/index.js
@@ -86,24 +86,25 @@ exports.services = {
   ApplicationDeploymentService: ServiceFactory.service("ApplicationDeployments"),
   ApplicationInterfaceService: ServiceFactory.service("ApplicationInterfaces"),
   ApplicationModuleService: ServiceFactory.service("ApplicationModules"),
+  CloudJobSubmissionService,
+  ComputeResourceService: ServiceFactory.service("ComputeResources"),
   CredentialSummaryService: ServiceFactory.service("CredentialSummaries"),
-  ExperimentService,
   ExperimentSearchService,
+  ExperimentService,
   FullExperimentService,
-  ProjectService,
-  GroupService,
-  GroupResourceProfileService: ServiceFactory.service("GroupResourceProfiles"),
-  UserProfileService,
-  ComputeResourceService: ServiceFactory.service("ComputeResources"),
-  CloudJobSubmissionService,
   GlobusJobSubmissionService,
-  LocaJobSubmissionService,
-  SshJobSubmissionService,
-  UnicoreJobSubmissionService,
   GridFTPDataMovementService,
+  GroupResourceProfileService: ServiceFactory.service("GroupResourceProfiles"),
+  GroupService,
+  LocaJobSubmissionService,
+  ProjectService,
   SCPDataMovementService,
-  UnicoreDataMovementService,
   ServiceFactory,
+  SharedEntityService: ServiceFactory.service("SharedEntities"),
+  SshJobSubmissionService,
+  UnicoreDataMovementService,
+  UnicoreJobSubmissionService,
+  UserProfileService,
 }
 
 exports.utils = {
diff --git a/django_airavata/apps/api/static/django_airavata_api/js/models/SharedEntity.js b/django_airavata/apps/api/static/django_airavata_api/js/models/SharedEntity.js
index 9f3b618..bc556b0 100644
--- a/django_airavata/apps/api/static/django_airavata_api/js/models/SharedEntity.js
+++ b/django_airavata/apps/api/static/django_airavata_api/js/models/SharedEntity.js
@@ -5,56 +5,28 @@ import UserProfile from './UserProfile';
 
 
 const FIELDS = [
-    'entityId',
-    {
-        name: 'userPermissions',
-        type: UserPermission,
-        list: true,
-        default: BaseModel.defaultNewInstance(Array),
-    },
-    {
-        name: 'groupPermissions',
-        type: GroupPermission,
-        list: true,
-        default: BaseModel.defaultNewInstance(Array),
-    },
-    {
-        name: 'owner',
-        type: UserProfile,
-    },
-    'isOwner',
+  'entityId',
+  {
+    name: 'userPermissions',
+    type: UserPermission,
+    list: true,
+    default: BaseModel.defaultNewInstance(Array),
+  },
+  {
+    name: 'groupPermissions',
+    type: GroupPermission,
+    list: true,
+    default: BaseModel.defaultNewInstance(Array),
+  },
+  {
+    name: 'owner',
+    type: UserProfile,
+  },
+  'isOwner',
 ];
 
 export default class SharedEntity extends BaseModel {
-    constructor(data = {}) {
-        super(FIELDS, data);
-    }
-
-    /**
-     * Merge given sharedEntity with `this`, where the given sharedEntity takes
-     * precedence.
-     */
-    merge(sharedEntity) {
-        if (sharedEntity.entityId) {
-            this.entityId = sharedEntity.entityId;
-        }
-        if (sharedEntity.owner) {
-            this.owner = sharedEntity.owner;
-            this.isOwner = sharedEntity.isOwner;
-        }
-        // Allow userPermissions entries in sharedEntity to override this userPermissions
-        let newUserPermissions = [].concat(this.userPermissions, sharedEntity.userPermissions);
-        let newUserPermissionsMap = newUserPermissions.reduce((map, userPerm) => {
-            map[userPerm.user.airavataInternalUserId] = userPerm;
-            return map;
-        }, {});
-        this.userPermissions = Object.values(newUserPermissionsMap);
-        // Same deal for groupPermissions
-        let newGroupPermissions = [].concat(this.groupPermissions, sharedEntity.groupPermissions);
-        let newGroupPermissionsMap = newGroupPermissions.reduce((map, groupPerm) => {
-            map[groupPerm.group.id] = groupPerm;
-            return map;
-        }, {});
-        this.groupPermissions = Object.values(newGroupPermissionsMap);
-    }
+  constructor(data = {}) {
+    super(FIELDS, data);
+  }
 }
diff --git a/django_airavata/apps/api/static/django_airavata_api/js/service_config.js b/django_airavata/apps/api/static/django_airavata_api/js/service_config.js
index 4782678..6467fe7 100644
--- a/django_airavata/apps/api/static/django_airavata_api/js/service_config.js
+++ b/django_airavata/apps/api/static/django_airavata_api/js/service_config.js
@@ -134,7 +134,19 @@ export default {
   },
   "SharedEntities": {
     url: "/api/shared-entities",
-    viewSet: true,
+    viewSet: [{
+      name: "retrieve"
+    }, {
+      name: "update"
+    }, {
+      name: "merge",
+      url: "/api/shared-entities/<lookup>/merge/",
+      bodyParams: {
+        name: "data"
+      },
+      requestType: 'put',
+      modelClass: SharedEntity
+    }],
     modelClass: SharedEntity,
   },
   "UserProfiles": {
diff --git a/django_airavata/apps/api/views.py b/django_airavata/apps/api/views.py
index c258574..dd7df09 100644
--- a/django_airavata/apps/api/views.py
+++ b/django_airavata/apps/api/views.py
@@ -895,6 +895,31 @@ class SharedEntityViewSet(mixins.RetrieveModelMixin,
             self.authz_token, entity_id,
             {group_id: permission_type for group_id in group_ids})
 
+    @detail_route(methods=['put'])
+    def merge(self, request, entity_id=None):
+        # Validate updated sharing settings
+        updated = self.get_serializer(data=request.data)
+        updated.is_valid(raise_exception=True)
+        # Get the existing sharing settings and merge in the updated settings
+        existing_instance = self.get_object()
+        existing = self.get_serializer(instance=existing_instance)
+        merged_data = existing.data
+        merged_data['userPermissions'] = existing.data['userPermissions'] + \
+            updated.initial_data['userPermissions']
+        merged_data['groupPermissions'] = existing.data['groupPermissions'] + \
+            updated.initial_data['groupPermissions']
+        # Create a merged_serializer from the existing sharing settings and the
+        # merged settings. This will calculate all permissions that need to be
+        # granted and revoked to go from the exisitng settings to the merged
+        # settings.
+        merged_serializer = self.get_serializer(existing_instance, data=merged_data)
+        merged_serializer.is_valid(raise_exception=True)
+        self.perform_update(merged_serializer)
+        return Response(merged_serializer.data)
+
+
+
+
 
 class CredentialSummaryViewSet(mixins.ListModelMixin,
                                GenericAPIBackedViewSet):
diff --git a/django_airavata/static/common/js/components/ShareButton.vue b/django_airavata/static/common/js/components/ShareButton.vue
index 02edb02..0cbdf4b 100644
--- a/django_airavata/static/common/js/components/ShareButton.vue
+++ b/django_airavata/static/common/js/components/ShareButton.vue
@@ -1,286 +1,339 @@
 <template>
-    <div id="share-button">
-        <b-button v-b-modal.modal-share-settings :variant="'outline-primary'" :title="title" :disabled="!shareButtonEnabled">
-            Share
-            <b-badge>{{ totalCount }}</b-badge>
-        </b-button>
-        <b-modal id="modal-share-settings" title="Sharing Settings"
-                ref="modalSharingSettings"
-                ok-title="Save" @ok="saveSharedEntity" @cancel="cancelEditSharedEntity"
-                no-close-on-esc no-close-on-backdrop hide-header-close
-                :ok-disabled="loading" :cancel-disabled="loading"
-                @show="showSharingSettingsModal">
-            <b-alert variant="danger" :show="!!errorMessage">{{errorMessage}}</b-alert>
-            <b-form-group label="Search for users/groups" labelFor="user-groups-autocomplete">
-                <autocomplete-text-input id="user-groups-autocomplete"
-                    :suggestions="usersAndGroupsSuggestions"
-                    @selected="suggestionSelected">
-                    <template slot="suggestion" slot-scope="slotProps">
-                        <span v-if="slotProps.suggestion.type == 'group'">
-                            <i class="fa fa-users"></i> {{ slotProps.suggestion.name }}
-                        </span>
-                        <span v-if="slotProps.suggestion.type == 'user'">
-                            <i class="fa fa-user"></i>
-                            {{ slotProps.suggestion.user.firstName }} {{ slotProps.suggestion.user.lastName }}
-                            ({{ slotProps.suggestion.user.userId }}) - {{ slotProps.suggestion.user.email }}
-                        </span>
-                    </template>
-                </autocomplete-text-input>
-            </b-form-group>
-            <h5 v-if="totalCount > 0">Currently Shared With</h5>
-            <b-table v-if="usersCount > 0" id="modal-user-table" hover :items="sharedEntity.userPermissions" :fields="userFields">
-                <template slot="name" slot-scope="data">
-                    <span :title="data.item.user.userId">{{data.item.user.firstName}} {{data.item.user.lastName}}</span>
-                </template>
-                <template slot="email" slot-scope="data">
-                    {{data.item.user.email}}
-                </template>
-                <template slot="permission" slot-scope="data">
-                    <b-form-select v-model="data.item.permissionType" :options="permissionOptions"/>
-                </template>
-                <template slot="remove" slot-scope="data">
-                    <a href="#" @click.prevent="removeUser(data.item.user)"><span class="fa fa-trash"></span></a>
-                </template>
-            </b-table>
-            <b-table v-if="groupsCount > 0" id="modal-group-table" hover :items="filteredGroupPermissions" :fields="groupFields">
-                <template slot="name" slot-scope="data">
-                    {{data.item.group.name}}
-                </template>
-                <template slot="permission" slot-scope="data">
-                    <b-form-select v-model="data.item.permissionType" :options="permissionOptions"/>
-                </template>
-                <template slot="remove" slot-scope="data">
-                    <a href="#" @click.prevent="removeGroup(data.item.group)"><span class="fa fa-trash"></span></a>
-                </template>
-            </b-table>
-        </b-modal>
-    </div>
+  <div id="share-button">
+    <b-button v-b-modal.modal-share-settings :variant="'outline-primary'" :title="title" :disabled="!shareButtonEnabled">
+      Share
+      <b-badge>{{ totalCount }}</b-badge>
+    </b-button>
+    <b-modal id="modal-share-settings" title="Sharing Settings" ref="modalSharingSettings" ok-title="Save" @ok="saveSharedEntity"
+      @cancel="cancelEditSharedEntity" no-close-on-esc no-close-on-backdrop hide-header-close :ok-disabled="loading" :cancel-disabled="loading"
+      @show="showSharingSettingsModal">
+      <b-alert variant="danger" :show="!!errorMessage">{{errorMessage}}</b-alert>
+      <b-form-group label="Search for users/groups" labelFor="user-groups-autocomplete">
+        <autocomplete-text-input id="user-groups-autocomplete" :suggestions="usersAndGroupsSuggestions" @selected="suggestionSelected">
+          <template slot="suggestion" slot-scope="slotProps">
+            <span v-if="slotProps.suggestion.type == 'group'">
+              <i class="fa fa-users"></i> {{ slotProps.suggestion.name }}
+            </span>
+            <span v-if="slotProps.suggestion.type == 'user'">
+              <i class="fa fa-user"></i>
+              {{ slotProps.suggestion.user.firstName }} {{ slotProps.suggestion.user.lastName }} ({{ slotProps.suggestion.user.userId }})
+              - {{ slotProps.suggestion.user.email }}
+            </span>
+          </template>
+        </autocomplete-text-input>
+      </b-form-group>
+      <h5 v-if="totalCount > 0">Currently Shared With</h5>
+      <b-table v-if="usersCount > 0" id="modal-user-table" hover :items="sharedEntity.userPermissions" :fields="userFields">
+        <template slot="name" slot-scope="data">
+          <span :title="data.item.user.userId">{{data.item.user.firstName}} {{data.item.user.lastName}}</span>
+        </template>
+        <template slot="email" slot-scope="data">
+          {{data.item.user.email}}
+        </template>
+        <template slot="permission" slot-scope="data">
+          <b-form-select v-model="data.item.permissionType" :options="permissionOptions" />
+        </template>
+        <template slot="remove" slot-scope="data">
+          <a href="#" @click.prevent="removeUser(data.item.user)">
+            <span class="fa fa-trash"></span>
+          </a>
+        </template>
+      </b-table>
+      <b-table v-if="groupsCount > 0" id="modal-group-table" hover :items="filteredGroupPermissions" :fields="groupFields">
+        <template slot="name" slot-scope="data">
+          {{data.item.group.name}}
+        </template>
+        <template slot="permission" slot-scope="data">
+          <b-form-select v-model="data.item.permissionType" :options="permissionOptions" />
+        </template>
+        <template slot="remove" slot-scope="data">
+          <a href="#" @click.prevent="removeGroup(data.item.group)">
+            <span class="fa fa-trash"></span>
+          </a>
+        </template>
+      </b-table>
+    </b-modal>
+  </div>
 </template>
 
 <script>
-import { models, services } from 'django-airavata-api';
-import AutocompleteTextInput from './AutocompleteTextInput.vue';
+import { models, services } from "django-airavata-api";
+import AutocompleteTextInput from "./AutocompleteTextInput.vue";
 
 export default {
-    name: "share-button",
-    props: {
-        value: models.SharedEntity,
-        autoAddDefaultGatewayUsersGroup: {
-            type: Boolean,
-            default: true,
-        },
+  name: "share-button",
+  props: {
+    value: models.SharedEntity,
+    autoAddDefaultGatewayUsersGroup: {
+      type: Boolean,
+      default: true
+    }
+  },
+  components: {
+    AutocompleteTextInput
+  },
+  data: function() {
+    return {
+      sharedEntity: this.cloneSharedEntity(this.value),
+      userFields: [
+        { key: "name", label: "User Name" },
+        { key: "email", label: "Email" },
+        { key: "permission", label: "Permission" },
+        { key: "remove", label: "Remove" }
+      ],
+      groupFields: [
+        { key: "name", label: "Group Name" },
+        { key: "permission", label: "Permission" },
+        { key: "remove", label: "Remove" }
+      ],
+      users: [],
+      groups: [],
+      errorMessage: null,
+      loading: false,
+      sharedEntityCopy: null
+    };
+  },
+  computed: {
+    title: function() {
+      return (
+        "Shared with " +
+        this.groupsCount +
+        " groups" +
+        (this.groupsCount > 0 ? " (" + this.groupNames.join(", ") + ")" : "") +
+        " and " +
+        this.usersCount +
+        " users" +
+        (this.usersCount > 0 ? " (" + this.userNames.join(", ") + ")" : "")
+      );
+    },
+    usersCount: function() {
+      return this.sharedEntity && this.sharedEntity.userPermissions
+        ? this.sharedEntity.userPermissions.length
+        : 0;
+    },
+    userNames: function() {
+      return this.sharedEntity && this.sharedEntity.userPermissions
+        ? this.sharedEntity.userPermissions.map(
+            userPerm => userPerm.user.firstName + " " + userPerm.user.lastName
+          )
+        : null;
+    },
+    filteredGroupPermissions: function() {
+      return this.sharedEntity && this.sharedEntity.groupPermissions
+        ? this.sharedEntity.groupPermissions.filter(
+            grp =>
+              !grp.group.isGatewayAdminsGroup &&
+              !grp.group.isReadOnlyGatewayAdminsGroup
+          )
+        : [];
+    },
+    groupNames: function() {
+      return this.filteredGroupPermissions.map(
+        groupPerm => groupPerm.group.name
+      );
     },
-    components: {
-        AutocompleteTextInput,
+    groupsCount: function() {
+      return this.filteredGroupPermissions.length;
     },
-    data: function() {
+    totalCount: function() {
+      return this.usersCount + this.groupsCount;
+    },
+    permissionOptions: function() {
+      return [
+        models.ResourcePermissionType.READ,
+        models.ResourcePermissionType.WRITE
+      ].map(perm => {
         return {
-            sharedEntity: this.cloneSharedEntity(this.value),
-            userFields: [
-                {key: 'name', label: 'User Name'},
-                {key: 'email', label: 'Email'},
-                {key: 'permission', label: 'Permission'},
-                {key: 'remove', label: 'Remove'},
-            ],
-            groupFields: [
-                {key: 'name', label: 'Group Name'},
-                {key: 'permission', label: 'Permission'},
-                {key: 'remove', label: 'Remove'},
-            ],
-            users: [],
-            groups: [],
-            errorMessage: null,
-            loading: false,
-            sharedEntityCopy: null,
-        }
+          value: perm,
+          text: perm.name
+        };
+      });
+    },
+    groupSuggestions: function() {
+      // filter out already selected groups
+      const currentGroupIds = this.filteredGroupPermissions.map(
+        groupPerm => groupPerm.group.id
+      );
+      return this.groups
+        .filter(
+          group =>
+            currentGroupIds.indexOf(group.id) < 0 &&
+            !group.isGatewayAdminsGroup &&
+            !group.isReadOnlyGatewayAdminsGroup
+        )
+        .map(group => {
+          return {
+            id: group.id,
+            name: group.name,
+            type: "group"
+          };
+        });
     },
-    computed: {
-        title: function() {
-            return "Shared with " + this.groupsCount + " groups"
-                + (this.groupsCount > 0 ? " (" + this.groupNames.join(", ") + ")" : "")
-                + " and " + this.usersCount + " users"
-                + (this.usersCount > 0 ? " (" + this.userNames.join(", ") + ")" : "");
-        },
-        usersCount: function() {
-            return this.sharedEntity && this.sharedEntity.userPermissions ? this.sharedEntity.userPermissions.length : 0;
-        },
-        userNames: function() {
-            return this.sharedEntity && this.sharedEntity.userPermissions
-                ? this.sharedEntity.userPermissions.map(userPerm => userPerm.user.firstName + " " + userPerm.user.lastName)
-                : null;
-        },
-        filteredGroupPermissions: function() {
-            return this.sharedEntity && this.sharedEntity.groupPermissions
-                ? this.sharedEntity.groupPermissions.filter(grp => !grp.group.isGatewayAdminsGroup && !grp.group.isReadOnlyGatewayAdminsGroup)
-                : [];
-        },
-        groupNames: function() {
-            return this.filteredGroupPermissions.map(groupPerm => groupPerm.group.name);
-        },
-        groupsCount: function() {
-            return this.filteredGroupPermissions.length;
-        },
-        totalCount: function() {
-            return this.usersCount + this.groupsCount;
-        },
-        permissionOptions: function() {
-            return [models.ResourcePermissionType.READ,
-                    models.ResourcePermissionType.WRITE].map(perm => {
-                return {
-                    value: perm,
-                    text: perm.name,
-                }
-            })
-        },
-        groupSuggestions: function() {
-            // filter out already selected groups
-            const currentGroupIds = this.filteredGroupPermissions.map(groupPerm => groupPerm.group.id);
-            return this.groups
-                .filter(group => currentGroupIds.indexOf(group.id) < 0
-                    && !group.isGatewayAdminsGroup
-                    && !group.isReadOnlyGatewayAdminsGroup)
-                .map(group => {
-                    return {
-                        id: group.id,
-                        name: group.name,
-                        type: 'group',
-                    }
-                });
-        },
-        userSuggestions: function() {
-            // filter out already selected users
-            const currentUserIds = this.sharedEntity.userPermissions ? this.sharedEntity.userPermissions.map(userPerm => userPerm.user.airavataInternalUserId) : [];
-            return this.users
-                .filter(user => currentUserIds.indexOf(user.airavataInternalUserId) < 0)
-                .map(user => {
-                    return {
-                        id: user.airavataInternalUserId,
-                        name: user.firstName + ' ' + user.lastName + ' (' + user.userId + ') ' + user.email,
-                        user: user,
-                        type: 'user',
-                    }
-                });
-        },
-        usersAndGroupsSuggestions: function() {
-            return this.userSuggestions.concat(this.groupSuggestions);
-        },
-        shareButtonEnabled: function() {
-            // Enable share button if new entity or user is the entity's owner
-            return (!this.sharedEntity.entityId || this.sharedEntity.isOwner);
-        },
+    userSuggestions: function() {
+      // filter out already selected users
+      const currentUserIds = this.sharedEntity.userPermissions
+        ? this.sharedEntity.userPermissions.map(
+            userPerm => userPerm.user.airavataInternalUserId
+          )
+        : [];
+      return this.users
+        .filter(user => currentUserIds.indexOf(user.airavataInternalUserId) < 0)
+        .map(user => {
+          return {
+            id: user.airavataInternalUserId,
+            name:
+              user.firstName +
+              " " +
+              user.lastName +
+              " (" +
+              user.userId +
+              ") " +
+              user.email,
+            user: user,
+            type: "user"
+          };
+        });
     },
-    methods: {
-        /**
-         * Merge the persisted SharedEntity with the local SharedEntity
-         * instance and save it, returning a Promise.
-         */
-        mergeAndSave: function(entityId) {
-            return services.ServiceFactory.service("SharedEntities").retrieve({lookup: entityId})
-                .then(persistedSharedEntity => {
-                    // Copy the local sharedEntity instance onto the
-                    // persistedSharedEntity and update it
-                    persistedSharedEntity.merge(this.sharedEntity);
-                    return services.ServiceFactory.service("SharedEntities")
-                        .update({'data': persistedSharedEntity, 'lookup': persistedSharedEntity.entityId})
-                        .then(sharedEntity => this.sharedEntity = sharedEntity);
-                });
-        },
-        removeUser: function(user) {
-            this.sharedEntity.userPermissions = this.sharedEntity.userPermissions.filter(
-                userPermission => userPermission.user.airavataInternalUserId !== user.airavataInternalUserId);
-        },
-        removeGroup: function(group) {
-            this.sharedEntity.groupPermissions = this.sharedEntity.groupPermissions.filter(
-                groupPermission => groupPermission.group.id !== group.id);
-        },
-        suggestionSelected: function(suggestion) {
-            if (suggestion.type === 'group') {
-                const group = this.groups.find(group => group.id === suggestion.id);
-                this.addGroup(group);
-            } else if (suggestion.type === 'user') {
-                const user = this.users.find(user => user.airavataInternalUserId === suggestion.id);
-                if (!this.sharedEntity.userPermissions) {
-                    this.sharedEntity.userPermissions = [];
-                }
-                this.sharedEntity.userPermissions.push(new models.UserPermission({
-                    'user': user,
-                    'permissionType': models.ResourcePermissionType.READ
-                }));
-            }
-        },
-        addGroup: function(group) {
-            if (!this.sharedEntity.groupPermissions) {
-                this.sharedEntity.groupPermissions = [];
-            }
-            this.sharedEntity.groupPermissions.push(new models.GroupPermission({
-                'group': group,
-                'permissionType': models.ResourcePermissionType.READ
-            }));
-        },
-        saveSharedEntity: function(event) {
-            // If entity hasn't been persisted yet then just emitValueChanged.
-            // Sharing settings will need to be saved later (see mergeAndSave).
-            if (!this.sharedEntity.entityId) {
-                this.emitValueChanged();
-                return;
-            }
-            // Prevent hiding the modal, hide it programmatically
-            this.errorMessage = null;
-            this.loading = true;
-            event.preventDefault();
-            services.ServiceFactory.service("SharedEntities")
-                .update({'data': this.sharedEntity, 'lookup': this.sharedEntity.entityId})
-                .then(sharedEntity => {
-                    this.emitValueChanged();
-                    this.$refs.modalSharingSettings.hide();
-                })
-                .catch(error => {
-                    console.log("Error occurred while saving:", error);
-                    this.errorMessage = "Error occurred while saving: " + JSON.stringify(error);
-                })
-                .then(() => this.loading = false, () => this.loading = false);
-        },
-        cancelEditSharedEntity: function(event) {
-            this.errorMessage = null;
-            this.sharedEntity = this.sharedEntityCopy;
-        },
-        emitValueChanged: function() {
-            this.$emit('input', this.sharedEntity);
-        },
-        cloneSharedEntity: function(sharedEntity) {
-            return sharedEntity ? sharedEntity.clone() : new models.SharedEntity();
-        },
-        showSharingSettingsModal: function(event) {
-            this.sharedEntityCopy = this.cloneSharedEntity(this.sharedEntity);
+    usersAndGroupsSuggestions: function() {
+      return this.userSuggestions.concat(this.groupSuggestions);
+    },
+    shareButtonEnabled: function() {
+      // Enable share button if new entity or user is the entity's owner
+      return !this.sharedEntity.entityId || this.sharedEntity.isOwner;
+    }
+  },
+  methods: {
+    /**
+     * Merge the persisted SharedEntity with the local SharedEntity
+     * instance and save it, returning a Promise.
+     */
+    mergeAndSave: function(entityId) {
+      return services.SharedEntityService.merge({
+        lookup: entityId,
+        data: this.sharedEntity
+      }).then(sharedEntity => (this.sharedEntity = sharedEntity));
+    },
+    removeUser: function(user) {
+      this.sharedEntity.userPermissions = this.sharedEntity.userPermissions.filter(
+        userPermission =>
+          userPermission.user.airavataInternalUserId !==
+          user.airavataInternalUserId
+      );
+    },
+    removeGroup: function(group) {
+      this.sharedEntity.groupPermissions = this.sharedEntity.groupPermissions.filter(
+        groupPermission => groupPermission.group.id !== group.id
+      );
+    },
+    suggestionSelected: function(suggestion) {
+      if (suggestion.type === "group") {
+        const group = this.groups.find(group => group.id === suggestion.id);
+        this.addGroup(group);
+      } else if (suggestion.type === "user") {
+        const user = this.users.find(
+          user => user.airavataInternalUserId === suggestion.id
+        );
+        if (!this.sharedEntity.userPermissions) {
+          this.sharedEntity.userPermissions = [];
         }
+        this.sharedEntity.userPermissions.push(
+          new models.UserPermission({
+            user: user,
+            permissionType: models.ResourcePermissionType.READ
+          })
+        );
+      }
+    },
+    addGroup: function(group) {
+      if (!this.sharedEntity.groupPermissions) {
+        this.sharedEntity.groupPermissions = [];
+      }
+      this.sharedEntity.groupPermissions.push(
+        new models.GroupPermission({
+          group: group,
+          permissionType: models.ResourcePermissionType.READ
+        })
+      );
+    },
+    saveSharedEntity: function(event) {
+      // If entity hasn't been persisted yet then just emitValueChanged.
+      // Sharing settings will need to be saved later (see mergeAndSave).
+      if (!this.sharedEntity.entityId) {
+        this.emitValueChanged();
+        return;
+      }
+      // Prevent hiding the modal, hide it programmatically
+      this.errorMessage = null;
+      this.loading = true;
+      event.preventDefault();
+      services.SharedEntityService.update({
+        data: this.sharedEntity,
+        lookup: this.sharedEntity.entityId
+      })
+        .then(sharedEntity => {
+          this.emitValueChanged();
+          this.$refs.modalSharingSettings.hide();
+        })
+        .catch(error => {
+          console.log("Error occurred while saving:", error);
+          this.errorMessage =
+            "Error occurred while saving: " + JSON.stringify(error);
+        })
+        .then(() => (this.loading = false), () => (this.loading = false));
     },
-    mounted: function() {
-        // Load all of the groups and users
-        services.ServiceFactory.service("Groups").list({limit: -1})
-            .then(groups => {
-                this.groups = groups;
-                // If a new sharedEntity, automatically add the defaultGatewayUsersGroup
-                if (!this.sharedEntity.entityId && this.autoAddDefaultGatewayUsersGroup) {
-                    this.groups.filter(group => group.isDefaultGatewayUsersGroup).forEach(this.addGroup);
-                }
-            });
-        services.ServiceFactory.service("UserProfiles").list().then(users => this.users = users);
+    cancelEditSharedEntity: function(event) {
+      this.errorMessage = null;
+      this.sharedEntity = this.sharedEntityCopy;
     },
-    watch: {
-        value: function(newValue) {
-            this.sharedEntity = this.cloneSharedEntity(newValue);
+    emitValueChanged: function() {
+      this.$emit("input", this.sharedEntity);
+    },
+    cloneSharedEntity: function(sharedEntity) {
+      return sharedEntity ? sharedEntity.clone() : new models.SharedEntity();
+    },
+    showSharingSettingsModal: function(event) {
+      this.sharedEntityCopy = this.cloneSharedEntity(this.sharedEntity);
+    }
+  },
+  mounted: function() {
+    // Load all of the groups and users
+    services.ServiceFactory.service("Groups")
+      .list({ limit: -1 })
+      .then(groups => {
+        this.groups = groups;
+        // If a new sharedEntity, automatically add the defaultGatewayUsersGroup
+        if (
+          !this.sharedEntity.entityId &&
+          this.autoAddDefaultGatewayUsersGroup
+        ) {
+          this.groups
+            .filter(group => group.isDefaultGatewayUsersGroup)
+            .forEach(this.addGroup);
+          // Since this is a new sharedEntity and we're implicitly modifying it,
+          // need to emitValueChanged so parent component sees the added
+          // defaultGatewayUsersGroup
+          this.emitValueChanged();
         }
+      });
+    services.ServiceFactory.service("UserProfiles")
+      .list()
+      .then(users => (this.users = users));
+  },
+  watch: {
+    value: function(newValue) {
+      this.sharedEntity = this.cloneSharedEntity(newValue);
     }
-}
+  }
+};
 </script>
 
 <style scoped>
 button {
-    background-color: white;
+  background-color: white;
 }
 #share-button >>> #modal-share-settings .modal-body {
-    max-height: 50vh;
-    min-height: 300px;
-    overflow: auto;
+  max-height: 50vh;
+  min-height: 300px;
+  overflow: auto;
 }
-</style>
\ No newline at end of file
+</style>
diff --git a/django_airavata/templates/base.html b/django_airavata/templates/base.html
index 28a46a4..b600ae1 100644
--- a/django_airavata/templates/base.html
+++ b/django_airavata/templates/base.html
@@ -1,214 +1,229 @@
 {% load navigation_tags static %}
 <!DOCTYPE html>
+
 <head>
-    <link rel=stylesheet type=text/css href="{% static 'bootstrap-4.0.0-beta/css/bootstrap.min.css' %}">
-    <link rel=stylesheet type=text/css
-          href=https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css>
+  <link rel=stylesheet type=text/css href="{% static 'bootstrap-4.0.0-beta/css/bootstrap.min.css' %}">
+  <link rel=stylesheet type=text/css href=https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css>
     <link rel=stylesheet type=text/css href="{% static 'common/dist/main.css' %}">
-    {% block css %}
+  {% block css %}
 
-    {% endblock %}
+  {% endblock %}
 </head>
 <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js'></script>
 <script src='https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js'></script>
 <script src='https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js'></script>
 <script>
-    $(function () {
-        $('[data-toggle="tooltip"]').tooltip()
-    });
+  $(function () {
+    $('[data-toggle="tooltip"]').tooltip()
+  });
 </script>
 <style>
-    #airavata-spinner {
-        display: none;
-    }
+  #airavata-spinner {
+    display: none;
+  }
 
-    .loading {
-        position: absolute;
-        z-index: 999;
-        top: 0;
-        bottom: 0;
-        left: 0;
-        right: 0;
-        background-color: rgba(255, 255, 255, 0.5);
-    }
+  .loading {
+    position: absolute;
+    z-index: 2000;
+    top: 0;
+    bottom: 0;
+    left: 0;
+    right: 0;
+    background-color: rgba(255, 255, 255, 0.5);
+  }
 
-    /* Spinner css https://github.com/tobiasahlin/SpinKit*/
-    .sk-folding-cube {
-        margin: 20px auto;
-        width: 40px;
-        height: 40px;
-        position: relative;
-        -webkit-transform: rotateZ(45deg);
-        transform: rotateZ(45deg);
-        top: calc(50% - 40px);
-    }
+  /* Spinner css https://github.com/tobiasahlin/SpinKit*/
+  .sk-folding-cube {
+    margin: 20px auto;
+    width: 40px;
+    height: 40px;
+    position: relative;
+    -webkit-transform: rotateZ(45deg);
+    transform: rotateZ(45deg);
+    top: calc(50% - 40px);
+  }
 
-    .sk-folding-cube .sk-cube {
-        float: left;
-        width: 50%;
-        height: 50%;
-        position: relative;
-        -webkit-transform: scale(1.1);
-        -ms-transform: scale(1.1);
-        transform: scale(1.1);
-        color: #007BFF;
-    }
+  .sk-folding-cube .sk-cube {
+    float: left;
+    width: 50%;
+    height: 50%;
+    position: relative;
+    -webkit-transform: scale(1.1);
+    -ms-transform: scale(1.1);
+    transform: scale(1.1);
+    color: #007BFF;
+  }
 
-    .sk-folding-cube .sk-cube:before {
-        content: '';
-        position: absolute;
-        top: 0;
-        left: 0;
-        width: 100%;
-        height: 100%;
-        background-color: currentColor;
-        -webkit-animation: sk-foldCubeAngle 2.4s infinite linear both;
-        animation: sk-foldCubeAngle 2.4s infinite linear both;
-        -webkit-transform-origin: 100% 100%;
-        -ms-transform-origin: 100% 100%;
-        transform-origin: 100% 100%;
-    }
+  .sk-folding-cube .sk-cube:before {
+    content: '';
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    background-color: currentColor;
+    -webkit-animation: sk-foldCubeAngle 2.4s infinite linear both;
+    animation: sk-foldCubeAngle 2.4s infinite linear both;
+    -webkit-transform-origin: 100% 100%;
+    -ms-transform-origin: 100% 100%;
+    transform-origin: 100% 100%;
+  }
 
-    .sk-folding-cube .sk-cube2 {
-        -webkit-transform: scale(1.1) rotateZ(90deg);
-        transform: scale(1.1) rotateZ(90deg);
-    }
+  .sk-folding-cube .sk-cube2 {
+    -webkit-transform: scale(1.1) rotateZ(90deg);
+    transform: scale(1.1) rotateZ(90deg);
+  }
 
-    .sk-folding-cube .sk-cube3 {
-        -webkit-transform: scale(1.1) rotateZ(180deg);
-        transform: scale(1.1) rotateZ(180deg);
-    }
+  .sk-folding-cube .sk-cube3 {
+    -webkit-transform: scale(1.1) rotateZ(180deg);
+    transform: scale(1.1) rotateZ(180deg);
+  }
+
+  .sk-folding-cube .sk-cube4 {
+    -webkit-transform: scale(1.1) rotateZ(270deg);
+    transform: scale(1.1) rotateZ(270deg);
+  }
 
-    .sk-folding-cube .sk-cube4 {
-        -webkit-transform: scale(1.1) rotateZ(270deg);
-        transform: scale(1.1) rotateZ(270deg);
+  .sk-folding-cube .sk-cube2:before {
+    -webkit-animation-delay: 0.3s;
+    animation-delay: 0.3s;
+  }
+
+  .sk-folding-cube .sk-cube3:before {
+    -webkit-animation-delay: 0.6s;
+    animation-delay: 0.6s;
+  }
+
+  .sk-folding-cube .sk-cube4:before {
+    -webkit-animation-delay: 0.9s;
+    animation-delay: 0.9s;
+  }
+
+  @-webkit-keyframes sk-foldCubeAngle {
+
+    0%,
+    10% {
+      -webkit-transform: perspective(140px) rotateX(-180deg);
+      transform: perspective(140px) rotateX(-180deg);
+      opacity: 0;
     }
 
-    .sk-folding-cube .sk-cube2:before {
-        -webkit-animation-delay: 0.3s;
-        animation-delay: 0.3s;
+    25%,
+    75% {
+      -webkit-transform: perspective(140px) rotateX(0deg);
+      transform: perspective(140px) rotateX(0deg);
+      opacity: 1;
     }
 
-    .sk-folding-cube .sk-cube3:before {
-        -webkit-animation-delay: 0.6s;
-        animation-delay: 0.6s;
+    90%,
+    100% {
+      -webkit-transform: perspective(140px) rotateY(180deg);
+      transform: perspective(140px) rotateY(180deg);
+      opacity: 0;
     }
+  }
+
+  @keyframes sk-foldCubeAngle {
 
-    .sk-folding-cube .sk-cube4:before {
-        -webkit-animation-delay: 0.9s;
-        animation-delay: 0.9s;
+    0%,
+    10% {
+      -webkit-transform: perspective(140px) rotateX(-180deg);
+      transform: perspective(140px) rotateX(-180deg);
+      opacity: 0;
     }
 
-    @-webkit-keyframes sk-foldCubeAngle {
-        0%, 10% {
-            -webkit-transform: perspective(140px) rotateX(-180deg);
-            transform: perspective(140px) rotateX(-180deg);
-            opacity: 0;
-        }
-        25%, 75% {
-            -webkit-transform: perspective(140px) rotateX(0deg);
-            transform: perspective(140px) rotateX(0deg);
-            opacity: 1;
-        }
-        90%, 100% {
-            -webkit-transform: perspective(140px) rotateY(180deg);
-            transform: perspective(140px) rotateY(180deg);
-            opacity: 0;
-        }
+    25%,
+    75% {
+      -webkit-transform: perspective(140px) rotateX(0deg);
+      transform: perspective(140px) rotateX(0deg);
+      opacity: 1;
     }
 
-    @keyframes sk-foldCubeAngle {
-        0%, 10% {
-            -webkit-transform: perspective(140px) rotateX(-180deg);
-            transform: perspective(140px) rotateX(-180deg);
-            opacity: 0;
-        }
-        25%, 75% {
-            -webkit-transform: perspective(140px) rotateX(0deg);
-            transform: perspective(140px) rotateX(0deg);
-            opacity: 1;
-        }
-        90%, 100% {
-            -webkit-transform: perspective(140px) rotateY(180deg);
-            transform: perspective(140px) rotateY(180deg);
-            opacity: 0;
-        }
+    90%,
+    100% {
+      -webkit-transform: perspective(140px) rotateY(180deg);
+      transform: perspective(140px) rotateY(180deg);
+      opacity: 0;
     }
+  }
 </style>
+
 <body>
-<header class=c-header>
+  <header class=c-header>
     {% block header %}
-        {% gateway_icon %}
+    {% gateway_icon %}
     {% endblock %}
     <div class=c-header__title><a href="{% url 'home' %}">{% block title %}{% gateway_title %}{% endblock %}</a>
     </div>
     {% if user.is_authenticated %}
-        <div class=c-header__controls>
-            <div class="btn-group">
-                <div class=dropdown>
-                    <a href=#0 class="dropdown-toggle text-dark" id=appDropdownMenuButton data-toggle=dropdown
-                       aria-haspopup=true aria-expanded=false>
-                        {% if current_airavata_app %}
-                            <i class="fa {{ current_airavata_app.fa_icon_class }} mr-2"></i>
-                            {{ current_airavata_app.verbose_name }}
-                        {% else %}
-                            Menu
-                        {% endif %}
-                    </a>
-                    <div class=dropdown-menu aria-labelledby=appDropdownMenuButton>
-                        {% for app in airavata_apps %}
-                            {% if app == current_airavata_app %}
-                                <a class="dropdown-item active" href="{% url app.url_home %}">
-                                    <i class="fa {{ app.fa_icon_class }} mr-2"></i>{{ app.verbose_name }}
-                                </a>
-                            {% else %}
-                                <a class="dropdown-item" href="{% url app.url_home %}">
-                                    <i class="fa {{ app.fa_icon_class }} mr-2"></i>{{ app.verbose_name }}
-                                </a>
-                            {% endif %}
-                        {% endfor %}
-                    </div>
-                </div>
-            </div>
-            <div class="btn-group ml-3">
-                <div class=dropdown>
-                    <a href=#0 class="dropdown-toggle text-dark" id=dropdownMenuButton data-toggle=dropdown
-                       aria-haspopup=true aria-expanded=false>
-                        <i class="fa fa-user mr-2"></i> {{ request.session.USERINFO.given_name }} {{ request.session.USERINFO.family_name }}
-                    </a>
-                    <div class=dropdown-menu aria-labelledby=dropdownMenuButton>
-                        <a class=dropdown-item href=#>User settings</a>
-                        <a class=dropdown-item href="{% url 'django_airavata_auth:logout' %}">
-                            Logout <i class="fa fa-sign-out"></i>
-                        </a>
-                    </div>
-                </div>
-            </div>
+    <div class=c-header__controls>
+      <div class="btn-group">
+        <div class=dropdown>
+          <a href=#0 class="dropdown-toggle text-dark" id=appDropdownMenuButton data-toggle=dropdown aria-haspopup=true
+            aria-expanded=false>
+            {% if current_airavata_app %}
+            <i class="fa {{ current_airavata_app.fa_icon_class }} mr-2"></i>
+            {{ current_airavata_app.verbose_name }}
+            {% else %}
+            Menu
+            {% endif %}
+          </a>
+          <div class=dropdown-menu aria-labelledby=appDropdownMenuButton>
+            {% for app in airavata_apps %}
+            {% if app == current_airavata_app %}
+            <a class="dropdown-item active" href="{% url app.url_home %}">
+              <i class="fa {{ app.fa_icon_class }} mr-2"></i>{{ app.verbose_name }}
+            </a>
+            {% else %}
+            <a class="dropdown-item" href="{% url app.url_home %}">
+              <i class="fa {{ app.fa_icon_class }} mr-2"></i>{{ app.verbose_name }}
+            </a>
+            {% endif %}
+            {% endfor %}
+          </div>
+        </div>
+      </div>
+      <div class="btn-group ml-3">
+        <div class=dropdown>
+          <a href=#0 class="dropdown-toggle text-dark" id=dropdownMenuButton data-toggle=dropdown aria-haspopup=true
+            aria-expanded=false>
+            <i class="fa fa-user mr-2"></i>
+            {{ request.session.USERINFO.given_name }}
+            {{ request.session.USERINFO.family_name }}
+          </a>
+          <div class=dropdown-menu aria-labelledby=dropdownMenuButton>
+            <a class=dropdown-item href=#>User settings</a>
+            <a class=dropdown-item href="{% url 'django_airavata_auth:logout' %}">
+              Logout <i class="fa fa-sign-out"></i>
+            </a>
+          </div>
         </div>
+      </div>
+    </div>
     {% endif %}
-</header>
+  </header>
 
-<div class=stage>
+  <div class=stage>
     <nav class=c-nav>
-        {% block nav-items %}
-        {% endblock %}
+      {% block nav-items %}
+      {% endblock %}
     </nav>
     <main class="main-content">
-        <div class="container-fluid">
-            <div id="airavata-spinner" class="loading">
-                <div class="sk-folding-cube" :style="{ color: color }">
-                    <div class="sk-cube1 sk-cube"></div>
-                    <div class="sk-cube2 sk-cube"></div>
-                    <div class="sk-cube4 sk-cube"></div>
-                    <div class="sk-cube3 sk-cube"></div>
-                </div>
-            </div>
-            {% block content %}
-            {% endblock %}
+      <div class="container-fluid">
+        <div id="airavata-spinner" class="loading">
+          <div class="sk-folding-cube" :style="{ color: color }">
+            <div class="sk-cube1 sk-cube"></div>
+            <div class="sk-cube2 sk-cube"></div>
+            <div class="sk-cube4 sk-cube"></div>
+            <div class="sk-cube3 sk-cube"></div>
+          </div>
         </div>
+        {% block content %}
+        {% endblock %}
+      </div>
     </main>
-</div>
+  </div>
 
-{% block scripts %}
-{% endblock %}
+  {% block scripts %}
+  {% endblock %}
 </body>


Mime
View raw message