diff --git a/README.md b/README.md
index 725fc8c..a1eb2a8 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-*Psst �looking for a shareable component template? Go here --> [sveltejs/component-template](https://github.com/sveltejs/component-template)*
+_Psst �looking for a shareable component template? Go here --> [sveltejs/component-template](https://github.com/sveltejs/component-template)_
 
 ---
 
@@ -15,8 +15,7 @@ degit sveltejs/template svelte-app
 cd svelte-app
 ```
 
-*Note that you will need to have [Node.js](https://nodejs.org) installed.*
-
+_Note that you will need to have [Node.js](https://nodejs.org) installed._
 
 ## Get started
 
@@ -35,7 +34,6 @@ npm run dev
 
 Navigate to [localhost:5000](http://localhost:5000). You should see your app running. Edit a component file in `src`, save it, and reload the page to see your changes.
 
-
 ## Deploying to the web
 
 ### With [now](https://zeit.co/now)
diff --git a/build.ts b/build.ts
index ae77068..f94f3d1 100644
--- a/build.ts
+++ b/build.ts
@@ -1,17 +1,13 @@
 import * as rollup from "rollup";
-import * as svelte from 'rollup-plugin-svelte';
-import * as resolve from 'rollup-plugin-node-resolve';
-import * as commonjs from 'rollup-plugin-commonjs';
+import * as svelte from "rollup-plugin-svelte";
+import * as resolve from "rollup-plugin-node-resolve";
+import * as commonjs from "rollup-plugin-commonjs";
 import * as typescript from "rollup-plugin-typescript2";
 import * as fs from "fs";
 import * as copy from "rollup-plugin-copy-assets";
 
-import {
-   sass
-} from 'svelte-preprocess-sass';
-import {
-   terser
-} from 'rollup-plugin-terser';
+import { sass } from "svelte-preprocess-sass";
+import { terser } from "rollup-plugin-terser";
 
 const production = process.argv.indexOf("-d") < 0;
 console.log(`Runnung in ${production ? "production" : "development"} mode!`);
@@ -19,20 +15,18 @@ console.log(`Runnung in ${production ? "production" : "development"} mode!`);
 let plg = [];
 
 if (production) {
-   plg.push(terser())
+   plg.push(terser());
 }
 
-if (!fs.existsSync("build"))
-   fs.mkdirSync("build");
-
+if (!fs.existsSync("build")) fs.mkdirSync("build");
 
 const pages = ["Login", "Home", "User"];
 
-let configs = pages.map(page => {
+let configs = pages.map((page) => {
    if (!fs.existsSync("build/" + page.toLowerCase()))
       fs.mkdirSync("build/" + page.toLowerCase());
 
-   const pageHtml = generateHtml(page)
+   const pageHtml = generateHtml(page);
 
    fs.writeFileSync(`build/${page.toLowerCase()}/index.html`, pageHtml);
 
@@ -40,37 +34,37 @@ let configs = pages.map(page => {
       input: `./src/${page}/main.js`,
       output: {
          sourcemap: !production,
-         format: 'iife',
+         format: "iife",
          name: "app",
-         file: `build/${page.toLowerCase()}/bundle.js`
+         file: `build/${page.toLowerCase()}/bundle.js`,
       },
 
       watch: {
-         clearScreen: false
+         clearScreen: false,
       },
       treeshake: production,
       plugins: [
          (typescript as any)({
-            tsconfig: "./src/tsconfig.json"
+            tsconfig: "./src/tsconfig.json",
          }),
          svelte({
             // enable run-time checks when not in production
             dev: !production,
-            css: css => {
+            css: (css) => {
                css.write(`build/${page.toLowerCase()}/bundle.css`);
             },
             preprocess: {
                style: sass({
-                  includePaths: ['src', 'node_modules']
-               })
-            }
+                  includePaths: ["src", "node_modules"],
+               }),
+            },
          }),
          (resolve as any)(),
          (commonjs as any)(),
-         ...plg
-      ]
+         ...plg,
+      ],
    };
-})
+});
 
 import * as path from "path";
 
@@ -99,12 +93,12 @@ function generateHtml(pagename: string) {
       <script src='bundle.js'></script>
       <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto" lazyload>
    </body> 
-</html>`
+</html>`;
 }
 
 let start: [number, number];
 if (process.argv.indexOf("-w") >= 0) {
-   rollup.watch(configs).on("event", event => {
+   rollup.watch(configs).on("event", (event) => {
       if (event.code === "BUNDLE_START") {
          start = process.hrtime();
       } else if (event.code === "BUNDLE_END") {
@@ -118,20 +112,29 @@ if (process.argv.indexOf("-w") >= 0) {
       } else {
          console.log(event);
       }
-   })
+   });
 } else {
    start = process.hrtime();
-   Promise.all(configs.map(config => {
-      return rollup.rollup(config).then((value) => {
-         return value.write(Array.isArray(config.output) ? config.output[0] : config.output);
-      }).catch(err => {
-         handleError(err, true);
-         // console.error(err);
+   Promise.all(
+      configs.map((config) => {
+         return rollup
+            .rollup(config)
+            .then((value) => {
+               return value.write(
+                  Array.isArray(config.output)
+                     ? config.output[0]
+                     : config.output
+               );
+            })
+            .catch((err) => {
+               handleError(err, true);
+               // console.error(err);
+            });
       })
-   })).then(vals => {
+   ).then((vals) => {
       let diff = process.hrtime(start);
       console.log(`--- Took ${diff[0] * 1000 + diff[1] / 1000000}ms`);
-   })
+   });
 }
 
 var absolutePath = /^(?:\/|(?:[A-Za-z]:)?[\\|/])/;
@@ -148,8 +151,7 @@ function isAbsolute(path) {
 // }
 
 function relativeId(id) {
-   if (typeof process === 'undefined' || !isAbsolute(id))
-      return id;
+   if (typeof process === "undefined" || !isAbsolute(id)) return id;
    return path.relative(process.cwd(), id);
 }
 
@@ -157,7 +159,7 @@ const tc: any = {
    enabled:
       process.env.FORCE_COLOR ||
       process.platform === "win32" ||
-      (process.stdout.isTTY && process.env.TERM && process.env.TERM !== "dumb")
+      (process.stdout.isTTY && process.env.TERM && process.env.TERM !== "dumb"),
 };
 const Styles = (tc.Styles = {});
 const defineProp = Object.defineProperty;
@@ -167,7 +169,7 @@ const init = (style, open, close, re) => {
       len = 1,
       seq = [(Styles[style] = { open, close, re })];
 
-   const fn = s => {
+   const fn = (s) => {
       if (tc.enabled) {
          for (i = 0, s += ""; i < len; i++) {
             style = seq[i];
@@ -180,19 +182,19 @@ const init = (style, open, close, re) => {
          }
          len = 1;
       }
-      return s
+      return s;
    };
 
    defineProp(tc, style, {
       get: () => {
          for (let k in Styles)
             defineProp(fn, k, {
-               get: () => ((seq[len++] = Styles[k]), fn)
+               get: () => ((seq[len++] = Styles[k]), fn),
             });
          delete tc[style];
-         return (tc[style] = fn)
+         return (tc[style] = fn);
       },
-      configurable: true
+      configurable: true,
    });
 };
 
@@ -224,33 +226,40 @@ init("bgWhite", "\x1b[47m", "\x1b[49m", /\x1b\[49m/g);
 
 const turbocolor: any = tc;
 
-
 function handleError(err, recover) {
-   if (recover === void 0) { recover = false; }
+   if (recover === void 0) {
+      recover = false;
+   }
    var description = err.message || err;
-   if (err.name)
-      description = err.name + ": " + description;
-   var message = (err.plugin
-      ? "(" + err.plugin + " plugin) " + description
-      : description) || err;
-   console.error(turbocolor.bold.red("[!] " + turbocolor.bold(message.toString())));
+   if (err.name) description = err.name + ": " + description;
+   var message =
+      (err.plugin
+         ? "(" + err.plugin + " plugin) " + description
+         : description) || err;
+   console.error(
+      turbocolor.bold.red("[!] " + turbocolor.bold(message.toString()))
+   );
    if (err.url) {
       console.error(turbocolor.cyan(err.url));
    }
    if (err.loc) {
-      console.error(relativeId(err.loc.file || err.id) + " (" + err.loc.line + ":" + err.loc.column + ")");
-   }
-   else if (err.id) {
+      console.error(
+         relativeId(err.loc.file || err.id) +
+            " (" +
+            err.loc.line +
+            ":" +
+            err.loc.column +
+            ")"
+      );
+   } else if (err.id) {
       console.error(relativeId(err.id));
    }
    if (err.frame) {
       console.error(turbocolor.dim(err.frame));
    }
    if (err.stack) {
-
       //console.error(turbocolor.dim(err.stack));
    }
-   console.error('');
-   if (!recover)
-      process.exit(1);
-}
\ No newline at end of file
+   console.error("");
+   if (!recover) process.exit(1);
+}
diff --git a/package-lock.json b/package-lock.json
index cf62f89..088c3f9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,2425 +1,2425 @@
 {
-  "name": "@hibas123/openauth-views",
-  "version": "1.0.0",
-  "lockfileVersion": 1,
-  "requires": true,
-  "dependencies": {
-    "@babel/code-frame": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
-      "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
-      "dev": true,
-      "requires": {
-        "@babel/highlight": "^7.8.3"
-      }
-    },
-    "@babel/highlight": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
-      "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
-      "dev": true,
-      "requires": {
-        "chalk": "^2.0.0",
-        "esutils": "^2.0.2",
-        "js-tokens": "^4.0.0"
-      }
-    },
-    "@hibas123/utils": {
-      "version": "2.2.3",
-      "resolved": "https://registry.npmjs.org/@hibas123/utils/-/utils-2.2.3.tgz",
-      "integrity": "sha512-yAywWMDbt5fmid9E7IRXeCazdbwfC339LhRFIryXab0FqlQzUrm8ggdJaSzWXYC7m3ijdekSezlBno/vOL/L2Q=="
-    },
-    "@polka/url": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/@polka/url/-/url-0.5.0.tgz",
-      "integrity": "sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw==",
-      "dev": true
-    },
-    "@types/node": {
-      "version": "12.7.0",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.0.tgz",
-      "integrity": "sha512-vqcj1MVm2Sla4PpMfYKh1MyDN4D2f/mPIZD7RdAGqEsbE+JxfeqQHHVbRDQ0Nqn8i73gJa1HQ1Pu3+nH4Q0Yiw==",
-      "dev": true
-    },
-    "@types/resolve": {
-      "version": "0.0.8",
-      "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz",
-      "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==",
-      "dev": true,
-      "requires": {
-        "@types/node": "*"
-      }
-    },
-    "abbrev": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
-      "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
-      "dev": true
-    },
-    "ajv": {
-      "version": "6.11.0",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.11.0.tgz",
-      "integrity": "sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA==",
-      "dev": true,
-      "requires": {
-        "fast-deep-equal": "^3.1.1",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.4.1",
-        "uri-js": "^4.2.2"
-      }
-    },
-    "amdefine": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
-      "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
-      "dev": true
-    },
-    "ansi-regex": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
-      "dev": true
-    },
-    "ansi-styles": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
-      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
-      "dev": true,
-      "requires": {
-        "color-convert": "^1.9.0"
-      }
-    },
-    "aproba": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
-      "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
-      "dev": true
-    },
-    "are-we-there-yet": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
-      "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
-      "dev": true,
-      "requires": {
-        "delegates": "^1.0.0",
-        "readable-stream": "^2.0.6"
-      }
-    },
-    "arg": {
-      "version": "4.1.3",
-      "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
-      "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
-      "dev": true
-    },
-    "array-filter": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
-      "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=",
-      "dev": true
-    },
-    "array-find-index": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
-      "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
-      "dev": true
-    },
-    "array-map": {
-      "version": "0.0.0",
-      "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
-      "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=",
-      "dev": true
-    },
-    "array-reduce": {
-      "version": "0.0.0",
-      "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
-      "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=",
-      "dev": true
-    },
-    "asn1": {
-      "version": "0.2.4",
-      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
-      "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
-      "dev": true,
-      "requires": {
-        "safer-buffer": "~2.1.0"
-      }
-    },
-    "assert-plus": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
-      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
-      "dev": true
-    },
-    "async-foreach": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
-      "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=",
-      "dev": true
-    },
-    "asynckit": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
-      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
-      "dev": true
-    },
-    "aws-sign2": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
-      "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
-      "dev": true
-    },
-    "aws4": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz",
-      "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==",
-      "dev": true
-    },
-    "balanced-match": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
-      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
-      "dev": true
-    },
-    "base64-js": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
-      "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw=="
-    },
-    "bcrypt-pbkdf": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
-      "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
-      "dev": true,
-      "requires": {
-        "tweetnacl": "^0.14.3"
-      }
-    },
-    "block-stream": {
-      "version": "0.0.9",
-      "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
-      "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
-      "dev": true,
-      "requires": {
-        "inherits": "~2.0.0"
-      }
-    },
-    "brace-expansion": {
-      "version": "1.1.11",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-      "dev": true,
-      "requires": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
-      }
-    },
-    "buffer": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz",
-      "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==",
-      "requires": {
-        "base64-js": "^1.0.2",
-        "ieee754": "^1.1.4"
-      }
-    },
-    "buffer-from": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
-      "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
-      "dev": true
-    },
-    "builtin-modules": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz",
-      "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==",
-      "dev": true
-    },
-    "camelcase": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
-      "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
-      "dev": true
-    },
-    "camelcase-keys": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
-      "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
-      "dev": true,
-      "requires": {
-        "camelcase": "^2.0.0",
-        "map-obj": "^1.0.0"
-      }
-    },
-    "caseless": {
-      "version": "0.12.0",
-      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
-      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
-      "dev": true
-    },
-    "chalk": {
-      "version": "2.4.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-      "dev": true,
-      "requires": {
-        "ansi-styles": "^3.2.1",
-        "escape-string-regexp": "^1.0.5",
-        "supports-color": "^5.3.0"
-      }
-    },
-    "cliui": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
-      "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
-      "dev": true,
-      "requires": {
-        "string-width": "^1.0.1",
-        "strip-ansi": "^3.0.1",
-        "wrap-ansi": "^2.0.0"
-      }
-    },
-    "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=",
-      "dev": true
-    },
-    "color-convert": {
-      "version": "1.9.3",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
-      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
-      "dev": true,
-      "requires": {
-        "color-name": "1.1.3"
-      }
-    },
-    "color-name": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
-      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
-      "dev": true
-    },
-    "combined-stream": {
-      "version": "1.0.8",
-      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
-      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
-      "dev": true,
-      "requires": {
-        "delayed-stream": "~1.0.0"
-      }
-    },
-    "commander": {
-      "version": "2.20.3",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
-      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
-      "dev": true
-    },
-    "commondir": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
-      "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs="
-    },
-    "concat-map": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
-      "dev": true
-    },
-    "console-clear": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/console-clear/-/console-clear-1.1.1.tgz",
-      "integrity": "sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==",
-      "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=",
-      "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=",
-      "dev": true
-    },
-    "cross-spawn": {
-      "version": "6.0.5",
-      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
-      "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
-      "dev": true,
-      "requires": {
-        "nice-try": "^1.0.4",
-        "path-key": "^2.0.1",
-        "semver": "^5.5.0",
-        "shebang-command": "^1.2.0",
-        "which": "^1.2.9"
-      }
-    },
-    "currently-unhandled": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
-      "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
-      "dev": true,
-      "requires": {
-        "array-find-index": "^1.0.1"
-      }
-    },
-    "dashdash": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
-      "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
-      "dev": true,
-      "requires": {
-        "assert-plus": "^1.0.0"
-      }
-    },
-    "decamelize": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-      "dev": true
-    },
-    "define-properties": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
-      "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
-      "dev": true,
-      "requires": {
-        "object-keys": "^1.0.12"
-      }
-    },
-    "delayed-stream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
-      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
-      "dev": true
-    },
-    "delegates": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
-      "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
-      "dev": true
-    },
-    "diff": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
-      "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
-      "dev": true
-    },
-    "ecc-jsbn": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
-      "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
-      "dev": true,
-      "requires": {
-        "jsbn": "~0.1.0",
-        "safer-buffer": "^2.1.0"
-      }
-    },
-    "error-ex": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
-      "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
-      "dev": true,
-      "requires": {
-        "is-arrayish": "^0.2.1"
-      }
-    },
-    "es-abstract": {
-      "version": "1.13.0",
-      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
-      "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
-      "dev": true,
-      "requires": {
-        "es-to-primitive": "^1.2.0",
-        "function-bind": "^1.1.1",
-        "has": "^1.0.3",
-        "is-callable": "^1.1.4",
-        "is-regex": "^1.0.4",
-        "object-keys": "^1.0.12"
-      }
-    },
-    "es-to-primitive": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
-      "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
-      "dev": true,
-      "requires": {
-        "is-callable": "^1.1.4",
-        "is-date-object": "^1.0.1",
-        "is-symbol": "^1.0.2"
-      }
-    },
-    "escape-string-regexp": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
-      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
-      "dev": true
-    },
-    "estree-walker": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
-      "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w=="
-    },
-    "esutils": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
-      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
-      "dev": true
-    },
-    "extend": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
-      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
-      "dev": true
-    },
-    "extsprintf": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
-      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
-      "dev": true
-    },
-    "fast-deep-equal": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
-      "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==",
-      "dev": true
-    },
-    "fast-json-stable-stringify": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
-      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
-      "dev": true
-    },
-    "find-cache-dir": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz",
-      "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==",
-      "requires": {
-        "commondir": "^1.0.1",
-        "make-dir": "^3.0.2",
-        "pkg-dir": "^4.1.0"
-      }
-    },
-    "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"
-      }
-    },
-    "forever-agent": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
-      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
-      "dev": true
-    },
-    "form-data": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
-      "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
-      "dev": true,
-      "requires": {
-        "asynckit": "^0.4.0",
-        "combined-stream": "^1.0.6",
-        "mime-types": "^2.1.12"
-      }
-    },
-    "fs-extra": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
-      "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "^4.1.2",
-        "jsonfile": "^4.0.0",
-        "universalify": "^0.1.0"
-      }
-    },
-    "fs.realpath": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
-      "dev": true
-    },
-    "fsevents": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz",
-      "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==",
-      "dev": true,
-      "optional": true
-    },
-    "fstream": {
-      "version": "1.0.12",
-      "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
-      "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "^4.1.2",
-        "inherits": "~2.0.0",
-        "mkdirp": ">=0.5 0",
-        "rimraf": "2"
-      }
-    },
-    "function-bind": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
-      "dev": true
-    },
-    "gauge": {
-      "version": "2.7.4",
-      "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
-      "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
-      "dev": true,
-      "requires": {
-        "aproba": "^1.0.3",
-        "console-control-strings": "^1.0.0",
-        "has-unicode": "^2.0.0",
-        "object-assign": "^4.1.0",
-        "signal-exit": "^3.0.0",
-        "string-width": "^1.0.1",
-        "strip-ansi": "^3.0.1",
-        "wide-align": "^1.1.0"
-      }
-    },
-    "gaze": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
-      "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
-      "dev": true,
-      "requires": {
-        "globule": "^1.0.0"
-      }
-    },
-    "get-caller-file": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
-      "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
-      "dev": true
-    },
-    "get-port": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz",
-      "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=",
-      "dev": true
-    },
-    "get-stdin": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
-      "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
-      "dev": true
-    },
-    "getpass": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
-      "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
-      "dev": true,
-      "requires": {
-        "assert-plus": "^1.0.0"
-      }
-    },
-    "glob": {
-      "version": "7.1.6",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
-      "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
-      "dev": true,
-      "requires": {
-        "fs.realpath": "^1.0.0",
-        "inflight": "^1.0.4",
-        "inherits": "2",
-        "minimatch": "^3.0.4",
-        "once": "^1.3.0",
-        "path-is-absolute": "^1.0.0"
-      }
-    },
-    "globule": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.0.tgz",
-      "integrity": "sha512-YlD4kdMqRCQHrhVdonet4TdRtv1/sZKepvoxNT4Nrhrp5HI8XFfc8kFlGlBn2myBo80aGp8Eft259mbcUJhgSg==",
-      "dev": true,
-      "requires": {
-        "glob": "~7.1.1",
-        "lodash": "~4.17.10",
-        "minimatch": "~3.0.2"
-      }
-    },
-    "graceful-fs": {
-      "version": "4.1.15",
-      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
-      "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA=="
-    },
-    "har-schema": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
-      "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
-      "dev": true
-    },
-    "har-validator": {
-      "version": "5.1.3",
-      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
-      "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
-      "dev": true,
-      "requires": {
-        "ajv": "^6.5.5",
-        "har-schema": "^2.0.0"
-      }
-    },
-    "has": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
-      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-      "dev": true,
-      "requires": {
-        "function-bind": "^1.1.1"
-      }
-    },
-    "has-ansi": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
-      "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
-      "dev": true,
-      "requires": {
-        "ansi-regex": "^2.0.0"
-      }
-    },
-    "has-flag": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
-      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
-      "dev": true
-    },
-    "has-symbols": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
-      "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
-      "dev": true
-    },
-    "has-unicode": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
-      "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
-      "dev": true
-    },
-    "hosted-git-info": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
-      "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
-      "dev": true
-    },
-    "http-signature": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
-      "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
-      "dev": true,
-      "requires": {
-        "assert-plus": "^1.0.0",
-        "jsprim": "^1.2.2",
-        "sshpk": "^1.7.0"
-      }
-    },
-    "ieee754": {
-      "version": "1.1.13",
-      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
-      "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg=="
-    },
-    "in-publish": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz",
-      "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=",
-      "dev": true
-    },
-    "indent-string": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
-      "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
-      "dev": true,
-      "requires": {
-        "repeating": "^2.0.0"
-      }
-    },
-    "inflight": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
-      "dev": true,
-      "requires": {
-        "once": "^1.3.0",
-        "wrappy": "1"
-      }
-    },
-    "inherits": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
-      "dev": true
-    },
-    "invert-kv": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
-      "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
-      "dev": true
-    },
-    "is-arrayish": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
-      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
-      "dev": true
-    },
-    "is-callable": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
-      "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
-      "dev": true
-    },
-    "is-date-object": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
-      "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
-      "dev": true
-    },
-    "is-finite": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz",
-      "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==",
-      "dev": 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=",
-      "dev": true,
-      "requires": {
-        "number-is-nan": "^1.0.0"
-      }
-    },
-    "is-module": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
-      "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=",
-      "dev": true
-    },
-    "is-reference": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz",
-      "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==",
-      "dev": true,
-      "requires": {
-        "@types/estree": "0.0.39"
+   "name": "@hibas123/openauth-views",
+   "version": "1.0.0",
+   "lockfileVersion": 1,
+   "requires": true,
+   "dependencies": {
+      "@babel/code-frame": {
+         "version": "7.8.3",
+         "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
+         "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
+         "dev": true,
+         "requires": {
+            "@babel/highlight": "^7.8.3"
+         }
       },
-      "dependencies": {
-        "@types/estree": {
-          "version": "0.0.39",
-          "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
-          "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
-          "dev": true
-        }
-      }
-    },
-    "is-regex": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
-      "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
-      "dev": true,
-      "requires": {
-        "has": "^1.0.1"
-      }
-    },
-    "is-symbol": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
-      "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
-      "dev": true,
-      "requires": {
-        "has-symbols": "^1.0.0"
-      }
-    },
-    "is-typedarray": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
-      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
-      "dev": true
-    },
-    "is-utf8": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
-      "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
-      "dev": true
-    },
-    "isarray": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
-      "dev": true
-    },
-    "isexe": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
-      "dev": true
-    },
-    "isstream": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
-      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
-      "dev": true
-    },
-    "jest-worker": {
-      "version": "24.9.0",
-      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz",
-      "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==",
-      "dev": true,
-      "requires": {
-        "merge-stream": "^2.0.0",
-        "supports-color": "^6.1.0"
+      "@babel/highlight": {
+         "version": "7.8.3",
+         "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
+         "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
+         "dev": true,
+         "requires": {
+            "chalk": "^2.0.0",
+            "esutils": "^2.0.2",
+            "js-tokens": "^4.0.0"
+         }
       },
-      "dependencies": {
-        "supports-color": {
-          "version": "6.1.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
-          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
-          "dev": true,
-          "requires": {
-            "has-flag": "^3.0.0"
-          }
-        }
-      }
-    },
-    "js-base64": {
-      "version": "2.5.1",
-      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz",
-      "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==",
-      "dev": true
-    },
-    "js-tokens": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
-      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
-      "dev": true
-    },
-    "jsbn": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
-      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
-      "dev": true
-    },
-    "json-parse-better-errors": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
-      "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
-      "dev": true
-    },
-    "json-schema": {
-      "version": "0.2.3",
-      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
-      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
-      "dev": true
-    },
-    "json-schema-traverse": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-      "dev": true
-    },
-    "json-stringify-safe": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
-      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
-      "dev": true
-    },
-    "jsonfile": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
-      "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
-      "requires": {
-        "graceful-fs": "^4.1.6"
-      }
-    },
-    "jsonify": {
-      "version": "0.0.0",
-      "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
-      "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
-      "dev": true
-    },
-    "jsprim": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
-      "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
-      "dev": true,
-      "requires": {
-        "assert-plus": "1.0.0",
-        "extsprintf": "1.3.0",
-        "json-schema": "0.2.3",
-        "verror": "1.10.0"
-      }
-    },
-    "kleur": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
-      "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
-      "dev": true
-    },
-    "lcid": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
-      "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
-      "dev": true,
-      "requires": {
-        "invert-kv": "^1.0.0"
-      }
-    },
-    "load-json-file": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
-      "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "^4.1.2",
-        "parse-json": "^4.0.0",
-        "pify": "^3.0.0",
-        "strip-bom": "^3.0.0"
-      }
-    },
-    "local-access": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/local-access/-/local-access-1.0.1.tgz",
-      "integrity": "sha512-ykt2pgN0aqIy6KQC1CqdWTWkmUwNgaOS6dcpHVjyBJONA+Xi7AtSB1vuxC/U/0tjIP3wcRudwQk1YYzUvzk2bA==",
-      "dev": true
-    },
-    "locate-path": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-      "requires": {
-        "p-locate": "^4.1.0"
-      }
-    },
-    "lodash": {
-      "version": "4.17.15",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
-      "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
-      "dev": true
-    },
-    "loud-rejection": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
-      "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
-      "dev": true,
-      "requires": {
-        "currently-unhandled": "^0.4.1",
-        "signal-exit": "^3.0.0"
-      }
-    },
-    "lru-cache": {
-      "version": "4.1.5",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
-      "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
-      "dev": true,
-      "requires": {
-        "pseudomap": "^1.0.2",
-        "yallist": "^2.1.2"
-      }
-    },
-    "magic-string": {
-      "version": "0.25.6",
-      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.6.tgz",
-      "integrity": "sha512-3a5LOMSGoCTH5rbqobC2HuDNRtE2glHZ8J7pK+QZYppyWA36yuNpsX994rIY2nCuyP7CZYy7lQq/X2jygiZ89g==",
-      "dev": true,
-      "requires": {
-        "sourcemap-codec": "^1.4.4"
-      }
-    },
-    "make-dir": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz",
-      "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==",
-      "requires": {
-        "semver": "^6.0.0"
+      "@hibas123/utils": {
+         "version": "2.2.3",
+         "resolved": "https://registry.npmjs.org/@hibas123/utils/-/utils-2.2.3.tgz",
+         "integrity": "sha512-yAywWMDbt5fmid9E7IRXeCazdbwfC339LhRFIryXab0FqlQzUrm8ggdJaSzWXYC7m3ijdekSezlBno/vOL/L2Q=="
       },
-      "dependencies": {
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
-        }
-      }
-    },
-    "make-error": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz",
-      "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==",
-      "dev": true
-    },
-    "map-obj": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
-      "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
-      "dev": true
-    },
-    "memorystream": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
-      "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=",
-      "dev": true
-    },
-    "meow": {
-      "version": "3.7.0",
-      "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
-      "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
-      "dev": true,
-      "requires": {
-        "camelcase-keys": "^2.0.0",
-        "decamelize": "^1.1.2",
-        "loud-rejection": "^1.0.0",
-        "map-obj": "^1.0.1",
-        "minimist": "^1.1.3",
-        "normalize-package-data": "^2.3.4",
-        "object-assign": "^4.0.1",
-        "read-pkg-up": "^1.0.1",
-        "redent": "^1.0.0",
-        "trim-newlines": "^1.0.0"
-      }
-    },
-    "merge-stream": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
-      "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
-      "dev": true
-    },
-    "mime": {
-      "version": "2.4.4",
-      "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
-      "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==",
-      "dev": true
-    },
-    "mime-db": {
-      "version": "1.43.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz",
-      "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==",
-      "dev": true
-    },
-    "mime-types": {
-      "version": "2.1.26",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz",
-      "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==",
-      "dev": true,
-      "requires": {
-        "mime-db": "1.43.0"
-      }
-    },
-    "minimatch": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
-      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
-      "dev": true,
-      "requires": {
-        "brace-expansion": "^1.1.7"
-      }
-    },
-    "minimist": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-      "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
-      "dev": true
-    },
-    "mkdirp": {
-      "version": "0.5.1",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
-      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
-      "dev": true,
-      "requires": {
-        "minimist": "0.0.8"
+      "@polka/url": {
+         "version": "0.5.0",
+         "resolved": "https://registry.npmjs.org/@polka/url/-/url-0.5.0.tgz",
+         "integrity": "sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw==",
+         "dev": true
       },
-      "dependencies": {
-        "minimist": {
-          "version": "0.0.8",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
-          "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
-          "dev": true
-        }
-      }
-    },
-    "mri": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.4.tgz",
-      "integrity": "sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w==",
-      "dev": true
-    },
-    "nan": {
-      "version": "2.14.0",
-      "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
-      "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
-      "dev": true
-    },
-    "nice-try": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
-      "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
-      "dev": true
-    },
-    "node-gyp": {
-      "version": "3.8.0",
-      "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",
-      "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==",
-      "dev": true,
-      "requires": {
-        "fstream": "^1.0.0",
-        "glob": "^7.0.3",
-        "graceful-fs": "^4.1.2",
-        "mkdirp": "^0.5.0",
-        "nopt": "2 || 3",
-        "npmlog": "0 || 1 || 2 || 3 || 4",
-        "osenv": "0",
-        "request": "^2.87.0",
-        "rimraf": "2",
-        "semver": "~5.3.0",
-        "tar": "^2.0.0",
-        "which": "1"
+      "@types/node": {
+         "version": "12.7.0",
+         "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.0.tgz",
+         "integrity": "sha512-vqcj1MVm2Sla4PpMfYKh1MyDN4D2f/mPIZD7RdAGqEsbE+JxfeqQHHVbRDQ0Nqn8i73gJa1HQ1Pu3+nH4Q0Yiw==",
+         "dev": true
       },
-      "dependencies": {
-        "semver": {
-          "version": "5.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
-          "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
-          "dev": true
-        }
-      }
-    },
-    "node-sass": {
-      "version": "4.13.1",
-      "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.13.1.tgz",
-      "integrity": "sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw==",
-      "dev": true,
-      "requires": {
-        "async-foreach": "^0.1.3",
-        "chalk": "^1.1.1",
-        "cross-spawn": "^3.0.0",
-        "gaze": "^1.0.0",
-        "get-stdin": "^4.0.1",
-        "glob": "^7.0.3",
-        "in-publish": "^2.0.0",
-        "lodash": "^4.17.15",
-        "meow": "^3.7.0",
-        "mkdirp": "^0.5.1",
-        "nan": "^2.13.2",
-        "node-gyp": "^3.8.0",
-        "npmlog": "^4.0.0",
-        "request": "^2.88.0",
-        "sass-graph": "^2.2.4",
-        "stdout-stream": "^1.4.0",
-        "true-case-path": "^1.0.2"
+      "@types/resolve": {
+         "version": "0.0.8",
+         "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz",
+         "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==",
+         "dev": true,
+         "requires": {
+            "@types/node": "*"
+         }
       },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "2.2.1",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
-          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
-          "dev": true
-        },
-        "chalk": {
-          "version": "1.1.3",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^2.2.1",
-            "escape-string-regexp": "^1.0.2",
-            "has-ansi": "^2.0.0",
-            "strip-ansi": "^3.0.0",
-            "supports-color": "^2.0.0"
-          }
-        },
-        "cross-spawn": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
-          "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^4.0.1",
+      "abbrev": {
+         "version": "1.1.1",
+         "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+         "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+         "dev": true
+      },
+      "ajv": {
+         "version": "6.11.0",
+         "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.11.0.tgz",
+         "integrity": "sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA==",
+         "dev": true,
+         "requires": {
+            "fast-deep-equal": "^3.1.1",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
+         }
+      },
+      "amdefine": {
+         "version": "1.0.1",
+         "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+         "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+         "dev": true
+      },
+      "ansi-regex": {
+         "version": "2.1.1",
+         "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+         "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+         "dev": true
+      },
+      "ansi-styles": {
+         "version": "3.2.1",
+         "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+         "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+         "dev": true,
+         "requires": {
+            "color-convert": "^1.9.0"
+         }
+      },
+      "aproba": {
+         "version": "1.2.0",
+         "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+         "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+         "dev": true
+      },
+      "are-we-there-yet": {
+         "version": "1.1.5",
+         "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
+         "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
+         "dev": true,
+         "requires": {
+            "delegates": "^1.0.0",
+            "readable-stream": "^2.0.6"
+         }
+      },
+      "arg": {
+         "version": "4.1.3",
+         "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
+         "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
+         "dev": true
+      },
+      "array-filter": {
+         "version": "0.0.1",
+         "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
+         "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=",
+         "dev": true
+      },
+      "array-find-index": {
+         "version": "1.0.2",
+         "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+         "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+         "dev": true
+      },
+      "array-map": {
+         "version": "0.0.0",
+         "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
+         "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=",
+         "dev": true
+      },
+      "array-reduce": {
+         "version": "0.0.0",
+         "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
+         "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=",
+         "dev": true
+      },
+      "asn1": {
+         "version": "0.2.4",
+         "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
+         "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+         "dev": true,
+         "requires": {
+            "safer-buffer": "~2.1.0"
+         }
+      },
+      "assert-plus": {
+         "version": "1.0.0",
+         "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+         "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+         "dev": true
+      },
+      "async-foreach": {
+         "version": "0.1.3",
+         "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
+         "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=",
+         "dev": true
+      },
+      "asynckit": {
+         "version": "0.4.0",
+         "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+         "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+         "dev": true
+      },
+      "aws-sign2": {
+         "version": "0.7.0",
+         "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+         "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
+         "dev": true
+      },
+      "aws4": {
+         "version": "1.9.1",
+         "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz",
+         "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==",
+         "dev": true
+      },
+      "balanced-match": {
+         "version": "1.0.0",
+         "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+         "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+         "dev": true
+      },
+      "base64-js": {
+         "version": "1.3.0",
+         "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
+         "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw=="
+      },
+      "bcrypt-pbkdf": {
+         "version": "1.0.2",
+         "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+         "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+         "dev": true,
+         "requires": {
+            "tweetnacl": "^0.14.3"
+         }
+      },
+      "block-stream": {
+         "version": "0.0.9",
+         "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
+         "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
+         "dev": true,
+         "requires": {
+            "inherits": "~2.0.0"
+         }
+      },
+      "brace-expansion": {
+         "version": "1.1.11",
+         "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+         "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+         "dev": true,
+         "requires": {
+            "balanced-match": "^1.0.0",
+            "concat-map": "0.0.1"
+         }
+      },
+      "buffer": {
+         "version": "5.2.1",
+         "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz",
+         "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==",
+         "requires": {
+            "base64-js": "^1.0.2",
+            "ieee754": "^1.1.4"
+         }
+      },
+      "buffer-from": {
+         "version": "1.1.1",
+         "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+         "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
+         "dev": true
+      },
+      "builtin-modules": {
+         "version": "3.1.0",
+         "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz",
+         "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==",
+         "dev": true
+      },
+      "camelcase": {
+         "version": "2.1.1",
+         "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+         "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+         "dev": true
+      },
+      "camelcase-keys": {
+         "version": "2.1.0",
+         "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+         "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+         "dev": true,
+         "requires": {
+            "camelcase": "^2.0.0",
+            "map-obj": "^1.0.0"
+         }
+      },
+      "caseless": {
+         "version": "0.12.0",
+         "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+         "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+         "dev": true
+      },
+      "chalk": {
+         "version": "2.4.2",
+         "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+         "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+         "dev": true,
+         "requires": {
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
+         }
+      },
+      "cliui": {
+         "version": "3.2.0",
+         "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+         "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+         "dev": true,
+         "requires": {
+            "string-width": "^1.0.1",
+            "strip-ansi": "^3.0.1",
+            "wrap-ansi": "^2.0.0"
+         }
+      },
+      "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=",
+         "dev": true
+      },
+      "color-convert": {
+         "version": "1.9.3",
+         "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+         "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+         "dev": true,
+         "requires": {
+            "color-name": "1.1.3"
+         }
+      },
+      "color-name": {
+         "version": "1.1.3",
+         "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+         "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+         "dev": true
+      },
+      "combined-stream": {
+         "version": "1.0.8",
+         "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+         "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+         "dev": true,
+         "requires": {
+            "delayed-stream": "~1.0.0"
+         }
+      },
+      "commander": {
+         "version": "2.20.3",
+         "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+         "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+         "dev": true
+      },
+      "commondir": {
+         "version": "1.0.1",
+         "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+         "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs="
+      },
+      "concat-map": {
+         "version": "0.0.1",
+         "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+         "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+         "dev": true
+      },
+      "console-clear": {
+         "version": "1.1.1",
+         "resolved": "https://registry.npmjs.org/console-clear/-/console-clear-1.1.1.tgz",
+         "integrity": "sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==",
+         "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=",
+         "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=",
+         "dev": true
+      },
+      "cross-spawn": {
+         "version": "6.0.5",
+         "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+         "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+         "dev": true,
+         "requires": {
+            "nice-try": "^1.0.4",
+            "path-key": "^2.0.1",
+            "semver": "^5.5.0",
+            "shebang-command": "^1.2.0",
             "which": "^1.2.9"
-          }
-        },
-        "supports-color": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
-          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
-          "dev": true
-        }
-      }
-    },
-    "nopt": {
-      "version": "3.0.6",
-      "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
-      "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
-      "dev": true,
-      "requires": {
-        "abbrev": "1"
-      }
-    },
-    "normalize-package-data": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
-      "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
-      "dev": true,
-      "requires": {
-        "hosted-git-info": "^2.1.4",
-        "resolve": "^1.10.0",
-        "semver": "2 || 3 || 4 || 5",
-        "validate-npm-package-license": "^3.0.1"
-      }
-    },
-    "npm-run-all": {
-      "version": "4.1.5",
-      "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz",
-      "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==",
-      "dev": true,
-      "requires": {
-        "ansi-styles": "^3.2.1",
-        "chalk": "^2.4.1",
-        "cross-spawn": "^6.0.5",
-        "memorystream": "^0.3.1",
-        "minimatch": "^3.0.4",
-        "pidtree": "^0.3.0",
-        "read-pkg": "^3.0.0",
-        "shell-quote": "^1.6.1",
-        "string.prototype.padend": "^3.0.0"
-      }
-    },
-    "npmlog": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
-      "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
-      "dev": true,
-      "requires": {
-        "are-we-there-yet": "~1.1.2",
-        "console-control-strings": "~1.1.0",
-        "gauge": "~2.7.3",
-        "set-blocking": "~2.0.0"
-      }
-    },
-    "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=",
-      "dev": true
-    },
-    "oauth-sign": {
-      "version": "0.9.0",
-      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
-      "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
-      "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=",
-      "dev": true
-    },
-    "object-keys": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
-      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
-      "dev": true
-    },
-    "once": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
-      "dev": true,
-      "requires": {
-        "wrappy": "1"
-      }
-    },
-    "os-homedir": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
-      "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
-      "dev": true
-    },
-    "os-locale": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
-      "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
-      "dev": true,
-      "requires": {
-        "lcid": "^1.0.0"
-      }
-    },
-    "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=",
-      "dev": true
-    },
-    "osenv": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
-      "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
-      "dev": true,
-      "requires": {
-        "os-homedir": "^1.0.0",
-        "os-tmpdir": "^1.0.0"
-      }
-    },
-    "p-limit": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz",
-      "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==",
-      "requires": {
-        "p-try": "^2.0.0"
-      }
-    },
-    "p-locate": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-      "requires": {
-        "p-limit": "^2.2.0"
-      }
-    },
-    "p-try": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
-    },
-    "parse-json": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
-      "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
-      "dev": true,
-      "requires": {
-        "error-ex": "^1.3.1",
-        "json-parse-better-errors": "^1.0.1"
-      }
-    },
-    "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"
-      }
-    },
-    "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=",
-      "dev": true
-    },
-    "path-key": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
-      "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
-      "dev": true
-    },
-    "path-parse": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
-      "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
-    },
-    "path-type": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
-      "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
-      "dev": true,
-      "requires": {
-        "pify": "^3.0.0"
-      }
-    },
-    "performance-now": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
-      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
-      "dev": true
-    },
-    "pidtree": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.0.tgz",
-      "integrity": "sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg==",
-      "dev": true
-    },
-    "pify": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
-      "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
-      "dev": true
-    },
-    "pinkie": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
-      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
-      "dev": true
-    },
-    "pinkie-promise": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
-      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
-      "dev": true,
-      "requires": {
-        "pinkie": "^2.0.0"
-      }
-    },
-    "pkg-dir": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
-      "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
-      "requires": {
-        "find-up": "^4.0.0"
+         }
       },
-      "dependencies": {
-        "find-up": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-          "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-          "requires": {
-            "locate-path": "^5.0.0",
-            "path-exists": "^4.0.0"
-          }
-        },
-        "path-exists": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-          "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
-        }
-      }
-    },
-    "pretty-bytes": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.2.0.tgz",
-      "integrity": "sha512-ujANBhiUsl9AhREUDUEY1GPOharMGm8x8juS7qOHybcLi7XsKfrYQ88hSly1l2i0klXHTDYrlL8ihMCG55Dc3w=="
-    },
-    "process-nextick-args": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
-      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
-      "dev": true
-    },
-    "pseudomap": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
-      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
-      "dev": true
-    },
-    "psl": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz",
-      "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==",
-      "dev": true
-    },
-    "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
-    },
-    "qs": {
-      "version": "6.5.2",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
-      "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
-      "dev": true
-    },
-    "read-pkg": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
-      "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
-      "dev": true,
-      "requires": {
-        "load-json-file": "^4.0.0",
-        "normalize-package-data": "^2.3.2",
-        "path-type": "^3.0.0"
-      }
-    },
-    "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"
+      "currently-unhandled": {
+         "version": "0.4.1",
+         "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+         "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+         "dev": true,
+         "requires": {
+            "array-find-index": "^1.0.1"
+         }
       },
-      "dependencies": {
-        "load-json-file": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
-          "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
-          "dev": true,
-          "requires": {
-            "graceful-fs": "^4.1.2",
-            "parse-json": "^2.2.0",
-            "pify": "^2.0.0",
-            "pinkie-promise": "^2.0.0",
-            "strip-bom": "^2.0.0"
-          }
-        },
-        "parse-json": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
-          "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
-          "dev": true,
-          "requires": {
-            "error-ex": "^1.2.0"
-          }
-        },
-        "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",
+      "dashdash": {
+         "version": "1.14.1",
+         "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+         "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+         "dev": true,
+         "requires": {
+            "assert-plus": "^1.0.0"
+         }
+      },
+      "decamelize": {
+         "version": "1.2.0",
+         "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+         "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+         "dev": true
+      },
+      "define-properties": {
+         "version": "1.1.3",
+         "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+         "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+         "dev": true,
+         "requires": {
+            "object-keys": "^1.0.12"
+         }
+      },
+      "delayed-stream": {
+         "version": "1.0.0",
+         "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+         "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+         "dev": true
+      },
+      "delegates": {
+         "version": "1.0.0",
+         "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+         "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
+         "dev": true
+      },
+      "diff": {
+         "version": "4.0.2",
+         "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
+         "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
+         "dev": true
+      },
+      "ecc-jsbn": {
+         "version": "0.1.2",
+         "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+         "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+         "dev": true,
+         "requires": {
+            "jsbn": "~0.1.0",
+            "safer-buffer": "^2.1.0"
+         }
+      },
+      "error-ex": {
+         "version": "1.3.2",
+         "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+         "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+         "dev": true,
+         "requires": {
+            "is-arrayish": "^0.2.1"
+         }
+      },
+      "es-abstract": {
+         "version": "1.13.0",
+         "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
+         "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
+         "dev": true,
+         "requires": {
+            "es-to-primitive": "^1.2.0",
+            "function-bind": "^1.1.1",
+            "has": "^1.0.3",
+            "is-callable": "^1.1.4",
+            "is-regex": "^1.0.4",
+            "object-keys": "^1.0.12"
+         }
+      },
+      "es-to-primitive": {
+         "version": "1.2.0",
+         "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
+         "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
+         "dev": true,
+         "requires": {
+            "is-callable": "^1.1.4",
+            "is-date-object": "^1.0.1",
+            "is-symbol": "^1.0.2"
+         }
+      },
+      "escape-string-regexp": {
+         "version": "1.0.5",
+         "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+         "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+         "dev": true
+      },
+      "estree-walker": {
+         "version": "0.6.1",
+         "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
+         "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w=="
+      },
+      "esutils": {
+         "version": "2.0.3",
+         "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+         "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+         "dev": true
+      },
+      "extend": {
+         "version": "3.0.2",
+         "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+         "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+         "dev": true
+      },
+      "extsprintf": {
+         "version": "1.3.0",
+         "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+         "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
+         "dev": true
+      },
+      "fast-deep-equal": {
+         "version": "3.1.1",
+         "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
+         "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==",
+         "dev": true
+      },
+      "fast-json-stable-stringify": {
+         "version": "2.1.0",
+         "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+         "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+         "dev": true
+      },
+      "find-cache-dir": {
+         "version": "3.3.1",
+         "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz",
+         "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==",
+         "requires": {
+            "commondir": "^1.0.1",
+            "make-dir": "^3.0.2",
+            "pkg-dir": "^4.1.0"
+         }
+      },
+      "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"
-          }
-        },
-        "pify": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
-          "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"
-          }
-        },
-        "strip-bom": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
-          "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
-          "dev": true,
-          "requires": {
-            "is-utf8": "^0.2.0"
-          }
-        }
-      }
-    },
-    "readable-stream": {
-      "version": "2.3.7",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
-      "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
-      "dev": true,
-      "requires": {
-        "core-util-is": "~1.0.0",
-        "inherits": "~2.0.3",
-        "isarray": "~1.0.0",
-        "process-nextick-args": "~2.0.0",
-        "safe-buffer": "~5.1.1",
-        "string_decoder": "~1.1.1",
-        "util-deprecate": "~1.0.1"
-      }
-    },
-    "redent": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
-      "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
-      "dev": true,
-      "requires": {
-        "indent-string": "^2.1.0",
-        "strip-indent": "^1.0.1"
-      }
-    },
-    "repeating": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
-      "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
-      "dev": true,
-      "requires": {
-        "is-finite": "^1.0.0"
-      }
-    },
-    "request": {
-      "version": "2.88.0",
-      "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
-      "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
-      "dev": true,
-      "requires": {
-        "aws-sign2": "~0.7.0",
-        "aws4": "^1.8.0",
-        "caseless": "~0.12.0",
-        "combined-stream": "~1.0.6",
-        "extend": "~3.0.2",
-        "forever-agent": "~0.6.1",
-        "form-data": "~2.3.2",
-        "har-validator": "~5.1.0",
-        "http-signature": "~1.2.0",
-        "is-typedarray": "~1.0.0",
-        "isstream": "~0.1.2",
-        "json-stringify-safe": "~5.0.1",
-        "mime-types": "~2.1.19",
-        "oauth-sign": "~0.9.0",
-        "performance-now": "^2.1.0",
-        "qs": "~6.5.2",
-        "safe-buffer": "^5.1.2",
-        "tough-cookie": "~2.4.3",
-        "tunnel-agent": "^0.6.0",
-        "uuid": "^3.3.2"
-      }
-    },
-    "require-directory": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
-      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
-      "dev": true
-    },
-    "require-main-filename": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
-      "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
-      "dev": true
-    },
-    "require-relative": {
-      "version": "0.8.7",
-      "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz",
-      "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=",
-      "dev": true
-    },
-    "resolve": {
-      "version": "1.10.0",
-      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz",
-      "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==",
-      "dev": true,
-      "requires": {
-        "path-parse": "^1.0.6"
-      }
-    },
-    "rimraf": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-      "dev": true,
-      "requires": {
-        "glob": "^7.1.3"
-      }
-    },
-    "rollup": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.0.2.tgz",
-      "integrity": "sha512-99VIc2DHm+HEhdla2ASH/LaomWS3v7RDANamD65w24TQTNVs3vtRM+oiFsP4KvUCri5+p5Q5xoXscUnIdE8gJA==",
-      "dev": true,
-      "requires": {
-        "fsevents": "~2.1.2"
-      }
-    },
-    "rollup-plugin-commonjs": {
-      "version": "10.1.0",
-      "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz",
-      "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==",
-      "dev": true,
-      "requires": {
-        "estree-walker": "^0.6.1",
-        "is-reference": "^1.1.2",
-        "magic-string": "^0.25.2",
-        "resolve": "^1.11.0",
-        "rollup-pluginutils": "^2.8.1"
+         }
       },
-      "dependencies": {
-        "resolve": {
-          "version": "1.15.1",
-          "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz",
-          "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==",
-          "dev": true,
-          "requires": {
-            "path-parse": "^1.0.6"
-          }
-        }
-      }
-    },
-    "rollup-plugin-copy-assets": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/rollup-plugin-copy-assets/-/rollup-plugin-copy-assets-2.0.1.tgz",
-      "integrity": "sha512-GfSvObeVcCmL1df22JNgdSVDmCP73ackhCfw5xE7sV/tKtdh79nwkwpHJ8JjeeAC5swfnLHHivFb7xPz85n8+g==",
-      "dev": true,
-      "requires": {
-        "fs-extra": "^7.0.1"
-      }
-    },
-    "rollup-plugin-node-resolve": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz",
-      "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==",
-      "dev": true,
-      "requires": {
-        "@types/resolve": "0.0.8",
-        "builtin-modules": "^3.1.0",
-        "is-module": "^1.0.0",
-        "resolve": "^1.11.1",
-        "rollup-pluginutils": "^2.8.1"
+      "forever-agent": {
+         "version": "0.6.1",
+         "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+         "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+         "dev": true
       },
-      "dependencies": {
-        "resolve": {
-          "version": "1.12.0",
-          "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
-          "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
-          "dev": true,
-          "requires": {
-            "path-parse": "^1.0.6"
-          }
-        }
-      }
-    },
-    "rollup-plugin-svelte": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-5.1.1.tgz",
-      "integrity": "sha512-wP3CnKHjR4fZUgNm5Iey7eItnxwnH/nAw568WJ8dpMSchBxxZ/DmKSx8e6h8k/B6SwG1wfGvWehadFJHcuFFSw==",
-      "dev": true,
-      "requires": {
-        "require-relative": "^0.8.7",
-        "rollup-pluginutils": "^2.3.3",
-        "sourcemap-codec": "^1.4.4"
-      }
-    },
-    "rollup-plugin-terser": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.2.0.tgz",
-      "integrity": "sha512-jQI+nYhtDBc9HFRBz8iGttQg7li9klmzR62RG2W2nN6hJ/FI2K2ItYQ7kJ7/zn+vs+BP1AEccmVRjRN989I+Nw==",
-      "dev": true,
-      "requires": {
-        "@babel/code-frame": "^7.5.5",
-        "jest-worker": "^24.9.0",
-        "rollup-pluginutils": "^2.8.2",
-        "serialize-javascript": "^2.1.2",
-        "terser": "^4.6.2"
+      "form-data": {
+         "version": "2.3.3",
+         "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
+         "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+         "dev": true,
+         "requires": {
+            "asynckit": "^0.4.0",
+            "combined-stream": "^1.0.6",
+            "mime-types": "^2.1.12"
+         }
       },
-      "dependencies": {
-        "rollup-pluginutils": {
-          "version": "2.8.2",
-          "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
-          "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
-          "dev": true,
-          "requires": {
-            "estree-walker": "^0.6.1"
-          }
-        }
-      }
-    },
-    "rollup-plugin-typescript2": {
-      "version": "0.26.0",
-      "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.26.0.tgz",
-      "integrity": "sha512-lUK7XZVG77tu8dmv1L/0LZFlavED/5Yo6e4iMMl6fdox/yKdj4IFRRPPJEXNdmEaT1nDQQeCi7b5IwKHffMNeg==",
-      "requires": {
-        "find-cache-dir": "^3.2.0",
-        "fs-extra": "8.1.0",
-        "resolve": "1.15.1",
-        "rollup-pluginutils": "2.8.2",
-        "tslib": "1.10.0"
-      },
-      "dependencies": {
-        "fs-extra": {
-          "version": "8.1.0",
-          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
-          "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
-          "requires": {
-            "graceful-fs": "^4.2.0",
+      "fs-extra": {
+         "version": "7.0.1",
+         "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
+         "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+         "dev": true,
+         "requires": {
+            "graceful-fs": "^4.1.2",
             "jsonfile": "^4.0.0",
             "universalify": "^0.1.0"
-          }
-        },
-        "graceful-fs": {
-          "version": "4.2.3",
-          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
-          "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
-        },
-        "resolve": {
-          "version": "1.15.1",
-          "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz",
-          "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==",
-          "requires": {
+         }
+      },
+      "fs.realpath": {
+         "version": "1.0.0",
+         "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+         "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+         "dev": true
+      },
+      "fsevents": {
+         "version": "2.1.2",
+         "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz",
+         "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==",
+         "dev": true,
+         "optional": true
+      },
+      "fstream": {
+         "version": "1.0.12",
+         "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
+         "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
+         "dev": true,
+         "requires": {
+            "graceful-fs": "^4.1.2",
+            "inherits": "~2.0.0",
+            "mkdirp": ">=0.5 0",
+            "rimraf": "2"
+         }
+      },
+      "function-bind": {
+         "version": "1.1.1",
+         "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+         "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+         "dev": true
+      },
+      "gauge": {
+         "version": "2.7.4",
+         "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
+         "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+         "dev": true,
+         "requires": {
+            "aproba": "^1.0.3",
+            "console-control-strings": "^1.0.0",
+            "has-unicode": "^2.0.0",
+            "object-assign": "^4.1.0",
+            "signal-exit": "^3.0.0",
+            "string-width": "^1.0.1",
+            "strip-ansi": "^3.0.1",
+            "wide-align": "^1.1.0"
+         }
+      },
+      "gaze": {
+         "version": "1.1.3",
+         "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
+         "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
+         "dev": true,
+         "requires": {
+            "globule": "^1.0.0"
+         }
+      },
+      "get-caller-file": {
+         "version": "1.0.3",
+         "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
+         "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
+         "dev": true
+      },
+      "get-port": {
+         "version": "3.2.0",
+         "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz",
+         "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=",
+         "dev": true
+      },
+      "get-stdin": {
+         "version": "4.0.1",
+         "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+         "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
+         "dev": true
+      },
+      "getpass": {
+         "version": "0.1.7",
+         "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+         "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+         "dev": true,
+         "requires": {
+            "assert-plus": "^1.0.0"
+         }
+      },
+      "glob": {
+         "version": "7.1.6",
+         "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+         "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+         "dev": true,
+         "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^3.0.4",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+         }
+      },
+      "globule": {
+         "version": "1.3.0",
+         "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.0.tgz",
+         "integrity": "sha512-YlD4kdMqRCQHrhVdonet4TdRtv1/sZKepvoxNT4Nrhrp5HI8XFfc8kFlGlBn2myBo80aGp8Eft259mbcUJhgSg==",
+         "dev": true,
+         "requires": {
+            "glob": "~7.1.1",
+            "lodash": "~4.17.10",
+            "minimatch": "~3.0.2"
+         }
+      },
+      "graceful-fs": {
+         "version": "4.1.15",
+         "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
+         "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA=="
+      },
+      "har-schema": {
+         "version": "2.0.0",
+         "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+         "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
+         "dev": true
+      },
+      "har-validator": {
+         "version": "5.1.3",
+         "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
+         "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
+         "dev": true,
+         "requires": {
+            "ajv": "^6.5.5",
+            "har-schema": "^2.0.0"
+         }
+      },
+      "has": {
+         "version": "1.0.3",
+         "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+         "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+         "dev": true,
+         "requires": {
+            "function-bind": "^1.1.1"
+         }
+      },
+      "has-ansi": {
+         "version": "2.0.0",
+         "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+         "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+         "dev": true,
+         "requires": {
+            "ansi-regex": "^2.0.0"
+         }
+      },
+      "has-flag": {
+         "version": "3.0.0",
+         "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+         "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+         "dev": true
+      },
+      "has-symbols": {
+         "version": "1.0.0",
+         "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
+         "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
+         "dev": true
+      },
+      "has-unicode": {
+         "version": "2.0.1",
+         "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+         "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
+         "dev": true
+      },
+      "hosted-git-info": {
+         "version": "2.7.1",
+         "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
+         "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
+         "dev": true
+      },
+      "http-signature": {
+         "version": "1.2.0",
+         "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+         "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+         "dev": true,
+         "requires": {
+            "assert-plus": "^1.0.0",
+            "jsprim": "^1.2.2",
+            "sshpk": "^1.7.0"
+         }
+      },
+      "ieee754": {
+         "version": "1.1.13",
+         "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
+         "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg=="
+      },
+      "in-publish": {
+         "version": "2.0.0",
+         "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz",
+         "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=",
+         "dev": true
+      },
+      "indent-string": {
+         "version": "2.1.0",
+         "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+         "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+         "dev": true,
+         "requires": {
+            "repeating": "^2.0.0"
+         }
+      },
+      "inflight": {
+         "version": "1.0.6",
+         "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+         "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+         "dev": true,
+         "requires": {
+            "once": "^1.3.0",
+            "wrappy": "1"
+         }
+      },
+      "inherits": {
+         "version": "2.0.4",
+         "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+         "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+         "dev": true
+      },
+      "invert-kv": {
+         "version": "1.0.0",
+         "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
+         "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
+         "dev": true
+      },
+      "is-arrayish": {
+         "version": "0.2.1",
+         "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+         "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+         "dev": true
+      },
+      "is-callable": {
+         "version": "1.1.4",
+         "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
+         "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
+         "dev": true
+      },
+      "is-date-object": {
+         "version": "1.0.1",
+         "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
+         "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
+         "dev": true
+      },
+      "is-finite": {
+         "version": "1.1.0",
+         "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz",
+         "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==",
+         "dev": 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=",
+         "dev": true,
+         "requires": {
+            "number-is-nan": "^1.0.0"
+         }
+      },
+      "is-module": {
+         "version": "1.0.0",
+         "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
+         "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=",
+         "dev": true
+      },
+      "is-reference": {
+         "version": "1.1.4",
+         "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz",
+         "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==",
+         "dev": true,
+         "requires": {
+            "@types/estree": "0.0.39"
+         },
+         "dependencies": {
+            "@types/estree": {
+               "version": "0.0.39",
+               "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
+               "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
+               "dev": true
+            }
+         }
+      },
+      "is-regex": {
+         "version": "1.0.4",
+         "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
+         "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+         "dev": true,
+         "requires": {
+            "has": "^1.0.1"
+         }
+      },
+      "is-symbol": {
+         "version": "1.0.2",
+         "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
+         "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
+         "dev": true,
+         "requires": {
+            "has-symbols": "^1.0.0"
+         }
+      },
+      "is-typedarray": {
+         "version": "1.0.0",
+         "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+         "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+         "dev": true
+      },
+      "is-utf8": {
+         "version": "0.2.1",
+         "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+         "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+         "dev": true
+      },
+      "isarray": {
+         "version": "1.0.0",
+         "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+         "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+         "dev": true
+      },
+      "isexe": {
+         "version": "2.0.0",
+         "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+         "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+         "dev": true
+      },
+      "isstream": {
+         "version": "0.1.2",
+         "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+         "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+         "dev": true
+      },
+      "jest-worker": {
+         "version": "24.9.0",
+         "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz",
+         "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==",
+         "dev": true,
+         "requires": {
+            "merge-stream": "^2.0.0",
+            "supports-color": "^6.1.0"
+         },
+         "dependencies": {
+            "supports-color": {
+               "version": "6.1.0",
+               "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+               "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+               "dev": true,
+               "requires": {
+                  "has-flag": "^3.0.0"
+               }
+            }
+         }
+      },
+      "js-base64": {
+         "version": "2.5.1",
+         "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz",
+         "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==",
+         "dev": true
+      },
+      "js-tokens": {
+         "version": "4.0.0",
+         "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+         "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+         "dev": true
+      },
+      "jsbn": {
+         "version": "0.1.1",
+         "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+         "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+         "dev": true
+      },
+      "json-parse-better-errors": {
+         "version": "1.0.2",
+         "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+         "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+         "dev": true
+      },
+      "json-schema": {
+         "version": "0.2.3",
+         "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+         "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+         "dev": true
+      },
+      "json-schema-traverse": {
+         "version": "0.4.1",
+         "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+         "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+         "dev": true
+      },
+      "json-stringify-safe": {
+         "version": "5.0.1",
+         "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+         "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+         "dev": true
+      },
+      "jsonfile": {
+         "version": "4.0.0",
+         "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+         "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+         "requires": {
+            "graceful-fs": "^4.1.6"
+         }
+      },
+      "jsonify": {
+         "version": "0.0.0",
+         "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+         "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
+         "dev": true
+      },
+      "jsprim": {
+         "version": "1.4.1",
+         "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+         "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+         "dev": true,
+         "requires": {
+            "assert-plus": "1.0.0",
+            "extsprintf": "1.3.0",
+            "json-schema": "0.2.3",
+            "verror": "1.10.0"
+         }
+      },
+      "kleur": {
+         "version": "3.0.3",
+         "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+         "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+         "dev": true
+      },
+      "lcid": {
+         "version": "1.0.0",
+         "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
+         "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+         "dev": true,
+         "requires": {
+            "invert-kv": "^1.0.0"
+         }
+      },
+      "load-json-file": {
+         "version": "4.0.0",
+         "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+         "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+         "dev": true,
+         "requires": {
+            "graceful-fs": "^4.1.2",
+            "parse-json": "^4.0.0",
+            "pify": "^3.0.0",
+            "strip-bom": "^3.0.0"
+         }
+      },
+      "local-access": {
+         "version": "1.0.1",
+         "resolved": "https://registry.npmjs.org/local-access/-/local-access-1.0.1.tgz",
+         "integrity": "sha512-ykt2pgN0aqIy6KQC1CqdWTWkmUwNgaOS6dcpHVjyBJONA+Xi7AtSB1vuxC/U/0tjIP3wcRudwQk1YYzUvzk2bA==",
+         "dev": true
+      },
+      "locate-path": {
+         "version": "5.0.0",
+         "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+         "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+         "requires": {
+            "p-locate": "^4.1.0"
+         }
+      },
+      "lodash": {
+         "version": "4.17.15",
+         "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+         "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
+         "dev": true
+      },
+      "loud-rejection": {
+         "version": "1.6.0",
+         "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+         "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+         "dev": true,
+         "requires": {
+            "currently-unhandled": "^0.4.1",
+            "signal-exit": "^3.0.0"
+         }
+      },
+      "lru-cache": {
+         "version": "4.1.5",
+         "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+         "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+         "dev": true,
+         "requires": {
+            "pseudomap": "^1.0.2",
+            "yallist": "^2.1.2"
+         }
+      },
+      "magic-string": {
+         "version": "0.25.6",
+         "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.6.tgz",
+         "integrity": "sha512-3a5LOMSGoCTH5rbqobC2HuDNRtE2glHZ8J7pK+QZYppyWA36yuNpsX994rIY2nCuyP7CZYy7lQq/X2jygiZ89g==",
+         "dev": true,
+         "requires": {
+            "sourcemap-codec": "^1.4.4"
+         }
+      },
+      "make-dir": {
+         "version": "3.0.2",
+         "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz",
+         "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==",
+         "requires": {
+            "semver": "^6.0.0"
+         },
+         "dependencies": {
+            "semver": {
+               "version": "6.3.0",
+               "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+               "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+            }
+         }
+      },
+      "make-error": {
+         "version": "1.3.5",
+         "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz",
+         "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==",
+         "dev": true
+      },
+      "map-obj": {
+         "version": "1.0.1",
+         "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+         "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+         "dev": true
+      },
+      "memorystream": {
+         "version": "0.3.1",
+         "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
+         "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=",
+         "dev": true
+      },
+      "meow": {
+         "version": "3.7.0",
+         "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+         "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+         "dev": true,
+         "requires": {
+            "camelcase-keys": "^2.0.0",
+            "decamelize": "^1.1.2",
+            "loud-rejection": "^1.0.0",
+            "map-obj": "^1.0.1",
+            "minimist": "^1.1.3",
+            "normalize-package-data": "^2.3.4",
+            "object-assign": "^4.0.1",
+            "read-pkg-up": "^1.0.1",
+            "redent": "^1.0.0",
+            "trim-newlines": "^1.0.0"
+         }
+      },
+      "merge-stream": {
+         "version": "2.0.0",
+         "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+         "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+         "dev": true
+      },
+      "mime": {
+         "version": "2.4.4",
+         "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
+         "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==",
+         "dev": true
+      },
+      "mime-db": {
+         "version": "1.43.0",
+         "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz",
+         "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==",
+         "dev": true
+      },
+      "mime-types": {
+         "version": "2.1.26",
+         "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz",
+         "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==",
+         "dev": true,
+         "requires": {
+            "mime-db": "1.43.0"
+         }
+      },
+      "minimatch": {
+         "version": "3.0.4",
+         "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+         "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+         "dev": true,
+         "requires": {
+            "brace-expansion": "^1.1.7"
+         }
+      },
+      "minimist": {
+         "version": "1.2.0",
+         "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+         "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+         "dev": true
+      },
+      "mkdirp": {
+         "version": "0.5.1",
+         "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+         "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+         "dev": true,
+         "requires": {
+            "minimist": "0.0.8"
+         },
+         "dependencies": {
+            "minimist": {
+               "version": "0.0.8",
+               "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+               "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+               "dev": true
+            }
+         }
+      },
+      "mri": {
+         "version": "1.1.4",
+         "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.4.tgz",
+         "integrity": "sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w==",
+         "dev": true
+      },
+      "nan": {
+         "version": "2.14.0",
+         "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
+         "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
+         "dev": true
+      },
+      "nice-try": {
+         "version": "1.0.5",
+         "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+         "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+         "dev": true
+      },
+      "node-gyp": {
+         "version": "3.8.0",
+         "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",
+         "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==",
+         "dev": true,
+         "requires": {
+            "fstream": "^1.0.0",
+            "glob": "^7.0.3",
+            "graceful-fs": "^4.1.2",
+            "mkdirp": "^0.5.0",
+            "nopt": "2 || 3",
+            "npmlog": "0 || 1 || 2 || 3 || 4",
+            "osenv": "0",
+            "request": "^2.87.0",
+            "rimraf": "2",
+            "semver": "~5.3.0",
+            "tar": "^2.0.0",
+            "which": "1"
+         },
+         "dependencies": {
+            "semver": {
+               "version": "5.3.0",
+               "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+               "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
+               "dev": true
+            }
+         }
+      },
+      "node-sass": {
+         "version": "4.13.1",
+         "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.13.1.tgz",
+         "integrity": "sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw==",
+         "dev": true,
+         "requires": {
+            "async-foreach": "^0.1.3",
+            "chalk": "^1.1.1",
+            "cross-spawn": "^3.0.0",
+            "gaze": "^1.0.0",
+            "get-stdin": "^4.0.1",
+            "glob": "^7.0.3",
+            "in-publish": "^2.0.0",
+            "lodash": "^4.17.15",
+            "meow": "^3.7.0",
+            "mkdirp": "^0.5.1",
+            "nan": "^2.13.2",
+            "node-gyp": "^3.8.0",
+            "npmlog": "^4.0.0",
+            "request": "^2.88.0",
+            "sass-graph": "^2.2.4",
+            "stdout-stream": "^1.4.0",
+            "true-case-path": "^1.0.2"
+         },
+         "dependencies": {
+            "ansi-styles": {
+               "version": "2.2.1",
+               "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+               "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+               "dev": true
+            },
+            "chalk": {
+               "version": "1.1.3",
+               "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+               "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+               "dev": true,
+               "requires": {
+                  "ansi-styles": "^2.2.1",
+                  "escape-string-regexp": "^1.0.2",
+                  "has-ansi": "^2.0.0",
+                  "strip-ansi": "^3.0.0",
+                  "supports-color": "^2.0.0"
+               }
+            },
+            "cross-spawn": {
+               "version": "3.0.1",
+               "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
+               "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
+               "dev": true,
+               "requires": {
+                  "lru-cache": "^4.0.1",
+                  "which": "^1.2.9"
+               }
+            },
+            "supports-color": {
+               "version": "2.0.0",
+               "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+               "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+               "dev": true
+            }
+         }
+      },
+      "nopt": {
+         "version": "3.0.6",
+         "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+         "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
+         "dev": true,
+         "requires": {
+            "abbrev": "1"
+         }
+      },
+      "normalize-package-data": {
+         "version": "2.5.0",
+         "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+         "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+         "dev": true,
+         "requires": {
+            "hosted-git-info": "^2.1.4",
+            "resolve": "^1.10.0",
+            "semver": "2 || 3 || 4 || 5",
+            "validate-npm-package-license": "^3.0.1"
+         }
+      },
+      "npm-run-all": {
+         "version": "4.1.5",
+         "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz",
+         "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==",
+         "dev": true,
+         "requires": {
+            "ansi-styles": "^3.2.1",
+            "chalk": "^2.4.1",
+            "cross-spawn": "^6.0.5",
+            "memorystream": "^0.3.1",
+            "minimatch": "^3.0.4",
+            "pidtree": "^0.3.0",
+            "read-pkg": "^3.0.0",
+            "shell-quote": "^1.6.1",
+            "string.prototype.padend": "^3.0.0"
+         }
+      },
+      "npmlog": {
+         "version": "4.1.2",
+         "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
+         "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+         "dev": true,
+         "requires": {
+            "are-we-there-yet": "~1.1.2",
+            "console-control-strings": "~1.1.0",
+            "gauge": "~2.7.3",
+            "set-blocking": "~2.0.0"
+         }
+      },
+      "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=",
+         "dev": true
+      },
+      "oauth-sign": {
+         "version": "0.9.0",
+         "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+         "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
+         "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=",
+         "dev": true
+      },
+      "object-keys": {
+         "version": "1.1.1",
+         "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+         "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+         "dev": true
+      },
+      "once": {
+         "version": "1.4.0",
+         "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+         "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+         "dev": true,
+         "requires": {
+            "wrappy": "1"
+         }
+      },
+      "os-homedir": {
+         "version": "1.0.2",
+         "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+         "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+         "dev": true
+      },
+      "os-locale": {
+         "version": "1.4.0",
+         "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
+         "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+         "dev": true,
+         "requires": {
+            "lcid": "^1.0.0"
+         }
+      },
+      "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=",
+         "dev": true
+      },
+      "osenv": {
+         "version": "0.1.5",
+         "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
+         "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+         "dev": true,
+         "requires": {
+            "os-homedir": "^1.0.0",
+            "os-tmpdir": "^1.0.0"
+         }
+      },
+      "p-limit": {
+         "version": "2.2.2",
+         "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz",
+         "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==",
+         "requires": {
+            "p-try": "^2.0.0"
+         }
+      },
+      "p-locate": {
+         "version": "4.1.0",
+         "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+         "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+         "requires": {
+            "p-limit": "^2.2.0"
+         }
+      },
+      "p-try": {
+         "version": "2.2.0",
+         "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+         "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
+      },
+      "parse-json": {
+         "version": "4.0.0",
+         "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+         "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+         "dev": true,
+         "requires": {
+            "error-ex": "^1.3.1",
+            "json-parse-better-errors": "^1.0.1"
+         }
+      },
+      "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"
+         }
+      },
+      "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=",
+         "dev": true
+      },
+      "path-key": {
+         "version": "2.0.1",
+         "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+         "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+         "dev": true
+      },
+      "path-parse": {
+         "version": "1.0.6",
+         "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+         "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
+      },
+      "path-type": {
+         "version": "3.0.0",
+         "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+         "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+         "dev": true,
+         "requires": {
+            "pify": "^3.0.0"
+         }
+      },
+      "performance-now": {
+         "version": "2.1.0",
+         "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+         "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
+         "dev": true
+      },
+      "pidtree": {
+         "version": "0.3.0",
+         "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.0.tgz",
+         "integrity": "sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg==",
+         "dev": true
+      },
+      "pify": {
+         "version": "3.0.0",
+         "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+         "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+         "dev": true
+      },
+      "pinkie": {
+         "version": "2.0.4",
+         "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+         "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+         "dev": true
+      },
+      "pinkie-promise": {
+         "version": "2.0.1",
+         "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+         "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+         "dev": true,
+         "requires": {
+            "pinkie": "^2.0.0"
+         }
+      },
+      "pkg-dir": {
+         "version": "4.2.0",
+         "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+         "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+         "requires": {
+            "find-up": "^4.0.0"
+         },
+         "dependencies": {
+            "find-up": {
+               "version": "4.1.0",
+               "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+               "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+               "requires": {
+                  "locate-path": "^5.0.0",
+                  "path-exists": "^4.0.0"
+               }
+            },
+            "path-exists": {
+               "version": "4.0.0",
+               "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+               "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
+            }
+         }
+      },
+      "pretty-bytes": {
+         "version": "5.2.0",
+         "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.2.0.tgz",
+         "integrity": "sha512-ujANBhiUsl9AhREUDUEY1GPOharMGm8x8juS7qOHybcLi7XsKfrYQ88hSly1l2i0klXHTDYrlL8ihMCG55Dc3w=="
+      },
+      "process-nextick-args": {
+         "version": "2.0.1",
+         "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+         "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+         "dev": true
+      },
+      "pseudomap": {
+         "version": "1.0.2",
+         "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+         "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+         "dev": true
+      },
+      "psl": {
+         "version": "1.7.0",
+         "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz",
+         "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==",
+         "dev": true
+      },
+      "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
+      },
+      "qs": {
+         "version": "6.5.2",
+         "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
+         "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
+         "dev": true
+      },
+      "read-pkg": {
+         "version": "3.0.0",
+         "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+         "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+         "dev": true,
+         "requires": {
+            "load-json-file": "^4.0.0",
+            "normalize-package-data": "^2.3.2",
+            "path-type": "^3.0.0"
+         }
+      },
+      "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": {
+            "load-json-file": {
+               "version": "1.1.0",
+               "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+               "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+               "dev": true,
+               "requires": {
+                  "graceful-fs": "^4.1.2",
+                  "parse-json": "^2.2.0",
+                  "pify": "^2.0.0",
+                  "pinkie-promise": "^2.0.0",
+                  "strip-bom": "^2.0.0"
+               }
+            },
+            "parse-json": {
+               "version": "2.2.0",
+               "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+               "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+               "dev": true,
+               "requires": {
+                  "error-ex": "^1.2.0"
+               }
+            },
+            "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": {
+               "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"
+               }
+            },
+            "strip-bom": {
+               "version": "2.0.0",
+               "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+               "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+               "dev": true,
+               "requires": {
+                  "is-utf8": "^0.2.0"
+               }
+            }
+         }
+      },
+      "readable-stream": {
+         "version": "2.3.7",
+         "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+         "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+         "dev": true,
+         "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.3",
+            "isarray": "~1.0.0",
+            "process-nextick-args": "~2.0.0",
+            "safe-buffer": "~5.1.1",
+            "string_decoder": "~1.1.1",
+            "util-deprecate": "~1.0.1"
+         }
+      },
+      "redent": {
+         "version": "1.0.0",
+         "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+         "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+         "dev": true,
+         "requires": {
+            "indent-string": "^2.1.0",
+            "strip-indent": "^1.0.1"
+         }
+      },
+      "repeating": {
+         "version": "2.0.1",
+         "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+         "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+         "dev": true,
+         "requires": {
+            "is-finite": "^1.0.0"
+         }
+      },
+      "request": {
+         "version": "2.88.0",
+         "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
+         "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
+         "dev": true,
+         "requires": {
+            "aws-sign2": "~0.7.0",
+            "aws4": "^1.8.0",
+            "caseless": "~0.12.0",
+            "combined-stream": "~1.0.6",
+            "extend": "~3.0.2",
+            "forever-agent": "~0.6.1",
+            "form-data": "~2.3.2",
+            "har-validator": "~5.1.0",
+            "http-signature": "~1.2.0",
+            "is-typedarray": "~1.0.0",
+            "isstream": "~0.1.2",
+            "json-stringify-safe": "~5.0.1",
+            "mime-types": "~2.1.19",
+            "oauth-sign": "~0.9.0",
+            "performance-now": "^2.1.0",
+            "qs": "~6.5.2",
+            "safe-buffer": "^5.1.2",
+            "tough-cookie": "~2.4.3",
+            "tunnel-agent": "^0.6.0",
+            "uuid": "^3.3.2"
+         }
+      },
+      "require-directory": {
+         "version": "2.1.1",
+         "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+         "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+         "dev": true
+      },
+      "require-main-filename": {
+         "version": "1.0.1",
+         "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
+         "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+         "dev": true
+      },
+      "require-relative": {
+         "version": "0.8.7",
+         "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz",
+         "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=",
+         "dev": true
+      },
+      "resolve": {
+         "version": "1.10.0",
+         "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz",
+         "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==",
+         "dev": true,
+         "requires": {
             "path-parse": "^1.0.6"
-          }
-        },
-        "rollup-pluginutils": {
-          "version": "2.8.2",
-          "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
-          "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
-          "requires": {
+         }
+      },
+      "rimraf": {
+         "version": "2.7.1",
+         "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+         "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+         "dev": true,
+         "requires": {
+            "glob": "^7.1.3"
+         }
+      },
+      "rollup": {
+         "version": "2.0.2",
+         "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.0.2.tgz",
+         "integrity": "sha512-99VIc2DHm+HEhdla2ASH/LaomWS3v7RDANamD65w24TQTNVs3vtRM+oiFsP4KvUCri5+p5Q5xoXscUnIdE8gJA==",
+         "dev": true,
+         "requires": {
+            "fsevents": "~2.1.2"
+         }
+      },
+      "rollup-plugin-commonjs": {
+         "version": "10.1.0",
+         "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz",
+         "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==",
+         "dev": true,
+         "requires": {
+            "estree-walker": "^0.6.1",
+            "is-reference": "^1.1.2",
+            "magic-string": "^0.25.2",
+            "resolve": "^1.11.0",
+            "rollup-pluginutils": "^2.8.1"
+         },
+         "dependencies": {
+            "resolve": {
+               "version": "1.15.1",
+               "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz",
+               "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==",
+               "dev": true,
+               "requires": {
+                  "path-parse": "^1.0.6"
+               }
+            }
+         }
+      },
+      "rollup-plugin-copy-assets": {
+         "version": "2.0.1",
+         "resolved": "https://registry.npmjs.org/rollup-plugin-copy-assets/-/rollup-plugin-copy-assets-2.0.1.tgz",
+         "integrity": "sha512-GfSvObeVcCmL1df22JNgdSVDmCP73ackhCfw5xE7sV/tKtdh79nwkwpHJ8JjeeAC5swfnLHHivFb7xPz85n8+g==",
+         "dev": true,
+         "requires": {
+            "fs-extra": "^7.0.1"
+         }
+      },
+      "rollup-plugin-node-resolve": {
+         "version": "5.2.0",
+         "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz",
+         "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==",
+         "dev": true,
+         "requires": {
+            "@types/resolve": "0.0.8",
+            "builtin-modules": "^3.1.0",
+            "is-module": "^1.0.0",
+            "resolve": "^1.11.1",
+            "rollup-pluginutils": "^2.8.1"
+         },
+         "dependencies": {
+            "resolve": {
+               "version": "1.12.0",
+               "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
+               "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
+               "dev": true,
+               "requires": {
+                  "path-parse": "^1.0.6"
+               }
+            }
+         }
+      },
+      "rollup-plugin-svelte": {
+         "version": "5.1.1",
+         "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-5.1.1.tgz",
+         "integrity": "sha512-wP3CnKHjR4fZUgNm5Iey7eItnxwnH/nAw568WJ8dpMSchBxxZ/DmKSx8e6h8k/B6SwG1wfGvWehadFJHcuFFSw==",
+         "dev": true,
+         "requires": {
+            "require-relative": "^0.8.7",
+            "rollup-pluginutils": "^2.3.3",
+            "sourcemap-codec": "^1.4.4"
+         }
+      },
+      "rollup-plugin-terser": {
+         "version": "5.2.0",
+         "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.2.0.tgz",
+         "integrity": "sha512-jQI+nYhtDBc9HFRBz8iGttQg7li9klmzR62RG2W2nN6hJ/FI2K2ItYQ7kJ7/zn+vs+BP1AEccmVRjRN989I+Nw==",
+         "dev": true,
+         "requires": {
+            "@babel/code-frame": "^7.5.5",
+            "jest-worker": "^24.9.0",
+            "rollup-pluginutils": "^2.8.2",
+            "serialize-javascript": "^2.1.2",
+            "terser": "^4.6.2"
+         },
+         "dependencies": {
+            "rollup-pluginutils": {
+               "version": "2.8.2",
+               "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
+               "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
+               "dev": true,
+               "requires": {
+                  "estree-walker": "^0.6.1"
+               }
+            }
+         }
+      },
+      "rollup-plugin-typescript2": {
+         "version": "0.26.0",
+         "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.26.0.tgz",
+         "integrity": "sha512-lUK7XZVG77tu8dmv1L/0LZFlavED/5Yo6e4iMMl6fdox/yKdj4IFRRPPJEXNdmEaT1nDQQeCi7b5IwKHffMNeg==",
+         "requires": {
+            "find-cache-dir": "^3.2.0",
+            "fs-extra": "8.1.0",
+            "resolve": "1.15.1",
+            "rollup-pluginutils": "2.8.2",
+            "tslib": "1.10.0"
+         },
+         "dependencies": {
+            "fs-extra": {
+               "version": "8.1.0",
+               "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+               "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+               "requires": {
+                  "graceful-fs": "^4.2.0",
+                  "jsonfile": "^4.0.0",
+                  "universalify": "^0.1.0"
+               }
+            },
+            "graceful-fs": {
+               "version": "4.2.3",
+               "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
+               "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
+            },
+            "resolve": {
+               "version": "1.15.1",
+               "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz",
+               "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==",
+               "requires": {
+                  "path-parse": "^1.0.6"
+               }
+            },
+            "rollup-pluginutils": {
+               "version": "2.8.2",
+               "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
+               "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
+               "requires": {
+                  "estree-walker": "^0.6.1"
+               }
+            }
+         }
+      },
+      "rollup-pluginutils": {
+         "version": "2.8.1",
+         "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz",
+         "integrity": "sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg==",
+         "dev": true,
+         "requires": {
             "estree-walker": "^0.6.1"
-          }
-        }
-      }
-    },
-    "rollup-pluginutils": {
-      "version": "2.8.1",
-      "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz",
-      "integrity": "sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg==",
-      "dev": true,
-      "requires": {
-        "estree-walker": "^0.6.1"
-      }
-    },
-    "sade": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/sade/-/sade-1.7.0.tgz",
-      "integrity": "sha512-HSkPpZzN7q4EFN5PVW8nTfDn1rJZh4sKbPQqz33AXokIo6SMDeVJ3RA4e0ZASlnMK6PywEMZxKXudEn5dxSWew==",
-      "dev": true,
-      "requires": {
-        "mri": "^1.1.0"
-      }
-    },
-    "safe-buffer": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
-      "dev": true
-    },
-    "safer-buffer": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
-      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
-      "dev": true
-    },
-    "sass-graph": {
-      "version": "2.2.4",
-      "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz",
-      "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=",
-      "dev": true,
-      "requires": {
-        "glob": "^7.0.0",
-        "lodash": "^4.0.0",
-        "scss-tokenizer": "^0.2.3",
-        "yargs": "^7.0.0"
-      }
-    },
-    "scss-tokenizer": {
-      "version": "0.2.3",
-      "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
-      "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
-      "dev": true,
-      "requires": {
-        "js-base64": "^2.1.8",
-        "source-map": "^0.4.2"
-      }
-    },
-    "semver": {
-      "version": "5.7.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
-      "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
-      "dev": true
-    },
-    "serialize-javascript": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz",
-      "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==",
-      "dev": true
-    },
-    "set-blocking": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
-      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
-      "dev": true
-    },
-    "shebang-command": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
-      "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
-      "dev": true,
-      "requires": {
-        "shebang-regex": "^1.0.0"
-      }
-    },
-    "shebang-regex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
-      "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
-      "dev": true
-    },
-    "shell-quote": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
-      "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
-      "dev": true,
-      "requires": {
-        "array-filter": "~0.0.0",
-        "array-map": "~0.0.0",
-        "array-reduce": "~0.0.0",
-        "jsonify": "~0.0.0"
-      }
-    },
-    "signal-exit": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
-      "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
-      "dev": true
-    },
-    "sirv": {
-      "version": "0.4.2",
-      "resolved": "https://registry.npmjs.org/sirv/-/sirv-0.4.2.tgz",
-      "integrity": "sha512-dQbZnsMaIiTQPZmbGmktz+c74zt/hyrJEB4tdp2Jj0RNv9J6B/OWR5RyrZEvIn9fyh9Zlg2OlE2XzKz6wMKGAw==",
-      "dev": true,
-      "requires": {
-        "@polka/url": "^0.5.0",
-        "mime": "^2.3.1"
-      }
-    },
-    "sirv-cli": {
-      "version": "0.4.5",
-      "resolved": "https://registry.npmjs.org/sirv-cli/-/sirv-cli-0.4.5.tgz",
-      "integrity": "sha512-Fl6icSm0EwPrXSGid2xphMp//WNTSX2yENRAGnJuuZNmdc8LvE/BtdZD3MPn28ifAfDqTMwbB3dpcZojAIOiBg==",
-      "dev": true,
-      "requires": {
-        "console-clear": "^1.1.0",
-        "get-port": "^3.2.0",
-        "kleur": "^3.0.0",
-        "local-access": "^1.0.1",
-        "sade": "^1.4.0",
-        "sirv": "^0.4.2",
-        "tinydate": "^1.0.0"
-      }
-    },
-    "source-map": {
-      "version": "0.4.4",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
-      "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
-      "dev": true,
-      "requires": {
-        "amdefine": ">=0.0.4"
-      }
-    },
-    "source-map-support": {
-      "version": "0.5.16",
-      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
-      "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
-      "dev": true,
-      "requires": {
-        "buffer-from": "^1.0.0",
-        "source-map": "^0.6.0"
+         }
       },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
-    },
-    "sourcemap-codec": {
-      "version": "1.4.8",
-      "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
-      "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
-      "dev": true
-    },
-    "spdx-correct": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
-      "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
-      "dev": true,
-      "requires": {
-        "spdx-expression-parse": "^3.0.0",
-        "spdx-license-ids": "^3.0.0"
-      }
-    },
-    "spdx-exceptions": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
-      "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
-      "dev": true
-    },
-    "spdx-expression-parse": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
-      "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
-      "dev": true,
-      "requires": {
-        "spdx-exceptions": "^2.1.0",
-        "spdx-license-ids": "^3.0.0"
-      }
-    },
-    "spdx-license-ids": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz",
-      "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==",
-      "dev": true
-    },
-    "sshpk": {
-      "version": "1.16.1",
-      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
-      "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
-      "dev": true,
-      "requires": {
-        "asn1": "~0.2.3",
-        "assert-plus": "^1.0.0",
-        "bcrypt-pbkdf": "^1.0.0",
-        "dashdash": "^1.12.0",
-        "ecc-jsbn": "~0.1.1",
-        "getpass": "^0.1.1",
-        "jsbn": "~0.1.0",
-        "safer-buffer": "^2.0.2",
-        "tweetnacl": "~0.14.0"
-      }
-    },
-    "stdout-stream": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz",
-      "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==",
-      "dev": true,
-      "requires": {
-        "readable-stream": "^2.0.1"
-      }
-    },
-    "string-width": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-      "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
-      "dev": true,
-      "requires": {
-        "code-point-at": "^1.0.0",
-        "is-fullwidth-code-point": "^1.0.0",
-        "strip-ansi": "^3.0.0"
-      }
-    },
-    "string.prototype.padend": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz",
-      "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=",
-      "dev": true,
-      "requires": {
-        "define-properties": "^1.1.2",
-        "es-abstract": "^1.4.3",
-        "function-bind": "^1.0.2"
-      }
-    },
-    "string_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==",
-      "dev": true,
-      "requires": {
-        "safe-buffer": "~5.1.0"
-      }
-    },
-    "strip-ansi": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
-      "dev": true,
-      "requires": {
-        "ansi-regex": "^2.0.0"
-      }
-    },
-    "strip-bom": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
-      "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
-      "dev": true
-    },
-    "strip-indent": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
-      "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
-      "dev": true,
-      "requires": {
-        "get-stdin": "^4.0.1"
-      }
-    },
-    "supports-color": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
-      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
-      "dev": true,
-      "requires": {
-        "has-flag": "^3.0.0"
-      }
-    },
-    "svelte": {
-      "version": "3.19.2",
-      "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.19.2.tgz",
-      "integrity": "sha512-Jswg065u8R9QYcN0rdpTQSFIr0hFq7YUzcPpEY6ZpFSAWkJKZG9AJvHE1d8+NJDTfr7SzKrO6EYssYYkUmszpA==",
-      "dev": true
-    },
-    "svelte-preprocess-filter": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/svelte-preprocess-filter/-/svelte-preprocess-filter-1.0.0.tgz",
-      "integrity": "sha512-92innv59nyEx24xbfcSurB5ocwC8qFdDtGli/JVMHzJsxyvV2yjQKIcbUqU9VIV5mKUWO2PoY93nncS2yF4ULQ==",
-      "dev": true
-    },
-    "svelte-preprocess-sass": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/svelte-preprocess-sass/-/svelte-preprocess-sass-0.2.0.tgz",
-      "integrity": "sha512-xcjwihO9hhd5W9hCSFKv1iBc8XhMif50IPP9Qu2G8IaxVaOoBUWeZu21Qu26tOw2gtv44/3p00eLrxGzLWyCLg==",
-      "dev": true,
-      "requires": {
-        "svelte-preprocess-filter": "^1.0.0"
-      }
-    },
-    "tar": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz",
-      "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==",
-      "dev": true,
-      "requires": {
-        "block-stream": "*",
-        "fstream": "^1.0.12",
-        "inherits": "2"
-      }
-    },
-    "terser": {
-      "version": "4.6.3",
-      "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.3.tgz",
-      "integrity": "sha512-Lw+ieAXmY69d09IIc/yqeBqXpEQIpDGZqT34ui1QWXIUpR2RjbqEkT8X7Lgex19hslSqcWM5iMN2kM11eMsESQ==",
-      "dev": true,
-      "requires": {
-        "commander": "^2.20.0",
-        "source-map": "~0.6.1",
-        "source-map-support": "~0.5.12"
+      "sade": {
+         "version": "1.7.0",
+         "resolved": "https://registry.npmjs.org/sade/-/sade-1.7.0.tgz",
+         "integrity": "sha512-HSkPpZzN7q4EFN5PVW8nTfDn1rJZh4sKbPQqz33AXokIo6SMDeVJ3RA4e0ZASlnMK6PywEMZxKXudEn5dxSWew==",
+         "dev": true,
+         "requires": {
+            "mri": "^1.1.0"
+         }
       },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
-    },
-    "tinydate": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/tinydate/-/tinydate-1.2.0.tgz",
-      "integrity": "sha512-3GwPk8VhDFnUZ2TrgkhXJs6hcMAIIw4x/xkz+ayK6dGoQmp2nUwKzBXK0WnMsqkh6vfUhpqQicQF3rbshfyJkg==",
-      "dev": true
-    },
-    "tough-cookie": {
-      "version": "2.4.3",
-      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
-      "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
-      "dev": true,
-      "requires": {
-        "psl": "^1.1.24",
-        "punycode": "^1.4.1"
+      "safe-buffer": {
+         "version": "5.1.2",
+         "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+         "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+         "dev": true
       },
-      "dependencies": {
-        "punycode": {
-          "version": "1.4.1",
-          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
-          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
-          "dev": true
-        }
-      }
-    },
-    "trim-newlines": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
-      "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
-      "dev": true
-    },
-    "true-case-path": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz",
-      "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==",
-      "dev": true,
-      "requires": {
-        "glob": "^7.1.2"
-      }
-    },
-    "ts-node": {
-      "version": "8.6.2",
-      "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.6.2.tgz",
-      "integrity": "sha512-4mZEbofxGqLL2RImpe3zMJukvEvcO1XP8bj8ozBPySdCUXEcU5cIRwR0aM3R+VoZq7iXc8N86NC0FspGRqP4gg==",
-      "dev": true,
-      "requires": {
-        "arg": "^4.1.0",
-        "diff": "^4.0.1",
-        "make-error": "^1.1.1",
-        "source-map-support": "^0.5.6",
-        "yn": "3.1.1"
-      }
-    },
-    "tslib": {
-      "version": "1.10.0",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
-      "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ=="
-    },
-    "tunnel-agent": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
-      "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
-      "dev": true,
-      "requires": {
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "tweetnacl": {
-      "version": "0.14.5",
-      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
-      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
-      "dev": true
-    },
-    "typescript": {
-      "version": "3.8.3",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz",
-      "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==",
-      "dev": true
-    },
-    "universalify": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
-      "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
-    },
-    "uri-js": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
-      "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
-      "dev": true,
-      "requires": {
-        "punycode": "^2.1.0"
-      }
-    },
-    "util-deprecate": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
-      "dev": true
-    },
-    "uuid": {
-      "version": "3.4.0",
-      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
-      "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
-      "dev": true
-    },
-    "validate-npm-package-license": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
-      "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
-      "dev": true,
-      "requires": {
-        "spdx-correct": "^3.0.0",
-        "spdx-expression-parse": "^3.0.0"
-      }
-    },
-    "verror": {
-      "version": "1.10.0",
-      "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
-      "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
-      "dev": true,
-      "requires": {
-        "assert-plus": "^1.0.0",
-        "core-util-is": "1.0.2",
-        "extsprintf": "^1.2.0"
-      }
-    },
-    "what-the-pack": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/what-the-pack/-/what-the-pack-2.0.3.tgz",
-      "integrity": "sha512-vJFrS6U6acWUgkKu9dLuMsQnnHEzIpop1VDMc142h+zU+jUcS+FZlRO/BDJ9/S9cvp2sQWygImBDwl0WN9aadw==",
-      "requires": {
-        "buffer": "^5.2.1",
-        "pretty-bytes": "^5.1.0"
-      }
-    },
-    "which": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
-      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
-      "dev": true,
-      "requires": {
-        "isexe": "^2.0.0"
-      }
-    },
-    "which-module": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
-      "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
-      "dev": true
-    },
-    "wide-align": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
-      "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
-      "dev": true,
-      "requires": {
-        "string-width": "^1.0.2 || 2"
-      }
-    },
-    "wrap-ansi": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
-      "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
-      "dev": true,
-      "requires": {
-        "string-width": "^1.0.1",
-        "strip-ansi": "^3.0.1"
-      }
-    },
-    "wrappy": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
-      "dev": true
-    },
-    "y18n": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
-      "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
-      "dev": true
-    },
-    "yallist": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
-      "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
-      "dev": true
-    },
-    "yargs": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",
-      "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
-      "dev": true,
-      "requires": {
-        "camelcase": "^3.0.0",
-        "cliui": "^3.2.0",
-        "decamelize": "^1.1.1",
-        "get-caller-file": "^1.0.1",
-        "os-locale": "^1.4.0",
-        "read-pkg-up": "^1.0.1",
-        "require-directory": "^2.1.1",
-        "require-main-filename": "^1.0.1",
-        "set-blocking": "^2.0.0",
-        "string-width": "^1.0.2",
-        "which-module": "^1.0.0",
-        "y18n": "^3.2.1",
-        "yargs-parser": "^5.0.0"
+      "safer-buffer": {
+         "version": "2.1.2",
+         "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+         "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+         "dev": true
       },
-      "dependencies": {
-        "camelcase": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
-          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
-          "dev": true
-        }
-      }
-    },
-    "yargs-parser": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz",
-      "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=",
-      "dev": true,
-      "requires": {
-        "camelcase": "^3.0.0"
+      "sass-graph": {
+         "version": "2.2.4",
+         "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz",
+         "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=",
+         "dev": true,
+         "requires": {
+            "glob": "^7.0.0",
+            "lodash": "^4.0.0",
+            "scss-tokenizer": "^0.2.3",
+            "yargs": "^7.0.0"
+         }
       },
-      "dependencies": {
-        "camelcase": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
-          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
-          "dev": true
-        }
+      "scss-tokenizer": {
+         "version": "0.2.3",
+         "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
+         "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
+         "dev": true,
+         "requires": {
+            "js-base64": "^2.1.8",
+            "source-map": "^0.4.2"
+         }
+      },
+      "semver": {
+         "version": "5.7.0",
+         "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
+         "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
+         "dev": true
+      },
+      "serialize-javascript": {
+         "version": "2.1.2",
+         "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz",
+         "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==",
+         "dev": true
+      },
+      "set-blocking": {
+         "version": "2.0.0",
+         "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+         "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+         "dev": true
+      },
+      "shebang-command": {
+         "version": "1.2.0",
+         "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+         "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+         "dev": true,
+         "requires": {
+            "shebang-regex": "^1.0.0"
+         }
+      },
+      "shebang-regex": {
+         "version": "1.0.0",
+         "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+         "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+         "dev": true
+      },
+      "shell-quote": {
+         "version": "1.6.1",
+         "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
+         "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
+         "dev": true,
+         "requires": {
+            "array-filter": "~0.0.0",
+            "array-map": "~0.0.0",
+            "array-reduce": "~0.0.0",
+            "jsonify": "~0.0.0"
+         }
+      },
+      "signal-exit": {
+         "version": "3.0.2",
+         "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+         "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+         "dev": true
+      },
+      "sirv": {
+         "version": "0.4.2",
+         "resolved": "https://registry.npmjs.org/sirv/-/sirv-0.4.2.tgz",
+         "integrity": "sha512-dQbZnsMaIiTQPZmbGmktz+c74zt/hyrJEB4tdp2Jj0RNv9J6B/OWR5RyrZEvIn9fyh9Zlg2OlE2XzKz6wMKGAw==",
+         "dev": true,
+         "requires": {
+            "@polka/url": "^0.5.0",
+            "mime": "^2.3.1"
+         }
+      },
+      "sirv-cli": {
+         "version": "0.4.5",
+         "resolved": "https://registry.npmjs.org/sirv-cli/-/sirv-cli-0.4.5.tgz",
+         "integrity": "sha512-Fl6icSm0EwPrXSGid2xphMp//WNTSX2yENRAGnJuuZNmdc8LvE/BtdZD3MPn28ifAfDqTMwbB3dpcZojAIOiBg==",
+         "dev": true,
+         "requires": {
+            "console-clear": "^1.1.0",
+            "get-port": "^3.2.0",
+            "kleur": "^3.0.0",
+            "local-access": "^1.0.1",
+            "sade": "^1.4.0",
+            "sirv": "^0.4.2",
+            "tinydate": "^1.0.0"
+         }
+      },
+      "source-map": {
+         "version": "0.4.4",
+         "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+         "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+         "dev": true,
+         "requires": {
+            "amdefine": ">=0.0.4"
+         }
+      },
+      "source-map-support": {
+         "version": "0.5.16",
+         "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
+         "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
+         "dev": true,
+         "requires": {
+            "buffer-from": "^1.0.0",
+            "source-map": "^0.6.0"
+         },
+         "dependencies": {
+            "source-map": {
+               "version": "0.6.1",
+               "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+               "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+               "dev": true
+            }
+         }
+      },
+      "sourcemap-codec": {
+         "version": "1.4.8",
+         "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+         "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
+         "dev": true
+      },
+      "spdx-correct": {
+         "version": "3.1.0",
+         "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
+         "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
+         "dev": true,
+         "requires": {
+            "spdx-expression-parse": "^3.0.0",
+            "spdx-license-ids": "^3.0.0"
+         }
+      },
+      "spdx-exceptions": {
+         "version": "2.2.0",
+         "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
+         "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
+         "dev": true
+      },
+      "spdx-expression-parse": {
+         "version": "3.0.0",
+         "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
+         "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
+         "dev": true,
+         "requires": {
+            "spdx-exceptions": "^2.1.0",
+            "spdx-license-ids": "^3.0.0"
+         }
+      },
+      "spdx-license-ids": {
+         "version": "3.0.4",
+         "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz",
+         "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==",
+         "dev": true
+      },
+      "sshpk": {
+         "version": "1.16.1",
+         "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
+         "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
+         "dev": true,
+         "requires": {
+            "asn1": "~0.2.3",
+            "assert-plus": "^1.0.0",
+            "bcrypt-pbkdf": "^1.0.0",
+            "dashdash": "^1.12.0",
+            "ecc-jsbn": "~0.1.1",
+            "getpass": "^0.1.1",
+            "jsbn": "~0.1.0",
+            "safer-buffer": "^2.0.2",
+            "tweetnacl": "~0.14.0"
+         }
+      },
+      "stdout-stream": {
+         "version": "1.4.1",
+         "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz",
+         "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==",
+         "dev": true,
+         "requires": {
+            "readable-stream": "^2.0.1"
+         }
+      },
+      "string-width": {
+         "version": "1.0.2",
+         "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+         "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+         "dev": true,
+         "requires": {
+            "code-point-at": "^1.0.0",
+            "is-fullwidth-code-point": "^1.0.0",
+            "strip-ansi": "^3.0.0"
+         }
+      },
+      "string.prototype.padend": {
+         "version": "3.0.0",
+         "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz",
+         "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=",
+         "dev": true,
+         "requires": {
+            "define-properties": "^1.1.2",
+            "es-abstract": "^1.4.3",
+            "function-bind": "^1.0.2"
+         }
+      },
+      "string_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==",
+         "dev": true,
+         "requires": {
+            "safe-buffer": "~5.1.0"
+         }
+      },
+      "strip-ansi": {
+         "version": "3.0.1",
+         "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+         "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+         "dev": true,
+         "requires": {
+            "ansi-regex": "^2.0.0"
+         }
+      },
+      "strip-bom": {
+         "version": "3.0.0",
+         "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+         "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+         "dev": true
+      },
+      "strip-indent": {
+         "version": "1.0.1",
+         "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+         "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+         "dev": true,
+         "requires": {
+            "get-stdin": "^4.0.1"
+         }
+      },
+      "supports-color": {
+         "version": "5.5.0",
+         "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+         "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+         "dev": true,
+         "requires": {
+            "has-flag": "^3.0.0"
+         }
+      },
+      "svelte": {
+         "version": "3.19.2",
+         "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.19.2.tgz",
+         "integrity": "sha512-Jswg065u8R9QYcN0rdpTQSFIr0hFq7YUzcPpEY6ZpFSAWkJKZG9AJvHE1d8+NJDTfr7SzKrO6EYssYYkUmszpA==",
+         "dev": true
+      },
+      "svelte-preprocess-filter": {
+         "version": "1.0.0",
+         "resolved": "https://registry.npmjs.org/svelte-preprocess-filter/-/svelte-preprocess-filter-1.0.0.tgz",
+         "integrity": "sha512-92innv59nyEx24xbfcSurB5ocwC8qFdDtGli/JVMHzJsxyvV2yjQKIcbUqU9VIV5mKUWO2PoY93nncS2yF4ULQ==",
+         "dev": true
+      },
+      "svelte-preprocess-sass": {
+         "version": "0.2.0",
+         "resolved": "https://registry.npmjs.org/svelte-preprocess-sass/-/svelte-preprocess-sass-0.2.0.tgz",
+         "integrity": "sha512-xcjwihO9hhd5W9hCSFKv1iBc8XhMif50IPP9Qu2G8IaxVaOoBUWeZu21Qu26tOw2gtv44/3p00eLrxGzLWyCLg==",
+         "dev": true,
+         "requires": {
+            "svelte-preprocess-filter": "^1.0.0"
+         }
+      },
+      "tar": {
+         "version": "2.2.2",
+         "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz",
+         "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==",
+         "dev": true,
+         "requires": {
+            "block-stream": "*",
+            "fstream": "^1.0.12",
+            "inherits": "2"
+         }
+      },
+      "terser": {
+         "version": "4.6.3",
+         "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.3.tgz",
+         "integrity": "sha512-Lw+ieAXmY69d09IIc/yqeBqXpEQIpDGZqT34ui1QWXIUpR2RjbqEkT8X7Lgex19hslSqcWM5iMN2kM11eMsESQ==",
+         "dev": true,
+         "requires": {
+            "commander": "^2.20.0",
+            "source-map": "~0.6.1",
+            "source-map-support": "~0.5.12"
+         },
+         "dependencies": {
+            "source-map": {
+               "version": "0.6.1",
+               "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+               "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+               "dev": true
+            }
+         }
+      },
+      "tinydate": {
+         "version": "1.2.0",
+         "resolved": "https://registry.npmjs.org/tinydate/-/tinydate-1.2.0.tgz",
+         "integrity": "sha512-3GwPk8VhDFnUZ2TrgkhXJs6hcMAIIw4x/xkz+ayK6dGoQmp2nUwKzBXK0WnMsqkh6vfUhpqQicQF3rbshfyJkg==",
+         "dev": true
+      },
+      "tough-cookie": {
+         "version": "2.4.3",
+         "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
+         "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
+         "dev": true,
+         "requires": {
+            "psl": "^1.1.24",
+            "punycode": "^1.4.1"
+         },
+         "dependencies": {
+            "punycode": {
+               "version": "1.4.1",
+               "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+               "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+               "dev": true
+            }
+         }
+      },
+      "trim-newlines": {
+         "version": "1.0.0",
+         "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+         "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
+         "dev": true
+      },
+      "true-case-path": {
+         "version": "1.0.3",
+         "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz",
+         "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==",
+         "dev": true,
+         "requires": {
+            "glob": "^7.1.2"
+         }
+      },
+      "ts-node": {
+         "version": "8.6.2",
+         "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.6.2.tgz",
+         "integrity": "sha512-4mZEbofxGqLL2RImpe3zMJukvEvcO1XP8bj8ozBPySdCUXEcU5cIRwR0aM3R+VoZq7iXc8N86NC0FspGRqP4gg==",
+         "dev": true,
+         "requires": {
+            "arg": "^4.1.0",
+            "diff": "^4.0.1",
+            "make-error": "^1.1.1",
+            "source-map-support": "^0.5.6",
+            "yn": "3.1.1"
+         }
+      },
+      "tslib": {
+         "version": "1.10.0",
+         "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
+         "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ=="
+      },
+      "tunnel-agent": {
+         "version": "0.6.0",
+         "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+         "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+         "dev": true,
+         "requires": {
+            "safe-buffer": "^5.0.1"
+         }
+      },
+      "tweetnacl": {
+         "version": "0.14.5",
+         "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+         "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+         "dev": true
+      },
+      "typescript": {
+         "version": "3.8.3",
+         "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz",
+         "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==",
+         "dev": true
+      },
+      "universalify": {
+         "version": "0.1.2",
+         "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+         "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
+      },
+      "uri-js": {
+         "version": "4.2.2",
+         "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
+         "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+         "dev": true,
+         "requires": {
+            "punycode": "^2.1.0"
+         }
+      },
+      "util-deprecate": {
+         "version": "1.0.2",
+         "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+         "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+         "dev": true
+      },
+      "uuid": {
+         "version": "3.4.0",
+         "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
+         "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
+         "dev": true
+      },
+      "validate-npm-package-license": {
+         "version": "3.0.4",
+         "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+         "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+         "dev": true,
+         "requires": {
+            "spdx-correct": "^3.0.0",
+            "spdx-expression-parse": "^3.0.0"
+         }
+      },
+      "verror": {
+         "version": "1.10.0",
+         "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+         "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+         "dev": true,
+         "requires": {
+            "assert-plus": "^1.0.0",
+            "core-util-is": "1.0.2",
+            "extsprintf": "^1.2.0"
+         }
+      },
+      "what-the-pack": {
+         "version": "2.0.3",
+         "resolved": "https://registry.npmjs.org/what-the-pack/-/what-the-pack-2.0.3.tgz",
+         "integrity": "sha512-vJFrS6U6acWUgkKu9dLuMsQnnHEzIpop1VDMc142h+zU+jUcS+FZlRO/BDJ9/S9cvp2sQWygImBDwl0WN9aadw==",
+         "requires": {
+            "buffer": "^5.2.1",
+            "pretty-bytes": "^5.1.0"
+         }
+      },
+      "which": {
+         "version": "1.3.1",
+         "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+         "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+         "dev": true,
+         "requires": {
+            "isexe": "^2.0.0"
+         }
+      },
+      "which-module": {
+         "version": "1.0.0",
+         "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
+         "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
+         "dev": true
+      },
+      "wide-align": {
+         "version": "1.1.3",
+         "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
+         "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
+         "dev": true,
+         "requires": {
+            "string-width": "^1.0.2 || 2"
+         }
+      },
+      "wrap-ansi": {
+         "version": "2.1.0",
+         "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+         "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+         "dev": true,
+         "requires": {
+            "string-width": "^1.0.1",
+            "strip-ansi": "^3.0.1"
+         }
+      },
+      "wrappy": {
+         "version": "1.0.2",
+         "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+         "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+         "dev": true
+      },
+      "y18n": {
+         "version": "3.2.1",
+         "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
+         "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
+         "dev": true
+      },
+      "yallist": {
+         "version": "2.1.2",
+         "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+         "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+         "dev": true
+      },
+      "yargs": {
+         "version": "7.1.0",
+         "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",
+         "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
+         "dev": true,
+         "requires": {
+            "camelcase": "^3.0.0",
+            "cliui": "^3.2.0",
+            "decamelize": "^1.1.1",
+            "get-caller-file": "^1.0.1",
+            "os-locale": "^1.4.0",
+            "read-pkg-up": "^1.0.1",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^1.0.1",
+            "set-blocking": "^2.0.0",
+            "string-width": "^1.0.2",
+            "which-module": "^1.0.0",
+            "y18n": "^3.2.1",
+            "yargs-parser": "^5.0.0"
+         },
+         "dependencies": {
+            "camelcase": {
+               "version": "3.0.0",
+               "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
+               "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
+               "dev": true
+            }
+         }
+      },
+      "yargs-parser": {
+         "version": "5.0.0",
+         "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz",
+         "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=",
+         "dev": true,
+         "requires": {
+            "camelcase": "^3.0.0"
+         },
+         "dependencies": {
+            "camelcase": {
+               "version": "3.0.0",
+               "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
+               "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
+               "dev": true
+            }
+         }
+      },
+      "yn": {
+         "version": "3.1.1",
+         "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
+         "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
+         "dev": true
       }
-    },
-    "yn": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
-      "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
-      "dev": true
-    }
-  }
+   }
 }
diff --git a/src/Home/main.js b/src/Home/main.js
index 3ea3e5d..b01e74a 100644
--- a/src/Home/main.js
+++ b/src/Home/main.js
@@ -1,7 +1,7 @@
-import App from './App.svelte';
+import App from "./App.svelte";
 
 var app = new App({
-   target: document.getElementById("content")
+   target: document.getElementById("content"),
 });
 
-export default app;
\ No newline at end of file
+export default app;
diff --git a/src/Login/api.ts b/src/Login/api.ts
index 86aefc1..36246d8 100644
--- a/src/Login/api.ts
+++ b/src/Login/api.ts
@@ -1,9 +1,6 @@
 import request from "../request";
 import sha from "../sha512";
-import {
-   setCookie,
-   getCookie
-} from "../cookie"
+import { setCookie, getCookie } from "../cookie";
 
 export interface TwoFactor {
    id: string;
@@ -15,7 +12,7 @@ export enum TFATypes {
    OTC,
    BACKUP_CODE,
    U2F,
-   APP_ALLOW
+   APP_ALLOW,
 }
 
 // const Api = {
@@ -41,8 +38,9 @@ export interface IToken {
 }
 
 function makeid(length) {
-   var result = '';
-   var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
+   var result = "";
+   var characters =
+      "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    var charactersLength = characters.length;
    for (var i = 0; i < length; i++) {
       result += characters.charAt(Math.floor(Math.random() * charactersLength));
@@ -62,98 +60,123 @@ export default class Api {
       return this.username || getCookie("username");
    }
 
-   static async setUsername(username: string): Promise<{ error: string | undefined }> {
-      return request("/api/user/login", {
-         type: "username",
-         username
-      }, "POST").then(res => {
-         this.salt = res.salt;
-         this.username = username;
-         return {
-            error: undefined
-         }
-      }).catch(err => {
-         let error = err.message;
-         return { error }
-      })
+   static async setUsername(
+      username: string
+   ): Promise<{ error: string | undefined }> {
+      return request(
+         "/api/user/login",
+         {
+            type: "username",
+            username,
+         },
+         "POST"
+      )
+         .then((res) => {
+            this.salt = res.salt;
+            this.username = username;
+            return {
+               error: undefined,
+            };
+         })
+         .catch((err) => {
+            let error = err.message;
+            return { error };
+         });
    }
 
-   static async setPassword(password: string): Promise<{ error: string | undefined, twofactor?: any }> {
+   static async setPassword(
+      password: string
+   ): Promise<{ error: string | undefined; twofactor?: any }> {
       const date = new Date().valueOf();
       let pw = sha(sha(this.salt + password) + date.toString());
-      return request("/api/user/login", {
-         type: "password"
-      }, "POST", {
-         username: this.username,
-         password: pw,
-         date
-      }
-      ).then(({
-         login,
-         special,
-         tfa
-      }) => {
-
-         this.login = login;
-         this.special = special;
-
-         if (tfa && Array.isArray(tfa) && tfa.length > 0)
-            this.twofactor = tfa;
-         else
-            this.twofactor = undefined;
-
-
-         return {
-            error: undefined
+      return request(
+         "/api/user/login",
+         {
+            type: "password",
+         },
+         "POST",
+         {
+            username: this.username,
+            password: pw,
+            date,
          }
-      }).catch(err => {
-         let error = err.message;
-         return { error }
-      })
+      )
+         .then(({ login, special, tfa }) => {
+            this.login = login;
+            this.special = special;
+
+            if (tfa && Array.isArray(tfa) && tfa.length > 0)
+               this.twofactor = tfa;
+            else this.twofactor = undefined;
+
+            return {
+               error: undefined,
+            };
+         })
+         .catch((err) => {
+            let error = err.message;
+            return { error };
+         });
    }
 
    static gettok() {
       return {
          login: this.login.token,
-         special: this.special.token
-      }
+         special: this.special.token,
+      };
    }
 
    static async sendBackup(id: string, code: string) {
-      return request("/api/user/twofactor/backup", this.gettok(), "PUT", { code, id }).then(({ login_exp, special_exp }) => {
-         this.login.expires = login_exp;
-         this.special.expires = special_exp;
-         return {};
-      }).catch(err => ({ error: err.message }));
+      return request("/api/user/twofactor/backup", this.gettok(), "PUT", {
+         code,
+         id,
+      })
+         .then(({ login_exp, special_exp }) => {
+            this.login.expires = login_exp;
+            this.special.expires = special_exp;
+            return {};
+         })
+         .catch((err) => ({ error: err.message }));
    }
 
    static async sendOTC(id: string, code: string) {
-      return request("/api/user/twofactor/otc", this.gettok(), "PUT", { code, id }).then(({ login_exp, special_exp }) => {
-         this.login.expires = login_exp;
-         this.special.expires = special_exp;
-         return {};
-      }).catch(error => ({ error: error.message }))
+      return request("/api/user/twofactor/otc", this.gettok(), "PUT", {
+         code,
+         id,
+      })
+         .then(({ login_exp, special_exp }) => {
+            this.login.expires = login_exp;
+            this.special.expires = special_exp;
+            return {};
+         })
+         .catch((error) => ({ error: error.message }));
    }
 
    static finish() {
-      let d = new Date()
-      d.setTime(d.getTime() + (30 * 24 * 60 * 60 * 1000)); //Keep the username 30 days
+      let d = new Date();
+      d.setTime(d.getTime() + 30 * 24 * 60 * 60 * 1000); //Keep the username 30 days
       setCookie("username", this.username, d.toUTCString());
 
-      setCookie("login", this.login.token, new Date(this.login.expires).toUTCString());
-      setCookie("special", this.special.token, new Date(this.special.expires).toUTCString());
+      setCookie(
+         "login",
+         this.login.token,
+         new Date(this.login.expires).toUTCString()
+      );
+      setCookie(
+         "special",
+         this.special.token,
+         new Date(this.special.expires).toUTCString()
+      );
 
       let url = new URL(window.location.href);
-      let state = url.searchParams.get("state")
-      let red = "/"
+      let state = url.searchParams.get("state");
+      let red = "/";
 
       if (state) {
-         let base64 = url.searchParams.get("base64")
-         if (base64)
-            red = atob(state)
-         else
-            red = state
+         let base64 = url.searchParams.get("base64");
+         if (base64) red = atob(state);
+         else red = state;
       }
-      setTimeout(() => window.location.href = red, 200);
+      setTimeout(() => (window.location.href = red), 200);
    }
-}
\ No newline at end of file
+}
diff --git a/src/Login/main.js b/src/Login/main.js
index 875049b..b01e74a 100644
--- a/src/Login/main.js
+++ b/src/Login/main.js
@@ -1,8 +1,7 @@
-import App from './App.svelte';
-
+import App from "./App.svelte";
 
 var app = new App({
-   target: document.getElementById("content")
+   target: document.getElementById("content"),
 });
 
-export default app;
\ No newline at end of file
+export default app;
diff --git a/src/User/main.js b/src/User/main.js
index 3ea3e5d..b01e74a 100644
--- a/src/User/main.js
+++ b/src/User/main.js
@@ -1,7 +1,7 @@
-import App from './App.svelte';
+import App from "./App.svelte";
 
 var app = new App({
-   target: document.getElementById("content")
+   target: document.getElementById("content"),
 });
 
-export default app;
\ No newline at end of file
+export default app;
diff --git a/src/cleave.js b/src/cleave.js
index 371eb77..778e58b 100644
--- a/src/cleave.js
+++ b/src/cleave.js
@@ -1,1515 +1,1918 @@
 (function webpackUniversalModuleDefinition(root, factory) {
-   if (typeof exports === 'object' && typeof module === 'object')
+   if (typeof exports === "object" && typeof module === "object")
       module.exports = factory();
-   else if (typeof define === 'function' && define.amd)
-      define([], factory);
-   else if (typeof exports === 'object')
-      exports["Cleave"] = factory();
-   else
-      root["Cleave"] = factory();
+   else if (typeof define === "function" && define.amd) define([], factory);
+   else if (typeof exports === "object") exports["Cleave"] = factory();
+   else root["Cleave"] = factory();
 })(this, function () {
-   return /******/ (function (modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
+   return /******/ (function (modules) {
+      // webpackBootstrap
+      /******/ // The module cache
+      /******/ var installedModules = {}; // The require function
 
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
+      /******/ /******/ function __webpack_require__(moduleId) {
+         /******/ // Check if module is in cache
+         /******/ if (installedModules[moduleId])
+            /******/ return installedModules[moduleId].exports; // Create a new module (and put it into the cache)
 
-/******/ 		// Check if module is in cache
-/******/ 		if (installedModules[moduleId])
-/******/ 			return installedModules[moduleId].exports;
-
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			exports: {},
-/******/ 			id: moduleId,
-/******/ 			loaded: false
+         /******/ /******/ var module = (installedModules[moduleId] = {
+            /******/ exports: {},
+            /******/ id: moduleId,
+            /******/ loaded: false,
             /******/
-};
+         }); // Execute the module function
 
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+         /******/ /******/ modules[moduleId].call(
+            module.exports,
+            module,
+            module.exports,
+            __webpack_require__
+         ); // Flag the module as loaded
 
-/******/ 		// Flag the module as loaded
-/******/ 		module.loaded = true;
+         /******/ /******/ module.loaded = true; // Return the exports of the module
 
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
+         /******/ /******/ return module.exports;
          /******/
-}
+      } // expose the modules object (__webpack_modules__)
 
+      /******/ /******/ __webpack_require__.m = modules; // expose the module cache
 
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
+      /******/ /******/ __webpack_require__.c = installedModules; // __webpack_public_path__
 
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
+      /******/ /******/ __webpack_require__.p = ""; // Load entry module and return exports
 
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(0);
+      /******/ /******/ return __webpack_require__(0);
       /******/
-})
-/************************************************************************/
-/******/([
-/* 0 */
-/***/ (function (module, exports, __webpack_require__) {
+   })(
+      /************************************************************************/
+      /******/ [
+         /* 0 */
+         /***/ function (module, exports, __webpack_require__) {
+            /* WEBPACK VAR INJECTION */ (function (global) {
+               "use strict";
 
-	/* WEBPACK VAR INJECTION */(function (global) {
-            'use strict';
+               /**
+                * Construct a new Cleave instance by passing the configuration object
+                *
+                * @param {String | HTMLElement} element
+                * @param {Object} opts
+                */
+               var Cleave = function (element, opts) {
+                  var owner = this;
+                  var hasMultipleElements = false;
 
-            /**
-             * Construct a new Cleave instance by passing the configuration object
-             *
-             * @param {String | HTMLElement} element
-             * @param {Object} opts
-             */
-            var Cleave = function (element, opts) {
-               var owner = this;
-               var hasMultipleElements = false;
-
-               if (typeof element === 'string') {
-                  owner.element = document.querySelector(element);
-                  hasMultipleElements = document.querySelectorAll(element).length > 1;
-               } else {
-                  if (typeof element.length !== 'undefined' && element.length > 0) {
-                     owner.element = element[0];
-                     hasMultipleElements = element.length > 1;
+                  if (typeof element === "string") {
+                     owner.element = document.querySelector(element);
+                     hasMultipleElements =
+                        document.querySelectorAll(element).length > 1;
                   } else {
-                     owner.element = element;
-                  }
-               }
-
-               if (!owner.element) {
-                  throw new Error('[cleave.js] Please check the element');
-               }
-
-               if (hasMultipleElements) {
-                  try {
-                     // eslint-disable-next-line
-                     console.warn('[cleave.js] Multiple input fields matched, cleave.js will only take the first one.');
-                  } catch (e) {
-                     // Old IE
-                  }
-               }
-
-               opts.initValue = owner.element.value;
-
-               owner.properties = Cleave.DefaultProperties.assign({}, opts);
-
-               owner.init();
-            };
-
-            Cleave.prototype = {
-               init: function () {
-                  var owner = this, pps = owner.properties;
-
-                  // no need to use this lib
-                  if (!pps.numeral && !pps.phone && !pps.creditCard && !pps.time && !pps.date && (pps.blocksLength === 0 && !pps.prefix)) {
-                     owner.onInput(pps.initValue);
-
-                     return;
+                     if (
+                        typeof element.length !== "undefined" &&
+                        element.length > 0
+                     ) {
+                        owner.element = element[0];
+                        hasMultipleElements = element.length > 1;
+                     } else {
+                        owner.element = element;
+                     }
                   }
 
-                  pps.maxLength = Cleave.Util.getMaxLength(pps.blocks);
-
-                  owner.isAndroid = Cleave.Util.isAndroid();
-                  owner.lastInputValue = '';
-
-                  owner.onChangeListener = owner.onChange.bind(owner);
-                  owner.onKeyDownListener = owner.onKeyDown.bind(owner);
-                  owner.onFocusListener = owner.onFocus.bind(owner);
-                  owner.onCutListener = owner.onCut.bind(owner);
-                  owner.onCopyListener = owner.onCopy.bind(owner);
-
-                  owner.element.addEventListener('input', owner.onChangeListener);
-                  owner.element.addEventListener('keydown', owner.onKeyDownListener);
-                  owner.element.addEventListener('focus', owner.onFocusListener);
-                  owner.element.addEventListener('cut', owner.onCutListener);
-                  owner.element.addEventListener('copy', owner.onCopyListener);
-
-
-                  owner.initPhoneFormatter();
-                  owner.initDateFormatter();
-                  owner.initTimeFormatter();
-                  owner.initNumeralFormatter();
-
-                  // avoid touch input field if value is null
-                  // otherwise Firefox will add red box-shadow for <input required />
-                  if (pps.initValue || (pps.prefix && !pps.noImmediatePrefix)) {
-                     owner.onInput(pps.initValue);
-                  }
-               },
-
-               initNumeralFormatter: function () {
-                  var owner = this, pps = owner.properties;
-
-                  if (!pps.numeral) {
-                     return;
+                  if (!owner.element) {
+                     throw new Error("[cleave.js] Please check the element");
                   }
 
-                  pps.numeralFormatter = new Cleave.NumeralFormatter(
-                     pps.numeralDecimalMark,
-                     pps.numeralIntegerScale,
-                     pps.numeralDecimalScale,
-                     pps.numeralThousandsGroupStyle,
-                     pps.numeralPositiveOnly,
-                     pps.stripLeadingZeroes,
-                     pps.delimiter
-                  );
-               },
-
-               initTimeFormatter: function () {
-                  var owner = this, pps = owner.properties;
-
-                  if (!pps.time) {
-                     return;
+                  if (hasMultipleElements) {
+                     try {
+                        // eslint-disable-next-line
+                        console.warn(
+                           "[cleave.js] Multiple input fields matched, cleave.js will only take the first one."
+                        );
+                     } catch (e) {
+                        // Old IE
+                     }
                   }
 
-                  pps.timeFormatter = new Cleave.TimeFormatter(pps.timePattern, pps.timeFormat);
-                  pps.blocks = pps.timeFormatter.getBlocks();
-                  pps.blocksLength = pps.blocks.length;
-                  pps.maxLength = Cleave.Util.getMaxLength(pps.blocks);
-               },
+                  opts.initValue = owner.element.value;
 
-               initDateFormatter: function () {
-                  var owner = this, pps = owner.properties;
+                  owner.properties = Cleave.DefaultProperties.assign({}, opts);
 
-                  if (!pps.date) {
-                     return;
-                  }
+                  owner.init();
+               };
 
-                  pps.dateFormatter = new Cleave.DateFormatter(pps.datePattern);
-                  pps.blocks = pps.dateFormatter.getBlocks();
-                  pps.blocksLength = pps.blocks.length;
-                  pps.maxLength = Cleave.Util.getMaxLength(pps.blocks);
-               },
+               Cleave.prototype = {
+                  init: function () {
+                     var owner = this,
+                        pps = owner.properties;
 
-               initPhoneFormatter: function () {
-                  var owner = this, pps = owner.properties;
+                     // no need to use this lib
+                     if (
+                        !pps.numeral &&
+                        !pps.phone &&
+                        !pps.creditCard &&
+                        !pps.time &&
+                        !pps.date &&
+                        pps.blocksLength === 0 &&
+                        !pps.prefix
+                     ) {
+                        owner.onInput(pps.initValue);
 
-                  if (!pps.phone) {
-                     return;
-                  }
+                        return;
+                     }
 
-                  // Cleave.AsYouTypeFormatter should be provided by
-                  // external google closure lib
-                  try {
-                     pps.phoneFormatter = new Cleave.PhoneFormatter(
-                        new pps.root.Cleave.AsYouTypeFormatter(pps.phoneRegionCode),
+                     pps.maxLength = Cleave.Util.getMaxLength(pps.blocks);
+
+                     owner.isAndroid = Cleave.Util.isAndroid();
+                     owner.lastInputValue = "";
+
+                     owner.onChangeListener = owner.onChange.bind(owner);
+                     owner.onKeyDownListener = owner.onKeyDown.bind(owner);
+                     owner.onFocusListener = owner.onFocus.bind(owner);
+                     owner.onCutListener = owner.onCut.bind(owner);
+                     owner.onCopyListener = owner.onCopy.bind(owner);
+
+                     owner.element.addEventListener(
+                        "input",
+                        owner.onChangeListener
+                     );
+                     owner.element.addEventListener(
+                        "keydown",
+                        owner.onKeyDownListener
+                     );
+                     owner.element.addEventListener(
+                        "focus",
+                        owner.onFocusListener
+                     );
+                     owner.element.addEventListener("cut", owner.onCutListener);
+                     owner.element.addEventListener(
+                        "copy",
+                        owner.onCopyListener
+                     );
+
+                     owner.initPhoneFormatter();
+                     owner.initDateFormatter();
+                     owner.initTimeFormatter();
+                     owner.initNumeralFormatter();
+
+                     // avoid touch input field if value is null
+                     // otherwise Firefox will add red box-shadow for <input required />
+                     if (
+                        pps.initValue ||
+                        (pps.prefix && !pps.noImmediatePrefix)
+                     ) {
+                        owner.onInput(pps.initValue);
+                     }
+                  },
+
+                  initNumeralFormatter: function () {
+                     var owner = this,
+                        pps = owner.properties;
+
+                     if (!pps.numeral) {
+                        return;
+                     }
+
+                     pps.numeralFormatter = new Cleave.NumeralFormatter(
+                        pps.numeralDecimalMark,
+                        pps.numeralIntegerScale,
+                        pps.numeralDecimalScale,
+                        pps.numeralThousandsGroupStyle,
+                        pps.numeralPositiveOnly,
+                        pps.stripLeadingZeroes,
                         pps.delimiter
                      );
-                  } catch (ex) {
-                     throw new Error('[cleave.js] Please include phone-type-formatter.{country}.js lib');
-                  }
-               },
+                  },
 
-               onKeyDown: function (event) {
-                  var owner = this, pps = owner.properties,
-                     charCode = event.which || event.keyCode,
-                     Util = Cleave.Util,
-                     currentValue = owner.element.value;
+                  initTimeFormatter: function () {
+                     var owner = this,
+                        pps = owner.properties;
 
-                  // if we got any charCode === 8, this means, that this device correctly
-                  // sends backspace keys in event, so we do not need to apply any hacks
-                  owner.hasBackspaceSupport = owner.hasBackspaceSupport || charCode === 8;
-                  if (!owner.hasBackspaceSupport
-                     && Util.isAndroidBackspaceKeydown(owner.lastInputValue, currentValue)
-                  ) {
-                     charCode = 8;
-                  }
-
-                  owner.lastInputValue = currentValue;
-
-                  // hit backspace when last character is delimiter
-                  var postDelimiter = Util.getPostDelimiter(currentValue, pps.delimiter, pps.delimiters);
-                  if (charCode === 8 && postDelimiter) {
-                     pps.postDelimiterBackspace = postDelimiter;
-                  } else {
-                     pps.postDelimiterBackspace = false;
-                  }
-               },
-
-               onChange: function () {
-                  this.onInput(this.element.value);
-               },
-
-               onFocus: function () {
-                  var owner = this,
-                     pps = owner.properties;
-
-                  Cleave.Util.fixPrefixCursor(owner.element, pps.prefix, pps.delimiter, pps.delimiters);
-               },
-
-               onCut: function (e) {
-                  this.copyClipboardData(e);
-                  this.onInput('');
-               },
-
-               onCopy: function (e) {
-                  this.copyClipboardData(e);
-               },
-
-               copyClipboardData: function (e) {
-                  var owner = this,
-                     pps = owner.properties,
-                     Util = Cleave.Util,
-                     inputValue = owner.element.value,
-                     textToCopy = '';
-
-                  if (!pps.copyDelimiter) {
-                     textToCopy = Util.stripDelimiters(inputValue, pps.delimiter, pps.delimiters);
-                  } else {
-                     textToCopy = inputValue;
-                  }
-
-                  try {
-                     if (e.clipboardData) {
-                        e.clipboardData.setData('Text', textToCopy);
-                     } else {
-                        window.clipboardData.setData('Text', textToCopy);
+                     if (!pps.time) {
+                        return;
                      }
 
-                     e.preventDefault();
-                  } catch (ex) {
-                     //  empty
-                  }
-               },
+                     pps.timeFormatter = new Cleave.TimeFormatter(
+                        pps.timePattern,
+                        pps.timeFormat
+                     );
+                     pps.blocks = pps.timeFormatter.getBlocks();
+                     pps.blocksLength = pps.blocks.length;
+                     pps.maxLength = Cleave.Util.getMaxLength(pps.blocks);
+                  },
 
-               onInput: function (value) {
-                  var owner = this, pps = owner.properties,
-                     Util = Cleave.Util;
+                  initDateFormatter: function () {
+                     var owner = this,
+                        pps = owner.properties;
 
-                  // case 1: delete one more character "4"
-                  // 1234*| -> hit backspace -> 123|
-                  // case 2: last character is not delimiter which is:
-                  // 12|34* -> hit backspace -> 1|34*
-                  // note: no need to apply this for numeral mode
-                  var postDelimiterAfter = Util.getPostDelimiter(value, pps.delimiter, pps.delimiters);
-                  if (!pps.numeral && pps.postDelimiterBackspace && !postDelimiterAfter) {
-                     value = Util.headStr(value, value.length - pps.postDelimiterBackspace.length);
-                  }
-
-                  // phone formatter
-                  if (pps.phone) {
-                     if (pps.prefix && (!pps.noImmediatePrefix || value.length)) {
-                        pps.result = pps.prefix + pps.phoneFormatter.format(value).slice(pps.prefix.length);
-                     } else {
-                        pps.result = pps.phoneFormatter.format(value);
+                     if (!pps.date) {
+                        return;
                      }
-                     owner.updateValueState();
 
-                     return;
-                  }
+                     pps.dateFormatter = new Cleave.DateFormatter(
+                        pps.datePattern
+                     );
+                     pps.blocks = pps.dateFormatter.getBlocks();
+                     pps.blocksLength = pps.blocks.length;
+                     pps.maxLength = Cleave.Util.getMaxLength(pps.blocks);
+                  },
 
-                  // numeral formatter
-                  if (pps.numeral) {
-                     if (pps.prefix && (!pps.noImmediatePrefix || value.length)) {
-                        pps.result = pps.prefix + pps.numeralFormatter.format(value);
-                     } else {
-                        pps.result = pps.numeralFormatter.format(value);
+                  initPhoneFormatter: function () {
+                     var owner = this,
+                        pps = owner.properties;
+
+                     if (!pps.phone) {
+                        return;
                      }
-                     owner.updateValueState();
 
-                     return;
-                  }
+                     // Cleave.AsYouTypeFormatter should be provided by
+                     // external google closure lib
+                     try {
+                        pps.phoneFormatter = new Cleave.PhoneFormatter(
+                           new pps.root.Cleave.AsYouTypeFormatter(
+                              pps.phoneRegionCode
+                           ),
+                           pps.delimiter
+                        );
+                     } catch (ex) {
+                        throw new Error(
+                           "[cleave.js] Please include phone-type-formatter.{country}.js lib"
+                        );
+                     }
+                  },
 
-                  // date
-                  if (pps.date) {
-                     value = pps.dateFormatter.getValidatedDate(value);
-                  }
+                  onKeyDown: function (event) {
+                     var owner = this,
+                        pps = owner.properties,
+                        charCode = event.which || event.keyCode,
+                        Util = Cleave.Util,
+                        currentValue = owner.element.value;
 
-                  // time
-                  if (pps.time) {
-                     value = pps.timeFormatter.getValidatedTime(value);
-                  }
+                     // if we got any charCode === 8, this means, that this device correctly
+                     // sends backspace keys in event, so we do not need to apply any hacks
+                     owner.hasBackspaceSupport =
+                        owner.hasBackspaceSupport || charCode === 8;
+                     if (
+                        !owner.hasBackspaceSupport &&
+                        Util.isAndroidBackspaceKeydown(
+                           owner.lastInputValue,
+                           currentValue
+                        )
+                     ) {
+                        charCode = 8;
+                     }
 
-                  // strip delimiters
-                  value = Util.stripDelimiters(value, pps.delimiter, pps.delimiters);
+                     owner.lastInputValue = currentValue;
 
-                  // strip prefix
-                  // var strippedPreviousResult = Util.stripDelimiters(pps.result, pps.delimiter, pps.delimiters);
-                  value = Util.getPrefixStrippedValue(value, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters);
+                     // hit backspace when last character is delimiter
+                     var postDelimiter = Util.getPostDelimiter(
+                        currentValue,
+                        pps.delimiter,
+                        pps.delimiters
+                     );
+                     if (charCode === 8 && postDelimiter) {
+                        pps.postDelimiterBackspace = postDelimiter;
+                     } else {
+                        pps.postDelimiterBackspace = false;
+                     }
+                  },
 
-                  // strip non-numeric characters
-                  value = pps.numericOnly ? Util.strip(value, /[^\d]/g) : value;
+                  onChange: function () {
+                     this.onInput(this.element.value);
+                  },
 
-                  // convert case
-                  value = pps.uppercase ? value.toUpperCase() : value;
-                  value = pps.lowercase ? value.toLowerCase() : value;
+                  onFocus: function () {
+                     var owner = this,
+                        pps = owner.properties;
 
-                  // prefix
-                  if (pps.prefix && (!pps.noImmediatePrefix || value.length)) {
-                     value = pps.prefix + value;
+                     Cleave.Util.fixPrefixCursor(
+                        owner.element,
+                        pps.prefix,
+                        pps.delimiter,
+                        pps.delimiters
+                     );
+                  },
 
-                     // no blocks specified, no need to do formatting
-                     if (pps.blocksLength === 0) {
-                        pps.result = value;
+                  onCut: function (e) {
+                     this.copyClipboardData(e);
+                     this.onInput("");
+                  },
+
+                  onCopy: function (e) {
+                     this.copyClipboardData(e);
+                  },
+
+                  copyClipboardData: function (e) {
+                     var owner = this,
+                        pps = owner.properties,
+                        Util = Cleave.Util,
+                        inputValue = owner.element.value,
+                        textToCopy = "";
+
+                     if (!pps.copyDelimiter) {
+                        textToCopy = Util.stripDelimiters(
+                           inputValue,
+                           pps.delimiter,
+                           pps.delimiters
+                        );
+                     } else {
+                        textToCopy = inputValue;
+                     }
+
+                     try {
+                        if (e.clipboardData) {
+                           e.clipboardData.setData("Text", textToCopy);
+                        } else {
+                           window.clipboardData.setData("Text", textToCopy);
+                        }
+
+                        e.preventDefault();
+                     } catch (ex) {
+                        //  empty
+                     }
+                  },
+
+                  onInput: function (value) {
+                     var owner = this,
+                        pps = owner.properties,
+                        Util = Cleave.Util;
+
+                     // case 1: delete one more character "4"
+                     // 1234*| -> hit backspace -> 123|
+                     // case 2: last character is not delimiter which is:
+                     // 12|34* -> hit backspace -> 1|34*
+                     // note: no need to apply this for numeral mode
+                     var postDelimiterAfter = Util.getPostDelimiter(
+                        value,
+                        pps.delimiter,
+                        pps.delimiters
+                     );
+                     if (
+                        !pps.numeral &&
+                        pps.postDelimiterBackspace &&
+                        !postDelimiterAfter
+                     ) {
+                        value = Util.headStr(
+                           value,
+                           value.length - pps.postDelimiterBackspace.length
+                        );
+                     }
+
+                     // phone formatter
+                     if (pps.phone) {
+                        if (
+                           pps.prefix &&
+                           (!pps.noImmediatePrefix || value.length)
+                        ) {
+                           pps.result =
+                              pps.prefix +
+                              pps.phoneFormatter
+                                 .format(value)
+                                 .slice(pps.prefix.length);
+                        } else {
+                           pps.result = pps.phoneFormatter.format(value);
+                        }
                         owner.updateValueState();
 
                         return;
                      }
+
+                     // numeral formatter
+                     if (pps.numeral) {
+                        if (
+                           pps.prefix &&
+                           (!pps.noImmediatePrefix || value.length)
+                        ) {
+                           pps.result =
+                              pps.prefix + pps.numeralFormatter.format(value);
+                        } else {
+                           pps.result = pps.numeralFormatter.format(value);
+                        }
+                        owner.updateValueState();
+
+                        return;
+                     }
+
+                     // date
+                     if (pps.date) {
+                        value = pps.dateFormatter.getValidatedDate(value);
+                     }
+
+                     // time
+                     if (pps.time) {
+                        value = pps.timeFormatter.getValidatedTime(value);
+                     }
+
+                     // strip delimiters
+                     value = Util.stripDelimiters(
+                        value,
+                        pps.delimiter,
+                        pps.delimiters
+                     );
+
+                     // strip prefix
+                     // var strippedPreviousResult = Util.stripDelimiters(pps.result, pps.delimiter, pps.delimiters);
+                     value = Util.getPrefixStrippedValue(
+                        value,
+                        pps.prefix,
+                        pps.prefixLength,
+                        pps.result,
+                        pps.delimiter,
+                        pps.delimiters
+                     );
+
+                     // strip non-numeric characters
+                     value = pps.numericOnly
+                        ? Util.strip(value, /[^\d]/g)
+                        : value;
+
+                     // convert case
+                     value = pps.uppercase ? value.toUpperCase() : value;
+                     value = pps.lowercase ? value.toLowerCase() : value;
+
+                     // prefix
+                     if (
+                        pps.prefix &&
+                        (!pps.noImmediatePrefix || value.length)
+                     ) {
+                        value = pps.prefix + value;
+
+                        // no blocks specified, no need to do formatting
+                        if (pps.blocksLength === 0) {
+                           pps.result = value;
+                           owner.updateValueState();
+
+                           return;
+                        }
+                     }
+
+                     // update credit card props
+                     if (pps.creditCard) {
+                        owner.updateCreditCardPropsByValue(value);
+                     }
+
+                     // strip over length characters
+                     value = Util.headStr(value, pps.maxLength);
+
+                     // apply blocks
+                     pps.result = Util.getFormattedValue(
+                        value,
+                        pps.blocks,
+                        pps.blocksLength,
+                        pps.delimiter,
+                        pps.delimiters,
+                        pps.delimiterLazyShow
+                     );
+
+                     owner.updateValueState();
+                  },
+
+                  updateCreditCardPropsByValue: function (value) {
+                     var owner = this,
+                        pps = owner.properties,
+                        Util = Cleave.Util,
+                        creditCardInfo;
+
+                     // At least one of the first 4 characters has changed
+                     if (
+                        Util.headStr(pps.result, 4) === Util.headStr(value, 4)
+                     ) {
+                        return;
+                     }
+
+                     creditCardInfo = Cleave.CreditCardDetector.getInfo(
+                        value,
+                        pps.creditCardStrictMode
+                     );
+
+                     pps.blocks = creditCardInfo.blocks;
+                     pps.blocksLength = pps.blocks.length;
+                     pps.maxLength = Util.getMaxLength(pps.blocks);
+
+                     // credit card type changed
+                     if (pps.creditCardType !== creditCardInfo.type) {
+                        pps.creditCardType = creditCardInfo.type;
+
+                        pps.onCreditCardTypeChanged.call(
+                           owner,
+                           pps.creditCardType
+                        );
+                     }
+                  },
+
+                  updateValueState: function () {
+                     var owner = this,
+                        Util = Cleave.Util,
+                        pps = owner.properties;
+
+                     if (!owner.element) {
+                        return;
+                     }
+
+                     var endPos = owner.element.selectionEnd;
+                     var oldValue = owner.element.value;
+                     var newValue = pps.result;
+
+                     endPos = Util.getNextCursorPosition(
+                        endPos,
+                        oldValue,
+                        newValue,
+                        pps.delimiter,
+                        pps.delimiters
+                     );
+
+                     // fix Android browser type="text" input field
+                     // cursor not jumping issue
+                     if (owner.isAndroid) {
+                        window.setTimeout(function () {
+                           owner.element.value = newValue;
+                           Util.setSelection(
+                              owner.element,
+                              endPos,
+                              pps.document,
+                              false
+                           );
+                           owner.callOnValueChanged();
+                        }, 1);
+
+                        return;
+                     }
+
+                     owner.element.value = newValue;
+                     Util.setSelection(
+                        owner.element,
+                        endPos,
+                        pps.document,
+                        false
+                     );
+                     owner.callOnValueChanged();
+                  },
+
+                  callOnValueChanged: function () {
+                     var owner = this,
+                        pps = owner.properties;
+
+                     pps.onValueChanged.call(owner, {
+                        target: {
+                           value: pps.result,
+                           rawValue: owner.getRawValue(),
+                        },
+                     });
+                  },
+
+                  setPhoneRegionCode: function (phoneRegionCode) {
+                     var owner = this,
+                        pps = owner.properties;
+
+                     pps.phoneRegionCode = phoneRegionCode;
+                     owner.initPhoneFormatter();
+                     owner.onChange();
+                  },
+
+                  setRawValue: function (value) {
+                     var owner = this,
+                        pps = owner.properties;
+
+                     value =
+                        value !== undefined && value !== null
+                           ? value.toString()
+                           : "";
+
+                     if (pps.numeral) {
+                        value = value.replace(".", pps.numeralDecimalMark);
+                     }
+
+                     pps.postDelimiterBackspace = false;
+
+                     owner.element.value = value;
+                     owner.onInput(value);
+                  },
+
+                  getRawValue: function () {
+                     var owner = this,
+                        pps = owner.properties,
+                        Util = Cleave.Util,
+                        rawValue = owner.element.value;
+
+                     if (pps.rawValueTrimPrefix) {
+                        rawValue = Util.getPrefixStrippedValue(
+                           rawValue,
+                           pps.prefix,
+                           pps.prefixLength,
+                           pps.result,
+                           pps.delimiter,
+                           pps.delimiters
+                        );
+                     }
+
+                     if (pps.numeral) {
+                        rawValue = pps.numeralFormatter.getRawValue(rawValue);
+                     } else {
+                        rawValue = Util.stripDelimiters(
+                           rawValue,
+                           pps.delimiter,
+                           pps.delimiters
+                        );
+                     }
+
+                     return rawValue;
+                  },
+
+                  getISOFormatDate: function () {
+                     var owner = this,
+                        pps = owner.properties;
+
+                     return pps.date
+                        ? pps.dateFormatter.getISOFormatDate()
+                        : "";
+                  },
+
+                  getISOFormatTime: function () {
+                     var owner = this,
+                        pps = owner.properties;
+
+                     return pps.time
+                        ? pps.timeFormatter.getISOFormatTime()
+                        : "";
+                  },
+
+                  getFormattedValue: function () {
+                     return this.element.value;
+                  },
+
+                  destroy: function () {
+                     var owner = this;
+
+                     owner.element.removeEventListener(
+                        "input",
+                        owner.onChangeListener
+                     );
+                     owner.element.removeEventListener(
+                        "keydown",
+                        owner.onKeyDownListener
+                     );
+                     owner.element.removeEventListener(
+                        "focus",
+                        owner.onFocusListener
+                     );
+                     owner.element.removeEventListener(
+                        "cut",
+                        owner.onCutListener
+                     );
+                     owner.element.removeEventListener(
+                        "copy",
+                        owner.onCopyListener
+                     );
+                  },
+
+                  toString: function () {
+                     return "[Cleave Object]";
+                  },
+               };
+
+               Cleave.NumeralFormatter = __webpack_require__(1);
+               Cleave.DateFormatter = __webpack_require__(2);
+               Cleave.TimeFormatter = __webpack_require__(3);
+               Cleave.PhoneFormatter = __webpack_require__(4);
+               Cleave.CreditCardDetector = __webpack_require__(5);
+               Cleave.Util = __webpack_require__(6);
+               Cleave.DefaultProperties = __webpack_require__(7);
+
+               // for angular directive
+               (typeof global === "object" && global ? global : window)[
+                  "Cleave"
+               ] = Cleave;
+
+               // CommonJS
+               module.exports = Cleave;
+
+               /* WEBPACK VAR INJECTION */
+            }.call(
+               exports,
+               (function () {
+                  return this;
+               })()
+            ));
+
+            /***/
+         },
+         /* 1 */
+         /***/ function (module, exports) {
+            "use strict";
+
+            var NumeralFormatter = function (
+               numeralDecimalMark,
+               numeralIntegerScale,
+               numeralDecimalScale,
+               numeralThousandsGroupStyle,
+               numeralPositiveOnly,
+               stripLeadingZeroes,
+               delimiter
+            ) {
+               var owner = this;
+
+               owner.numeralDecimalMark = numeralDecimalMark || ".";
+               owner.numeralIntegerScale =
+                  numeralIntegerScale > 0 ? numeralIntegerScale : 0;
+               owner.numeralDecimalScale =
+                  numeralDecimalScale >= 0 ? numeralDecimalScale : 2;
+               owner.numeralThousandsGroupStyle =
+                  numeralThousandsGroupStyle ||
+                  NumeralFormatter.groupStyle.thousand;
+               owner.numeralPositiveOnly = !!numeralPositiveOnly;
+               owner.stripLeadingZeroes = stripLeadingZeroes !== false;
+               owner.delimiter =
+                  delimiter || delimiter === "" ? delimiter : ",";
+               owner.delimiterRE = delimiter
+                  ? new RegExp("\\" + delimiter, "g")
+                  : "";
+            };
+
+            NumeralFormatter.groupStyle = {
+               thousand: "thousand",
+               lakh: "lakh",
+               wan: "wan",
+               none: "none",
+            };
+
+            NumeralFormatter.prototype = {
+               getRawValue: function (value) {
+                  return value
+                     .replace(this.delimiterRE, "")
+                     .replace(this.numeralDecimalMark, ".");
+               },
+
+               format: function (value) {
+                  var owner = this,
+                     parts,
+                     partInteger,
+                     partDecimal = "";
+
+                  // strip alphabet letters
+                  value = value
+                     .replace(/[A-Za-z]/g, "")
+                     // replace the first decimal mark with reserved placeholder
+                     .replace(owner.numeralDecimalMark, "M")
+
+                     // strip non numeric letters except minus and "M"
+                     // this is to ensure prefix has been stripped
+                     .replace(/[^\dM-]/g, "")
+
+                     // replace the leading minus with reserved placeholder
+                     .replace(/^\-/, "N")
+
+                     // strip the other minus sign (if present)
+                     .replace(/\-/g, "")
+
+                     // replace the minus sign (if present)
+                     .replace("N", owner.numeralPositiveOnly ? "" : "-")
+
+                     // replace decimal mark
+                     .replace("M", owner.numeralDecimalMark);
+
+                  // strip any leading zeros
+                  if (owner.stripLeadingZeroes) {
+                     value = value.replace(/^(-)?0+(?=\d)/, "$1");
                   }
 
-                  // update credit card props
-                  if (pps.creditCard) {
-                     owner.updateCreditCardPropsByValue(value);
+                  partInteger = value;
+
+                  if (value.indexOf(owner.numeralDecimalMark) >= 0) {
+                     parts = value.split(owner.numeralDecimalMark);
+                     partInteger = parts[0];
+                     partDecimal =
+                        owner.numeralDecimalMark +
+                        parts[1].slice(0, owner.numeralDecimalScale);
                   }
 
-                  // strip over length characters
-                  value = Util.headStr(value, pps.maxLength);
+                  if (owner.numeralIntegerScale > 0) {
+                     partInteger = partInteger.slice(
+                        0,
+                        owner.numeralIntegerScale +
+                           (value.slice(0, 1) === "-" ? 1 : 0)
+                     );
+                  }
 
-                  // apply blocks
-                  pps.result = Util.getFormattedValue(
-                     value,
-                     pps.blocks, pps.blocksLength,
-                     pps.delimiter, pps.delimiters, pps.delimiterLazyShow
+                  switch (owner.numeralThousandsGroupStyle) {
+                     case NumeralFormatter.groupStyle.lakh:
+                        partInteger = partInteger.replace(
+                           /(\d)(?=(\d\d)+\d$)/g,
+                           "$1" + owner.delimiter
+                        );
+
+                        break;
+
+                     case NumeralFormatter.groupStyle.wan:
+                        partInteger = partInteger.replace(
+                           /(\d)(?=(\d{4})+$)/g,
+                           "$1" + owner.delimiter
+                        );
+
+                        break;
+
+                     case NumeralFormatter.groupStyle.thousand:
+                        partInteger = partInteger.replace(
+                           /(\d)(?=(\d{3})+$)/g,
+                           "$1" + owner.delimiter
+                        );
+
+                        break;
+                  }
+
+                  return (
+                     partInteger.toString() +
+                     (owner.numeralDecimalScale > 0
+                        ? partDecimal.toString()
+                        : "")
                   );
-
-                  owner.updateValueState();
                },
+            };
 
-               updateCreditCardPropsByValue: function (value) {
-                  var owner = this, pps = owner.properties,
-                     Util = Cleave.Util,
-                     creditCardInfo;
+            module.exports = NumeralFormatter;
 
-                  // At least one of the first 4 characters has changed
-                  if (Util.headStr(pps.result, 4) === Util.headStr(value, 4)) {
-                     return;
-                  }
+            /***/
+         },
+         /* 2 */
+         /***/ function (module, exports) {
+            "use strict";
 
-                  creditCardInfo = Cleave.CreditCardDetector.getInfo(value, pps.creditCardStrictMode);
+            var DateFormatter = function (datePattern) {
+               var owner = this;
 
-                  pps.blocks = creditCardInfo.blocks;
-                  pps.blocksLength = pps.blocks.length;
-                  pps.maxLength = Util.getMaxLength(pps.blocks);
+               owner.date = [];
+               owner.blocks = [];
+               owner.datePattern = datePattern;
+               owner.initBlocks();
+            };
 
-                  // credit card type changed
-                  if (pps.creditCardType !== creditCardInfo.type) {
-                     pps.creditCardType = creditCardInfo.type;
-
-                     pps.onCreditCardTypeChanged.call(owner, pps.creditCardType);
-                  }
-               },
-
-               updateValueState: function () {
-                  var owner = this,
-                     Util = Cleave.Util,
-                     pps = owner.properties;
-
-                  if (!owner.element) {
-                     return;
-                  }
-
-                  var endPos = owner.element.selectionEnd;
-                  var oldValue = owner.element.value;
-                  var newValue = pps.result;
-
-                  endPos = Util.getNextCursorPosition(endPos, oldValue, newValue, pps.delimiter, pps.delimiters);
-
-                  // fix Android browser type="text" input field
-                  // cursor not jumping issue
-                  if (owner.isAndroid) {
-                     window.setTimeout(function () {
-                        owner.element.value = newValue;
-                        Util.setSelection(owner.element, endPos, pps.document, false);
-                        owner.callOnValueChanged();
-                     }, 1);
-
-                     return;
-                  }
-
-                  owner.element.value = newValue;
-                  Util.setSelection(owner.element, endPos, pps.document, false);
-                  owner.callOnValueChanged();
-               },
-
-               callOnValueChanged: function () {
-                  var owner = this,
-                     pps = owner.properties;
-
-                  pps.onValueChanged.call(owner, {
-                     target: {
-                        value: pps.result,
-                        rawValue: owner.getRawValue()
+            DateFormatter.prototype = {
+               initBlocks: function () {
+                  var owner = this;
+                  owner.datePattern.forEach(function (value) {
+                     if (value === "Y") {
+                        owner.blocks.push(4);
+                     } else {
+                        owner.blocks.push(2);
                      }
                   });
                },
 
-               setPhoneRegionCode: function (phoneRegionCode) {
-                  var owner = this, pps = owner.properties;
-
-                  pps.phoneRegionCode = phoneRegionCode;
-                  owner.initPhoneFormatter();
-                  owner.onChange();
-               },
-
-               setRawValue: function (value) {
-                  var owner = this, pps = owner.properties;
-
-                  value = value !== undefined && value !== null ? value.toString() : '';
-
-                  if (pps.numeral) {
-                     value = value.replace('.', pps.numeralDecimalMark);
-                  }
-
-                  pps.postDelimiterBackspace = false;
-
-                  owner.element.value = value;
-                  owner.onInput(value);
-               },
-
-               getRawValue: function () {
-                  var owner = this,
-                     pps = owner.properties,
-                     Util = Cleave.Util,
-                     rawValue = owner.element.value;
-
-                  if (pps.rawValueTrimPrefix) {
-                     rawValue = Util.getPrefixStrippedValue(rawValue, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters);
-                  }
-
-                  if (pps.numeral) {
-                     rawValue = pps.numeralFormatter.getRawValue(rawValue);
-                  } else {
-                     rawValue = Util.stripDelimiters(rawValue, pps.delimiter, pps.delimiters);
-                  }
-
-                  return rawValue;
-               },
-
                getISOFormatDate: function () {
                   var owner = this,
-                     pps = owner.properties;
+                     date = owner.date;
 
-                  return pps.date ? pps.dateFormatter.getISOFormatDate() : '';
+                  return date[2]
+                     ? date[2] +
+                          "-" +
+                          owner.addLeadingZero(date[1]) +
+                          "-" +
+                          owner.addLeadingZero(date[0])
+                     : "";
+               },
+
+               getBlocks: function () {
+                  return this.blocks;
+               },
+
+               getValidatedDate: function (value) {
+                  var owner = this,
+                     result = "";
+
+                  value = value.replace(/[^\d]/g, "");
+
+                  owner.blocks.forEach(function (length, index) {
+                     if (value.length > 0) {
+                        var sub = value.slice(0, length),
+                           sub0 = sub.slice(0, 1),
+                           rest = value.slice(length);
+
+                        switch (owner.datePattern[index]) {
+                           case "d":
+                              if (sub === "00") {
+                                 sub = "01";
+                              } else if (parseInt(sub0, 10) > 3) {
+                                 sub = "0" + sub0;
+                              } else if (parseInt(sub, 10) > 31) {
+                                 sub = "31";
+                              }
+
+                              break;
+
+                           case "m":
+                              if (sub === "00") {
+                                 sub = "01";
+                              } else if (parseInt(sub0, 10) > 1) {
+                                 sub = "0" + sub0;
+                              } else if (parseInt(sub, 10) > 12) {
+                                 sub = "12";
+                              }
+
+                              break;
+                        }
+
+                        result += sub;
+
+                        // update remaining string
+                        value = rest;
+                     }
+                  });
+
+                  return this.getFixedDateString(result);
+               },
+
+               getFixedDateString: function (value) {
+                  var owner = this,
+                     datePattern = owner.datePattern,
+                     date = [],
+                     dayIndex = 0,
+                     monthIndex = 0,
+                     yearIndex = 0,
+                     dayStartIndex = 0,
+                     monthStartIndex = 0,
+                     yearStartIndex = 0,
+                     day,
+                     month,
+                     year,
+                     fullYearDone = false;
+
+                  // mm-dd || dd-mm
+                  if (
+                     value.length === 4 &&
+                     datePattern[0].toLowerCase() !== "y" &&
+                     datePattern[1].toLowerCase() !== "y"
+                  ) {
+                     dayStartIndex = datePattern[0] === "d" ? 0 : 2;
+                     monthStartIndex = 2 - dayStartIndex;
+                     day = parseInt(
+                        value.slice(dayStartIndex, dayStartIndex + 2),
+                        10
+                     );
+                     month = parseInt(
+                        value.slice(monthStartIndex, monthStartIndex + 2),
+                        10
+                     );
+
+                     date = this.getFixedDate(day, month, 0);
+                  }
+
+                  // yyyy-mm-dd || yyyy-dd-mm || mm-dd-yyyy || dd-mm-yyyy || dd-yyyy-mm || mm-yyyy-dd
+                  if (value.length === 8) {
+                     datePattern.forEach(function (type, index) {
+                        switch (type) {
+                           case "d":
+                              dayIndex = index;
+                              break;
+                           case "m":
+                              monthIndex = index;
+                              break;
+                           default:
+                              yearIndex = index;
+                              break;
+                        }
+                     });
+
+                     yearStartIndex = yearIndex * 2;
+                     dayStartIndex =
+                        dayIndex <= yearIndex ? dayIndex * 2 : dayIndex * 2 + 2;
+                     monthStartIndex =
+                        monthIndex <= yearIndex
+                           ? monthIndex * 2
+                           : monthIndex * 2 + 2;
+
+                     day = parseInt(
+                        value.slice(dayStartIndex, dayStartIndex + 2),
+                        10
+                     );
+                     month = parseInt(
+                        value.slice(monthStartIndex, monthStartIndex + 2),
+                        10
+                     );
+                     year = parseInt(
+                        value.slice(yearStartIndex, yearStartIndex + 4),
+                        10
+                     );
+
+                     fullYearDone =
+                        value.slice(yearStartIndex, yearStartIndex + 4)
+                           .length === 4;
+
+                     date = this.getFixedDate(day, month, year);
+                  }
+
+                  owner.date = date;
+
+                  return date.length === 0
+                     ? value
+                     : datePattern.reduce(function (previous, current) {
+                          switch (current) {
+                             case "d":
+                                return previous + owner.addLeadingZero(date[0]);
+                             case "m":
+                                return previous + owner.addLeadingZero(date[1]);
+                             default:
+                                return (
+                                   previous +
+                                   (fullYearDone
+                                      ? owner.addLeadingZeroForYear(date[2])
+                                      : "")
+                                );
+                          }
+                       }, "");
+               },
+
+               getFixedDate: function (day, month, year) {
+                  day = Math.min(day, 31);
+                  month = Math.min(month, 12);
+                  year = parseInt(year || 0, 10);
+
+                  if (
+                     (month < 7 && month % 2 === 0) ||
+                     (month > 8 && month % 2 === 1)
+                  ) {
+                     day = Math.min(
+                        day,
+                        month === 2 ? (this.isLeapYear(year) ? 29 : 28) : 30
+                     );
+                  }
+
+                  return [day, month, year];
+               },
+
+               isLeapYear: function (year) {
+                  return (
+                     (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0
+                  );
+               },
+
+               addLeadingZero: function (number) {
+                  return (number < 10 ? "0" : "") + number;
+               },
+
+               addLeadingZeroForYear: function (number) {
+                  return (
+                     (number < 10
+                        ? "000"
+                        : number < 100
+                        ? "00"
+                        : number < 1000
+                        ? "0"
+                        : "") + number
+                  );
+               },
+            };
+
+            module.exports = DateFormatter;
+
+            /***/
+         },
+         /* 3 */
+         /***/ function (module, exports) {
+            "use strict";
+
+            var TimeFormatter = function (timePattern, timeFormat) {
+               var owner = this;
+
+               owner.time = [];
+               owner.blocks = [];
+               owner.timePattern = timePattern;
+               owner.timeFormat = timeFormat;
+               owner.initBlocks();
+            };
+
+            TimeFormatter.prototype = {
+               initBlocks: function () {
+                  var owner = this;
+                  owner.timePattern.forEach(function () {
+                     owner.blocks.push(2);
+                  });
                },
 
                getISOFormatTime: function () {
                   var owner = this,
-                     pps = owner.properties;
+                     time = owner.time;
 
-                  return pps.time ? pps.timeFormatter.getISOFormatTime() : '';
+                  return time[2]
+                     ? owner.addLeadingZero(time[0]) +
+                          ":" +
+                          owner.addLeadingZero(time[1]) +
+                          ":" +
+                          owner.addLeadingZero(time[2])
+                     : "";
                },
 
-               getFormattedValue: function () {
-                  return this.element.value;
+               getBlocks: function () {
+                  return this.blocks;
                },
 
-               destroy: function () {
+               getTimeFormatOptions: function () {
                   var owner = this;
-
-                  owner.element.removeEventListener('input', owner.onChangeListener);
-                  owner.element.removeEventListener('keydown', owner.onKeyDownListener);
-                  owner.element.removeEventListener('focus', owner.onFocusListener);
-                  owner.element.removeEventListener('cut', owner.onCutListener);
-                  owner.element.removeEventListener('copy', owner.onCopyListener);
-               },
-
-               toString: function () {
-                  return '[Cleave Object]';
-               }
-            };
-
-            Cleave.NumeralFormatter = __webpack_require__(1);
-            Cleave.DateFormatter = __webpack_require__(2);
-            Cleave.TimeFormatter = __webpack_require__(3);
-            Cleave.PhoneFormatter = __webpack_require__(4);
-            Cleave.CreditCardDetector = __webpack_require__(5);
-            Cleave.Util = __webpack_require__(6);
-            Cleave.DefaultProperties = __webpack_require__(7);
-
-            // for angular directive
-            ((typeof global === 'object' && global) ? global : window)['Cleave'] = Cleave;
-
-            // CommonJS
-            module.exports = Cleave;
-
-            /* WEBPACK VAR INJECTION */
-}.call(exports, (function () { return this; }())))
-
-         /***/
-}),
-/* 1 */
-/***/ (function (module, exports) {
-
-         'use strict';
-
-         var NumeralFormatter = function (numeralDecimalMark,
-            numeralIntegerScale,
-            numeralDecimalScale,
-            numeralThousandsGroupStyle,
-            numeralPositiveOnly,
-            stripLeadingZeroes,
-            delimiter) {
-            var owner = this;
-
-            owner.numeralDecimalMark = numeralDecimalMark || '.';
-            owner.numeralIntegerScale = numeralIntegerScale > 0 ? numeralIntegerScale : 0;
-            owner.numeralDecimalScale = numeralDecimalScale >= 0 ? numeralDecimalScale : 2;
-            owner.numeralThousandsGroupStyle = numeralThousandsGroupStyle || NumeralFormatter.groupStyle.thousand;
-            owner.numeralPositiveOnly = !!numeralPositiveOnly;
-            owner.stripLeadingZeroes = stripLeadingZeroes !== false;
-            owner.delimiter = (delimiter || delimiter === '') ? delimiter : ',';
-            owner.delimiterRE = delimiter ? new RegExp('\\' + delimiter, 'g') : '';
-         };
-
-         NumeralFormatter.groupStyle = {
-            thousand: 'thousand',
-            lakh: 'lakh',
-            wan: 'wan',
-            none: 'none'
-         };
-
-         NumeralFormatter.prototype = {
-            getRawValue: function (value) {
-               return value.replace(this.delimiterRE, '').replace(this.numeralDecimalMark, '.');
-            },
-
-            format: function (value) {
-               var owner = this, parts, partInteger, partDecimal = '';
-
-               // strip alphabet letters
-               value = value.replace(/[A-Za-z]/g, '')
-                  // replace the first decimal mark with reserved placeholder
-                  .replace(owner.numeralDecimalMark, 'M')
-
-                  // strip non numeric letters except minus and "M"
-                  // this is to ensure prefix has been stripped
-                  .replace(/[^\dM-]/g, '')
-
-                  // replace the leading minus with reserved placeholder
-                  .replace(/^\-/, 'N')
-
-                  // strip the other minus sign (if present)
-                  .replace(/\-/g, '')
-
-                  // replace the minus sign (if present)
-                  .replace('N', owner.numeralPositiveOnly ? '' : '-')
-
-                  // replace decimal mark
-                  .replace('M', owner.numeralDecimalMark);
-
-               // strip any leading zeros
-               if (owner.stripLeadingZeroes) {
-                  value = value.replace(/^(-)?0+(?=\d)/, '$1');
-               }
-
-               partInteger = value;
-
-               if (value.indexOf(owner.numeralDecimalMark) >= 0) {
-                  parts = value.split(owner.numeralDecimalMark);
-                  partInteger = parts[0];
-                  partDecimal = owner.numeralDecimalMark + parts[1].slice(0, owner.numeralDecimalScale);
-               }
-
-               if (owner.numeralIntegerScale > 0) {
-                  partInteger = partInteger.slice(0, owner.numeralIntegerScale + (value.slice(0, 1) === '-' ? 1 : 0));
-               }
-
-               switch (owner.numeralThousandsGroupStyle) {
-                  case NumeralFormatter.groupStyle.lakh:
-                     partInteger = partInteger.replace(/(\d)(?=(\d\d)+\d$)/g, '$1' + owner.delimiter);
-
-                     break;
-
-                  case NumeralFormatter.groupStyle.wan:
-                     partInteger = partInteger.replace(/(\d)(?=(\d{4})+$)/g, '$1' + owner.delimiter);
-
-                     break;
-
-                  case NumeralFormatter.groupStyle.thousand:
-                     partInteger = partInteger.replace(/(\d)(?=(\d{3})+$)/g, '$1' + owner.delimiter);
-
-                     break;
-               }
-
-               return partInteger.toString() + (owner.numeralDecimalScale > 0 ? partDecimal.toString() : '');
-            }
-         };
-
-         module.exports = NumeralFormatter;
-
-
-         /***/
-}),
-/* 2 */
-/***/ (function (module, exports) {
-
-         'use strict';
-
-         var DateFormatter = function (datePattern) {
-            var owner = this;
-
-            owner.date = [];
-            owner.blocks = [];
-            owner.datePattern = datePattern;
-            owner.initBlocks();
-         };
-
-         DateFormatter.prototype = {
-            initBlocks: function () {
-               var owner = this;
-               owner.datePattern.forEach(function (value) {
-                  if (value === 'Y') {
-                     owner.blocks.push(4);
-                  } else {
-                     owner.blocks.push(2);
-                  }
-               });
-            },
-
-            getISOFormatDate: function () {
-               var owner = this,
-                  date = owner.date;
-
-               return date[2] ? (
-                  date[2] + '-' + owner.addLeadingZero(date[1]) + '-' + owner.addLeadingZero(date[0])
-               ) : '';
-            },
-
-            getBlocks: function () {
-               return this.blocks;
-            },
-
-            getValidatedDate: function (value) {
-               var owner = this, result = '';
-
-               value = value.replace(/[^\d]/g, '');
-
-               owner.blocks.forEach(function (length, index) {
-                  if (value.length > 0) {
-                     var sub = value.slice(0, length),
-                        sub0 = sub.slice(0, 1),
-                        rest = value.slice(length);
-
-                     switch (owner.datePattern[index]) {
-                        case 'd':
-                           if (sub === '00') {
-                              sub = '01';
-                           } else if (parseInt(sub0, 10) > 3) {
-                              sub = '0' + sub0;
-                           } else if (parseInt(sub, 10) > 31) {
-                              sub = '31';
-                           }
-
-                           break;
-
-                        case 'm':
-                           if (sub === '00') {
-                              sub = '01';
-                           } else if (parseInt(sub0, 10) > 1) {
-                              sub = '0' + sub0;
-                           } else if (parseInt(sub, 10) > 12) {
-                              sub = '12';
-                           }
-
-                           break;
-                     }
-
-                     result += sub;
-
-                     // update remaining string
-                     value = rest;
-                  }
-               });
-
-               return this.getFixedDateString(result);
-            },
-
-            getFixedDateString: function (value) {
-               var owner = this, datePattern = owner.datePattern, date = [],
-                  dayIndex = 0, monthIndex = 0, yearIndex = 0,
-                  dayStartIndex = 0, monthStartIndex = 0, yearStartIndex = 0,
-                  day, month, year, fullYearDone = false;
-
-               // mm-dd || dd-mm
-               if (value.length === 4 && datePattern[0].toLowerCase() !== 'y' && datePattern[1].toLowerCase() !== 'y') {
-                  dayStartIndex = datePattern[0] === 'd' ? 0 : 2;
-                  monthStartIndex = 2 - dayStartIndex;
-                  day = parseInt(value.slice(dayStartIndex, dayStartIndex + 2), 10);
-                  month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);
-
-                  date = this.getFixedDate(day, month, 0);
-               }
-
-               // yyyy-mm-dd || yyyy-dd-mm || mm-dd-yyyy || dd-mm-yyyy || dd-yyyy-mm || mm-yyyy-dd
-               if (value.length === 8) {
-                  datePattern.forEach(function (type, index) {
-                     switch (type) {
-                        case 'd':
-                           dayIndex = index;
-                           break;
-                        case 'm':
-                           monthIndex = index;
-                           break;
-                        default:
-                           yearIndex = index;
-                           break;
-                     }
-                  });
-
-                  yearStartIndex = yearIndex * 2;
-                  dayStartIndex = (dayIndex <= yearIndex) ? dayIndex * 2 : (dayIndex * 2 + 2);
-                  monthStartIndex = (monthIndex <= yearIndex) ? monthIndex * 2 : (monthIndex * 2 + 2);
-
-                  day = parseInt(value.slice(dayStartIndex, dayStartIndex + 2), 10);
-                  month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);
-                  year = parseInt(value.slice(yearStartIndex, yearStartIndex + 4), 10);
-
-                  fullYearDone = value.slice(yearStartIndex, yearStartIndex + 4).length === 4;
-
-                  date = this.getFixedDate(day, month, year);
-               }
-
-               owner.date = date;
-
-               return date.length === 0 ? value : datePattern.reduce(function (previous, current) {
-                  switch (current) {
-                     case 'd':
-                        return previous + owner.addLeadingZero(date[0]);
-                     case 'm':
-                        return previous + owner.addLeadingZero(date[1]);
-                     default:
-                        return previous + (fullYearDone ? owner.addLeadingZeroForYear(date[2]) : '');
-                  }
-               }, '');
-            },
-
-            getFixedDate: function (day, month, year) {
-               day = Math.min(day, 31);
-               month = Math.min(month, 12);
-               year = parseInt((year || 0), 10);
-
-               if ((month < 7 && month % 2 === 0) || (month > 8 && month % 2 === 1)) {
-                  day = Math.min(day, month === 2 ? (this.isLeapYear(year) ? 29 : 28) : 30);
-               }
-
-               return [day, month, year];
-            },
-
-            isLeapYear: function (year) {
-               return ((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0);
-            },
-
-            addLeadingZero: function (number) {
-               return (number < 10 ? '0' : '') + number;
-            },
-
-            addLeadingZeroForYear: function (number) {
-               return (number < 10 ? '000' : (number < 100 ? '00' : (number < 1000 ? '0' : ''))) + number;
-            }
-         };
-
-         module.exports = DateFormatter;
-
-
-
-         /***/
-}),
-/* 3 */
-/***/ (function (module, exports) {
-
-         'use strict';
-
-         var TimeFormatter = function (timePattern, timeFormat) {
-            var owner = this;
-
-            owner.time = [];
-            owner.blocks = [];
-            owner.timePattern = timePattern;
-            owner.timeFormat = timeFormat;
-            owner.initBlocks();
-         };
-
-         TimeFormatter.prototype = {
-            initBlocks: function () {
-               var owner = this;
-               owner.timePattern.forEach(function () {
-                  owner.blocks.push(2);
-               });
-            },
-
-            getISOFormatTime: function () {
-               var owner = this,
-                  time = owner.time;
-
-               return time[2] ? (
-                  owner.addLeadingZero(time[0]) + ':' + owner.addLeadingZero(time[1]) + ':' + owner.addLeadingZero(time[2])
-               ) : '';
-            },
-
-            getBlocks: function () {
-               return this.blocks;
-            },
-
-            getTimeFormatOptions: function () {
-               var owner = this;
-               if (String(owner.timeFormat) === '12') {
-                  return {
-                     maxHourFirstDigit: 1,
-                     maxHours: 12,
-                     maxMinutesFirstDigit: 5,
-                     maxMinutes: 60
-                  };
-               }
-
-               return {
-                  maxHourFirstDigit: 2,
-                  maxHours: 23,
-                  maxMinutesFirstDigit: 5,
-                  maxMinutes: 60
-               };
-            },
-
-            getValidatedTime: function (value) {
-               var owner = this, result = '';
-
-               value = value.replace(/[^\d]/g, '');
-
-               var timeFormatOptions = owner.getTimeFormatOptions();
-
-               owner.blocks.forEach(function (length, index) {
-                  if (value.length > 0) {
-                     var sub = value.slice(0, length),
-                        sub0 = sub.slice(0, 1),
-                        rest = value.slice(length);
-
-                     switch (owner.timePattern[index]) {
-
-                        case 'h':
-                           if (parseInt(sub0, 10) > timeFormatOptions.maxHourFirstDigit) {
-                              sub = '0' + sub0;
-                           } else if (parseInt(sub, 10) > timeFormatOptions.maxHours) {
-                              sub = timeFormatOptions.maxHours + '';
-                           }
-
-                           break;
-
-                        case 'm':
-                        case 's':
-                           if (parseInt(sub0, 10) > timeFormatOptions.maxMinutesFirstDigit) {
-                              sub = '0' + sub0;
-                           } else if (parseInt(sub, 10) > timeFormatOptions.maxMinutes) {
-                              sub = timeFormatOptions.maxMinutes + '';
-                           }
-                           break;
-                     }
-
-                     result += sub;
-
-                     // update remaining string
-                     value = rest;
-                  }
-               });
-
-               return this.getFixedTimeString(result);
-            },
-
-            getFixedTimeString: function (value) {
-               var owner = this, timePattern = owner.timePattern, time = [],
-                  secondIndex = 0, minuteIndex = 0, hourIndex = 0,
-                  secondStartIndex = 0, minuteStartIndex = 0, hourStartIndex = 0,
-                  second, minute, hour;
-
-               if (value.length === 6) {
-                  timePattern.forEach(function (type, index) {
-                     switch (type) {
-                        case 's':
-                           secondIndex = index * 2;
-                           break;
-                        case 'm':
-                           minuteIndex = index * 2;
-                           break;
-                        case 'h':
-                           hourIndex = index * 2;
-                           break;
-                     }
-                  });
-
-                  hourStartIndex = hourIndex;
-                  minuteStartIndex = minuteIndex;
-                  secondStartIndex = secondIndex;
-
-                  second = parseInt(value.slice(secondStartIndex, secondStartIndex + 2), 10);
-                  minute = parseInt(value.slice(minuteStartIndex, minuteStartIndex + 2), 10);
-                  hour = parseInt(value.slice(hourStartIndex, hourStartIndex + 2), 10);
-
-                  time = this.getFixedTime(hour, minute, second);
-               }
-
-               if (value.length === 4 && owner.timePattern.indexOf('s') < 0) {
-                  timePattern.forEach(function (type, index) {
-                     switch (type) {
-                        case 'm':
-                           minuteIndex = index * 2;
-                           break;
-                        case 'h':
-                           hourIndex = index * 2;
-                           break;
-                     }
-                  });
-
-                  hourStartIndex = hourIndex;
-                  minuteStartIndex = minuteIndex;
-
-                  second = 0;
-                  minute = parseInt(value.slice(minuteStartIndex, minuteStartIndex + 2), 10);
-                  hour = parseInt(value.slice(hourStartIndex, hourStartIndex + 2), 10);
-
-                  time = this.getFixedTime(hour, minute, second);
-               }
-
-               owner.time = time;
-
-               return time.length === 0 ? value : timePattern.reduce(function (previous, current) {
-                  switch (current) {
-                     case 's':
-                        return previous + owner.addLeadingZero(time[2]);
-                     case 'm':
-                        return previous + owner.addLeadingZero(time[1]);
-                     case 'h':
-                        return previous + owner.addLeadingZero(time[0]);
-                  }
-               }, '');
-            },
-
-            getFixedTime: function (hour, minute, second) {
-               second = Math.min(parseInt(second || 0, 10), 60);
-               minute = Math.min(minute, 60);
-               hour = Math.min(hour, 60);
-
-               return [hour, minute, second];
-            },
-
-            addLeadingZero: function (number) {
-               return (number < 10 ? '0' : '') + number;
-            }
-         };
-
-         module.exports = TimeFormatter;
-
-
-         /***/
-}),
-/* 4 */
-/***/ (function (module, exports) {
-
-         'use strict';
-
-         var PhoneFormatter = function (formatter, delimiter) {
-            var owner = this;
-
-            owner.delimiter = (delimiter || delimiter === '') ? delimiter : ' ';
-            owner.delimiterRE = delimiter ? new RegExp('\\' + delimiter, 'g') : '';
-
-            owner.formatter = formatter;
-         };
-
-         PhoneFormatter.prototype = {
-            setFormatter: function (formatter) {
-               this.formatter = formatter;
-            },
-
-            format: function (phoneNumber) {
-               var owner = this;
-
-               owner.formatter.clear();
-
-               // only keep number and +
-               phoneNumber = phoneNumber.replace(/[^\d+]/g, '');
-
-               // strip non-leading +
-               phoneNumber = phoneNumber.replace(/^\+/, 'B').replace(/\+/g, '').replace('B', '+');
-
-               // strip delimiter
-               phoneNumber = phoneNumber.replace(owner.delimiterRE, '');
-
-               var result = '', current, validated = false;
-
-               for (var i = 0, iMax = phoneNumber.length; i < iMax; i++) {
-                  current = owner.formatter.inputDigit(phoneNumber.charAt(i));
-
-                  // has ()- or space inside
-                  if (/[\s()-]/g.test(current)) {
-                     result = current;
-
-                     validated = true;
-                  } else {
-                     if (!validated) {
-                        result = current;
-                     }
-                     // else: over length input
-                     // it turns to invalid number again
-                  }
-               }
-
-               // strip ()
-               // e.g. US: 7161234567 returns (716) 123-4567
-               result = result.replace(/[()]/g, '');
-               // replace library delimiter with user customized delimiter
-               result = result.replace(/[\s-]/g, owner.delimiter);
-
-               return result;
-            }
-         };
-
-         module.exports = PhoneFormatter;
-
-
-         /***/
-}),
-/* 5 */
-/***/ (function (module, exports) {
-
-         'use strict';
-
-         var CreditCardDetector = {
-            blocks: {
-               uatp: [4, 5, 6],
-               amex: [4, 6, 5],
-               diners: [4, 6, 4],
-               discover: [4, 4, 4, 4],
-               mastercard: [4, 4, 4, 4],
-               dankort: [4, 4, 4, 4],
-               instapayment: [4, 4, 4, 4],
-               jcb15: [4, 6, 5],
-               jcb: [4, 4, 4, 4],
-               maestro: [4, 4, 4, 4],
-               visa: [4, 4, 4, 4],
-               mir: [4, 4, 4, 4],
-               unionPay: [4, 4, 4, 4],
-               general: [4, 4, 4, 4],
-               generalStrict: [4, 4, 4, 7]
-            },
-
-            re: {
-               // starts with 1; 15 digits, not starts with 1800 (jcb card)
-               uatp: /^(?!1800)1\d{0,14}/,
-
-               // starts with 34/37; 15 digits
-               amex: /^3[47]\d{0,13}/,
-
-               // starts with 6011/65/644-649; 16 digits
-               discover: /^(?:6011|65\d{0,2}|64[4-9]\d?)\d{0,12}/,
-
-               // starts with 300-305/309 or 36/38/39; 14 digits
-               diners: /^3(?:0([0-5]|9)|[689]\d?)\d{0,11}/,
-
-               // starts with 51-55/2221–2720; 16 digits
-               mastercard: /^(5[1-5]\d{0,2}|22[2-9]\d{0,1}|2[3-7]\d{0,2})\d{0,12}/,
-
-               // starts with 5019/4175/4571; 16 digits
-               dankort: /^(5019|4175|4571)\d{0,12}/,
-
-               // starts with 637-639; 16 digits
-               instapayment: /^63[7-9]\d{0,13}/,
-
-               // starts with 2131/1800; 15 digits
-               jcb15: /^(?:2131|1800)\d{0,11}/,
-
-               // starts with 2131/1800/35; 16 digits
-               jcb: /^(?:35\d{0,2})\d{0,12}/,
-
-               // starts with 50/56-58/6304/67; 16 digits
-               maestro: /^(?:5[0678]\d{0,2}|6304|67\d{0,2})\d{0,12}/,
-
-               // starts with 22; 16 digits
-               mir: /^220[0-4]\d{0,12}/,
-
-               // starts with 4; 16 digits
-               visa: /^4\d{0,15}/,
-
-               // starts with 62; 16 digits
-               unionPay: /^62\d{0,14}/
-            },
-
-            getInfo: function (value, strictMode) {
-               var blocks = CreditCardDetector.blocks,
-                  re = CreditCardDetector.re;
-
-               // Some credit card can have up to 19 digits number.
-               // Set strictMode to true will remove the 16 max-length restrain,
-               // however, I never found any website validate card number like
-               // this, hence probably you don't want to enable this option.
-               strictMode = !!strictMode;
-
-               for (var key in re) {
-                  if (re[key].test(value)) {
-                     var block;
-
-                     if (strictMode) {
-                        block = blocks.generalStrict;
-                     } else {
-                        block = blocks[key];
-                     }
-
+                  if (String(owner.timeFormat) === "12") {
                      return {
-                        type: key,
-                        blocks: block
+                        maxHourFirstDigit: 1,
+                        maxHours: 12,
+                        maxMinutesFirstDigit: 5,
+                        maxMinutes: 60,
                      };
                   }
-               }
 
-               return {
-                  type: 'unknown',
-                  blocks: strictMode ? blocks.generalStrict : blocks.general
-               };
-            }
-         };
+                  return {
+                     maxHourFirstDigit: 2,
+                     maxHours: 23,
+                     maxMinutesFirstDigit: 5,
+                     maxMinutes: 60,
+                  };
+               },
 
-         module.exports = CreditCardDetector;
+               getValidatedTime: function (value) {
+                  var owner = this,
+                     result = "";
 
+                  value = value.replace(/[^\d]/g, "");
 
-         /***/
-}),
-/* 6 */
-/***/ (function (module, exports) {
+                  var timeFormatOptions = owner.getTimeFormatOptions();
 
-         'use strict';
+                  owner.blocks.forEach(function (length, index) {
+                     if (value.length > 0) {
+                        var sub = value.slice(0, length),
+                           sub0 = sub.slice(0, 1),
+                           rest = value.slice(length);
 
-         var Util = {
-            noop: function () {
-            },
+                        switch (owner.timePattern[index]) {
+                           case "h":
+                              if (
+                                 parseInt(sub0, 10) >
+                                 timeFormatOptions.maxHourFirstDigit
+                              ) {
+                                 sub = "0" + sub0;
+                              } else if (
+                                 parseInt(sub, 10) > timeFormatOptions.maxHours
+                              ) {
+                                 sub = timeFormatOptions.maxHours + "";
+                              }
 
-            strip: function (value, re) {
-               return value.replace(re, '');
-            },
+                              break;
 
-            getPostDelimiter: function (value, delimiter, delimiters) {
-               // single delimiter
-               if (delimiters.length === 0) {
-                  return value.slice(-delimiter.length) === delimiter ? delimiter : '';
-               }
+                           case "m":
+                           case "s":
+                              if (
+                                 parseInt(sub0, 10) >
+                                 timeFormatOptions.maxMinutesFirstDigit
+                              ) {
+                                 sub = "0" + sub0;
+                              } else if (
+                                 parseInt(sub, 10) >
+                                 timeFormatOptions.maxMinutes
+                              ) {
+                                 sub = timeFormatOptions.maxMinutes + "";
+                              }
+                              break;
+                        }
 
-               // multiple delimiters
-               var matchedDelimiter = '';
-               delimiters.forEach(function (current) {
-                  if (value.slice(-current.length) === current) {
-                     matchedDelimiter = current;
-                  }
-               });
+                        result += sub;
 
-               return matchedDelimiter;
-            },
-
-            getDelimiterREByDelimiter: function (delimiter) {
-               return new RegExp(delimiter.replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1'), 'g');
-            },
-
-            getNextCursorPosition: function (prevPos, oldValue, newValue, delimiter, delimiters) {
-               // If cursor was at the end of value, just place it back.
-               // Because new value could contain additional chars.
-               if (oldValue.length === prevPos) {
-                  return newValue.length;
-               }
-
-               return prevPos + this.getPositionOffset(prevPos, oldValue, newValue, delimiter, delimiters);
-            },
-
-            getPositionOffset: function (prevPos, oldValue, newValue, delimiter, delimiters) {
-               var oldRawValue, newRawValue, lengthOffset;
-
-               oldRawValue = this.stripDelimiters(oldValue.slice(0, prevPos), delimiter, delimiters);
-               newRawValue = this.stripDelimiters(newValue.slice(0, prevPos), delimiter, delimiters);
-               lengthOffset = oldRawValue.length - newRawValue.length;
-
-               return (lengthOffset !== 0) ? (lengthOffset / Math.abs(lengthOffset)) : 0;
-            },
-
-            stripDelimiters: function (value, delimiter, delimiters) {
-               var owner = this;
-
-               // single delimiter
-               if (delimiters.length === 0) {
-                  var delimiterRE = delimiter ? owner.getDelimiterREByDelimiter(delimiter) : '';
-
-                  return value.replace(delimiterRE, '');
-               }
-
-               // multiple delimiters
-               delimiters.forEach(function (current) {
-                  current.split('').forEach(function (letter) {
-                     value = value.replace(owner.getDelimiterREByDelimiter(letter), '');
+                        // update remaining string
+                        value = rest;
+                     }
                   });
-               });
 
-               return value;
-            },
+                  return this.getFixedTimeString(result);
+               },
 
-            headStr: function (str, length) {
-               return str.slice(0, length);
-            },
+               getFixedTimeString: function (value) {
+                  var owner = this,
+                     timePattern = owner.timePattern,
+                     time = [],
+                     secondIndex = 0,
+                     minuteIndex = 0,
+                     hourIndex = 0,
+                     secondStartIndex = 0,
+                     minuteStartIndex = 0,
+                     hourStartIndex = 0,
+                     second,
+                     minute,
+                     hour;
 
-            getMaxLength: function (blocks) {
-               return blocks.reduce(function (previous, current) {
-                  return previous + current;
-               }, 0);
-            },
-
-            // strip prefix
-            // Before type  |   After type    |     Return value
-            // PEFIX-...    |   PEFIX-...     |     ''
-            // PREFIX-123   |   PEFIX-123     |     123
-            // PREFIX-123   |   PREFIX-23     |     23
-            // PREFIX-123   |   PREFIX-1234   |     1234
-            getPrefixStrippedValue: function (value, prefix, prefixLength, prevResult, delimiter, delimiters) {
-               // No prefix
-               if (prefixLength === 0) {
-                  return value;
-               }
-
-               // Pre result has issue
-               // Revert to raw prefix
-               if (prevResult.slice(0, prefixLength) !== prefix) {
-                  return '';
-               }
-
-               var prevValue = this.stripDelimiters(prevResult, delimiter, delimiters);
-
-               // New value has issue, someone typed in between prefix letters
-               // Revert to pre value
-               if (value.slice(0, prefixLength) !== prefix) {
-                  return prevValue.slice(prefixLength);
-               }
-
-               // No issue, strip prefix for new value
-               return value.slice(prefixLength);
-            },
-
-            getFirstDiffIndex: function (prev, current) {
-               var index = 0;
-
-               while (prev.charAt(index) === current.charAt(index)) {
-                  if (prev.charAt(index++) === '') {
-                     return -1;
-                  }
-               }
-
-               return index;
-            },
-
-            getFormattedValue: function (value, blocks, blocksLength, delimiter, delimiters, delimiterLazyShow) {
-               var result = '',
-                  multipleDelimiters = delimiters.length > 0,
-                  currentDelimiter;
-
-               // no options, normal input
-               if (blocksLength === 0) {
-                  return value;
-               }
-
-               blocks.forEach(function (length, index) {
-                  if (value.length > 0) {
-                     var sub = value.slice(0, length),
-                        rest = value.slice(length);
-
-                     if (multipleDelimiters) {
-                        currentDelimiter = delimiters[delimiterLazyShow ? (index - 1) : index] || currentDelimiter;
-                     } else {
-                        currentDelimiter = delimiter;
-                     }
-
-                     if (delimiterLazyShow) {
-                        if (index > 0) {
-                           result += currentDelimiter;
+                  if (value.length === 6) {
+                     timePattern.forEach(function (type, index) {
+                        switch (type) {
+                           case "s":
+                              secondIndex = index * 2;
+                              break;
+                           case "m":
+                              minuteIndex = index * 2;
+                              break;
+                           case "h":
+                              hourIndex = index * 2;
+                              break;
                         }
+                     });
 
-                        result += sub;
-                     } else {
-                        result += sub;
+                     hourStartIndex = hourIndex;
+                     minuteStartIndex = minuteIndex;
+                     secondStartIndex = secondIndex;
 
-                        if (sub.length === length && index < blocksLength - 1) {
-                           result += currentDelimiter;
+                     second = parseInt(
+                        value.slice(secondStartIndex, secondStartIndex + 2),
+                        10
+                     );
+                     minute = parseInt(
+                        value.slice(minuteStartIndex, minuteStartIndex + 2),
+                        10
+                     );
+                     hour = parseInt(
+                        value.slice(hourStartIndex, hourStartIndex + 2),
+                        10
+                     );
+
+                     time = this.getFixedTime(hour, minute, second);
+                  }
+
+                  if (
+                     value.length === 4 &&
+                     owner.timePattern.indexOf("s") < 0
+                  ) {
+                     timePattern.forEach(function (type, index) {
+                        switch (type) {
+                           case "m":
+                              minuteIndex = index * 2;
+                              break;
+                           case "h":
+                              hourIndex = index * 2;
+                              break;
                         }
-                     }
+                     });
 
-                     // update remaining string
-                     value = rest;
+                     hourStartIndex = hourIndex;
+                     minuteStartIndex = minuteIndex;
+
+                     second = 0;
+                     minute = parseInt(
+                        value.slice(minuteStartIndex, minuteStartIndex + 2),
+                        10
+                     );
+                     hour = parseInt(
+                        value.slice(hourStartIndex, hourStartIndex + 2),
+                        10
+                     );
+
+                     time = this.getFixedTime(hour, minute, second);
                   }
-               });
 
-               return result;
-            },
+                  owner.time = time;
 
-            // move cursor to the end
-            // the first time user focuses on an input with prefix
-            fixPrefixCursor: function (el, prefix, delimiter, delimiters) {
-               if (!el) {
-                  return;
-               }
+                  return time.length === 0
+                     ? value
+                     : timePattern.reduce(function (previous, current) {
+                          switch (current) {
+                             case "s":
+                                return previous + owner.addLeadingZero(time[2]);
+                             case "m":
+                                return previous + owner.addLeadingZero(time[1]);
+                             case "h":
+                                return previous + owner.addLeadingZero(time[0]);
+                          }
+                       }, "");
+               },
 
-               var val = el.value,
-                  appendix = delimiter || (delimiters[0] || ' ');
+               getFixedTime: function (hour, minute, second) {
+                  second = Math.min(parseInt(second || 0, 10), 60);
+                  minute = Math.min(minute, 60);
+                  hour = Math.min(hour, 60);
 
-               if (!el.setSelectionRange || !prefix || (prefix.length + appendix.length) < val.length) {
-                  return;
-               }
+                  return [hour, minute, second];
+               },
 
-               var len = val.length * 2;
-
-               // set timeout to avoid blink
-               setTimeout(function () {
-                  el.setSelectionRange(len, len);
-               }, 1);
-            },
-
-            setSelection: function (element, position, doc) {
-               if (element !== this.getActiveElement(doc)) {
-                  return;
-               }
-
-               // cursor is already in the end
-               if (element && element.value.length <= position) {
-                  return;
-               }
-
-               if (element.createTextRange) {
-                  var range = element.createTextRange();
-
-                  range.move('character', position);
-                  range.select();
-               } else {
-                  try {
-                     element.setSelectionRange(position, position);
-                  } catch (e) {
-                     // eslint-disable-next-line
-                     console.warn('The input element type does not support selection');
-                  }
-               }
-            },
-
-            getActiveElement: function (parent) {
-               var activeElement = parent.activeElement;
-               if (activeElement && activeElement.shadowRoot) {
-                  return this.getActiveElement(activeElement.shadowRoot);
-               }
-               return activeElement;
-            },
-
-            isAndroid: function () {
-               return navigator && /android/i.test(navigator.userAgent);
-            },
-
-            // On Android chrome, the keyup and keydown events
-            // always return key code 229 as a composition that
-            // buffers the user’s keystrokes
-            // see https://github.com/nosir/cleave.js/issues/147
-            isAndroidBackspaceKeydown: function (lastInputValue, currentInputValue) {
-               if (!this.isAndroid() || !lastInputValue || !currentInputValue) {
-                  return false;
-               }
-
-               return currentInputValue === lastInputValue.slice(0, -1);
-            }
-         };
-
-         module.exports = Util;
-
-
-         /***/
-}),
-/* 7 */
-/***/ (function (module, exports) {
-
-	/* WEBPACK VAR INJECTION */(function (global) {
-            'use strict';
-
-            /**
-             * Props Assignment
-             *
-             * Separate this, so react module can share the usage
-             */
-            var DefaultProperties = {
-               // Maybe change to object-assign
-               // for now just keep it as simple
-               assign: function (target, opts) {
-                  target = target || {};
-                  opts = opts || {};
-
-                  // credit card
-                  target.creditCard = !!opts.creditCard;
-                  target.creditCardStrictMode = !!opts.creditCardStrictMode;
-                  target.creditCardType = '';
-                  target.onCreditCardTypeChanged = opts.onCreditCardTypeChanged || (function () { });
-
-                  // phone
-                  target.phone = !!opts.phone;
-                  target.phoneRegionCode = opts.phoneRegionCode || 'AU';
-                  target.phoneFormatter = {};
-
-                  // time
-                  target.time = !!opts.time;
-                  target.timePattern = opts.timePattern || ['h', 'm', 's'];
-                  target.timeFormat = opts.timeFormat || '24';
-                  target.timeFormatter = {};
-
-                  // date
-                  target.date = !!opts.date;
-                  target.datePattern = opts.datePattern || ['d', 'm', 'Y'];
-                  target.dateFormatter = {};
-
-                  // numeral
-                  target.numeral = !!opts.numeral;
-                  target.numeralIntegerScale = opts.numeralIntegerScale > 0 ? opts.numeralIntegerScale : 0;
-                  target.numeralDecimalScale = opts.numeralDecimalScale >= 0 ? opts.numeralDecimalScale : 2;
-                  target.numeralDecimalMark = opts.numeralDecimalMark || '.';
-                  target.numeralThousandsGroupStyle = opts.numeralThousandsGroupStyle || 'thousand';
-                  target.numeralPositiveOnly = !!opts.numeralPositiveOnly;
-                  target.stripLeadingZeroes = opts.stripLeadingZeroes !== false;
-
-                  // others
-                  target.numericOnly = target.creditCard || target.date || !!opts.numericOnly;
-
-                  target.uppercase = !!opts.uppercase;
-                  target.lowercase = !!opts.lowercase;
-
-                  target.prefix = (target.creditCard || target.date) ? '' : (opts.prefix || '');
-                  target.noImmediatePrefix = !!opts.noImmediatePrefix;
-                  target.prefixLength = target.prefix.length;
-                  target.rawValueTrimPrefix = !!opts.rawValueTrimPrefix;
-                  target.copyDelimiter = !!opts.copyDelimiter;
-
-                  target.initValue = (opts.initValue !== undefined && opts.initValue !== null) ? opts.initValue.toString() : '';
-
-                  target.delimiter =
-                     (opts.delimiter || opts.delimiter === '') ? opts.delimiter :
-                        (opts.date ? '/' :
-                           (opts.time ? ':' :
-                              (opts.numeral ? ',' :
-                                 (opts.phone ? ' ' :
-                                    ' '))));
-                  target.delimiterLength = target.delimiter.length;
-                  target.delimiterLazyShow = !!opts.delimiterLazyShow;
-                  target.delimiters = opts.delimiters || [];
-
-                  target.blocks = opts.blocks || [];
-                  target.blocksLength = target.blocks.length;
-
-                  target.root = (typeof global === 'object' && global) ? global : window;
-                  target.document = opts.document || target.root.document;
-
-                  target.maxLength = 0;
-
-                  target.backspace = false;
-                  target.result = '';
-
-                  target.onValueChanged = opts.onValueChanged || (function () { });
-
-                  return target;
-               }
+               addLeadingZero: function (number) {
+                  return (number < 10 ? "0" : "") + number;
+               },
             };
 
-            module.exports = DefaultProperties;
+            module.exports = TimeFormatter;
 
-            /* WEBPACK VAR INJECTION */
-}.call(exports, (function () { return this; }())))
+            /***/
+         },
+         /* 4 */
+         /***/ function (module, exports) {
+            "use strict";
 
-         /***/
-})
-/******/])
+            var PhoneFormatter = function (formatter, delimiter) {
+               var owner = this;
+
+               owner.delimiter =
+                  delimiter || delimiter === "" ? delimiter : " ";
+               owner.delimiterRE = delimiter
+                  ? new RegExp("\\" + delimiter, "g")
+                  : "";
+
+               owner.formatter = formatter;
+            };
+
+            PhoneFormatter.prototype = {
+               setFormatter: function (formatter) {
+                  this.formatter = formatter;
+               },
+
+               format: function (phoneNumber) {
+                  var owner = this;
+
+                  owner.formatter.clear();
+
+                  // only keep number and +
+                  phoneNumber = phoneNumber.replace(/[^\d+]/g, "");
+
+                  // strip non-leading +
+                  phoneNumber = phoneNumber
+                     .replace(/^\+/, "B")
+                     .replace(/\+/g, "")
+                     .replace("B", "+");
+
+                  // strip delimiter
+                  phoneNumber = phoneNumber.replace(owner.delimiterRE, "");
+
+                  var result = "",
+                     current,
+                     validated = false;
+
+                  for (var i = 0, iMax = phoneNumber.length; i < iMax; i++) {
+                     current = owner.formatter.inputDigit(
+                        phoneNumber.charAt(i)
+                     );
+
+                     // has ()- or space inside
+                     if (/[\s()-]/g.test(current)) {
+                        result = current;
+
+                        validated = true;
+                     } else {
+                        if (!validated) {
+                           result = current;
+                        }
+                        // else: over length input
+                        // it turns to invalid number again
+                     }
+                  }
+
+                  // strip ()
+                  // e.g. US: 7161234567 returns (716) 123-4567
+                  result = result.replace(/[()]/g, "");
+                  // replace library delimiter with user customized delimiter
+                  result = result.replace(/[\s-]/g, owner.delimiter);
+
+                  return result;
+               },
+            };
+
+            module.exports = PhoneFormatter;
+
+            /***/
+         },
+         /* 5 */
+         /***/ function (module, exports) {
+            "use strict";
+
+            var CreditCardDetector = {
+               blocks: {
+                  uatp: [4, 5, 6],
+                  amex: [4, 6, 5],
+                  diners: [4, 6, 4],
+                  discover: [4, 4, 4, 4],
+                  mastercard: [4, 4, 4, 4],
+                  dankort: [4, 4, 4, 4],
+                  instapayment: [4, 4, 4, 4],
+                  jcb15: [4, 6, 5],
+                  jcb: [4, 4, 4, 4],
+                  maestro: [4, 4, 4, 4],
+                  visa: [4, 4, 4, 4],
+                  mir: [4, 4, 4, 4],
+                  unionPay: [4, 4, 4, 4],
+                  general: [4, 4, 4, 4],
+                  generalStrict: [4, 4, 4, 7],
+               },
+
+               re: {
+                  // starts with 1; 15 digits, not starts with 1800 (jcb card)
+                  uatp: /^(?!1800)1\d{0,14}/,
+
+                  // starts with 34/37; 15 digits
+                  amex: /^3[47]\d{0,13}/,
+
+                  // starts with 6011/65/644-649; 16 digits
+                  discover: /^(?:6011|65\d{0,2}|64[4-9]\d?)\d{0,12}/,
+
+                  // starts with 300-305/309 or 36/38/39; 14 digits
+                  diners: /^3(?:0([0-5]|9)|[689]\d?)\d{0,11}/,
+
+                  // starts with 51-55/2221–2720; 16 digits
+                  mastercard: /^(5[1-5]\d{0,2}|22[2-9]\d{0,1}|2[3-7]\d{0,2})\d{0,12}/,
+
+                  // starts with 5019/4175/4571; 16 digits
+                  dankort: /^(5019|4175|4571)\d{0,12}/,
+
+                  // starts with 637-639; 16 digits
+                  instapayment: /^63[7-9]\d{0,13}/,
+
+                  // starts with 2131/1800; 15 digits
+                  jcb15: /^(?:2131|1800)\d{0,11}/,
+
+                  // starts with 2131/1800/35; 16 digits
+                  jcb: /^(?:35\d{0,2})\d{0,12}/,
+
+                  // starts with 50/56-58/6304/67; 16 digits
+                  maestro: /^(?:5[0678]\d{0,2}|6304|67\d{0,2})\d{0,12}/,
+
+                  // starts with 22; 16 digits
+                  mir: /^220[0-4]\d{0,12}/,
+
+                  // starts with 4; 16 digits
+                  visa: /^4\d{0,15}/,
+
+                  // starts with 62; 16 digits
+                  unionPay: /^62\d{0,14}/,
+               },
+
+               getInfo: function (value, strictMode) {
+                  var blocks = CreditCardDetector.blocks,
+                     re = CreditCardDetector.re;
+
+                  // Some credit card can have up to 19 digits number.
+                  // Set strictMode to true will remove the 16 max-length restrain,
+                  // however, I never found any website validate card number like
+                  // this, hence probably you don't want to enable this option.
+                  strictMode = !!strictMode;
+
+                  for (var key in re) {
+                     if (re[key].test(value)) {
+                        var block;
+
+                        if (strictMode) {
+                           block = blocks.generalStrict;
+                        } else {
+                           block = blocks[key];
+                        }
+
+                        return {
+                           type: key,
+                           blocks: block,
+                        };
+                     }
+                  }
+
+                  return {
+                     type: "unknown",
+                     blocks: strictMode ? blocks.generalStrict : blocks.general,
+                  };
+               },
+            };
+
+            module.exports = CreditCardDetector;
+
+            /***/
+         },
+         /* 6 */
+         /***/ function (module, exports) {
+            "use strict";
+
+            var Util = {
+               noop: function () {},
+
+               strip: function (value, re) {
+                  return value.replace(re, "");
+               },
+
+               getPostDelimiter: function (value, delimiter, delimiters) {
+                  // single delimiter
+                  if (delimiters.length === 0) {
+                     return value.slice(-delimiter.length) === delimiter
+                        ? delimiter
+                        : "";
+                  }
+
+                  // multiple delimiters
+                  var matchedDelimiter = "";
+                  delimiters.forEach(function (current) {
+                     if (value.slice(-current.length) === current) {
+                        matchedDelimiter = current;
+                     }
+                  });
+
+                  return matchedDelimiter;
+               },
+
+               getDelimiterREByDelimiter: function (delimiter) {
+                  return new RegExp(
+                     delimiter.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1"),
+                     "g"
+                  );
+               },
+
+               getNextCursorPosition: function (
+                  prevPos,
+                  oldValue,
+                  newValue,
+                  delimiter,
+                  delimiters
+               ) {
+                  // If cursor was at the end of value, just place it back.
+                  // Because new value could contain additional chars.
+                  if (oldValue.length === prevPos) {
+                     return newValue.length;
+                  }
+
+                  return (
+                     prevPos +
+                     this.getPositionOffset(
+                        prevPos,
+                        oldValue,
+                        newValue,
+                        delimiter,
+                        delimiters
+                     )
+                  );
+               },
+
+               getPositionOffset: function (
+                  prevPos,
+                  oldValue,
+                  newValue,
+                  delimiter,
+                  delimiters
+               ) {
+                  var oldRawValue, newRawValue, lengthOffset;
+
+                  oldRawValue = this.stripDelimiters(
+                     oldValue.slice(0, prevPos),
+                     delimiter,
+                     delimiters
+                  );
+                  newRawValue = this.stripDelimiters(
+                     newValue.slice(0, prevPos),
+                     delimiter,
+                     delimiters
+                  );
+                  lengthOffset = oldRawValue.length - newRawValue.length;
+
+                  return lengthOffset !== 0
+                     ? lengthOffset / Math.abs(lengthOffset)
+                     : 0;
+               },
+
+               stripDelimiters: function (value, delimiter, delimiters) {
+                  var owner = this;
+
+                  // single delimiter
+                  if (delimiters.length === 0) {
+                     var delimiterRE = delimiter
+                        ? owner.getDelimiterREByDelimiter(delimiter)
+                        : "";
+
+                     return value.replace(delimiterRE, "");
+                  }
+
+                  // multiple delimiters
+                  delimiters.forEach(function (current) {
+                     current.split("").forEach(function (letter) {
+                        value = value.replace(
+                           owner.getDelimiterREByDelimiter(letter),
+                           ""
+                        );
+                     });
+                  });
+
+                  return value;
+               },
+
+               headStr: function (str, length) {
+                  return str.slice(0, length);
+               },
+
+               getMaxLength: function (blocks) {
+                  return blocks.reduce(function (previous, current) {
+                     return previous + current;
+                  }, 0);
+               },
+
+               // strip prefix
+               // Before type  |   After type    |     Return value
+               // PEFIX-...    |   PEFIX-...     |     ''
+               // PREFIX-123   |   PEFIX-123     |     123
+               // PREFIX-123   |   PREFIX-23     |     23
+               // PREFIX-123   |   PREFIX-1234   |     1234
+               getPrefixStrippedValue: function (
+                  value,
+                  prefix,
+                  prefixLength,
+                  prevResult,
+                  delimiter,
+                  delimiters
+               ) {
+                  // No prefix
+                  if (prefixLength === 0) {
+                     return value;
+                  }
+
+                  // Pre result has issue
+                  // Revert to raw prefix
+                  if (prevResult.slice(0, prefixLength) !== prefix) {
+                     return "";
+                  }
+
+                  var prevValue = this.stripDelimiters(
+                     prevResult,
+                     delimiter,
+                     delimiters
+                  );
+
+                  // New value has issue, someone typed in between prefix letters
+                  // Revert to pre value
+                  if (value.slice(0, prefixLength) !== prefix) {
+                     return prevValue.slice(prefixLength);
+                  }
+
+                  // No issue, strip prefix for new value
+                  return value.slice(prefixLength);
+               },
+
+               getFirstDiffIndex: function (prev, current) {
+                  var index = 0;
+
+                  while (prev.charAt(index) === current.charAt(index)) {
+                     if (prev.charAt(index++) === "") {
+                        return -1;
+                     }
+                  }
+
+                  return index;
+               },
+
+               getFormattedValue: function (
+                  value,
+                  blocks,
+                  blocksLength,
+                  delimiter,
+                  delimiters,
+                  delimiterLazyShow
+               ) {
+                  var result = "",
+                     multipleDelimiters = delimiters.length > 0,
+                     currentDelimiter;
+
+                  // no options, normal input
+                  if (blocksLength === 0) {
+                     return value;
+                  }
+
+                  blocks.forEach(function (length, index) {
+                     if (value.length > 0) {
+                        var sub = value.slice(0, length),
+                           rest = value.slice(length);
+
+                        if (multipleDelimiters) {
+                           currentDelimiter =
+                              delimiters[
+                                 delimiterLazyShow ? index - 1 : index
+                              ] || currentDelimiter;
+                        } else {
+                           currentDelimiter = delimiter;
+                        }
+
+                        if (delimiterLazyShow) {
+                           if (index > 0) {
+                              result += currentDelimiter;
+                           }
+
+                           result += sub;
+                        } else {
+                           result += sub;
+
+                           if (
+                              sub.length === length &&
+                              index < blocksLength - 1
+                           ) {
+                              result += currentDelimiter;
+                           }
+                        }
+
+                        // update remaining string
+                        value = rest;
+                     }
+                  });
+
+                  return result;
+               },
+
+               // move cursor to the end
+               // the first time user focuses on an input with prefix
+               fixPrefixCursor: function (el, prefix, delimiter, delimiters) {
+                  if (!el) {
+                     return;
+                  }
+
+                  var val = el.value,
+                     appendix = delimiter || delimiters[0] || " ";
+
+                  if (
+                     !el.setSelectionRange ||
+                     !prefix ||
+                     prefix.length + appendix.length < val.length
+                  ) {
+                     return;
+                  }
+
+                  var len = val.length * 2;
+
+                  // set timeout to avoid blink
+                  setTimeout(function () {
+                     el.setSelectionRange(len, len);
+                  }, 1);
+               },
+
+               setSelection: function (element, position, doc) {
+                  if (element !== this.getActiveElement(doc)) {
+                     return;
+                  }
+
+                  // cursor is already in the end
+                  if (element && element.value.length <= position) {
+                     return;
+                  }
+
+                  if (element.createTextRange) {
+                     var range = element.createTextRange();
+
+                     range.move("character", position);
+                     range.select();
+                  } else {
+                     try {
+                        element.setSelectionRange(position, position);
+                     } catch (e) {
+                        // eslint-disable-next-line
+                        console.warn(
+                           "The input element type does not support selection"
+                        );
+                     }
+                  }
+               },
+
+               getActiveElement: function (parent) {
+                  var activeElement = parent.activeElement;
+                  if (activeElement && activeElement.shadowRoot) {
+                     return this.getActiveElement(activeElement.shadowRoot);
+                  }
+                  return activeElement;
+               },
+
+               isAndroid: function () {
+                  return navigator && /android/i.test(navigator.userAgent);
+               },
+
+               // On Android chrome, the keyup and keydown events
+               // always return key code 229 as a composition that
+               // buffers the user’s keystrokes
+               // see https://github.com/nosir/cleave.js/issues/147
+               isAndroidBackspaceKeydown: function (
+                  lastInputValue,
+                  currentInputValue
+               ) {
+                  if (
+                     !this.isAndroid() ||
+                     !lastInputValue ||
+                     !currentInputValue
+                  ) {
+                     return false;
+                  }
+
+                  return currentInputValue === lastInputValue.slice(0, -1);
+               },
+            };
+
+            module.exports = Util;
+
+            /***/
+         },
+         /* 7 */
+         /***/ function (module, exports) {
+            /* WEBPACK VAR INJECTION */ (function (global) {
+               "use strict";
+
+               /**
+                * Props Assignment
+                *
+                * Separate this, so react module can share the usage
+                */
+               var DefaultProperties = {
+                  // Maybe change to object-assign
+                  // for now just keep it as simple
+                  assign: function (target, opts) {
+                     target = target || {};
+                     opts = opts || {};
+
+                     // credit card
+                     target.creditCard = !!opts.creditCard;
+                     target.creditCardStrictMode = !!opts.creditCardStrictMode;
+                     target.creditCardType = "";
+                     target.onCreditCardTypeChanged =
+                        opts.onCreditCardTypeChanged || function () {};
+
+                     // phone
+                     target.phone = !!opts.phone;
+                     target.phoneRegionCode = opts.phoneRegionCode || "AU";
+                     target.phoneFormatter = {};
+
+                     // time
+                     target.time = !!opts.time;
+                     target.timePattern = opts.timePattern || ["h", "m", "s"];
+                     target.timeFormat = opts.timeFormat || "24";
+                     target.timeFormatter = {};
+
+                     // date
+                     target.date = !!opts.date;
+                     target.datePattern = opts.datePattern || ["d", "m", "Y"];
+                     target.dateFormatter = {};
+
+                     // numeral
+                     target.numeral = !!opts.numeral;
+                     target.numeralIntegerScale =
+                        opts.numeralIntegerScale > 0
+                           ? opts.numeralIntegerScale
+                           : 0;
+                     target.numeralDecimalScale =
+                        opts.numeralDecimalScale >= 0
+                           ? opts.numeralDecimalScale
+                           : 2;
+                     target.numeralDecimalMark = opts.numeralDecimalMark || ".";
+                     target.numeralThousandsGroupStyle =
+                        opts.numeralThousandsGroupStyle || "thousand";
+                     target.numeralPositiveOnly = !!opts.numeralPositiveOnly;
+                     target.stripLeadingZeroes =
+                        opts.stripLeadingZeroes !== false;
+
+                     // others
+                     target.numericOnly =
+                        target.creditCard || target.date || !!opts.numericOnly;
+
+                     target.uppercase = !!opts.uppercase;
+                     target.lowercase = !!opts.lowercase;
+
+                     target.prefix =
+                        target.creditCard || target.date
+                           ? ""
+                           : opts.prefix || "";
+                     target.noImmediatePrefix = !!opts.noImmediatePrefix;
+                     target.prefixLength = target.prefix.length;
+                     target.rawValueTrimPrefix = !!opts.rawValueTrimPrefix;
+                     target.copyDelimiter = !!opts.copyDelimiter;
+
+                     target.initValue =
+                        opts.initValue !== undefined && opts.initValue !== null
+                           ? opts.initValue.toString()
+                           : "";
+
+                     target.delimiter =
+                        opts.delimiter || opts.delimiter === ""
+                           ? opts.delimiter
+                           : opts.date
+                           ? "/"
+                           : opts.time
+                           ? ":"
+                           : opts.numeral
+                           ? ","
+                           : opts.phone
+                           ? " "
+                           : " ";
+                     target.delimiterLength = target.delimiter.length;
+                     target.delimiterLazyShow = !!opts.delimiterLazyShow;
+                     target.delimiters = opts.delimiters || [];
+
+                     target.blocks = opts.blocks || [];
+                     target.blocksLength = target.blocks.length;
+
+                     target.root =
+                        typeof global === "object" && global ? global : window;
+                     target.document = opts.document || target.root.document;
+
+                     target.maxLength = 0;
+
+                     target.backspace = false;
+                     target.result = "";
+
+                     target.onValueChanged =
+                        opts.onValueChanged || function () {};
+
+                     return target;
+                  },
+               };
+
+               module.exports = DefaultProperties;
+
+               /* WEBPACK VAR INJECTION */
+            }.call(
+               exports,
+               (function () {
+                  return this;
+               })()
+            ));
+
+            /***/
+         },
+         /******/
+      ]
+   );
 });
-;
\ No newline at end of file
diff --git a/src/cookie.ts b/src/cookie.ts
index 8a3cb6e..5eee21e 100644
--- a/src/cookie.ts
+++ b/src/cookie.ts
@@ -1,15 +1,15 @@
 export function setCookie(cname: string, cvalue: string, exdate: string) {
    const expires = exdate ? `;expires=${exdate}` : "";
-   document.cookie = `${cname}=${cvalue}${expires};path=/;`
+   document.cookie = `${cname}=${cvalue}${expires};path=/;`;
 }
 
 export function getCookie(cname: string) {
    const name = cname + "=";
    const dc = decodeURIComponent(document.cookie);
-   const ca = dc.split(';');
+   const ca = dc.split(";");
    for (let i = 0; i < ca.length; i++) {
       let c = ca[i];
-      while (c.charAt(0) == ' ') {
+      while (c.charAt(0) == " ") {
          c = c.substring(1);
       }
       if (c.indexOf(name) == 0) {
@@ -17,4 +17,4 @@ export function getCookie(cname: string) {
       }
    }
    return "";
-}
\ No newline at end of file
+}
diff --git a/src/global.js b/src/global.js
index 53f5cb1..c7a221a 100644
--- a/src/global.js
+++ b/src/global.js
@@ -2,7 +2,7 @@
    const elements = new WeakSet();
 
    function check() {
-      document.querySelectorAll(".floating>input").forEach(e => {
+      document.querySelectorAll(".floating>input").forEach((e) => {
          if (elements.has(e)) return;
          elements.add(e);
 
@@ -10,26 +10,25 @@
             console.log("Check State");
             if (e.value !== "") {
                if (e.classList.contains("used")) return;
-               e.classList.add("used")
+               e.classList.add("used");
             } else {
-               if (e.classList.contains("used")) e.classList.remove("used")
+               if (e.classList.contains("used")) e.classList.remove("used");
             }
          }
 
-         e.addEventListener("change", () => checkState())
-         checkState()
-      })
-   };
+         e.addEventListener("change", () => checkState());
+         checkState();
+      });
+   }
 
    const observer = new MutationObserver((mutations) => {
       check();
    });
 
-
    // Start observing the target node for configured mutations
    observer.observe(window.document, {
       childList: true,
-      subtree: true
+      subtree: true,
    });
    check();
-})()
\ No newline at end of file
+})();
diff --git a/src/request.ts b/src/request.ts
index 24e76bb..8b1b9b8 100644
--- a/src/request.ts
+++ b/src/request.ts
@@ -4,7 +4,14 @@ import { getCookie } from "./cookie";
 // const baseURL = "http://localhost:3000";
 const baseURL = "";
 
-export default async function request(endpoint: string, parameters: { [key: string]: string } = {}, method: "GET" | "POST" | "DELETE" | "PUT" = "GET", body?: any, authInParam = false, redirect = false) {
+export default async function request(
+   endpoint: string,
+   parameters: { [key: string]: string } = {},
+   method: "GET" | "POST" | "DELETE" | "PUT" = "GET",
+   body?: any,
+   authInParam = false,
+   redirect = false
+) {
    let pairs = [];
 
    if (authInParam) {
@@ -26,19 +33,23 @@ export default async function request(endpoint: string, parameters: { [key: stri
       body: JSON.stringify(body),
       credentials: "same-origin",
       headers: {
-         'content-type': 'application/json'
+         "content-type": "application/json",
       },
-   }).then(e => {
-      if (e.status !== 200) throw new Error(e.statusText)
-      return e.json()
-   }).then(data => {
-      if (data.error) {
-         if (redirect && data.additional && data.additional.auth) {
-            let state = btoa(window.location.pathname + window.location.hash);
-            window.location.href = `/login?state=${state}&base64=true`;
-         }
-         return Promise.reject(new Error(data.error))
-      }
-      return data;
    })
-}
\ No newline at end of file
+      .then((e) => {
+         if (e.status !== 200) throw new Error(e.statusText);
+         return e.json();
+      })
+      .then((data) => {
+         if (data.error) {
+            if (redirect && data.additional && data.additional.auth) {
+               let state = btoa(
+                  window.location.pathname + window.location.hash
+               );
+               window.location.href = `/login?state=${state}&base64=true`;
+            }
+            return Promise.reject(new Error(data.error));
+         }
+         return data;
+      });
+}
diff --git a/src/sha512.js b/src/sha512.js
index b64984e..a47137f 100644
--- a/src/sha512.js
+++ b/src/sha512.js
@@ -1 +1,484 @@
-var b;if(!(b=t)){var w=Math,y={},B=y.p={},aa=function(){},C=B.A={extend:function(o){aa.prototype=this;var _=new aa;return o&&_.u(o),_.z=this,_},create:function(){var o=this.extend();return o.h.apply(o,arguments),o},h:function(){},u:function(o){for(var _ in o)o.hasOwnProperty(_)&&(this[_]=o[_]);o.hasOwnProperty("toString")&&(this.toString=o.toString)},e:function(){return this.z.extend(this)}},D=B.i=C.extend({h:function(o,_){o=this.d=o||[],this.c=void 0==_?4*o.length:_},toString:function(o){return(o||ba).stringify(this)},concat:function(o){var _=this.d,Da=o.d,Ea=this.c,o=o.c;if(this.t(),Ea%4)for(var Fa=0;Fa<o;Fa++)_[Ea+Fa>>>2]|=(255&Da[Fa>>>2]>>>24-8*(Fa%4))<<24-8*((Ea+Fa)%4);else if(65535<Da.length)for(Fa=0;Fa<o;Fa+=4)_[Ea+Fa>>>2]=Da[Fa>>>2];else _.push.apply(_,Da);return this.c+=o,this},t:function(){var o=this.d,_=this.c;o[_>>>2]&=4294967295<<32-8*(_%4),o.length=w.ceil(_/4)},e:function(){var o=C.e.call(this);return o.d=this.d.slice(0),o},random:function(o){for(var _=[],Da=0;Da<o;Da+=4)_.push(0|4294967296*w.random());return D.create(_,o)}}),ca=y.O={},ba=ca.K={stringify:function(o){for(var Fa,_=o.d,o=o.c,Da=[],Ea=0;Ea<o;Ea++)Fa=255&_[Ea>>>2]>>>24-8*(Ea%4),Da.push((Fa>>>4).toString(16)),Da.push((15&Fa).toString(16));return Da.join("")},parse:function(o){for(var _=o.length,Da=[],Ea=0;Ea<_;Ea+=2)Da[Ea>>>3]|=parseInt(o.substr(Ea,2),16)<<24-4*(Ea%8);return D.create(Da,_/2)}},da=ca.M={stringify:function(o){for(var _=o.d,o=o.c,Da=[],Ea=0;Ea<o;Ea++)Da.push(String.fromCharCode(255&_[Ea>>>2]>>>24-8*(Ea%4)));return Da.join("")},parse:function(o){for(var _=o.length,Da=[],Ea=0;Ea<_;Ea++)Da[Ea>>>2]|=(255&o.charCodeAt(Ea))<<24-8*(Ea%4);return D.create(Da,_)}},ea=ca.N={stringify:function(o){try{return decodeURIComponent(escape(da.stringify(o)))}catch(_){throw Error("Malformed UTF-8 data")}},parse:function(o){return da.parse(unescape(encodeURIComponent(o)))}},ia=B.I=C.extend({reset:function(){this.g=D.create(),this.j=0},l:function(o){"string"==typeof o&&(o=ea.parse(o)),this.g.concat(o),this.j+=o.c},m:function(o){var _=this.g,Da=_.d,Ea=_.c,Fa=this.n,Ga=Ea/(4*Fa),Ga=o?w.ceil(Ga):w.max((0|Ga)-this.r,0),o=Ga*Fa,Ea=w.min(4*o,Ea);if(o){for(var Ha=0;Ha<o;Ha+=Fa)this.H(Da,Ha);Ha=Da.splice(0,o),_.c-=Ea}return D.create(Ha,Ea)},e:function(){var o=C.e.call(this);return o.g=this.g.e(),o},r:0});B.B=ia.extend({h:function(){this.reset()},reset:function(){ia.reset.call(this),this.q()},update:function(o){return this.l(o),this.m(),this},o:function(o){return o&&this.l(o),this.G(),this.f},e:function(){var o=ia.e.call(this);return o.f=this.f.e(),o},n:16,D:function(o){return function(_,Da){return o.create(Da).o(_)}},F:function(o){return function(_,Da){return ja.J.create(o,Da).o(_)}}});var ja=y.s={};b=y}var t=b,K=t,ka=K.p,la=ka.A,va=ka.i,K=K.w={};K.C=la.extend({h:function(o,_){this.a=o,this.b=_}}),K.i=la.extend({h:function(o,_){o=this.d=o||[],this.c=void 0==_?8*o.length:_},v:function(){for(var Fa,o=this.d,_=o.length,Da=[],Ea=0;Ea<_;Ea++)Fa=o[Ea],Da.push(Fa.a),Da.push(Fa.b);return va.create(Da,this.c)},e:function(){for(var o=la.e.call(this),_=o.d=this.d.slice(0),Da=_.length,Ea=0;Ea<Da;Ea++)_[Ea]=_[Ea].e();return o}});function L(){return wa.create.apply(wa,arguments)}for(var xa=t.p.B,M=t.w,wa=M.C,ya=M.i,M=t.s,za=[L(1116352408,3609767458),L(1899447441,602891725),L(3049323471,3964484399),L(3921009573,2173295548),L(961987163,4081628472),L(1508970993,3053834265),L(2453635748,2937671579),L(2870763221,3664609560),L(3624381080,2734883394),L(310598401,1164996542),L(607225278,1323610764),L(1426881987,3590304994),L(1925078388,4068182383),L(2162078206,991336113),L(2614888103,633803317),L(3248222580,3479774868),L(3835390401,2666613458),L(4022224774,944711139),L(264347078,2341262773),L(604807628,2007800933),L(770255983,1495990901),L(1249150122,1856431235),L(1555081692,3175218132),L(1996064986,2198950837),L(2554220882,3999719339),L(2821834349,766784016),L(2952996808,2566594879),L(3210313671,3203337956),L(3336571891,1034457026),L(3584528711,2466948901),L(113926993,3758326383),L(338241895,168717936),L(666307205,1188179964),L(773529912,1546045734),L(1294757372,1522805485),L(1396182291,2643833823),L(1695183700,2343527390),L(1986661051,1014477480),L(2177026350,1206759142),L(2456956037,344077627),L(2730485921,1290863460),L(2820302411,3158454273),L(3259730800,3505952657),L(3345764771,106217008),L(3516065817,3606008344),L(3600352804,1432725776),L(4094571909,1467031594),L(275423344,851169720),L(430227734,3100823752),L(506948616,1363258195),L(659060556,3750685593),L(883997877,3785050280),L(958139571,3318307427),L(1322822218,3812723403),L(1537002063,2003034995),L(1747873779,3602036899),L(1955562222,1575990012),L(2024104815,1125592928),L(2227730452,2716904306),L(2361852424,442776044),L(2428436474,593698344),L(2756734187,3733110249),L(3204031479,2999351573),L(3329325298,3815920427),L(3391569614,3928383900),L(3515267271,566280711),L(3940187606,3454069534),L(4118630271,4000239992),L(116418474,1914138554),L(174292421,2731055270),L(289380356,3203993006),L(460393269,320620315),L(685471733,587496836),L(852142971,1086792851),L(1017036298,365543100),L(1126000580,2618297676),L(1288033470,3409855158),L(1501505948,4234509866),L(1607167915,987167468),L(1816402316,1246189591)],$=[],Aa=0;80>Aa;Aa++)$[Aa]=L();M=M.k=xa.extend({q:function(){this.f=ya.create([L(1779033703,4089235720),L(3144134277,2227873595),L(1013904242,4271175723),L(2773480762,1595750129),L(1359893119,2917565137),L(2600822924,725511199),L(528734635,4215389547),L(1541459225,327033209)])},H:function(o,_){for(var qb,Da=this.f.d,Ea=Da[0],Fa=Da[1],Ga=Da[2],Ha=Da[3],Ia=Da[4],Ja=Da[5],Ka=Da[6],Da=Da[7],La=Ea.a,Ma=Ea.b,Na=Fa.a,Oa=Fa.b,Pa=Ga.a,Qa=Ga.b,Ra=Ha.a,Sa=Ha.b,Ta=Ia.a,Ua=Ia.b,Va=Ja.a,Wa=Ja.b,Xa=Ka.a,Ya=Ka.b,Za=Da.a,$a=Da.b,_a=La,ab=Ma,bb=Na,cb=Oa,db=Pa,eb=Qa,fb=Ra,gb=Sa,hb=Ta,ib=Ua,jb=Va,kb=Wa,lb=Xa,mb=Ya,nb=Za,ob=$a,pb=0;80>pb;pb++){if(qb=$[pb],16>pb)var rb=qb.a=0|o[_+2*pb],sb=qb.b=0|o[_+2*pb+1];else{var rb=$[pb-15],sb=rb.a,tb=rb.b,rb=(tb<<31|sb>>>1)^(tb<<24|sb>>>8)^sb>>>7,tb=(sb<<31|tb>>>1)^(sb<<24|tb>>>8)^(sb<<25|tb>>>7),ub=$[pb-2],sb=ub.a,vb=ub.b,ub=(vb<<13|sb>>>19)^(sb<<3|vb>>>29)^sb>>>6,vb=(sb<<13|vb>>>19)^(vb<<3|sb>>>29)^(sb<<26|vb>>>6),sb=$[pb-7],wb=sb.a,xb=$[pb-16],yb=xb.a,xb=xb.b,sb=tb+sb.b,rb=rb+wb+(sb>>>0<tb>>>0?1:0),sb=sb+vb,rb=rb+ub+(sb>>>0<vb>>>0?1:0),sb=sb+xb,rb=rb+yb+(sb>>>0<xb>>>0?1:0);qb.a=rb,qb.b=sb}var wb=hb&jb^~hb&lb,xb=ib&kb^~ib&mb,qb=_a&bb^_a&db^bb&db,tb=(ab<<4|_a>>>28)^(_a<<30|ab>>>2)^(_a<<25|ab>>>7),ub=(_a<<4|ab>>>28)^(ab<<30|_a>>>2)^(ab<<25|_a>>>7),vb=za[pb],Ab=vb.a,Bb=vb.b,vb=ob+((hb<<18|ib>>>14)^(hb<<14|ib>>>18)^(ib<<23|hb>>>9)),yb=nb+((ib<<18|hb>>>14)^(ib<<14|hb>>>18)^(hb<<23|ib>>>9))+(vb>>>0<ob>>>0?1:0),vb=vb+xb,yb=yb+wb+(vb>>>0<xb>>>0?1:0),vb=vb+Bb,yb=yb+Ab+(vb>>>0<Bb>>>0?1:0),vb=vb+sb,yb=yb+rb+(vb>>>0<sb>>>0?1:0),sb=ub+(ab&cb^ab&eb^cb&eb),qb=tb+qb+(sb>>>0<ub>>>0?1:0),nb=lb,ob=mb,lb=jb,mb=kb,jb=hb,kb=ib,ib=0|gb+vb,hb=0|fb+yb+(ib>>>0<gb>>>0?1:0),fb=db,gb=eb,db=bb,eb=cb,bb=_a,cb=ab,ab=0|vb+sb,_a=0|yb+qb+(ab>>>0<vb>>>0?1:0)}Ma=Ea.b=0|Ma+ab,Ea.a=0|La+_a+(Ma>>>0<ab>>>0?1:0),Oa=Fa.b=0|Oa+cb,Fa.a=0|Na+bb+(Oa>>>0<cb>>>0?1:0),Qa=Ga.b=0|Qa+eb,Ga.a=0|Pa+db+(Qa>>>0<eb>>>0?1:0),Sa=Ha.b=0|Sa+gb,Ha.a=0|Ra+fb+(Sa>>>0<gb>>>0?1:0),Ua=Ia.b=0|Ua+ib,Ia.a=0|Ta+hb+(Ua>>>0<ib>>>0?1:0),Wa=Ja.b=0|Wa+kb,Ja.a=0|Va+jb+(Wa>>>0<kb>>>0?1:0),Ya=Ka.b=0|Ya+mb,Ka.a=0|Xa+lb+(Ya>>>0<mb>>>0?1:0),$a=Da.b=0|$a+ob,Da.a=0|Za+nb+($a>>>0<ob>>>0?1:0)},G:function(){var o=this.g,_=o.d,Da=8*this.j,Ea=8*o.c;_[Ea>>>5]|=128<<24-Ea%32,_[(Ea+128>>>10<<5)+31]=Da,o.c=4*_.length,this.m(),this.f=this.f.v()},n:32}),t.k=xa.D(M),t.L=xa.F(M);export default function sha512 (o){return t.k(o)+""};
\ No newline at end of file
+var b;
+if (!(b = t)) {
+   var w = Math,
+      y = {},
+      B = (y.p = {}),
+      aa = function () {},
+      C = (B.A = {
+         extend: function (o) {
+            aa.prototype = this;
+            var _ = new aa();
+            return o && _.u(o), (_.z = this), _;
+         },
+         create: function () {
+            var o = this.extend();
+            return o.h.apply(o, arguments), o;
+         },
+         h: function () {},
+         u: function (o) {
+            for (var _ in o) o.hasOwnProperty(_) && (this[_] = o[_]);
+            o.hasOwnProperty("toString") && (this.toString = o.toString);
+         },
+         e: function () {
+            return this.z.extend(this);
+         },
+      }),
+      D = (B.i = C.extend({
+         h: function (o, _) {
+            (o = this.d = o || []), (this.c = void 0 == _ ? 4 * o.length : _);
+         },
+         toString: function (o) {
+            return (o || ba).stringify(this);
+         },
+         concat: function (o) {
+            var _ = this.d,
+               Da = o.d,
+               Ea = this.c,
+               o = o.c;
+            if ((this.t(), Ea % 4))
+               for (var Fa = 0; Fa < o; Fa++)
+                  _[(Ea + Fa) >>> 2] |=
+                     (255 & (Da[Fa >>> 2] >>> (24 - 8 * (Fa % 4)))) <<
+                     (24 - 8 * ((Ea + Fa) % 4));
+            else if (65535 < Da.length)
+               for (Fa = 0; Fa < o; Fa += 4) _[(Ea + Fa) >>> 2] = Da[Fa >>> 2];
+            else _.push.apply(_, Da);
+            return (this.c += o), this;
+         },
+         t: function () {
+            var o = this.d,
+               _ = this.c;
+            (o[_ >>> 2] &= 4294967295 << (32 - 8 * (_ % 4))),
+               (o.length = w.ceil(_ / 4));
+         },
+         e: function () {
+            var o = C.e.call(this);
+            return (o.d = this.d.slice(0)), o;
+         },
+         random: function (o) {
+            for (var _ = [], Da = 0; Da < o; Da += 4)
+               _.push(0 | (4294967296 * w.random()));
+            return D.create(_, o);
+         },
+      })),
+      ca = (y.O = {}),
+      ba = (ca.K = {
+         stringify: function (o) {
+            for (var Fa, _ = o.d, o = o.c, Da = [], Ea = 0; Ea < o; Ea++)
+               (Fa = 255 & (_[Ea >>> 2] >>> (24 - 8 * (Ea % 4)))),
+                  Da.push((Fa >>> 4).toString(16)),
+                  Da.push((15 & Fa).toString(16));
+            return Da.join("");
+         },
+         parse: function (o) {
+            for (var _ = o.length, Da = [], Ea = 0; Ea < _; Ea += 2)
+               Da[Ea >>> 3] |=
+                  parseInt(o.substr(Ea, 2), 16) << (24 - 4 * (Ea % 8));
+            return D.create(Da, _ / 2);
+         },
+      }),
+      da = (ca.M = {
+         stringify: function (o) {
+            for (var _ = o.d, o = o.c, Da = [], Ea = 0; Ea < o; Ea++)
+               Da.push(
+                  String.fromCharCode(
+                     255 & (_[Ea >>> 2] >>> (24 - 8 * (Ea % 4)))
+                  )
+               );
+            return Da.join("");
+         },
+         parse: function (o) {
+            for (var _ = o.length, Da = [], Ea = 0; Ea < _; Ea++)
+               Da[Ea >>> 2] |= (255 & o.charCodeAt(Ea)) << (24 - 8 * (Ea % 4));
+            return D.create(Da, _);
+         },
+      }),
+      ea = (ca.N = {
+         stringify: function (o) {
+            try {
+               return decodeURIComponent(escape(da.stringify(o)));
+            } catch (_) {
+               throw Error("Malformed UTF-8 data");
+            }
+         },
+         parse: function (o) {
+            return da.parse(unescape(encodeURIComponent(o)));
+         },
+      }),
+      ia = (B.I = C.extend({
+         reset: function () {
+            (this.g = D.create()), (this.j = 0);
+         },
+         l: function (o) {
+            "string" == typeof o && (o = ea.parse(o)),
+               this.g.concat(o),
+               (this.j += o.c);
+         },
+         m: function (o) {
+            var _ = this.g,
+               Da = _.d,
+               Ea = _.c,
+               Fa = this.n,
+               Ga = Ea / (4 * Fa),
+               Ga = o ? w.ceil(Ga) : w.max((0 | Ga) - this.r, 0),
+               o = Ga * Fa,
+               Ea = w.min(4 * o, Ea);
+            if (o) {
+               for (var Ha = 0; Ha < o; Ha += Fa) this.H(Da, Ha);
+               (Ha = Da.splice(0, o)), (_.c -= Ea);
+            }
+            return D.create(Ha, Ea);
+         },
+         e: function () {
+            var o = C.e.call(this);
+            return (o.g = this.g.e()), o;
+         },
+         r: 0,
+      }));
+   B.B = ia.extend({
+      h: function () {
+         this.reset();
+      },
+      reset: function () {
+         ia.reset.call(this), this.q();
+      },
+      update: function (o) {
+         return this.l(o), this.m(), this;
+      },
+      o: function (o) {
+         return o && this.l(o), this.G(), this.f;
+      },
+      e: function () {
+         var o = ia.e.call(this);
+         return (o.f = this.f.e()), o;
+      },
+      n: 16,
+      D: function (o) {
+         return function (_, Da) {
+            return o.create(Da).o(_);
+         };
+      },
+      F: function (o) {
+         return function (_, Da) {
+            return ja.J.create(o, Da).o(_);
+         };
+      },
+   });
+   var ja = (y.s = {});
+   b = y;
+}
+var t = b,
+   K = t,
+   ka = K.p,
+   la = ka.A,
+   va = ka.i,
+   K = (K.w = {});
+(K.C = la.extend({
+   h: function (o, _) {
+      (this.a = o), (this.b = _);
+   },
+})),
+   (K.i = la.extend({
+      h: function (o, _) {
+         (o = this.d = o || []), (this.c = void 0 == _ ? 8 * o.length : _);
+      },
+      v: function () {
+         for (var Fa, o = this.d, _ = o.length, Da = [], Ea = 0; Ea < _; Ea++)
+            (Fa = o[Ea]), Da.push(Fa.a), Da.push(Fa.b);
+         return va.create(Da, this.c);
+      },
+      e: function () {
+         for (
+            var o = la.e.call(this),
+               _ = (o.d = this.d.slice(0)),
+               Da = _.length,
+               Ea = 0;
+            Ea < Da;
+            Ea++
+         )
+            _[Ea] = _[Ea].e();
+         return o;
+      },
+   }));
+function L() {
+   return wa.create.apply(wa, arguments);
+}
+for (
+   var xa = t.p.B,
+      M = t.w,
+      wa = M.C,
+      ya = M.i,
+      M = t.s,
+      za = [
+         L(1116352408, 3609767458),
+         L(1899447441, 602891725),
+         L(3049323471, 3964484399),
+         L(3921009573, 2173295548),
+         L(961987163, 4081628472),
+         L(1508970993, 3053834265),
+         L(2453635748, 2937671579),
+         L(2870763221, 3664609560),
+         L(3624381080, 2734883394),
+         L(310598401, 1164996542),
+         L(607225278, 1323610764),
+         L(1426881987, 3590304994),
+         L(1925078388, 4068182383),
+         L(2162078206, 991336113),
+         L(2614888103, 633803317),
+         L(3248222580, 3479774868),
+         L(3835390401, 2666613458),
+         L(4022224774, 944711139),
+         L(264347078, 2341262773),
+         L(604807628, 2007800933),
+         L(770255983, 1495990901),
+         L(1249150122, 1856431235),
+         L(1555081692, 3175218132),
+         L(1996064986, 2198950837),
+         L(2554220882, 3999719339),
+         L(2821834349, 766784016),
+         L(2952996808, 2566594879),
+         L(3210313671, 3203337956),
+         L(3336571891, 1034457026),
+         L(3584528711, 2466948901),
+         L(113926993, 3758326383),
+         L(338241895, 168717936),
+         L(666307205, 1188179964),
+         L(773529912, 1546045734),
+         L(1294757372, 1522805485),
+         L(1396182291, 2643833823),
+         L(1695183700, 2343527390),
+         L(1986661051, 1014477480),
+         L(2177026350, 1206759142),
+         L(2456956037, 344077627),
+         L(2730485921, 1290863460),
+         L(2820302411, 3158454273),
+         L(3259730800, 3505952657),
+         L(3345764771, 106217008),
+         L(3516065817, 3606008344),
+         L(3600352804, 1432725776),
+         L(4094571909, 1467031594),
+         L(275423344, 851169720),
+         L(430227734, 3100823752),
+         L(506948616, 1363258195),
+         L(659060556, 3750685593),
+         L(883997877, 3785050280),
+         L(958139571, 3318307427),
+         L(1322822218, 3812723403),
+         L(1537002063, 2003034995),
+         L(1747873779, 3602036899),
+         L(1955562222, 1575990012),
+         L(2024104815, 1125592928),
+         L(2227730452, 2716904306),
+         L(2361852424, 442776044),
+         L(2428436474, 593698344),
+         L(2756734187, 3733110249),
+         L(3204031479, 2999351573),
+         L(3329325298, 3815920427),
+         L(3391569614, 3928383900),
+         L(3515267271, 566280711),
+         L(3940187606, 3454069534),
+         L(4118630271, 4000239992),
+         L(116418474, 1914138554),
+         L(174292421, 2731055270),
+         L(289380356, 3203993006),
+         L(460393269, 320620315),
+         L(685471733, 587496836),
+         L(852142971, 1086792851),
+         L(1017036298, 365543100),
+         L(1126000580, 2618297676),
+         L(1288033470, 3409855158),
+         L(1501505948, 4234509866),
+         L(1607167915, 987167468),
+         L(1816402316, 1246189591),
+      ],
+      $ = [],
+      Aa = 0;
+   80 > Aa;
+   Aa++
+)
+   $[Aa] = L();
+(M = M.k = xa.extend({
+   q: function () {
+      this.f = ya.create([
+         L(1779033703, 4089235720),
+         L(3144134277, 2227873595),
+         L(1013904242, 4271175723),
+         L(2773480762, 1595750129),
+         L(1359893119, 2917565137),
+         L(2600822924, 725511199),
+         L(528734635, 4215389547),
+         L(1541459225, 327033209),
+      ]);
+   },
+   H: function (o, _) {
+      for (
+         var qb,
+            Da = this.f.d,
+            Ea = Da[0],
+            Fa = Da[1],
+            Ga = Da[2],
+            Ha = Da[3],
+            Ia = Da[4],
+            Ja = Da[5],
+            Ka = Da[6],
+            Da = Da[7],
+            La = Ea.a,
+            Ma = Ea.b,
+            Na = Fa.a,
+            Oa = Fa.b,
+            Pa = Ga.a,
+            Qa = Ga.b,
+            Ra = Ha.a,
+            Sa = Ha.b,
+            Ta = Ia.a,
+            Ua = Ia.b,
+            Va = Ja.a,
+            Wa = Ja.b,
+            Xa = Ka.a,
+            Ya = Ka.b,
+            Za = Da.a,
+            $a = Da.b,
+            _a = La,
+            ab = Ma,
+            bb = Na,
+            cb = Oa,
+            db = Pa,
+            eb = Qa,
+            fb = Ra,
+            gb = Sa,
+            hb = Ta,
+            ib = Ua,
+            jb = Va,
+            kb = Wa,
+            lb = Xa,
+            mb = Ya,
+            nb = Za,
+            ob = $a,
+            pb = 0;
+         80 > pb;
+         pb++
+      ) {
+         if (((qb = $[pb]), 16 > pb))
+            var rb = (qb.a = 0 | o[_ + 2 * pb]),
+               sb = (qb.b = 0 | o[_ + 2 * pb + 1]);
+         else {
+            var rb = $[pb - 15],
+               sb = rb.a,
+               tb = rb.b,
+               rb =
+                  ((tb << 31) | (sb >>> 1)) ^
+                  ((tb << 24) | (sb >>> 8)) ^
+                  (sb >>> 7),
+               tb =
+                  ((sb << 31) | (tb >>> 1)) ^
+                  ((sb << 24) | (tb >>> 8)) ^
+                  ((sb << 25) | (tb >>> 7)),
+               ub = $[pb - 2],
+               sb = ub.a,
+               vb = ub.b,
+               ub =
+                  ((vb << 13) | (sb >>> 19)) ^
+                  ((sb << 3) | (vb >>> 29)) ^
+                  (sb >>> 6),
+               vb =
+                  ((sb << 13) | (vb >>> 19)) ^
+                  ((vb << 3) | (sb >>> 29)) ^
+                  ((sb << 26) | (vb >>> 6)),
+               sb = $[pb - 7],
+               wb = sb.a,
+               xb = $[pb - 16],
+               yb = xb.a,
+               xb = xb.b,
+               sb = tb + sb.b,
+               rb = rb + wb + (sb >>> 0 < tb >>> 0 ? 1 : 0),
+               sb = sb + vb,
+               rb = rb + ub + (sb >>> 0 < vb >>> 0 ? 1 : 0),
+               sb = sb + xb,
+               rb = rb + yb + (sb >>> 0 < xb >>> 0 ? 1 : 0);
+            (qb.a = rb), (qb.b = sb);
+         }
+         var wb = (hb & jb) ^ (~hb & lb),
+            xb = (ib & kb) ^ (~ib & mb),
+            qb = (_a & bb) ^ (_a & db) ^ (bb & db),
+            tb =
+               ((ab << 4) | (_a >>> 28)) ^
+               ((_a << 30) | (ab >>> 2)) ^
+               ((_a << 25) | (ab >>> 7)),
+            ub =
+               ((_a << 4) | (ab >>> 28)) ^
+               ((ab << 30) | (_a >>> 2)) ^
+               ((ab << 25) | (_a >>> 7)),
+            vb = za[pb],
+            Ab = vb.a,
+            Bb = vb.b,
+            vb =
+               ob +
+               (((hb << 18) | (ib >>> 14)) ^
+                  ((hb << 14) | (ib >>> 18)) ^
+                  ((ib << 23) | (hb >>> 9))),
+            yb =
+               nb +
+               (((ib << 18) | (hb >>> 14)) ^
+                  ((ib << 14) | (hb >>> 18)) ^
+                  ((hb << 23) | (ib >>> 9))) +
+               (vb >>> 0 < ob >>> 0 ? 1 : 0),
+            vb = vb + xb,
+            yb = yb + wb + (vb >>> 0 < xb >>> 0 ? 1 : 0),
+            vb = vb + Bb,
+            yb = yb + Ab + (vb >>> 0 < Bb >>> 0 ? 1 : 0),
+            vb = vb + sb,
+            yb = yb + rb + (vb >>> 0 < sb >>> 0 ? 1 : 0),
+            sb = ub + ((ab & cb) ^ (ab & eb) ^ (cb & eb)),
+            qb = tb + qb + (sb >>> 0 < ub >>> 0 ? 1 : 0),
+            nb = lb,
+            ob = mb,
+            lb = jb,
+            mb = kb,
+            jb = hb,
+            kb = ib,
+            ib = 0 | (gb + vb),
+            hb = 0 | (fb + yb + (ib >>> 0 < gb >>> 0 ? 1 : 0)),
+            fb = db,
+            gb = eb,
+            db = bb,
+            eb = cb,
+            bb = _a,
+            cb = ab,
+            ab = 0 | (vb + sb),
+            _a = 0 | (yb + qb + (ab >>> 0 < vb >>> 0 ? 1 : 0));
+      }
+      (Ma = Ea.b = 0 | (Ma + ab)),
+         (Ea.a = 0 | (La + _a + (Ma >>> 0 < ab >>> 0 ? 1 : 0))),
+         (Oa = Fa.b = 0 | (Oa + cb)),
+         (Fa.a = 0 | (Na + bb + (Oa >>> 0 < cb >>> 0 ? 1 : 0))),
+         (Qa = Ga.b = 0 | (Qa + eb)),
+         (Ga.a = 0 | (Pa + db + (Qa >>> 0 < eb >>> 0 ? 1 : 0))),
+         (Sa = Ha.b = 0 | (Sa + gb)),
+         (Ha.a = 0 | (Ra + fb + (Sa >>> 0 < gb >>> 0 ? 1 : 0))),
+         (Ua = Ia.b = 0 | (Ua + ib)),
+         (Ia.a = 0 | (Ta + hb + (Ua >>> 0 < ib >>> 0 ? 1 : 0))),
+         (Wa = Ja.b = 0 | (Wa + kb)),
+         (Ja.a = 0 | (Va + jb + (Wa >>> 0 < kb >>> 0 ? 1 : 0))),
+         (Ya = Ka.b = 0 | (Ya + mb)),
+         (Ka.a = 0 | (Xa + lb + (Ya >>> 0 < mb >>> 0 ? 1 : 0))),
+         ($a = Da.b = 0 | ($a + ob)),
+         (Da.a = 0 | (Za + nb + ($a >>> 0 < ob >>> 0 ? 1 : 0)));
+   },
+   G: function () {
+      var o = this.g,
+         _ = o.d,
+         Da = 8 * this.j,
+         Ea = 8 * o.c;
+      (_[Ea >>> 5] |= 128 << (24 - (Ea % 32))),
+         (_[(((Ea + 128) >>> 10) << 5) + 31] = Da),
+         (o.c = 4 * _.length),
+         this.m(),
+         (this.f = this.f.v());
+   },
+   n: 32,
+})),
+   (t.k = xa.D(M)),
+   (t.L = xa.F(M));
+export default function sha512(o) {
+   return t.k(o) + "";
+}
diff --git a/src/tsconfig.json b/src/tsconfig.json
index f08cfa9..2ef7371 100644
--- a/src/tsconfig.json
+++ b/src/tsconfig.json
@@ -3,4 +3,4 @@
       "module": "esnext",
       "sourceMap": true
    }
-}
\ No newline at end of file
+}
