From c41d4b4cec65f2906988f85fef6479c3fd628743 Mon Sep 17 00:00:00 2001 From: Martin Donnelly Date: Mon, 20 Apr 2020 01:35:25 +0100 Subject: [PATCH] init --- .eslintrc.json | 62 + .gitignore | 4 + .idea/.gitignore | 5 + .idea/inspectionProfiles/Project_Default.xml | 6 + .idea/jsLibraryMappings.xml | 6 + .idea/misc.xml | 6 + .idea/modules.xml | 8 + .idea/svelte-traintimes.iml | 12 + README.md | 106 + icon.png | Bin 0 -> 48015 bytes package-lock.json | 4197 ++++++++++++++++++ package.json | 33 + public/favicon.png | Bin 0 -> 3127 bytes public/global.css | 0 public/index.html | 17 + rollup.config.js | 91 + src/App.svelte | 35 + src/components/Header.svelte | 32 + src/components/TimetableList.svelte | 17 + src/components/TrainRoute.svelte | 89 + src/components/TrainService.svelte | 12 + src/css/common.css | 88 + src/css/custom.scss | 336 ++ src/css/horscroll.scss | 52 + src/css/skeleton-min.css | 181 + src/css/skeleton.css | 419 ++ src/css/spinner.scss | 93 + src/css/viewport.scss | 81 + src/libs/stations.js | 12 + src/libs/utils.js | 120 + src/main.js | 10 + src/pages/Home.svelte | 20 + src/pages/NotFound.svelte | 14 + src/pages/Service.svelte | 12 + src/pages/Timetable.svelte | 41 + src/routes.js | 21 + 36 files changed, 6238 insertions(+) create mode 100644 .eslintrc.json create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/jsLibraryMappings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/svelte-traintimes.iml create mode 100644 README.md create mode 100644 icon.png create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/favicon.png create mode 100644 public/global.css create mode 100644 public/index.html create mode 100644 rollup.config.js create mode 100644 src/App.svelte create mode 100644 src/components/Header.svelte create mode 100644 src/components/TimetableList.svelte create mode 100644 src/components/TrainRoute.svelte create mode 100644 src/components/TrainService.svelte create mode 100644 src/css/common.css create mode 100644 src/css/custom.scss create mode 100644 src/css/horscroll.scss create mode 100644 src/css/skeleton-min.css create mode 100644 src/css/skeleton.css create mode 100644 src/css/spinner.scss create mode 100644 src/css/viewport.scss create mode 100644 src/libs/stations.js create mode 100644 src/libs/utils.js create mode 100644 src/main.js create mode 100644 src/pages/Home.svelte create mode 100644 src/pages/NotFound.svelte create mode 100644 src/pages/Service.svelte create mode 100644 src/pages/Timetable.svelte create mode 100644 src/routes.js diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..9ffdd44 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,62 @@ +{ + "parserOptions": { + "ecmaVersion": 2019, + "sourceType": "module" + }, + "env": { + "es6": true, + "browser": true + }, + "plugins": [ + "svelte3" + ], + "overrides": [ + { + "files": [ + "**/*.svelte" + ], + "processor": "svelte3/svelte3" + } + ], + "rules": { + "arrow-spacing": "error", + "block-scoped-var": "error", + "block-spacing": "error", + "brace-style": ["error", "stroustrup", {}], + "camelcase": "error", + "comma-dangle": ["error", "never"], + "comma-spacing": ["error", { "before": false, "after": true }], + "comma-style": [1, "last"], + "consistent-this": [1, "_this"], + "curly": [1, "multi"], + "eol-last": 1, + "eqeqeq": 1, + "func-names": 1, + "indent": ["error", 2, { "SwitchCase": 1 }], + "lines-around-comment": ["error", { "beforeBlockComment": true, "allowArrayStart": true }], + "max-len": [1, 240, 2], // 2 spaces per tab, max 80 chars per line + "new-cap": 1, + "newline-before-return": "error", + "no-array-constructor": 1, + "no-inner-declarations": [1, "both"], + "no-mixed-spaces-and-tabs": 1, + "no-multi-spaces": 2, + "no-new-object": 1, + "no-shadow-restricted-names": 1, + "object-curly-spacing": ["error", "always"], + "padded-blocks": ["error", { "blocks": "never", "switches": "always" }], + "prefer-const": "error", + "prefer-template": "error", + "one-var": 0, + "quote-props": ["error", "always"], + "quotes": [1, "single"], + "radix": 1, + "semi": [1, "always"], + "space-before-blocks": [1, "always"], + "space-infix-ops": 1, + "vars-on-top": 1, + "no-multiple-empty-lines": ["error", { "max": 1, "maxEOF": 1 }], + "spaced-comment": ["error", "always", { "markers": ["/"] }] + } + +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..da93220 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/node_modules/ +/public/build/ + +.DS_Store diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..b58b603 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,5 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..03d9549 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/jsLibraryMappings.xml b/.idea/jsLibraryMappings.xml new file mode 100644 index 0000000..d23208f --- /dev/null +++ b/.idea/jsLibraryMappings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..28a804d --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..c0a5c60 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/svelte-traintimes.iml b/.idea/svelte-traintimes.iml new file mode 100644 index 0000000..24643cc --- /dev/null +++ b/.idea/svelte-traintimes.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..25b1041 --- /dev/null +++ b/README.md @@ -0,0 +1,106 @@ +*Looking for a shareable component template? Go here --> [sveltejs/component-template](https://github.com/sveltejs/component-template)* + +--- + +# Updates + +## 2020-04-17 + +Added [svelte-preprocess](https://www.npmjs.com/package/svelte-preprocess) preprocessor with support for: PostCSS, SCSS, Less, Stylus, Coffeescript, TypeScript and Pug. + +Added [rollup-plugin-node-builtins](https://www.npmjs.com/package/rollup-plugin-node-builtins) Allows the node builtins to be required/imported. Doing so gives the proper shims to support modules that were designed for Browserify, some modules require rollup-plugin-node-globals. + +Added [rollup-plugin-node-globals](https://www.npmjs.com/package/rollup-plugin-node-globals) Plugin to insert node globals including so code that works with browserify should work even if it uses process or buffers. + + +--- + +# svelte app + +This is a project template for [Svelte](https://svelte.dev) apps. It lives at https://github.com/sveltejs/template. + +To create a new project based on this template using [degit](https://github.com/Rich-Harris/degit): + +```bash +npx degit sveltejs/template svelte-app +cd svelte-app +``` + +*Note that you will need to have [Node.js](https://nodejs.org) installed.* + + +## Get started + +Install the dependencies... + +```bash +cd svelte-app +npm install +``` + +...then start [Rollup](https://rollupjs.org): + +```bash +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. + +By default, the server will only respond to requests from localhost. To allow connections from other computers, edit the `sirv` commands in package.json to include the option `--host 0.0.0.0`. + + +## Building and running in production mode + +To create an optimised version of the app: + +```bash +npm run build +``` + +You can run the newly built app with `npm run start`. This uses [sirv](https://github.com/lukeed/sirv), which is included in your package.json's `dependencies` so that the app will work when you deploy to platforms like [Heroku](https://heroku.com). + + +## Single-page app mode + +By default, sirv will only respond to requests that match files in `public`. This is to maximise compatibility with static fileservers, allowing you to deploy your app anywhere. + +If you're building a single-page app (SPA) with multiple routes, sirv needs to be able to respond to requests for *any* path. You can make it so by editing the `"start"` command in package.json: + +```js +"start": "sirv public --single" +``` + + +## Deploying to the web + +### With [now](https://zeit.co/now) + +Install `now` if you haven't already: + +```bash +npm install -g now +``` + +Then, from within your project folder: + +```bash +cd public +now deploy --name my-project +``` + +As an alternative, use the [Now desktop client](https://zeit.co/download) and simply drag the unzipped project folder to the taskbar icon. + +### With [surge](https://surge.sh/) + +Install `surge` if you haven't already: + +```bash +npm install -g surge +``` + +Then, from within your project folder: + +```bash +npm run build +surge public my-project.surge.sh +``` diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..259c59a727a5d745cd2c0b35fb972a3bd9b1ec6b GIT binary patch literal 48015 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�>+{rmS)6#xcEsCMDN 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�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 f^O7F68wjG@_6_-bZpexV=l~T3sC%TVmQ literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..d02152e --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4197 @@ +{ + "name": "svelte-app", + "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/helper-validator-identifier": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", + "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", + "dev": true + }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@polka/url": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-0.5.0.tgz", + "integrity": "sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw==" + }, + "@rollup/plugin-commonjs": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-11.1.0.tgz", + "integrity": "sha512-Ycr12N3ZPN96Fw2STurD21jMqzKwL9QuFhms3SD7KKRK7oaXUsBU9Zt0jL/rOPHiPYisI21/rXGO3jr9BnLHUA==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.8", + "commondir": "^1.0.1", + "estree-walker": "^1.0.1", + "glob": "^7.1.2", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "@rollup/plugin-node-resolve": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz", + "integrity": "sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.8", + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.14.2" + } + }, + "@rollup/pluginutils": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.0.9.tgz", + "integrity": "sha512-TLZavlfPAZYI7v33wQh4mTP6zojne14yok3DNSLcjoG/Hirxfkonn6icP5rrNWRn8nZsirJBFFpijVOJzkUHDg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "micromatch": "^4.0.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, + "@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 + }, + "@types/node": { + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.0.tgz", + "integrity": "sha512-WE4IOAC6r/yBZss1oQGM5zs2D7RuKR6Q+w+X2SouPofnWn+LbCqClRyhO3ZE7Ix8nmFgo/oVuuE01cJT2XB13A==", + "dev": true + }, + "@types/pug": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.4.tgz", + "integrity": "sha1-h3L80EGOPNLMFxVV1zAHQVBR9LI=", + "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": "*" + } + }, + "@types/sass": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.16.0.tgz", + "integrity": "sha512-2XZovu4NwcqmtZtsBR5XYLw18T8cBCnU2USFHTnYLLHz9fkhnoEMoDsqShJIOFsFhn5aJHjweiUUdTrDGujegA==", + "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 + }, + "abstract-leveldown": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-0.12.4.tgz", + "integrity": "sha1-KeGOYy5g5OIh1YECR4UqY9ey5BA=", + "dev": true, + "requires": { + "xtend": "~3.0.0" + }, + "dependencies": { + "xtend": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", + "integrity": "sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=", + "dev": true + } + } + }, + "acorn": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", + "dev": true + }, + "acorn-jsx": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", + "dev": true + }, + "ajv": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.1.tgz", + "integrity": "sha512-AUh2mDlJDAnzSRaKkMHopTD1GKwC1ApUq8oCzdjAOM5tavncgqWU+JoRu5Y3iYY0Q/euiU+1LWp0/O/QY8CcHw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "opencollective-postinstall": "^2.0.2", + "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-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "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" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "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" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "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 + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "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" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.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 + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "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 + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "autoprefixer": { + "version": "9.7.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.6.tgz", + "integrity": "sha512-F7cYpbN7uVVhACZTeeIeealwdGM6wMtfWARVLTy5xmKtgVdBNJvbDRoCK3YO1orcs7gv/KwYlb3iXwu9Ug9BkQ==", + "dev": true, + "requires": { + "browserslist": "^4.11.1", + "caniuse-lite": "^1.0.30001039", + "chalk": "^2.4.2", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.27", + "postcss-value-parser": "^4.0.3" + } + }, + "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 + }, + "axios": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "requires": { + "follow-redirects": "1.5.10" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "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" + } + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "dev": true + }, + "bl": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-0.8.2.tgz", + "integrity": "sha1-yba8oI0bwuoA/Ir7Txpf0eHGbk4=", + "dev": true, + "requires": { + "readable-stream": "~1.0.26" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "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" + } + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-fs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-fs/-/browserify-fs-1.0.0.tgz", + "integrity": "sha1-8HWqinKdTRcW0GZiDjhvzBMRqW8=", + "dev": true, + "requires": { + "level-filesystem": "^1.0.1", + "level-js": "^2.1.3", + "levelup": "^0.18.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserslist": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.1.tgz", + "integrity": "sha512-DCTr3kDrKEYNw6Jb9HFxVLQNaue8z+0ZfRBRjmCunKDEXEBajKDj2Y+Uelg+Pi29OnvaSGwjOsnRyNEkXzHg5g==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001038", + "electron-to-chromium": "^1.3.390", + "node-releases": "^1.1.53", + "pkg-up": "^2.0.0" + } + }, + "buffer-es6": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/buffer-es6/-/buffer-es6-4.9.3.tgz", + "integrity": "sha1-8mNHuC33b9N+GLy1KIxJcM/VxAQ=", + "dev": true + }, + "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 + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "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 + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "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" + } + }, + "caniuse-lite": { + "version": "1.0.30001043", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001043.tgz", + "integrity": "sha512-MrBDRPJPDBYwACtSQvxg9+fkna5jPXhJlKmuxenl/ml9uf8LHKlDmLpElu+zTW/bEz7lC1m0wTDD7jiIB+hgFg==", + "dev": true + }, + "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" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chokidar": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", + "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.3.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "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" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "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" + } + }, + "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" + } + }, + "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" + } + } + } + }, + "clone": { + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.1.19.tgz", + "integrity": "sha1-YT+2hjmyaklKxTJT4Vsaa9iK2oU=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "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=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "console-clear": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/console-clear/-/console-clear-1.1.1.tgz", + "integrity": "sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==" + }, + "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-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + }, + "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 + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "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" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "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" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "deferred-leveldown": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-0.2.0.tgz", + "integrity": "sha1-LO8fER4cV4cNi7uK8mUOWHzS9bQ=", + "dev": true, + "requires": { + "abstract-leveldown": "~0.12.1" + } + }, + "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 + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "detect-indent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz", + "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "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" + } + }, + "electron-to-chromium": { + "version": "1.3.413", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.413.tgz", + "integrity": "sha512-Jm1Rrd3siqYHO3jftZwDljL2LYQafj3Kki5r+udqE58d0i91SkjItVJ5RwlJn9yko8i7MOcoidVKjQlgSdd1hg==", + "dev": true + }, + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "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" + } + }, + "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 + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + } + }, + "eslint-plugin-svelte3": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-svelte3/-/eslint-plugin-svelte3-2.7.3.tgz", + "integrity": "sha512-p6HhxyICX9x/x+8WSy6AVk2bmv9ayoznoTSyCvK47th/k/07ksuJixMwbGX9qxJVAmPBaYMjEIMSEZtJHPIN7w==", + "dev": true + }, + "eslint-scope": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "dev": true + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", + "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "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 + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "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 + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fbjs": { + "version": "0.8.17", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", + "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", + "requires": { + "core-js": "^1.0.0", + "isomorphic-fetch": "^2.1.1", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.18" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "requires": { + "debug": "=3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "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.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" + } + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "fwd-stream": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fwd-stream/-/fwd-stream-1.0.4.tgz", + "integrity": "sha1-7Sgcq+1G/uz5Ie4y3ExQs3KsfPo=", + "dev": true, + "requires": { + "readable-stream": "~1.0.26-4" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "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" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "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" + } + }, + "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" + } + }, + "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" + } + } + } + }, + "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=" + }, + "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" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "globule": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.1.tgz", + "integrity": "sha512-OVyWOHgw29yosRHCHo7NncwR1hW5ew0W/UrvtwvjefVJeQ26q4/8r8FmPsSF1hJ93IgWkyv16pCTz6WblMzm/g==", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.12", + "minimatch": "~3.0.2" + } + }, + "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==", + "dev": true + }, + "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-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" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "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-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "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" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "idb-wrapper": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/idb-wrapper/-/idb-wrapper-1.7.2.tgz", + "integrity": "sha512-zfNREywMuf0NzDo9mVsL0yegjsirJxHpKHvWcyRozIqQy89g0a3U+oBPOCN4cc0oCiOuYgZHimzaW/R46G1Mpg==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "in-publish": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", + "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==", + "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" + } + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "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 + }, + "inquirer": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", + "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "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": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/is/-/is-0.2.7.tgz", + "integrity": "sha1-OzSixI81mXLzUEKEkZOucmS2NWI=", + "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-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "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-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-object": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-0.1.2.tgz", + "integrity": "sha1-AO+8CIFsM8/ErIJR0TLhDcZQmNc=", + "dev": true + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "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" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "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 + }, + "isbuffer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/isbuffer/-/isbuffer-0.0.0.tgz", + "integrity": "sha1-OMFG2d9Si4v5sHAcPUPPEt8/w5s=", + "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 + }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "requires": { + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.2.tgz", + "integrity": "sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ==", + "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==" + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "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-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "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 + }, + "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==" + }, + "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" + } + }, + "level-blobs": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/level-blobs/-/level-blobs-0.1.7.tgz", + "integrity": "sha1-mrm5e7mfHtv594o0M+Ie1WOGva8=", + "dev": true, + "requires": { + "level-peek": "1.0.6", + "once": "^1.3.0", + "readable-stream": "^1.0.26-4" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "level-filesystem": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/level-filesystem/-/level-filesystem-1.2.0.tgz", + "integrity": "sha1-oArKmRnEpN+v3KaoEI0iWq3/Y7M=", + "dev": true, + "requires": { + "concat-stream": "^1.4.4", + "errno": "^0.1.1", + "fwd-stream": "^1.0.4", + "level-blobs": "^0.1.7", + "level-peek": "^1.0.6", + "level-sublevel": "^5.2.0", + "octal": "^1.0.0", + "once": "^1.3.0", + "xtend": "^2.2.0" + } + }, + "level-fix-range": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/level-fix-range/-/level-fix-range-1.0.2.tgz", + "integrity": "sha1-vxW5Fa422EcMgh6IPd95zRZCCCg=", + "dev": true + }, + "level-hooks": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/level-hooks/-/level-hooks-4.5.0.tgz", + "integrity": "sha1-G5rmGSKTDzMF0aYfxNg8gQLA3ZM=", + "dev": true, + "requires": { + "string-range": "~1.2" + } + }, + "level-js": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/level-js/-/level-js-2.2.4.tgz", + "integrity": "sha1-vAVfQYBjXUSJtWHJSG+jcOjBFpc=", + "dev": true, + "requires": { + "abstract-leveldown": "~0.12.0", + "idb-wrapper": "^1.5.0", + "isbuffer": "~0.0.0", + "ltgt": "^2.1.2", + "typedarray-to-buffer": "~1.0.0", + "xtend": "~2.1.2" + }, + "dependencies": { + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", + "dev": true + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "level-peek": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/level-peek/-/level-peek-1.0.6.tgz", + "integrity": "sha1-vsUccqgu5GTTNkNMfIdsP8vM538=", + "dev": true, + "requires": { + "level-fix-range": "~1.0.2" + } + }, + "level-sublevel": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/level-sublevel/-/level-sublevel-5.2.3.tgz", + "integrity": "sha1-dEwSxy0ucr543eO5tc2E1iGRQTo=", + "dev": true, + "requires": { + "level-fix-range": "2.0", + "level-hooks": ">=4.4.0 <5", + "string-range": "~1.2.1", + "xtend": "~2.0.4" + }, + "dependencies": { + "level-fix-range": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/level-fix-range/-/level-fix-range-2.0.0.tgz", + "integrity": "sha1-xBfWIVlEIVGhnZojZ4aPFyTC1Ug=", + "dev": true, + "requires": { + "clone": "~0.1.9" + } + }, + "xtend": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.0.6.tgz", + "integrity": "sha1-XqZXptukRwacLlnFihE4ywxebO4=", + "dev": true, + "requires": { + "is-object": "~0.1.2", + "object-keys": "~0.2.0" + } + } + } + }, + "levelup": { + "version": "0.18.6", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-0.18.6.tgz", + "integrity": "sha1-5qAcsIlhbI7MApHCqb0/DETj5es=", + "dev": true, + "requires": { + "bl": "~0.8.1", + "deferred-leveldown": "~0.2.0", + "errno": "~0.1.1", + "prr": "~0.0.0", + "readable-stream": "~1.0.26", + "semver": "~2.3.1", + "xtend": "~3.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "prr": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "semver": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-2.3.2.tgz", + "integrity": "sha1-uYSPJdbPNjMwc+ye+IVtQvEjPlI=", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "xtend": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", + "integrity": "sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=", + "dev": true + } + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "livereload": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.1.tgz", + "integrity": "sha512-9g7sua11kkyZNo2hLRCG3LuZZwqexoyEyecSlV8cAsfAVVCZqLzVir6XDqmH0r+Vzgnd5LrdHDMyjtFnJQLAYw==", + "dev": true, + "requires": { + "chokidar": "^3.3.0", + "livereload-js": "^3.1.0", + "opts": ">= 1.2.0", + "ws": "^6.2.1" + } + }, + "livereload-js": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.2.2.tgz", + "integrity": "sha512-xhScbNeC687ZINjEf/bD+BMiPx4s4q0mehcLb3zCc8+mykOtmaBR4vqzyIV9rIGdG9JjHaT0LiFdscvivCjX1Q==", + "dev": true + }, + "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" + } + }, + "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==" + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "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" + } + }, + "ltgt": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha1-81ypHEk/e3PaDgdJUwTxezH4fuU=", + "dev": true + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "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 + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==" + }, + "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" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "min-indent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.0.tgz", + "integrity": "sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY=", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "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.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "mri": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.5.tgz", + "integrity": "sha512-d2RKzMD4JNyHMbnbWnznPaa8vbdlq/4pNZ3IgdaGrVbBhebBsGUUE/6qorTMYNS6TwuH3ilfOlD2bf4Igh8CKg==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "muicss": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/muicss/-/muicss-0.10.1.tgz", + "integrity": "sha512-PTLc9sKW9KdoFNsUwMlFOwekDyjGlNFrpx5/OOFk6tHujugMq14oRTZoY7+f3bdJSt0GM1/HDBv/m+/QgP1gFw==", + "requires": { + "react-addons-shallow-compare": "^15.6.2" + } + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "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-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + }, + "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-releases": { + "version": "1.1.53", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz", + "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==", + "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-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": "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" + } + }, + "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" + } + }, + "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" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "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" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "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=" + }, + "object-keys": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.2.0.tgz", + "integrity": "sha1-zd7AKZiwkb5CvxA1rjLknxy26mc=", + "dev": true, + "requires": { + "foreach": "~2.0.1", + "indexof": "~0.0.1", + "is": "~0.2.6" + } + }, + "octal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/octal/-/octal-1.0.0.tgz", + "integrity": "sha1-Y+cWKmjvvrniE1iNWOmJ0eXEUws=", + "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" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "opencollective-postinstall": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz", + "integrity": "sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw==", + "dev": true + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "opts": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/opts/-/opts-1.2.7.tgz", + "integrity": "sha512-hwZhzGGG/GQ7igxAVFOEun2N4fWul31qE9nfBdCnZGQCB5+L7tN9xZ+94B4aUpLOJx/of3zZs5XsuubayQYQjA==", + "dev": true + }, + "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": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "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-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "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==", + "dev": true + }, + "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" + } + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "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-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "postcss": { + "version": "7.0.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", + "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "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" + } + } + } + }, + "postcss-value-parser": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", + "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "process-es6": { + "version": "0.11.6", + "resolved": "https://registry.npmjs.org/process-es6/-/process-es6-0.11.6.tgz", + "integrity": "sha1-xrs4n5qVH4K9TrFpYAEFvS/5x3g=", + "dev": true + }, + "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 + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "requires": { + "asap": "~2.0.3" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "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.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "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 + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "react-addons-shallow-compare": { + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/react-addons-shallow-compare/-/react-addons-shallow-compare-15.6.2.tgz", + "integrity": "sha1-GYoAuR/DdiPbZKKP0XtZa6NicC8=", + "requires": { + "fbjs": "^0.8.4", + "object-assign": "^4.1.0" + } + }, + "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" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, + "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" + } + }, + "readdirp": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", + "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", + "dev": true, + "requires": { + "picomatch": "^2.0.7" + } + }, + "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" + }, + "dependencies": { + "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" + } + } + } + }, + "regexparam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-1.3.0.tgz", + "integrity": "sha512-6IQpFBv6e5vz1QAqI+V4k8P2e/3gRrqfCJ9FI+O1FLQTO+Uz6RXZEZOPmTJ6hlGj7gkERzY5BRCv09whKP96/g==" + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "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.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "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.16.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.16.1.tgz", + "integrity": "sha512-rmAglCSqWWMrrBv/XM6sW0NuRFiKViw/W4d9EbC4pt+49H8JwHy+mcGmALTEg504AUDcLTvb1T2q3E9AnmY+ig==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rollup": { + "version": "1.32.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.32.1.tgz", + "integrity": "sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + } + }, + "rollup-plugin-livereload": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-livereload/-/rollup-plugin-livereload-1.2.0.tgz", + "integrity": "sha512-zKcS4D8ElSFj9Mv6OAM1kGB3o5LkCtEClewO8CDPEacj6p4DSvTOm6WlKSc8/WtsD0d3Q33Y96c5Jqzyaxo/8g==", + "dev": true, + "requires": { + "livereload": "^0.9.1" + } + }, + "rollup-plugin-node-builtins": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-builtins/-/rollup-plugin-node-builtins-2.1.2.tgz", + "integrity": "sha1-JKH+1KQyV7a2Q3HYq8bOGrFFl+k=", + "dev": true, + "requires": { + "browserify-fs": "^1.0.0", + "buffer-es6": "^4.9.2", + "crypto-browserify": "^3.11.0", + "process-es6": "^0.11.2" + } + }, + "rollup-plugin-node-globals": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-globals/-/rollup-plugin-node-globals-1.4.0.tgz", + "integrity": "sha512-xRkB+W/m1KLIzPUmG0ofvR+CPNcvuCuNdjVBVS7ALKSxr3EDhnzNceGkGi1m8MToSli13AzKFYH4ie9w3I5L3g==", + "dev": true, + "requires": { + "acorn": "^5.7.3", + "buffer-es6": "^4.9.3", + "estree-walker": "^0.5.2", + "magic-string": "^0.22.5", + "process-es6": "^0.11.6", + "rollup-pluginutils": "^2.3.1" + }, + "dependencies": { + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true + }, + "estree-walker": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz", + "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==", + "dev": true + }, + "magic-string": { + "version": "0.22.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", + "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", + "dev": true, + "requires": { + "vlq": "^0.2.2" + } + } + } + }, + "rollup-plugin-replace": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-replace/-/rollup-plugin-replace-2.2.0.tgz", + "integrity": "sha512-/5bxtUPkDHyBJAKketb4NfaeZjL5yLZdeUihSfbF2PQMz+rSTEb8ARKoOl3UBT4m7/X+QOXJo3sLTcq+yMMYTA==", + "requires": { + "magic-string": "^0.25.2", + "rollup-pluginutils": "^2.6.0" + } + }, + "rollup-plugin-svelte": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-5.2.1.tgz", + "integrity": "sha512-wc93cN66sRpX6uFljVFqvWT6NU3V5ab/uLXKt2UiARuexFU/ctolzkmdXM7WM5iKdTX9scToS9sabJTJV4DUMA==", + "dev": true, + "requires": { + "require-relative": "^0.8.7", + "rollup-pluginutils": "^2.8.2", + "sourcemap-codec": "^1.4.8" + } + }, + "rollup-plugin-terser": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.0.tgz", + "integrity": "sha512-XGMJihTIO3eIBsVGq7jiNYOdDMb3pVxuzY0uhOE/FM4x/u9nQgr3+McsjzqBn3QfHIpNSZmFnpoKAwHBEcsT7g==", + "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" + } + }, + "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" + } + }, + "run-async": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", + "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", + "dev": true, + "requires": { + "is-promise": "^2.1.0" + } + }, + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "sade": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.7.3.tgz", + "integrity": "sha512-m4BctppMvJ60W1dXnHq7jMmFe3hPJZDAH85kQ3ACTo7XZNVUuTItCQ+2HfyaMeV5cKrbw7l4vD/6We3GBxvdJw==", + "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==" + }, + "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" + }, + "dependencies": { + "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" + } + } + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "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 + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "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 + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "sirv": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-0.4.2.tgz", + "integrity": "sha512-dQbZnsMaIiTQPZmbGmktz+c74zt/hyrJEB4tdp2Jj0RNv9J6B/OWR5RyrZEvIn9fyh9Zlg2OlE2XzKz6wMKGAw==", + "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==", + "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" + } + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, + "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 + }, + "source-map-support": { + "version": "0.5.17", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.17.tgz", + "integrity": "sha512-bwdKOBZ5L0gFRh4KOxNap/J/MpvX9Yxsq9lFDx65s3o7F/NiHy7JRaGIS8MwW6tZPAq9UXE207Il0cfcb5yu/Q==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "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.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "spectre.css": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/spectre.css/-/spectre.css-0.5.8.tgz", + "integrity": "sha512-3N4WocWY+Dl6b3e5v3nsZYyp+VSDcBfGDzyyHw/H78ie9BoAhHkxmrhLxo9y8RadxYzVrPjfPdlev3hXEUzR2w==" + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "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-range": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/string-range/-/string-range-1.2.2.tgz", + "integrity": "sha1-qJPtNH5yKZvIO++78qaSqNI51d0=", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "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": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } + } + }, + "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" + } + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", + "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==", + "dev": true + }, + "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.20.1", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.20.1.tgz", + "integrity": "sha512-m/dw52BZf+p6KYnyKLErIcGalu4pwJrQbUM7VZriRw6ZlJj1qMAZsLcIWzEB3I0hhdJwkKb7LrrvUIeqmbO92Q==", + "dev": true + }, + "svelte-preprocess": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-3.7.1.tgz", + "integrity": "sha512-7Padl2rCwQAakLGnNhk52NJw4eUJHs+q432rRvcCs/Ul7pKoSoZ69HCptXTH8ChjRFl1hqrVsLVYu7wGvYgR1A==", + "dev": true, + "requires": { + "@types/pug": "^2.0.4", + "@types/sass": "^1.16.0", + "detect-indent": "^6.0.0", + "strip-indent": "^3.0.0" + } + }, + "svelte-spa-router": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/svelte-spa-router/-/svelte-spa-router-2.1.0.tgz", + "integrity": "sha512-9bcQPTQ6A+Z92Z+NirVVusa/Sw6nqzKwZAKfu1Cl6+XjStf12hfIcPoMfTutEBoX0Ik+z7gJbJ934PKk94BvCg==", + "requires": { + "regexparam": "1.3.0" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.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.11", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.11.tgz", + "integrity": "sha512-76Ynm7OXUG5xhOpblhytE7X58oeNSmC8xnNhjWVo8CksHit0U0kO4hfNbPrrYwowLWFgM2n9L176VNx2QaHmtA==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "tinydate": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tinydate/-/tinydate-1.2.0.tgz", + "integrity": "sha512-3GwPk8VhDFnUZ2TrgkhXJs6hcMAIIw4x/xkz+ayK6dGoQmp2nUwKzBXK0WnMsqkh6vfUhpqQicQF3rbshfyJkg==" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "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" + } + }, + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", + "dev": true + }, + "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 + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typedarray-to-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-1.0.4.tgz", + "integrity": "sha1-m7i6DoQfs/TPH+fCRenz+opf6Zw=", + "dev": true + }, + "ua-parser-js": { + "version": "0.7.21", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.21.tgz", + "integrity": "sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==" + }, + "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 + }, + "v8-compile-cache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", + "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" + } + }, + "vlq": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", + "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", + "dev": true + }, + "whatwg-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", + "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==" + }, + "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" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "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" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "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" + } + }, + "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" + } + }, + "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" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xtend": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.2.0.tgz", + "integrity": "sha1-7vax8ZjByN6vrYsXZaBNrUoBxak=", + "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": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "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" + } + }, + "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" + } + }, + "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" + } + } + } + }, + "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 + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..2064aba --- /dev/null +++ b/package.json @@ -0,0 +1,33 @@ +{ + "name": "svelte-app", + "version": "1.0.0", + "scripts": { + "build": "rollup -c", + "dev": "rollup -c -w", + "start": "sirv public" + }, + "devDependencies": { + "@rollup/plugin-commonjs": "^11.0.0", + "@rollup/plugin-node-resolve": "^7.0.0", + "autoprefixer": "^9.7.6", + "eslint": "^6.8.0", + "eslint-plugin-svelte3": "^2.7.3", + "node-sass": "^4.13.1", + "rollup": "^1.20.0", + "rollup-plugin-livereload": "^1.0.0", + "rollup-plugin-node-builtins": "^2.1.2", + "rollup-plugin-node-globals": "^1.4.0", + "rollup-plugin-svelte": "^5.0.3", + "rollup-plugin-terser": "^5.1.2", + "svelte": "^3.0.0", + "svelte-preprocess": "^3.7.1" + }, + "dependencies": { + "axios": "^0.19.2", + "muicss": "^0.10.1", + "rollup-plugin-replace": "^2.2.0", + "sirv-cli": "^0.4.4", + "spectre.css": "^0.5.8", + "svelte-spa-router": "^2.1.0" + } +} diff --git a/public/favicon.png b/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..7e6f5eb5a2f1f1c882d265cf479de25caa925645 GIT binary patch literal 3127 zcmV-749N3|P)i z7)}s4L53SJCkR}iVi00SFk;`MXX*#X*kkwKs@nFGS}c;=?XFjU|G$3t^5sjIVS2G+ zw)WGF83CpoGXhLGW(1gW%uV|X7>1P6VhCX=Ux)Lb!*DZ%@I3!{Gsf7d?gtIQ%nQiK z3%(LUSkBji;C5Rfgd6$VsF@H`Pk@xtY6t<>FNR-pD}=C~$?)9pdm3XZ36N5PNWYjb z$xd$yNQR9N!dfj-Vd@BwQo^FIIWPPmT&sZyQ$v81(sCBV=PGy{0wltEjB%~h157*t zvbe_!{=I_783x!0t1-r#-d{Y?ae$Q4N_Nd^Ui^@y(%)Gjou6y<3^XJdu{rmUf-Me?)zZ>9OR&6U5H*cK; z$gUlB{g0O4gN0sLSO|Of?hU(l?;h(jA3uH!Z{EBKuV23ouU@^Y6#%v+QG;>e*E}%?wlu-NT4DG zs)z)7WbLr)vGAu(ohrKc^em@OpO&f~6_>E61n_e0_V3@{U3^O;j{`^mNCJUj_>;7v zsMs6Hu3g7+@v+lSo;=yTYFqq}jZmQ-BK8K{C4kqi_i*jBaQE(Au0607V-zKeT;EPg zX(`vrn=L+e74+-Tqeok@_`tDa$G9I|$nTU5H*2V8@y()n*zqM?J1G!-1aX;CfDC9B zTnJ#j_%*n8Qb1)re*Bno7g0RG{Eb;IK14irJYJp$5Z6ac9~b_P?+5t~95~SRG$g?1 znFJ7p$xV&GZ18m~79TGRdfsc-BcX$9yXTR*n)mPD@1~O(_?cT$ZvFPucRmGlq&se0 zKrcUf^k}4hM*biEJOWKzz!qQe;CB_ZtSOO9Owg#lZAc=s65^rb{fZe(TYu_rk!wKkEf}RIt=#Om( zR8mN`DM<^xj~59euMMspBolVN zAPTr8sSDI104orIAdmL$uOXn*6hga1G+0WD0E?UtabxC#VC~vf3|10|phW;yQ3CY8 z2CM=)ErF;xq-YJ5G|um}>*1#E+O_Mu|Nr#qQ&G1P-NMq@f?@*XUcSbV?tX=)ilM-Q zBZP|!Bpv0V;#ojKcpc7$=eqO;#Uy~#?^kNI{vSZfLx&DEt~LTmaKWXcx=joubklI<*Aw z>LtMaQ7DR<1I2LkWvwyu#Rwn~;ezT}_g(@5l3h?W%-a86Y-t#O1PubP+z<%?V5D(U zy57A6{h+{?kOZp7&WKZR+=sznMJ}+Dnpo=C_0%R_x_t~J5T?E_{+))l5v1%52>)d-`iiZyx|5!%M2Fb2dU zW3~MwwpEH9Rhue+k$UIOoo($Ds!NbOyMR36fRHu;*15(YcA7siIZk#%JWz>P!qX1?IUojG&nKR>^gArBt2 zit(ETyZ=@V&7mv_Fi4bABcnwP+jzQuHcfU&BrAV91u-rFvEi7y-KnWsvHH=d2 zgAk(GKm_S8RcTJ>2N3~&Hbwp{Z3NF_Xeh}g4Eke)V&dY{W(3&b1j9t4yK_aYJisZZ{1rcU5- z;eD>K;ndPq&B-8yA_S0F!4ThA&{1{x)H<#?k9a#6Pc6L?V^s0``ynL&D;p(!Nmx`Y zFkHex{4p!Ggm^@DlehW}iHHVi}~u=$&N? z(NEBLQ#UxxAkdW>X9LnqUr#t4Lu0=9L8&o>JsqTtT5|%gb3QA~hr0pED71+iFFr)dZ=Q=E6ng{NE{Z~0)C?deO#?Aj zSDQ$z#TeC2T^|=}6GBo-&$;E{HL3!q3Z-szuf)O=G#zDjin4SSP%o%6+2IT#sLjQa ziyxFFz~LMjWY+_a5H!U6%a<=b7QVP^ z*90a62;bVq{?@)P6^DWd^Yilq4|YTV2Nw!Yu;a1lPI-sxR)rf@Fe5DhDP7FH zZZ%4S*1C30P;|O+jB!1;m|rXT90Sm5*RBbQN`PKu+hDD*S^yE(CdtSfg=z>u$cIj> z + + + + + + Svelte app + + + + + + + + + + diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 0000000..3445b91 --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,91 @@ +import svelte from 'rollup-plugin-svelte'; +import resolve from '@rollup/plugin-node-resolve'; +import commonjs from '@rollup/plugin-commonjs'; +import livereload from 'rollup-plugin-livereload'; +import replace from 'rollup-plugin-replace'; +import { terser } from 'rollup-plugin-terser'; +import sveltePreprocess from 'svelte-preprocess'; +import builtins from 'rollup-plugin-node-builtins'; +import globals from 'rollup-plugin-node-globals'; + +const production = !process.env.ROLLUP_WATCH; + +const preprocess = sveltePreprocess({ + 'scss': { + 'includePaths': ['src'] + }, + 'postcss': { + 'plugins': [require('autoprefixer')] + } +}); + +export default { + 'input': 'src/main.js', + 'output': { + 'sourcemap': (!production), + 'format': 'iife', + 'name': 'app', + 'file': 'public/build/bundle.js' + }, + 'plugins': [ + // globals(), + // builtins(), + svelte({ + // enable run-time checks when not in production + 'dev': !production, + preprocess, + // we'll extract any component CSS out into + // a separate file - better for performance + 'css': css => { + css.write('public/build/bundle.css'); + } + }), + + // If you have external dependencies installed from + // npm, you'll most likely need these plugins. In + // some cases you'll need additional configuration - + // consult the documentation for details: + // https://github.com/rollup/plugins/tree/master/packages/commonjs + resolve({ + 'browser': true, + 'dedupe': ['svelte'] + }), + commonjs(), + replace({ + 'exclude': 'node_modules/**', + 'ENV': JSON.stringify(production ? 'production' : 'development') + }), + + // In dev mode, call `npm run start` once + // the bundle has been generated + !production && serve(), + + // Watch the `public` directory and refresh the + // browser on changes when not in production + !production && livereload('public'), + + // If we're building for production (npm run build + // instead of npm run dev), minify + production && terser() + ], + 'watch': { + 'clearScreen': false + } +}; + +function serve() { + let started = false; + + return { + writeBundle() { + if (!started) { + started = true; + + require('child_process').spawn('npm', ['run', 'start', '--', '--dev'], { + 'stdio': ['ignore', 'inherit', 'inherit'], + 'shell': true + }); + } + } + }; +} diff --git a/src/App.svelte b/src/App.svelte new file mode 100644 index 0000000..1e6fe5a --- /dev/null +++ b/src/App.svelte @@ -0,0 +1,35 @@ + + + + + + + +
+ diff --git a/src/components/Header.svelte b/src/components/Header.svelte new file mode 100644 index 0000000..ce7e152 --- /dev/null +++ b/src/components/Header.svelte @@ -0,0 +1,32 @@ + + + + + diff --git a/src/components/TimetableList.svelte b/src/components/TimetableList.svelte new file mode 100644 index 0000000..ec63785 --- /dev/null +++ b/src/components/TimetableList.svelte @@ -0,0 +1,17 @@ + + + + +
+ TimetableList + {fromStation} to {destStation} +
+ diff --git a/src/components/TrainRoute.svelte b/src/components/TrainRoute.svelte new file mode 100644 index 0000000..78a0f56 --- /dev/null +++ b/src/components/TrainRoute.svelte @@ -0,0 +1,89 @@ + + + + +
+
+
{startStationName}
+
{destStationName}
+
+
+ {displayTime} +
+
diff --git a/src/components/TrainService.svelte b/src/components/TrainService.svelte new file mode 100644 index 0000000..b2d749b --- /dev/null +++ b/src/components/TrainService.svelte @@ -0,0 +1,12 @@ + + + + +TrainService diff --git a/src/css/common.css b/src/css/common.css new file mode 100644 index 0000000..c9dcbf7 --- /dev/null +++ b/src/css/common.css @@ -0,0 +1,88 @@ +body { + background-color: #eee; + } + + .card { + position: relative; + background-color: #fff; + min-height:48px; + margin: 8px; + border-bottom-color: #666666; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); + } + + .mui--text-display4, .mui--text-display3 { + font-family: "Roboto Slab", "Helvetica Neue", Helvetica, Arial; + } + + .temp0, .temp1, .temp2, .temp3, .temp4, .temp5 { + color: rgb(80,181,221) + } + + .temp6 { + color: rgb(78,178,206) + } + + .temp7 { + color: rgb(76, 176, 190) + } + + .temp8 { + color: rgb(73, 173, 175) + } + + .temp9 { + color: rgb(72, 171, 159) + } + + .temp10 { + color: rgb(70, 168, 142) + } + + .temp11 { + color: rgb(68, 166, 125) + } + + .temp12 { + color: rgb(66, 164, 108) + } + + .temp13 { + color: rgb(102, 173, 94) + } + + .temp14 { + color: rgb(135, 190, 64) + } + + .temp15 { + color: rgb(179, 204, 26) + } + + .temp16 { + color: rgb(214, 213, 28) + } + + .temp17 { + color: rgb(249, 202, 3) + } + + .temp18 { + color: rgb(246, 181, 3) + } + + .temp19 { + color: rgb(244, 150, 26) + } + + .temp20 { + color: rgb(236, 110, 5) + } + + .day { + font-family: "Roboto Slab", "Helvetica Neue", Helvetica, Arial, sans-serif; + text-transform: uppercase; + } + .summary::first-letter { + text-transform: capitalize + } diff --git a/src/css/custom.scss b/src/css/custom.scss new file mode 100644 index 0000000..2aee7a2 --- /dev/null +++ b/src/css/custom.scss @@ -0,0 +1,336 @@ +// import MUI colors +@import "./node_modules/muicss/lib/sass/mui/colors"; + +// customize MUI variables +$mui-primary-color: mui-color("blue-grey", "500"); +$mui-primary-color-dark: mui-color("blue-grey", "700"); +$mui-primary-color-light: mui-color("blue-grey", "100"); + +$mui-accent-color: mui-color("deep-purple", "900"); +$mui-accent-color-dark: mui-color("indigo", "A100"); +$mui-accent-color-light: mui-color("indigo", "A400"); + +$mui-base-font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, Verdana, + "Trebuchet MS"; + +// import MUI SASS +@import "./node_modules/muicss/lib/sass/mui"; +@import "./src/css/viewport"; +@import "./src/css/horscroll"; +@import "./src/css/spinner"; +//// + +body { + background-color: mui-color("grey", "100"); +} + +#header { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 2; + transition: left 0.2s; +} + +ul { + margin: 0; + padding: 0; +} + +li { + display: inline; + margin: 0; + padding: 0 4px 0 0; +} + +.dates { + padding: 2px; + border: solid 1px #80007e; + background-color: #ffffff; +} + +#btc, +#fx, +#trend { + font-size: 85%; +} + +.up, +.ontime, +.trendUp { + color: mui-color("green") !important; +} + +.down, +.delayed, +.trendDown { + color: $mui-text-danger !important; +} + +.nochange { + color: #000000; +} +.password { + border: 1px solid mui-color("grey", "400"); + background-color: mui-color("grey", "200"); + font-family: monospace; + white-space: pre; +} + +.trendUp:before { + content: "▲"; +} + +.trendDown:before { + content: "▼"; +} + +.card { + position: relative; + background-color: #fff; + min-height: 48px; + margin: 8px; + border-bottom-color: #666666; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), + 0 1px 5px 0 rgba(0, 0, 0, 0.12); +} + +.entry { + height: 36px; + margin: 6px 0; + vertical-align: middle; +} + +.time { + font-family: "Roboto"; +} + +.titleBar { + font-family: "Gotham Light"; + font-size: 125%; +} + +#trains, +#trainResults { + overflow-y: auto; + transition: all 0.5s; + -webkit-transition: all 0.5s; +} + +.tableBody { + transition: all 0.5s; + -webkit-transition: all 0.5s; +} + +.unsliced { + height: 455px; +} +.sliced { + height: 300px; +} + +/* The snackbar - position it at the bottom and in the middle of the screen */ +#snackbar { + visibility: hidden; /* Hidden by default. Visible on click */ + min-width: 250px; /* Set a default minimum width */ + margin-left: -125px; /* Divide value of min-width by 2 */ + background-color: #333; /* Black background color */ + color: #fff; /* White text color */ + text-align: center; /* Centered text */ + border-radius: 2px; /* Rounded borders */ + padding: 16px; /* Padding */ + position: fixed; /* Sit on top of the screen */ + z-index: 1; /* Add a z-index if needed */ + left: 50%; /* Center the snackbar */ + bottom: 30px; /* 30px from the bottom */ +} + +/* Show the snackbar when clicking on a button (class added with JavaScript) */ +#snackbar.show { + visibility: visible; /* Show the snackbar */ + + /* Add animation: Take 0.5 seconds to fade in and out the snackbar. +However, delay the fade out process for 2.5 seconds */ + /* -webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s; + animation: fadein 0.5s, fadeout 0.5s 2.5s;*/ + + -webkit-animation: fadein 0.5s; + animation: fadein 0.5s; +} + +/* Animations to fade the snackbar in and out */ +@-webkit-keyframes fadein { + from { + bottom: 0; + opacity: 0; + } + to { + bottom: 30px; + opacity: 1; + } +} + +@keyframes fadein { + from { + bottom: 0; + opacity: 0; + } + to { + bottom: 30px; + opacity: 1; + } +} + +@-webkit-keyframes fadeout { + from { + bottom: 30px; + opacity: 1; + } + to { + bottom: 0; + opacity: 0; + } +} + +@keyframes fadeout { + from { + bottom: 30px; + opacity: 1; + } + to { + bottom: 0; + opacity: 0; + } +} + +.stop-scrolling { + height: 100%; + overflow: hidden; +} + +.fullscreen { + position: absolute; + z-index: 5000; + top: 0; + left: 0; + height: 100vh; + width: 100vw; + background-color: mui-color("grey", "300"); + background-repeat: no-repeat; + background-position: center top; +} + +.fillpanel { + width: 100%; + height: 100%; + background-color: mui-color("amber", "50"); +} + +.fullscreen .header { + /*position: fixed; + top: 0; + right: 0; + left: 0; + z-index: +1; + transition: left 0.2s;*/ + + position: sticky; +} + +.box { + display: flex; + flex-flow: column; + height: 100%; + // overflow:auto; +} + +.box .headerSpacer { + flex: 0 1 66px; +} + +.box .content { + flex: 1 1 auto; + background-color: mui-color("white"); + overflow: auto; + margin-bottom: 15px; +} + +.newsarticle img { + max-height: 100%; + max-width: 100%; +} + +.tiny { + font-size: 1rem; +} + +.small { + font-size: 2rem; +} + +.medium { + font-size: 4rem; +} + +.large { + font-size: 6rem; +} + +.cardLink { + color: mui-color("blue", "500"); + margin-top: 10px; +} + +.endbumper { + height: 66px; +} + +.seemore { + font-size: 14px; + font-weight: 500; +} + +#connectionStatus { + margin-top: 15px; + margin-bottom: 15px; +} + +.trafficHeavy { + color: #fa4a50; +} + +.trafficLight { + color: #fdbd15; +} + +.trafficMedium { + color: #fba010; +} + +#map { + height: 180px; +} + +#bymeImages { + margin-bottom: 3px; +} + +.bbm-wrapper { + z-index: 2000 !important; +} + +.cancelledRow { + background: repeating-linear-gradient( + -55deg, + #ff000010, + #ff000010 10px, + #fff 10px, + #fff 20px + ); + +} + +.nrccAlert a { + color:#212121; +} diff --git a/src/css/horscroll.scss b/src/css/horscroll.scss new file mode 100644 index 0000000..cebc6e6 --- /dev/null +++ b/src/css/horscroll.scss @@ -0,0 +1,52 @@ + +.scrolling-wrapper-flexbox { + display: flex; + flex-wrap: nowrap; + overflow-x: auto; + + .scrollCard, .scrollCardHalf, .imageCard, .hourlyCard { + flex: 0 0 auto; + margin-right: 11px; + } +} + +.scrollCard, .scrollCardHalf, .hourlyCard { + width: 250px; + height: 175px; + overflow-y: hidden; + border-radius: 3px; + background-color: #f5f5f5; + padding: 5px; + box-shadow: 0 2px 2px 0 rgba(0,0,0,0.05), 0 2px 1px -2px rgba(0,0,0,0.05), 0 1px 5px 0 rgba(0,0,0,0.05) +} + +.scrollCardHalf { + height: 85px; +} + +.hourlyCard { + width: 42px; + height:70px; + background: transparent; +} + +.imageCard { + // width: 250px; + height: 175px; + overflow-y: hidden; + +} +.imageCard img { + max-height:100%; + max-width:100%; +} + +.scrolling-wrapper, .scrolling-wrapper-flexbox { + height: 75px; + width: 100%; + -webkit-overflow-scrolling: touch; + &::-webkit-scrollbar { + display: none; + } +} + diff --git a/src/css/skeleton-min.css b/src/css/skeleton-min.css new file mode 100644 index 0000000..149307f --- /dev/null +++ b/src/css/skeleton-min.css @@ -0,0 +1,181 @@ +.container{position:relative;width:100%;max-width:960px;margin:0 auto;padding:0 20px;box-sizing:border-box;} +.column, +.columns{width:100%;float:left;box-sizing:border-box;} +@media (min-width:400px){.container{width:85%;padding:0;} +} +@media (min-width:550px){.container{width:80%;} +.column, +.columns{margin-left:4%;} +.column:first-child, +.columns:first-child{margin-left:0;} +.one.column, +.one.columns{width:4.66666666667%;} +.two.columns{width:13.3333333333%;} +.three.columns{width:22%;} +.four.columns{width:30.6666666667%;} +.five.columns{width:39.3333333333%;} +.six.columns{width:48%;} +.seven.columns{width:56.6666666667%;} +.eight.columns{width:65.3333333333%;} +.nine.columns{width:74.0%;} +.ten.columns{width:82.6666666667%;} +.eleven.columns{width:91.3333333333%;} +.twelve.columns{width:100%;margin-left:0;} +.one-third.column{width:30.6666666667%;} +.two-thirds.column{width:65.3333333333%;} +.one-half.column{width:48%;} +.offset-by-one.column, +.offset-by-one.columns{margin-left:8.66666666667%;} +.offset-by-two.column, +.offset-by-two.columns{margin-left:17.3333333333%;} +.offset-by-three.column, +.offset-by-three.columns{margin-left:26%;} +.offset-by-four.column, +.offset-by-four.columns{margin-left:34.6666666667%;} +.offset-by-five.column, +.offset-by-five.columns{margin-left:43.3333333333%;} +.offset-by-six.column, +.offset-by-six.columns{margin-left:52%;} +.offset-by-seven.column, +.offset-by-seven.columns{margin-left:60.6666666667%;} +.offset-by-eight.column, +.offset-by-eight.columns{margin-left:69.3333333333%;} +.offset-by-nine.column, +.offset-by-nine.columns{margin-left:78.0%;} +.offset-by-ten.column, +.offset-by-ten.columns{margin-left:86.6666666667%;} +.offset-by-eleven.column, +.offset-by-eleven.columns{margin-left:95.3333333333%;} +.offset-by-one-third.column, +.offset-by-one-third.columns{margin-left:34.6666666667%;} +.offset-by-two-thirds.column, +.offset-by-two-thirds.columns{margin-left:69.3333333333%;} +.offset-by-one-half.column, +.offset-by-one-half.columns{margin-left:52%;} +} +html{font-size:62.5%;} +body{font-size:1.5em;line-height:1.6;font-weight:400;font-family:"Raleway", "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif;color:#222;} +h1, h2, h3, h4, h5, h6{margin-top:0;margin-bottom:2rem;font-weight:300;} +h1{font-size:4.0rem;line-height:1.2;letter-spacing:-.1rem;} +h2{font-size:3.6rem;line-height:1.25;letter-spacing:-.1rem;} +h3{font-size:3.0rem;line-height:1.3;letter-spacing:-.1rem;} +h4{font-size:2.4rem;line-height:1.35;letter-spacing:-.08rem;} +h5{font-size:1.8rem;line-height:1.5;letter-spacing:-.05rem;} +h6{font-size:1.5rem;line-height:1.6;letter-spacing:0;} +@media (min-width:550px){h1{font-size:5.0rem;} +h2{font-size:4.2rem;} +h3{font-size:3.6rem;} +h4{font-size:3.0rem;} +h5{font-size:2.4rem;} +h6{font-size:1.5rem;} +} +p{margin-top:0;} +a{color:#1EAEDB;} +a:hover{color:#0FA0CE;} +.button, +button, +input[type="submit"], +input[type="reset"], +input[type="button"]{display:inline-block;height:38px;padding:0 30px;color:#555;text-align:center;font-size:11px;font-weight:600;line-height:38px;letter-spacing:.1rem;text-transform:uppercase;text-decoration:none;white-space:nowrap;background-color:transparent;border-radius:4px;border:1px solid #bbb;cursor:pointer;box-sizing:border-box;} +.button:hover, +button:hover, +input[type="submit"]:hover, +input[type="reset"]:hover, +input[type="button"]:hover, +.button:focus, +button:focus, +input[type="submit"]:focus, +input[type="reset"]:focus, +input[type="button"]:focus{color:#333;border-color:#888;outline:0;} +.button.button-primary, +button.button-primary, +input[type="submit"].button-primary, +input[type="reset"].button-primary, +input[type="button"].button-primary{color:#FFF;background-color:#33C3F0;border-color:#33C3F0;} +.button.button-primary:hover, +button.button-primary:hover, +input[type="submit"].button-primary:hover, +input[type="reset"].button-primary:hover, +input[type="button"].button-primary:hover, +.button.button-primary:focus, +button.button-primary:focus, +input[type="submit"].button-primary:focus, +input[type="reset"].button-primary:focus, +input[type="button"].button-primary:focus{color:#FFF;background-color:#1EAEDB;border-color:#1EAEDB;} +input[type="email"], +input[type="number"], +input[type="search"], +input[type="text"], +input[type="tel"], +input[type="url"], +input[type="password"], +textarea, +select{height:38px;padding:6px 10px;background-color:#fff;border:1px solid #D1D1D1;border-radius:4px;box-shadow:none;box-sizing:border-box;} +input[type="email"], +input[type="number"], +input[type="search"], +input[type="text"], +input[type="tel"], +input[type="url"], +input[type="password"], +textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;} +textarea{min-height:65px;padding-top:6px;padding-bottom:6px;} +input[type="email"]:focus, +input[type="number"]:focus, +input[type="search"]:focus, +input[type="text"]:focus, +input[type="tel"]:focus, +input[type="url"]:focus, +input[type="password"]:focus, +textarea:focus, +select:focus{border:1px solid #33C3F0;outline:0;} +label, +legend{display:block;margin-bottom:.5rem;font-weight:600;} +fieldset{padding:0;border-width:0;} +input[type="checkbox"], +input[type="radio"]{display:inline;} +label > .label-body{display:inline-block;margin-left:.5rem;font-weight:normal;} +ul{list-style:circle inside;} +ol{list-style:decimal inside;} +ol, ul{padding-left:0;margin-top:0;} +ul ul, +ul ol, +ol ol, +ol ul{margin:1.5rem 0 1.7rem 3rem;font-size:90%;} +li{margin-bottom:1rem;} +code{padding:.2rem .5rem;margin:0 .2rem;font-size:90%;white-space:nowrap;background:#F1F1F1;border:1px solid #E1E1E1;border-radius:4px;} +pre > code{display:block;padding:1rem 1.5rem;white-space:pre;} +th, +td{padding:12px 15px;text-align:left;border-bottom:1px solid #E1E1E1;} +th:first-child, +td:first-child{padding-left:0;} +th:last-child, +td:last-child{padding-right:0;} +button, +.button{margin-bottom:1rem;} +input, +textarea, +select, +fieldset{margin-bottom:1.5rem;} +pre, +blockquote, +dl, +figure, +table, +p, +ul, +ol, +form{margin-bottom:2.5rem;} +.u-full-width{width:100%;box-sizing:border-box;} +.u-max-full-width{max-width:100%;box-sizing:border-box;} +.u-pull-right{float:right;} +.u-pull-left{float:left;} +hr{margin-top:3rem;margin-bottom:3.5rem;border-width:0;border-top:1px solid #E1E1E1;} +.container:after, +.row:after, +.u-cf{content:"";display:table;clear:both;} +@media (min-width:400px){} +@media (min-width:550px){} +@media (min-width:750px){} +@media (min-width:1000px){} +@media (min-width:1200px){} diff --git a/src/css/skeleton.css b/src/css/skeleton.css new file mode 100644 index 0000000..0ccc0de --- /dev/null +++ b/src/css/skeleton.css @@ -0,0 +1,419 @@ +/* +* Skeleton V2.0.4 +* Copyright 2014, Dave Gamache +* www.getskeleton.com +* Free to use under the MIT license. +* http://www.opensource.org/licenses/mit-license.php +* 12/29/2014 +*/ + + +/* Table of contents +–––––––––––––––––––––––––––––––––––––––––––––––––– +- Grid +- Base Styles +- Typography +- Links +- Buttons +- Forms +- Lists +- Code +- Tables +- Spacing +- Utilities +- Clearing +- Media Queries +*/ + + +/* Grid +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +.container { + position: relative; + width: 100%; + max-width: 960px; + margin: 0 auto; + padding: 0 20px; + box-sizing: border-box; } +.column, +.columns { + width: 100%; + float: left; + box-sizing: border-box; } + +/* For devices larger than 400px */ +@media (min-width: 400px) { + .container { + width: 85%; + padding: 0; } +} + +/* For devices larger than 550px */ +@media (min-width: 550px) { + .container { + width: 80%; } + .column, + .columns { + margin-left: 4%; } + .column:first-child, + .columns:first-child { + margin-left: 0; } + + .one.column, + .one.columns { width: 4.66666666667%; } + .two.columns { width: 13.3333333333%; } + .three.columns { width: 22%; } + .four.columns { width: 30.6666666667%; } + .five.columns { width: 39.3333333333%; } + .six.columns { width: 48%; } + .seven.columns { width: 56.6666666667%; } + .eight.columns { width: 65.3333333333%; } + .nine.columns { width: 74.0%; } + .ten.columns { width: 82.6666666667%; } + .eleven.columns { width: 91.3333333333%; } + .twelve.columns { width: 100%; margin-left: 0; } + + .one-third.column { width: 30.6666666667%; } + .two-thirds.column { width: 65.3333333333%; } + + .one-half.column { width: 48%; } + + /* Offsets */ + .offset-by-one.column, + .offset-by-one.columns { margin-left: 8.66666666667%; } + .offset-by-two.column, + .offset-by-two.columns { margin-left: 17.3333333333%; } + .offset-by-three.column, + .offset-by-three.columns { margin-left: 26%; } + .offset-by-four.column, + .offset-by-four.columns { margin-left: 34.6666666667%; } + .offset-by-five.column, + .offset-by-five.columns { margin-left: 43.3333333333%; } + .offset-by-six.column, + .offset-by-six.columns { margin-left: 52%; } + .offset-by-seven.column, + .offset-by-seven.columns { margin-left: 60.6666666667%; } + .offset-by-eight.column, + .offset-by-eight.columns { margin-left: 69.3333333333%; } + .offset-by-nine.column, + .offset-by-nine.columns { margin-left: 78.0%; } + .offset-by-ten.column, + .offset-by-ten.columns { margin-left: 86.6666666667%; } + .offset-by-eleven.column, + .offset-by-eleven.columns { margin-left: 95.3333333333%; } + + .offset-by-one-third.column, + .offset-by-one-third.columns { margin-left: 34.6666666667%; } + .offset-by-two-thirds.column, + .offset-by-two-thirds.columns { margin-left: 69.3333333333%; } + + .offset-by-one-half.column, + .offset-by-one-half.columns { margin-left: 52%; } + +} + + +/* Base Styles +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +/* NOTE +html is set to 62.5% so that all the REM measurements throughout Skeleton +are based on 10px sizing. So basically 1.5rem = 15px :) */ +html { + font-size: 62.5%; } +body { + font-size: 1.5em; /* currently ems cause chrome bug misinterpreting rems on body element */ + line-height: 1.6; + font-weight: 400; + font-family: 'Roboto', "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; + color: #222; } + + +/* Typography +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +h1, h2, h3, h4, h5, h6 { + font-family: 'Roboto Condensed', Helvetica, Arial, sans-serif; + margin-top: 0; + margin-bottom: 2rem; + font-weight: 300; } +h1 { font-size: 4.0rem; line-height: 1.2; letter-spacing: -.1rem;} +h2 { font-size: 3.6rem; line-height: 1.25; letter-spacing: -.1rem; } +h3 { font-size: 3.0rem; line-height: 1.3; letter-spacing: -.1rem; } +h4 { font-size: 2.4rem; line-height: 1.35; letter-spacing: -.08rem; font-weight:700;} +h5 { font-size: 1.8rem; line-height: 1.5; letter-spacing: -.05rem; } +h6 { font-size: 1.5rem; line-height: 1.6; letter-spacing: 0; } + +/* Larger than phablet */ +@media (min-width: 550px) { + h1 { font-size: 5.0rem; } + h2 { font-size: 4.2rem; } + h3 { font-size: 3.6rem; } + h4 { font-size: 3.0rem; } + h5 { font-size: 2.4rem; } + h6 { font-size: 1.5rem; } +} + +p { + margin-top: 0; } + + +/* Links +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +a { + color: #1EAEDB; } +a:hover { + color: #0FA0CE; } + + +/* Buttons +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +.button, +button, +input[type="submit"], +input[type="reset"], +input[type="button"] { + display: inline-block; + height: 38px; + padding: 0 30px; + color: #555; + text-align: center; + font-size: 11px; + font-weight: 600; + line-height: 38px; + letter-spacing: .1rem; + text-transform: uppercase; + text-decoration: none; + white-space: nowrap; + background-color: transparent; + border-radius: 4px; + border: 1px solid #bbb; + cursor: pointer; + box-sizing: border-box; } +.button:hover, +button:hover, +input[type="submit"]:hover, +input[type="reset"]:hover, +input[type="button"]:hover, +.button:focus, +button:focus, +input[type="submit"]:focus, +input[type="reset"]:focus, +input[type="button"]:focus { + color: #333; + border-color: #888; + outline: 0; } +.button.button-primary, +button.button-primary, +input[type="submit"].button-primary, +input[type="reset"].button-primary, +input[type="button"].button-primary { + color: #FFF; + background-color: #33C3F0; + border-color: #33C3F0; } +.button.button-primary:hover, +button.button-primary:hover, +input[type="submit"].button-primary:hover, +input[type="reset"].button-primary:hover, +input[type="button"].button-primary:hover, +.button.button-primary:focus, +button.button-primary:focus, +input[type="submit"].button-primary:focus, +input[type="reset"].button-primary:focus, +input[type="button"].button-primary:focus { + color: #FFF; + background-color: #1EAEDB; + border-color: #1EAEDB; } + + +/* Forms +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +input[type="email"], +input[type="number"], +input[type="search"], +input[type="text"], +input[type="tel"], +input[type="url"], +input[type="password"], +textarea, +select { + height: 38px; + padding: 6px 10px; /* The 6px vertically centers text on FF, ignored by Webkit */ + background-color: #fff; + border: 1px solid #D1D1D1; + border-radius: 4px; + box-shadow: none; + box-sizing: border-box; } +/* Removes awkward default styles on some inputs for iOS */ +input[type="email"], +input[type="number"], +input[type="search"], +input[type="text"], +input[type="tel"], +input[type="url"], +input[type="password"], +textarea { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; } +textarea { + min-height: 65px; + padding-top: 6px; + padding-bottom: 6px; } +input[type="email"]:focus, +input[type="number"]:focus, +input[type="search"]:focus, +input[type="text"]:focus, +input[type="tel"]:focus, +input[type="url"]:focus, +input[type="password"]:focus, +textarea:focus, +select:focus { + border: 1px solid #33C3F0; + outline: 0; } +label, +legend { + display: block; + margin-bottom: .5rem; + font-weight: 600; } +fieldset { + padding: 0; + border-width: 0; } +input[type="checkbox"], +input[type="radio"] { + display: inline; } +label > .label-body { + display: inline-block; + margin-left: .5rem; + font-weight: normal; } + + +/* Lists +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +ul { + list-style: circle inside; } +ol { + list-style: decimal inside; } +ol, ul { + padding-left: 0; + margin-top: 0; } +ul ul, +ul ol, +ol ol, +ol ul { + margin: 1.5rem 0 1.5rem 3rem; + font-size: 90%; } +li { + margin-bottom: 1rem; } + + +/* Code +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +code { + padding: .2rem .5rem; + margin: 0 .2rem; + font-size: 90%; + white-space: nowrap; + background: #F1F1F1; + border: 1px solid #E1E1E1; + border-radius: 4px; } +pre > code { + display: block; + padding: 1rem 1.5rem; + white-space: pre; } + + +/* Tables +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +th, +td { + padding: 12px 15px; + text-align: left; + border-bottom: 1px solid #E1E1E1; } +th:first-child, +td:first-child { + padding-left: 0; } +th:last-child, +td:last-child { + padding-right: 0; } + + +/* Spacing +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +button, +.button { + margin-bottom: 1rem; } +input, +textarea, +select, +fieldset { + margin-bottom: 1.5rem; } +pre, +blockquote, +dl, +figure, +table, +p, +ul, +ol, +form { + margin-bottom: 2.5rem; } + + +/* Utilities +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +.u-full-width { + width: 100%; + box-sizing: border-box; } +.u-max-full-width { + max-width: 100%; + box-sizing: border-box; } +.u-pull-right { + float: right; } +.u-pull-left { + float: left; } + + +/* Misc +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +hr { + margin-top: 3rem; + margin-bottom: 3.5rem; + border-width: 0; + border-top: 1px solid #E1E1E1; } + + +/* Clearing +–––––––––––––––––––––––––––––––––––––––––––––––––– */ + +/* Self Clearing Goodness */ +.container:after, +.row:after, +.u-cf { + content: ""; + display: table; + clear: both; } + + +/* Media Queries +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +/* +Note: The best way to structure the use of media queries is to create the queries +near the relevant code. For example, if you wanted to change the styles for buttons +on small devices, paste the mobile query code up in the buttons section and style it +there. +*/ + + +/* Larger than mobile */ +@media (min-width: 400px) {} + +/* Larger than phablet (also point when grid becomes active) */ +@media (min-width: 550px) {} + +/* Larger than tablet */ +@media (min-width: 750px) {} + +/* Larger than desktop */ +@media (min-width: 1000px) {} + +/* Larger than Desktop HD */ +@media (min-width: 1200px) {} diff --git a/src/css/spinner.scss b/src/css/spinner.scss new file mode 100644 index 0000000..dbc3178 --- /dev/null +++ b/src/css/spinner.scss @@ -0,0 +1,93 @@ +$green: #008744; +$blue: #0fa3ef; +$red: #dc4f43; +$yellow: #ffbe39; +$white: #eee; +$black: #301010; + +// scaling... any units +$width: 100px; + +body { + background-color: $white; +} + +// demo-specific +.showbox { + position: absolute; + top: 40vh; + bottom: 60vh; + left: 0; + right: 0; + padding: 5%; +} +// end demo-specific + +.loader { + position: relative; + margin: 0 auto; + width: $width; + &:before { + content: ''; + display: block; + padding-top: 100%; + } +} + +.circular { + animation: rotate 2s linear infinite; + height: 100%; + transform-origin: center center; + width: 100%; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; +} + +.path { + stroke-dasharray: 1, 200; + stroke-dashoffset: 0; + animation: dash 1.5s ease-in-out infinite, color 6s ease-in-out infinite; + stroke-linecap: round; +} + +@keyframes rotate { + 100% { + transform: rotate(360deg); + } +} + +@keyframes dash { + 0% { + stroke-dasharray: 1, 200; + stroke-dashoffset: 0; + } + 50% { + stroke-dasharray: 89, 200; + stroke-dashoffset: -35px; + } + 100% { + stroke-dasharray: 89, 200; + stroke-dashoffset: -124px; + } +} + +@keyframes color { + 100%, + 0% { + stroke: $red; + } + 40% { + stroke: $yellow; + } + 66% { + stroke: $blue; + } + 80%, + 90% { + stroke: $black; + } +} diff --git a/src/css/viewport.scss b/src/css/viewport.scss new file mode 100644 index 0000000..0546deb --- /dev/null +++ b/src/css/viewport.scss @@ -0,0 +1,81 @@ +.viewport { + width: 100%; + height: 100%; + margin: 0; +} + +/* encapsulate the various syntax in helper clases */ +/* inspired by http://infrequently.org/2009/08/css-3-progress/ */ + +/* items flex/expand vertically */ +.vbox { + /* previous syntax */ + display: -webkit-box; + display: -moz-box; + display: box; + + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -ms-box-orient: vertical; + box-orient: vertical; + + /* current syntax */ + display: -webkit-flex; + display: -moz-flex; + display: -ms-flex; + display: flex; + + -webkit-flex-direction: column; + -moz-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +.gradient { + /* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#ebf1f6+0,abd3ee+50,89c3eb+51,d5ebfb+100;Blue+Gloss+%234 */ + background: #ebf1f6; /* Old browsers */ + background: -moz-linear-gradient(top, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%); /* FF3.6-15 */ + background: -webkit-linear-gradient(top, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%); /* Chrome10-25,Safari5.1-6 */ + background: linear-gradient(to bottom, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebf1f6', endColorstr='#d5ebfb', GradientType=0); /* IE6-9 */ +} + +.backgroundImage { + background-image: url(http://via.placeholder.com/411x823); +} + +.appPanel { + /* previous syntax */ + -webkit-box-flex: 1; + -moz-box-flex: 1; + -ms-box-flex: 1; + box-flex: 1; + + /* current syntax */ + -webkit-flex: 1; + -moz-flex: 1; + -ms-flex: 1; + flex: 1; + + height: 100vh; + width: 100vw; + + overflow-y: auto; + /* background-color: white;*/ +} + +[data-id~="main"] { + z-index: 0; + position: absolute; + top: 0; + left: 0; + +} + +[data-id~="routeP"] { + z-index: 1000; + position: absolute; + top: 0; + left: 0; + +} diff --git a/src/libs/stations.js b/src/libs/stations.js new file mode 100644 index 0000000..9f81923 --- /dev/null +++ b/src/libs/stations.js @@ -0,0 +1,12 @@ +const sMap = new Map([['ZNJ', 'Northampton North Junction'], ['ZPS', 'Plaistow L.T.'], ['MSC', 'Marseille St Charles'], ['ZAE', 'Aldgate East'], ['ZEP', 'East Putney'], ['GBG', 'Gorebridge'], ['ZHR', 'Holloway Road'], ['ZPN', 'Paddington (Bakerloo Line)'], ['NMC', 'New Mills Central'], ['HBB', 'Hubberts Bridge'], ['ADC', 'Adlington (Cheshire)'], ['WHI', 'Whitstable'], ['FEG', 'Fellgate (T & W Metro)'], ['HRH', 'Horsham'], ['LNW', 'Llanwrtyd'], ['RYP', 'Ryde Pier Head'], ['PRU', 'Prudhoe'], ['TLH', 'Tilehurst'], ['SBM', 'South Bermondsey'], ['TAM', 'Tamworth'], ['CFD', 'Castleford'], ['NMN', 'New Mills Newtown'], ['HFS', 'Hatfield & Stainforth'], ['WFN', 'Watford North'], ['GWN', 'Gowerton'], ['WMW', 'Walthamstow Queens Road'], ['INP', 'Inverkip'], ['WRW', 'Warwick'], ['WHG', 'Westhoughton'], ['WIM', 'Wimbledon'], ['CLM', 'Collingham'], ['DRF', 'Driffield'], ['NWT', 'Newtown (Powys)'], ['SOE', 'Southend East'], ['PNF', 'Penyffordd'], ['WYE', 'Wye'], ['BAR', 'Bare Lane'], ['YRM', 'Yarm'], ['NTH', 'Neath'], ['ERH', 'Erith'], ['CFO', 'Chalfont & Latimer'], ['FGW', 'Fishguard & Goodwick'], ['BAY', 'Bayford'], ['BER', 'Bearley'], ['SIT', 'Sittingbourne'], ['WHL', 'White Hart Lane'], ['DRN', 'Duirinish'], ['SWK', 'Southwick'], ['MTM', 'Martin Mill'], ['NWR', 'Newtonmore'], ['ADW', 'Addiewell'], ['ALV', 'Alvechurch'], ['SQE', 'Surrey Quays'], ['HIG', 'Highbridge & Burnham'], ['RMC', 'Rotherham Central'], ['NTN', 'Newton'], ['CBN', 'Camborne'], ['RIA', 'Rhoose Cardiff Intl Airport'], ['BXW', 'Boxhill & Westhumble'], ['TNN', 'Thorne North'], ['FTN', 'Fratton'], ['RUA', 'Ruabon'], ['LAY', 'Layton'], ['LLV', 'Llandovery'], ['MAS', 'Manors'], ['CLG', 'Claygate'], ['CTT', 'Church Stretton'], ['GGV', 'Gargrave'], ['TNS', 'Thorne South'], ['CRE', 'Crewe'], ['WXC', 'Wrexham Central'], ['CAD', 'Cadoxton'], ['HYB', 'Honeybourne'], ['WGT', 'Wigton'], ['WRX', 'Wrexham General'], ['RHO', 'Rhosneigr'], ['KWL', 'Kidwelly'], ['RYD', 'Ryde Esplanade'], ['PTL', 'Priesthill & Darnley'], ['NWN', 'Newton for Hyde'], ['SBP', 'Stonebridge Park'], ['PEV', 'Pevensey & Westham'], ['ACL', 'Acle'], ['GDH', 'Gordon Hill'], ['LSY', 'Lower Sydenham'], ['SEB', 'Seaburn (T & W Metro)'], ['AYW', 'Aberystwyth'], ['LNZ', 'Lenzie'], ['MDS', 'Morden South'], ['ADD', 'Adderley Park'], ['EFL', 'East Farleigh'], ['SPU', 'Staplehurst'], ['UHL', 'Upper Holloway'], ['WLP', 'Welshpool'], ['CAS', 'Castleton'], ['HAM', 'Hamworthy'], ['BGN', 'Bridgend'], ['BRN', 'Bearsden'], ['APG', 'Aspley Guise'], ['DEW', 'Dewsbury'], ['BPS', 'Blackpool South'], ['KSL', 'Kearsley'], ['PYJ', 'Paisley St James'], ['NBA', 'New Barnet'], ['WHR', 'West Horndon'], ['HLD', 'Hellifield'], ['RDR', 'Radyr'], ['VAL', 'Valley'], ['BSD', 'Bearsted'], ['FIT', 'Filton Abbey Wood'], ['NAY', 'Newton Aycliffe'], ['BWK', 'Berwick-upon-Tweed'], ['BIF', 'Barrow-in-Furness'], ['DMY', 'Drumry'], ['CKH', 'Corkerhill'], ['LBK', 'Long Buckby'], ['BEA', 'Bridge of Allan'], ['PEB', 'Pevensey Bay'], ['CRL', 'Chorley'], ['ECS', 'Eccles Road'], ['FSG', 'Fishersgate'], ['YSR', 'Ystrad Rhondda'], ['UNV', 'University (T & W Metro)'], ['WCL', 'West Calder'], ['GNW', 'Greenwich'], ['SAB', 'Smallbrook Junction'], ['BDA', 'Brundall'], ['LNG', 'Longcross'], ['PSW', 'Polesworth'], ['SPP', 'Shippea Hill'], ['FIL', 'Filey'], ['HRR', 'Harrington'], ['MGM', 'Metheringham'], ['RAV', 'Ravenglass for Eskdale'], ['OLT', 'Olton'], ['CRD', 'Chester Road'], ['SAH', 'Salhouse'], ['GIL', 'Gillingham (Dorset)'], ['GNT', 'Gunton'], ['FEN', 'Fenny Stratford'], ['CBB', 'Carbis Bay'], ['BLW', 'Bulwell'], ['FMR', 'Falmer'], ['WNY', 'White Notley'], ['SFD', 'Salford Central'], ['BGI', 'Bargeddie'], ['WLY', 'Woodley'], ['BYC', 'Betws-y-Coed'], ['WYT', 'Wythall'], ['KID', 'Kidderminster'], ['SMO', 'South Merton'], ['ULC', 'Ulceby'], ['AWK', 'Adwick'], ['CRR', 'Corrour'], ['OVR', 'Overton'], ['RET', 'Retford'], ['STQ', 'Southampton Town Quay (Bus)'], ['BBS', 'Bordesley'], ['GOS', 'Grange-over-Sands'], ['MAY', 'Maybole'], ['YET', 'Yetminster'], ['LIH', 'Leigh (Kent)'], ['SMC', 'Sampford Courtenay'], ['SLO', 'Slough'], ['LHE', 'Loch Eil Outward Bound'], ['WBP', 'West Brompton'], ['NBT', 'Norbiton'], ['KVP', 'Kiveton Park'], ['PNL', 'Pannal'], ['MEO', 'Meols'], ['SRG', 'Seer Green'], ['CTO', 'Carlton'], ['GLY', 'Glynde'], ['MSW', 'Mansfield Woodhouse'], ['IBM', 'IBM'], ['BRL', 'Barrhill'], ['TRD', 'Troed-y-rhiw'], ['MEC', 'Meols Cop'], ['POL', 'Polsloe Bridge'], ['TPN', 'Ton Pentre'], ['BCK', 'Buckley'], ['CHC', 'Charing Cross (Glasgow)'], ['SRA', 'Stratford (London)'], ['WWO', 'West Worthing'], ['RSH', 'Rose Hill Marple'], ['SMT', 'St Margarets (Hertfordshire)'], ['WIH', 'Winchmore Hill'], ['CRS', 'Carstairs'], ['KGX', 'London Kings Cross'], ['LHS', 'Limehouse'], ['THB', 'Thornliebank'], ['DRT', 'Darton'], ['LLD', 'Llandudno'], ['NRN', 'Nairn'], ['KGE', 'Kingsknowe'], ['TNA', 'Thornton Abbey'], ['LRD', 'London Road (Guildford)'], ['BAL', 'Balham'], ['FRH', 'Calais Frethun'], ['WAC', 'Warrington Central'], ['GMV', 'Great Malvern'], ['MNC', 'Markinch'], ['WRT', 'Worstead'], ['EBB', 'Ebbw Vale Town'], ['MEL', 'Meldreth'], ['BYB', 'Blythe Bridge'], ['LOT', 'Lostock'], ['CNM', 'Cheltenham Spa'], ['FZH', 'Frizinghall'], ['LLJ', 'Llandudno Junction'], ['UPM', 'Upminster'], ['DBC', 'Dumbarton Central'], ['STT', 'Stewarton'], ['DBE', 'Dumbarton East'], ['TYS', 'Tyseley'], ['DNS', 'Dinas Powys'], ['DEE', 'Dundee'], ['LDY', 'Ladybank'], ['PBY', 'Pembrey & Burry Port'], ['GMD', 'Grimsby Docks'], ['KEI', 'Keighley'], ['BIP', 'Bishopstone'], ['SFO', 'Stanford-le-Hope'], ['BYF', 'Broughty Ferry'], ['MYH', 'Maryhill'], ['DRM', 'Drem'], ['NBE', 'Newbridge'], ['WSF', 'Winsford'], ['THD', 'Thames Ditton'], ['HMM', 'Hammerton'], ['HOR', 'Horley'], ['BLY', 'Bletchley'], ['ARU', 'Arundel'], ['FNB', 'Farnborough (Main)'], ['CGW', 'Caergwrle'], ['MAO', 'Martins Heron'], ['OXT', 'Oxted'], ['PAT', 'Patricroft'], ['GMB', 'Grimsby Town'], ['TUR', 'Turkey Street'], ['TAF', 'Taffs Well'], ['LTN', 'Luton Airport Parkway'], ['CHM', 'Chelmsford'], ['FLW', 'Fulwell'], ['HTW', 'Hartwood'], ['PNZ', 'Penzance'], ['WDE', 'Wood End'], ['GCW', 'Glan Conwy'], ['HOV', 'Hove'], ['TRH', 'Trehafod'], ['WTE', 'Whitlocks End'], ['DLJ', 'Dalston Junction'], ['VIR', 'Virginia Water'], ['ASP', 'Aspatria'], ['LPT', 'Longport'], ['LWS', 'Lewes'], ['EWD', 'Earlswood (West Midlands)'], ['WAN', 'Wanborough'], ['BTO', 'Betchworth'], ['FLN', 'Flint'], ['BUK', 'Bucknell'], ['LLM', 'Llangammarch'], ['CNG', 'Congleton'], ['WMN', 'Warminster'], ['MTL', 'Mortlake'], ['BWT', 'Bridgwater'], ['BRT', 'Barlaston'], ['MNP', 'Manor Park'], ['ESL', 'Eastleigh'], ['SHO', 'Sholing'], ['EGT', 'Egton'], ['HDH', 'Hampstead Heath'], ['WCP', 'Worcester Park'], ['ISP', 'Islip'], ['TPB', 'Thorpe Bay'], ['CRH', 'Crouch Hill'], ['TBW', 'Tunbridge Wells'], ['GLE', 'Gleneagles'], ['KSW', 'Kirkby Stephen'], ['ALW', 'Allens West'], ['DMG', 'Dinas Rhondda'], ['BSR', 'Broadstairs'], ['WEM', 'Wem'], ['CSN', 'Chessington North'], ['HRD', 'Harling Road'], ['AUI', 'Ardlui'], ['ERI', 'Eridge'], ['APD', 'Appledore (Kent)'], ['DHN', 'Deighton'], ['GLG', 'Glengarnock'], ['MLH', 'Mill Hill (Lancashire)'], ['WRP', 'Warwick Parkway'], ['GOF', 'Golf Street'], ['CHY', 'Chertsey'], ['WOK', 'Woking'], ['LLE', 'Llanelli'], ['MYB', 'London Marylebone'], ['WIL', 'Willington'], ['WIJ', 'Willesden Junction'], ['BME', 'Broome'], ['CAM', 'Camberley'], ['SRT', 'Shortlands'], ['SOP', 'Southport'], ['TYB', 'Tan-y-Bwlch (Bus)'], ['ENC', 'Enfield Chase'], ['RYP', 'Ryde Pier Head'], ['BEB', 'Bebington'], ['LGW', 'Langwathby'], ['WSE', 'Winchelsea'], ['BFR', 'London Blackfriars'], ['SCT', 'Scotscalder'], ['RUG', 'Rugby'], ['SRS', 'Selhurst'], ['MLF', 'Milford (Surrey)'], ['PNA', 'Penally'], ['STU', 'Sturry'], ['TWB', 'Tweedbank'], ['YSM', 'Ystrad Mynach'], ['JEQ', 'Jewellery Quarter'], ['PTW', 'Prestwick Town'], ['EBK', 'Eastbrook'], ['PER', 'Penrhiwceiber'], ['CWM', 'Cwmbran'], ['ING', 'Invergowrie'], ['RBS', 'British Steel Redcar'], ['HLG', 'Hall Green'], ['LSN', 'Livingston North'], ['RML', 'Romiley'], ['BUU', 'Burnham-on-Crouch'], ['ZBC', 'Barons Court Underground'], ['CPN', 'Chapleton'], ['ROG', 'Rogart'], ['LVG', 'Livingston South'], ['HTC', 'Heaton Chapel'], ['KGN', 'Kings Nympton'], ['LCC', 'Lochluichart'], ['DCG', 'Duncraig'], ['TOD', 'Todmorden'], ['WEA', 'West Ealing'], ['SOK', 'South Kenton'], ['SLA', 'Slateford'], ['HLC', 'Helensburgh Central'], ['LGJ', 'Loughborough Junction'], ['HED', 'Halewood'], ['ATH', 'Atherstone'], ['EYN', 'Eynsford'], ['SOT', 'Stoke-on-Trent'], ['CAC', 'Caldercruix'], ['SRC', 'Streatham Common'], ['MSO', 'Moston'], ['BEU', 'Beaulieu Road'], ['ZBK', 'Barking Underground'], ['BNR', 'Brockley Whins (T & W Metro)'], ['LOH', 'Lostock Hall'], ['MIL', 'Mill Hill Broadway'], ['OHL', 'Old Hill'], ['BDW', 'Bedwyn'], ['PMA', 'Portsmouth Arms'], ['WHC', 'Walthamstow Central'], ['KDY', 'Kirkcaldy'], ['FAZ', 'Fazakerley'], ['GLC', 'Glasgow Central'], ['HLU', 'Helensburgh Upper'], ['LTG', 'Lostock Gralam'], ['DLK', 'Dalston Kingsland'], ['MTN', 'Moreton (Dorset)'], ['EBL', 'East Boldon (T & W Metro)'], ['CYN', 'Cynghordy'], ['CHT', 'Chathill'], ['HPT', 'Hopton Heath'], ['ALO', 'Alloa'], ['PMS', 'Portsmouth & Southsea'], ['CON', 'Connel Ferry'], ['WNC', 'Windsor & Eton Central'], ['BET', 'Bethnal Green'], ['SST', 'Stansted Mountfitchet'], ['ESH', 'Esher'], ['WSE', 'Winchelsea'], ['CSS', 'Chessington South'], ['CSL', 'Codsall'], ['CPA', 'Corpach'], ['HGF', 'Hag Fold'], ['SRD', 'Stapleton Road'], ['UPM', 'Upminster'], ['BSJ', 'Bedford St Johns'], ['RYB', 'Roy Bridge'], ['DMP', 'Dumpton Park'], ['LYT', 'Lymington Town'], ['WHE', 'Whalley'], ['HKC', 'Hackney Central'], ['HYC', 'Hyde Central'], ['PEW', 'Pewsey'], ['AHN', 'Ashton-under-Lyne'], ['PRW', 'Perranwell'], ['CKL', 'Corkickle'], ['DOD', 'Dodworth'], ['WTA', 'Wester Hailes'], ['PAW', 'Pelaw (T & W Metro)'], ['AYP', 'Albany Park'], ['NEW', 'Newcraighall'], ['ORE', 'Ore'], ['HAS', 'Halesworth'], ['KWG', 'Kew Gardens'], ['EXG', 'Exhibition Centre'], ['HIL', 'Hillside'], ['MPL', 'Marple'], ['SDA', 'Snodland'], ['BKA', 'Bookham'], ['BNT', 'Brinnington'], ['HKW', 'Hackney Wick'], ['ACR', 'Accrington'], ['QRP', 'Queens Road Peckham'], ['MDG', 'Midgham'], ['BAW', 'Blackwater'], ['MEX', 'Mexborough'], ['ADK', 'Ardwick'], ['DNY', 'Danby'], ['HIN', 'Hindley'], ['PYG', 'Paisley Gilmour Street'], ['PRA', 'Prestwick Intl Airport'], ['DDP', 'Dudley Port'], ['NMK', 'Newmarket'], ['KGL', 'Kings Langley'], ['MLN', 'Milngavie'], ['FML', 'Frimley'], ['NTR', 'Northallerton'], ['SDW', 'Sandwich'], ['BBW', 'Berry Brow'], ['DID', 'Didcot Parkway'], ['SOG', 'Stonegate'], ['HAI', 'Halling'], ['PWL', 'Pwllheli'], ['WCF', 'Westcliff'], ['HGG', 'Haggerston'], ['CMR', 'Cromer'], ['ALX', 'Alexandria'], ['COO', 'Cookham'], ['MRS', 'Monks Risborough'], ['YRT', 'Yorton'], ['BEN', 'Bentham'], ['GOB', 'Gobowen'], ['HAL', 'Hale'], ['CAY', 'Carntyne'], ['BUI', 'Burnside'], ['SEL', 'Sellafield'], ['WIM', 'Wimbledon'], ['YRD', 'Yardley Wood'], ['CHN', 'Cheshunt'], ['HFX', 'Halifax'], ['ELD', 'Earlswood (Surrey)'], ['TOK', 'Three Oaks'], ['PBN', 'Paris Nord'], ['TED', 'Teddington'], ['HKM', 'Hykeham'], ['GRS', 'Garscadden'], ['DSL', 'Disley'], ['HDE', 'Hedge End'], ['BNP', 'Barnstaple'], ['KNS', 'Kennishead'], ['LAK', 'Lakenheath'], ['TUH', 'Tulse Hill'], ['BSY', 'Brondesbury'], ['FOX', 'Foxfield'], ['SHR', 'Shrewsbury'], ['WMG', 'Welham Green'], ['HLF', 'Hillfoot'], ['PMR', 'Peckham Rye'], ['SGR', 'Slade Green'], ['FRE', 'Freshfield'], ['SDG', 'Sandling'], ['DMR', 'Dalmuir'], ['TRF', 'Trefforest'], ['LZB', 'Lazonby & Kirkoswald'], ['KCK', 'Knockholt'], ['LLW', 'Llwyngwril'], ['DCT', 'Danescourt'], ['HRM', 'Harrietsham'], ['WCM', 'Wickham Market'], ['FEA', 'Featherstone'], ['HNH', 'Herne Hill'], ['MCO', 'Manchester Oxford Road'], ['LER', 'Leytonstone High Road'], ['RAU', 'Rauceby'], ['HMW', 'Hampton Wick'], ['SJS', 'St James Street'], ['TEA', 'Tees-side Airport'], ['LNR', 'Llanwrda'], ['BEE', 'Beeston'], ['MTV', 'Mount Vernon'], ['BSV', 'Buckshaw Parkway'], ['DAL', 'Dalmally'], ['KTN', 'Kentish Town'], ['TRA', 'Trafford Park'], ['AMB', 'Ambergate'], ['GOX', 'Goxhill'], ['PLT', 'Pontlottyn'], ['ATT', 'Attadale'], ['POK', 'Pokesdown'], ['STI', 'Stadium of Light (T & W Metro)'], ['HOO', 'Hooton'], ['KGS', 'Kings Sutton'], ['KTW', 'Kentish Town West'], ['ZPC', 'Piccadilly Circus Underground'], ['UTT', 'Uttoxeter'], ['BLH', 'Bellshill'], ['BGA', 'Brundall Gardens'], ['PRT', 'Prestatyn'], ['CPT', 'Clapton'], ['LET', 'Letchworth Garden City'], ['PSN', 'Parson Street'], ['PNE', 'Penge East'], ['NFD', 'Northfield'], ['LTV', 'Lichfield Trent Valley'], ['CBG', 'Cambridge'], ['NPD', 'New Pudsey'], ['ETL', 'East Tilbury'], ['LTV', 'Lichfield Trent Valley'], ['SNI', 'Snaith'], ['AVN', 'Avonmouth'], ['TEN', 'Tenby'], ['PTG', 'Port Glasgow'], ['SPF', 'Springfield'], ['TBD', 'Three Bridges'], ['SLD', 'Salford Crescent'], ['GOE', 'Goldthorpe'], ['SMY', 'St Mary Cray'], ['DBY', 'Derby'], ['HXX', 'Heathrow Airport T123'], ['THO', 'Thornford'], ['PRE', 'Preston'], ['KWN', 'Kilwinning'], ['PRE', 'Preston'], ['HWH', 'Haltwhistle'], ['CNN', 'Canonbury'], ['BOH', 'Bosham'], ['OPK', 'Orrell Park'], ['BDB', 'Broadbottom'], ['LCK', 'Lockwood'], ['NFL', 'Northfleet'], ['TNP', 'Tonypandy'], ['FOC', 'Falls of Cruachan'], ['HYM', 'Haymarket'], ['HIT', 'Hitchin'], ['CLE', 'Cleethorpes'], ['PAL', 'Palmers Green'], ['ARD', 'Ardgay'], ['BUS', 'Busby'], ['LGE', 'Long Eaton'], ['TUL', 'Tulloch'], ['ABD', 'Aberdeen'], ['BRO', 'Bridge of Orchy'], ['GCT', 'Great Coates'], ['INE', 'Ince & Elton'], ['WTT', 'Witton'], ['TRS', 'Thurston'], ['FNC', 'Farncombe'], ['EBD', 'Ebbsfleet International'], ['DUR', 'Durrington-on-Sea'], ['CSA', 'Cosham'], ['PEG', 'Pegswood'], ['CEA', 'Cleland'], ['GCR', 'Gloucester'], ['TAC', 'Tackley'], ['MFH', 'Milford Haven'], ['PRY', 'Perry Barr'], ['RHL', 'Rhyl'], ['THW', 'The Hawthorns'], ['WTH', 'Whitehaven'], ['KNG', 'Kingston'], ['MIK', 'Micklefield'], ['LRG', 'Lairg'], ['EPS', 'Epsom'], ['WBQ', 'Warrington Bank Quay'], ['CUW', 'Clunderwen'], ['DTG', 'Dinting'], ['ACT', 'Ascot'], ['BID', 'Bidston'], ['BWG', 'Bowling'], ['BMP', 'Brampton (Cumbria)'], ['CLT', 'Clacton-on-Sea'], ['BCH', 'Birchington-on-Sea'], ['BEF', 'Benfleet'], ['HMS', 'Helmsdale'], ['KEY', 'Keyham'], ['MOS', 'Moss Side'], ['PTK', 'Partick'], ['SGN', 'South Greenford'], ['SOR', 'Sole Street'], ['DBD', 'Denby Dale'], ['BSP', 'Brondesbury Park'], ['SEE', 'Southease'], ['CNR', 'Crianlarich'], ['CRT', 'Chartham'], ['SUG', 'Sugar Loaf'], ['HGM', 'Higham'], ['WNG', 'Waun-gron Park'], ['DUM', 'Dumbreck'], ['PMR', 'Peckham Rye'], ['CRB', 'Corbridge'], ['NFA', 'North Fambridge'], ['AGV', 'Abergavenny'], ['HAG', 'Hagley'], ['CEL', 'Chelford'], ['HGD', 'Hungerford'], ['BWN', 'Bloxwich North'], ['KVD', 'Kelvindale'], ['RUS', 'Ruswarp'], ['CLV', 'Claverdon'], ['RNH', 'Rainhill'], ['EWW', 'Ewell West'], ['HHY', 'Highbury & Islington'], ['APP', 'Appleby'], ['HKN', 'Hucknall'], ['MSN', 'Marsden'], ['TPC', 'Thorpe Culvert'], ['EWE', 'Ewell East'], ['GTN', 'Grangetown'], ['LEO', 'Leominster'], ['DOL', 'Dolau'], ['CUH', 'Curriehill'], ['KBK', 'Kents Bank'], ['DPS', 'Dublin Port (Stena)'], ['PAI', 'Pallion (T & W Metro)'], ['MCB', 'Moulsecoomb'], ['NMT', 'Needham Market'], ['WFI', 'Westerfield'], ['SCG', 'Stone Crossing'], ['STR', 'Stranraer'], ['ZWA', 'Waterloo Underground'], ['PIL', 'Pilning'], ['SWD', 'Swinderby'], ['MSK', 'Marske'], ['TRN', 'Troon'], ['WID', 'Widnes'], ['KMS', 'Kemsing'], ['STZ', 'St Peters (T & W Metro)'], ['ANF', 'Ashurst New Forest'], ['WTN', 'Whitton'], ['ANL', 'Anniesland'], ['SCS', 'Starcross'], ['FRB', 'Fairbourne'], ['STK', 'Stockton'], ['BEV', 'Beverley'], ['KKM', 'Kirkham & Wesham'], ['PDW', 'Paddock Wood'], ['CAN', 'Carnoustie'], ['STC', 'Strathcarron'], ['CUF', 'Cuffley'], ['MTP', 'Montpelier'], ['SWM', 'Swanscombe'], ['CBE', 'Canterbury East'], ['DMF', 'Dumfries'], ['HNT', 'Huntly'], ['LLT', 'Llanbister Road'], ['WAT', 'London Waterloo'], ['MEW', 'Maesteg (Ewenny Road)'], ['SUT', 'Sutton Coldfield'], ['LDS', 'Leeds'], ['BNM', 'Burnham'], ['BEL', 'Beauly'], ['HXM', 'Hoveton & Wroxham'], ['HDL', 'Headstone Lane'], ['LEY', 'Leyland'], ['PRE', 'Preston'], ['SNY', 'Sunnymeads'], ['RNF', 'Rainford'], ['EGN', 'Eastrington'], ['KGH', 'Kinghorn'], ['MAT', 'Matlock'], ['NCK', 'New Cumnock'], ['NWP', 'Newport (South Wales)'], ['QPW', 'Queens Park (London)'], ['MSD', 'Moorside'], ['WLM', 'Williamwood'], ['DWD', 'Dolwyddelan'], ['WTL', 'Whitland'], ['MPK', 'Mosspark'], ['MAU', 'Mauldeth Road'], ['HEX', 'Hexham'], ['CLI', 'Clifton'], ['SYD', 'Sydenham'], ['LAD', 'Ladywell'], ['CTM', 'Chatham'], ['SWY', 'Sway'], ['TRU', 'Truro'], ['DLY', 'Dalry'], ['PRP', 'Preston Park'], ['BPB', 'Blackpool Pleasure Beach'], ['LHO', 'Langho'], ['SPS', 'Stepps'], ['TOP', 'Topsham'], ['BIA', 'Bishop Auckland'], ['HTH', 'Handforth'], ['MRT', 'Moreton (Merseyside)'], ['MCH', 'March'], ['TDU', 'Tondu'], ['BCS', 'Bicester North'], ['NMP', 'Northampton'], ['ALP', 'Althorpe'], ['BSE', 'Bury St Edmunds'], ['PTR', 'Petersfield'], ['BUC', 'Buckenham'], ['KLY', 'Kenley'], ['ELW', 'Eltham'], ['WHA', 'Westenhanger'], ['WWL', 'Whitwell'], ['EDW', 'East Dulwich'], ['NRD', 'North Road'], ['BTE', 'Bitterne'], ['IMW', 'Imperial Wharf'], ['ANN', 'Annan'], ['BDN', 'Brading'], ['CES', 'Cressing'], ['KBW', 'Knebworth'], ['DAR', 'Darlington'], ['HWD', 'Hawarden'], ['TAD', 'Tadworth'], ['BAG', 'Bagshot'], ['ZHS', 'Kensington High St Underground'], ['SMD', 'Stamford'], ['BUD', 'Burneside'], ['DOT', 'Dunston'], ['ELS', 'Elstree & Borehamwood'], ['CHF', 'Church Fenton'], ['HAZ', 'Hazel Grove'], ['KMH', 'Kempston Hardwick'], ['SOF', 'South Woodham Ferrers'], ['NRW', 'Norwich'], ['AHS', 'Ashurst'], ['FZW', 'Fitzwilliam'], ['MIN', 'Milliken Park'], ['RUN', 'Runcorn'], ['WSL', 'Walsall'], ['OKM', 'Oakham'], ['WAT', 'London Waterloo'], ['AYP', 'Albany Park'], ['MST', 'Maesteg'], ['KNU', 'Knucklas'], ['LEI', 'Leicester'], ['WAT', 'London Waterloo'], ['WCR', 'Whitecraigs'], ['MRP', 'Moorthorpe'], ['SNH', 'St Helens Central'], ['CAO', 'Cannock'], ['RAI', 'Rainham (Kent)'], ['RKT', 'Ruskington'], ['YOK', 'Yoker'], ['BDT', 'Bridlington'], ['LDN', 'Llandanwg'], ['SHJ', 'St Helens Junction'], ['CHH', 'Christs Hospital'], ['CMF', 'Cromford'], ['HYR', 'Haydons Road'], ['LGN', 'Longton'], ['BXH', 'Bexleyheath'], ['CPM', 'Chippenham'], ['DFR', 'Drumfrochar'], ['NCO', 'Newcourt'], ['WET', 'Weeton'], ['EMD', 'East Midlands Parkway'], ['POP', 'Poppleton'], ['AYH', 'Aylesham'], ['ZUM', 'Upminster Underground'], ['CHD', 'Chesterfield'], ['HEZ', 'Heworth (T & W Metro)'], ['PRB', 'Prestbury'], ['GTR', 'Goostrey'], ['ACK', 'Acklington'], ['KNL', 'Kensal Green'], ['SAN', 'Sandown'], ['THL', 'Tile Hill'], ['SIP', 'Shipton'], ['SFA', 'Stratford International'], ['UPW', 'Upwey'], ['GIP', 'Gipsy Hill'], ['RUT', 'Rutherglen'], ['SES', 'South Elmsall'], ['TGM', 'Teignmouth'], ['ADS', 'Ardrossan Harbour'], ['BCG', 'Birchgrove'], ['RFD', 'Rochford'], ['PES', 'Pensarn'], ['BAI', 'Blairhill'], ['TLB', 'Talybont'], ['SVG', 'Stevenage'], ['WPE', 'Wapping'], ['BDG', 'Bridgeton'], ['THH', 'Thatto Heath'], ['ATB', 'Attenborough'], ['MTH', 'Motherwell'], ['WKM', 'Wokingham'], ['GMT', 'Grosmont'], ['ARL', 'Arlesey'], ['BGD', 'Bargoed'], ['REE', 'Reedham (Norfolk)'], ['HPA', 'Honor Oak Park'], ['NUN', 'Nuneaton'], ['TRM', 'Trimley'], ['WTY', 'Witley'], ['SWO', 'Snowdown'], ['MDB', 'Maidstone Barracks'], ['ENL', 'Enfield Lock'], ['MIJ', 'Mitcham Junction'], ['MDE', 'Maidstone East'], ['GOD', 'Godalming'], ['HGR', 'Hither Green'], ['SPO', 'Spondon'], ['WNT', 'Wandsworth Town'], ['ECR', 'East Croydon'], ['CLS', 'Chester-le-Street'], ['QYD', 'Quakers Yard'], ['WBC', 'Waterbeach'], ['NES', 'Neston'], ['PCN', 'Paisley Canal'], ['WSA', 'West Allerton'], ['SFI', 'Shawfair'], ['SLH', 'Sleights'], ['HTN', 'Hatton'], ['KIV', 'Kiveton Bridge'], ['RIS', 'Rishton'], ['DMS', 'Dormans'], ['LCN', 'Lincoln Central'], ['AYP', 'Albany Park'], ['ERI', 'Eridge'], ['WLC', 'Waltham Cross'], ['MPT', 'Morpeth'], ['MDW', 'Maidstone West'], ['WEL', 'Wellingborough'], ['HRY', 'Harringay Green Lanes'], ['MOB', 'Mobberley'], ['SWL', 'Swale'], ['ECC', 'Eccles'], ['HEW', 'Heworth'], ['LLH', 'Llangennech'], ['BKO', 'Brookwood'], ['GSY', 'Guiseley'], ['SBY', 'Selby'], ['WSB', 'Westbury'], ['ETC', 'Etchingham'], ['BLT', 'Blantyre'], ['SSD', 'Stansted Airport'], ['DOR', 'Dore'], ['NVR', 'Navigation Road'], ['CFF', 'Croftfoot'], ['CKN', 'Crewkerne'], ['GLT', 'Glenrothes with Thornton'], ['WTG', 'Watlington'], ['BAN', 'Banbury'], ['HYS', 'Hayes (Kent)'], ['BHR', 'Builth Road'], ['KND', 'Kingswood'], ['KNN', 'Kings Norton'], ['WOL', 'Wolverton'], ['WTO', 'Water Orton'], ['ADR', 'Airdrie'], ['LLC', 'Llandecwyn'], ['PKS', 'Parkstone (Dorset)'], ['GOM', 'Gomshall'], ['TYL', 'Tyndrum Lower'], ['BOP', 'Bowes Park'], ['HRY', 'Harringay Green Lanes'], ['HER', 'Hersham'], ['WRH', 'Worthing'], ['BON', 'Bolton'], ['BOA', 'Bradford-on-Avon'], ['CFH', 'Chafford Hundred'], ['UTY', 'Upper Tyndrum'], ['NAR', 'Narberth'], ['BDL', 'Birkdale'], ['HMT', 'Ham Street'], ['MKM', 'Melksham'], ['AUW', 'Ascott-under-Wychwood'], ['EAL', 'Ealing Broadway'], ['EAL', 'Ealing Broadway'], ['WTB', 'Whitby'], ['CST', 'London Cannon Street'], ['DWN', 'Darwen'], ['BLE', 'Bramley (West Yorkshire)'], ['AAP', 'Alexandra Palace'], ['NUF', 'Nutfield'], ['STG', 'Stirling'], ['HON', 'Honiton'], ['BPW', 'Bristol Parkway'], ['KIT', 'Kintbury'], ['RAD', 'Radley'], ['MCE', 'Metro Centre'], ['SNT', 'Stanlow & Thornton'], ['BYD', 'Barry Docks'], ['DAM', 'Dalmeny'], ['FIN', 'Finstock'], ['BMT', 'Bedminster'], ['HSL', 'Haslemere'], ['CET', 'Colchester Town'], ['HDG', 'Heald Green'], ['PNR', 'Penrith'], ['MHM', 'Merstham'], ['HSC', 'Hoscar'], ['SNO', 'St Neots'], ['BGM', 'Bellingham'], ['NTL', 'Netley'], ['HYH', 'Hythe'], ['RDC', 'Redditch'], ['LTK', 'Little Kimble'], ['FOD', 'Ford'], ['CLJ', 'Clapham Junction'], ['HON', 'Honiton'], ['CLJ', 'Clapham Junction'], ['PNW', 'Penge West'], ['WFJ', 'Watford Junction'], ['HCH', 'Holmes Chapel'], ['LVN', 'Littlehaven'], ['BTL', 'Batley'], ['ZET', 'Earl\'s Court Underground'], ['WDL', 'Woodhall'], ['BLX', 'Bloxwich'], ['HLS', 'Hilsea'], ['MKT', 'Marks Tey'], ['OKE', 'Okehampton'], ['HWY', 'High Wycombe'], ['SYT', 'Somerleyton'], ['MRY', 'Maryport'], ['SDY', 'Sandy'], ['CLJ', 'Clapham Junction'], ['CEF', 'Chapel-en-le-Frith'], ['LTP', 'Littleport'], ['KPT', 'Kilpatrick'], ['WDD', 'Widdrington'], ['WHM', 'Whimple'], ['CIT', 'Chislehurst'], ['PFR', 'Pontefract Baghill'], ['BKC', 'Birkenhead Central'], ['HOY', 'Honley'], ['INC', 'Ince'], ['CLJ', 'Clapham Junction'], ['GRC', 'Great Chesterford'], ['IPS', 'Ipswich'], ['WCB', 'Westcombe Park'], ['CLJ', 'Clapham Junction'], ['LYP', 'Lymington Pier'], ['CTF', 'Catford'], ['CTE', 'Chatelherault'], ['FWY', 'Five Ways'], ['NDL', 'North Dulwich'], ['BWO', 'Bricket Wood'], ['BKN', 'Birkenhead North'], ['SOW', 'Sowerby Bridge'], ['BTY', 'Bentley (Hampshire)'], ['KLD', 'Kildale'], ['NQY', 'Newquay'], ['SCA', 'Scarborough'], ['BEG', 'Beltring'], ['BKP', 'Birkenhead Park'], ['CLJ', 'Clapham Junction'], ['GLO', 'Glossop'], ['GRH', 'Gartcosh'], ['TUT', 'Tutbury & Hatton'], ['BCE', 'Bracknell'], ['NNT', 'Nunthorpe'], ['ZNP', 'Newbury Park Underground'], ['SND', 'Sandhurst'], ['FSB', 'Fishbourne (West Sussex)'], ['SLW', 'Salwick'], ['DIG', 'Digby & Sowton'], ['EDG', 'Edge Hill'], ['INH', 'Invershin'], ['BTB', 'Barnetby'], ['SJN', 'St James (T & W Metro)'], ['SUY', 'Sudbury'], ['AIG', 'Aigburth'], ['ELR', 'Elsecar'], ['SGB', 'Smethwick Galton Bridge'], ['HYL', 'Hayle'], ['KEM', 'Kemble'], ['WIM', 'Wimbledon'], ['SAS', 'St Annes-on-the-Sea'], ['SHM', 'Sheringham'], ['WRL', 'Wetheral'], ['SUP', 'Sundridge Park'], ['AWM', 'Ashwell & Morden'], ['BUY', 'Burley Park'], ['ABA', 'Aberdare'], ['CRO', 'Croy'], ['DAT', 'Datchet'], ['LGS', 'Langside'], ['WDM', 'Windermere'], ['GMY', 'Goodmayes'], ['BDQ', 'Bradford Forster Square'], ['SOH', 'South Hampstead'], ['GPK', 'Grange Park'], ['EDP', 'Edinburgh Park'], ['NWB', 'North Wembley'], ['NWE', 'Newport (Essex)'], ['CYT', 'Cherry Tree'], ['HUY', 'Huyton'], ['SFN', 'Shifnal'], ['TOM', 'Tottenham Hale'], ['CDI', 'Crediton'], ['HUT', 'Hutton Cranswick'], ['ABW', 'Abbey Wood'], ['GDL', 'Godley'], ['RHD', 'Ribblehead'], ['TYP', 'Tynemouth (T & W Metro)'], ['CSO', 'Croston'], ['PHR', 'Penshurst'], ['LAC', 'Lancing'], ['SWS', 'South Wigston'], ['BUX', 'Buxton'], ['MLD', 'Mouldsworth'], ['FLE', 'Fleet'], ['MKR', 'Market Rasen'], ['LEG', 'Lea Green'], ['CMH', 'Cwmbach'], ['TMC', 'Templecombe'], ['TWI', 'Twickenham'], ['WEE', 'Weeley'], ['HID', 'Hall I\' Th\' Wood'], ['TTF', 'Thetford'], ['DLH', 'Doleham'], ['BTF', 'Bottesford'], ['JOR', 'Jordanhill'], ['TIL', 'Tilbury Town'], ['BMR', 'Bromborough Rake'], ['DPD', 'Dorking Deepdene'], ['BUT', 'Burton-on-Trent'], ['LEO', 'Leominster'], ['FRN', 'Fearn'], ['SPK', 'Sutton Parkway'], ['STL', 'Southall'], ['VXH', 'Vauxhall'], ['ALM', 'Alnmouth'], ['HMN', 'Homerton'], ['PNS', 'Penistone'], ['DFP', 'Dublin Ferryport'], ['SED', 'Shelford'], ['MLB', 'Millbrook (Bedfordshire)'], ['WWR', 'Wandsworth Road'], ['WBR', 'Whaley Bridge'], ['CNS', 'Conisbrough'], ['JHN', 'Johnstone'], ['LND', 'Longniddry'], ['STF', 'Stromeferry'], ['BCN', 'Branchton'], ['PET', 'Petts Wood'], ['RSG', 'Rose Grove'], ['SAM', 'Saltmarshe'], ['BNS', 'Barnes'], ['PKG', 'Penkridge'], ['SGB', 'Smethwick Galton Bridge'], ['MUF', 'Manchester United FC'], ['RHY', 'Rhymney'], ['AMR', 'Amersham'], ['KDB', 'Kidbrooke'], ['PLC', 'Pluckley'], ['CSM', 'Castleton Moor'], ['HWF', 'Heathrow Airport T4 (Bus)'], ['TAD', 'Tadworth'], ['GTY', 'Gatley'], ['HWX', 'Heathrow Airport T5 (Bus)'], ['BLK', 'Blackrod'], ['SLK', 'Silkstone Common'], ['BSB', 'Bleasby'], ['AGS', 'Argyle Street'], ['MUI', 'Muirend'], ['SMG', 'St Margarets (London)'], ['MAN', 'Manchester Piccadilly'], ['SEG', 'Selling'], ['PLN', 'Portlethen'], ['BSM', 'Branksome'], ['NLN', 'New Lane'], ['HTO', 'Hightown'], ['BYI', 'Barry Island'], ['HOL', 'Holton Heath'], ['SFL', 'Seaforth & Litherland'], ['SBR', 'Spean Bridge'], ['KGS', 'Kings Sutton'], ['LRB', 'London Road (Brighton)'], ['GSC', 'Gilshochill'], ['MCM', 'Morecambe'], ['STP', 'London St Pancras (Intl)'], ['FGT', 'Faygate'], ['ALD', 'Alderley Edge'], ['COH', 'Crowborough'], ['ANF', 'Ashurst New Forest'], ['OCK', 'Ockendon'], ['ASN', 'Addlestone'], ['CLL', 'Collington'], ['MOT', 'Motspur Park'], ['SDL', 'Sandhills'], ['KKB', 'Kirkby in Ashfield'], ['PAD', 'London Paddington'], ['WOB', 'Woburn Sands'], ['BNI', 'Barnes Bridge'], ['QPW', 'Queens Park (London)'], ['BNY', 'Barnsley'], ['BPN', 'Blackpool North'], ['KWD', 'Kirkwood'], ['SCH', 'Scotstounhill'], ['KNT', 'Kenton'], ['LHD', 'Leatherhead'], ['DRO', 'Dronfield'], ['MRD', 'Morchard Road'], ['CHU', 'Cheadle Hulme'], ['LIC', 'Lichfield City'], ['DSM', 'Darsham'], ['ENF', 'Enfield Town'], ['SSE', 'Shoreham-by-Sea'], ['LGF', 'Longfield'], ['LIP', 'Liphook'], ['ACC', 'Acton Central'], ['NHE', 'New Hythe'], ['GCH', 'Garelochhead'], ['GSN', 'Garston (Hertfordshire)'], ['WRY', 'Wraysbury'], ['RID', 'Ridgmont'], ['KNF', 'Knutsford'], ['STN', 'Stonehaven'], ['WHP', 'West Hampstead Thameslink'], ['DIS', 'Diss'], ['MLG', 'Mallaig'], ['REI', 'Reigate'], ['DNG', 'Dunton Green'], ['LUX', 'Luxulyan'], ['GFD', 'Greenford'], ['GNR', 'Green Road'], ['STH', 'Shepreth'], ['BXW', 'Boxhill & Westhumble'], ['DUD', 'Duddeston'], ['FER', 'Fernhill'], ['CHI', 'Chingford'], ['BKQ', 'Hamilton Square'], ['MUB', 'Musselburgh'], ['ULL', 'Ulleskelf'], ['CLP', 'Clapham High Street'], ['COW', 'Cowdenbeath'], ['GLH', 'Glasshoughton'], ['ATL', 'Attleborough'], ['BIN', 'Bingham'], ['LGO', 'Llangynllo'], ['LRB', 'London Road (Brighton)'], ['WKD', 'Walkden'], ['HRW', 'Harrow & Wealdstone'], ['URM', 'Urmston'], ['CUA', 'Culrain'], ['NBW', 'North Berwick'], ['DMC', 'Drumchapel'], ['EMP', 'Emerson Park'], ['HLE', 'Hillington East'], ['MGN', 'Marston Green'], ['UWL', 'Upper Warlingham'], ['LWM', 'Llantwit Major'], ['ZDE', 'Dagenham East Underground'], ['HIB', 'High Brooms'], ['TQY', 'Torquay'], ['LEU', 'Leuchars'], ['LST', 'London Liverpool Street'], ['ZTG', 'Turnham Green Underground'], ['CDY', 'Cartsdyke'], ['MTC', 'Mitcham Eastfields'], ['HVF', 'Haverfordwest'], ['CSW', 'Chestfield & Swalecliffe'], ['TIR', 'Tir-phil'], ['ERL', 'Earlestown'], ['BGL', 'Bugle'], ['HWM', 'Harlow Mill'], ['SYB', 'Stalybridge'], ['NOA', 'Newton-on-Ayr'], ['FRT', 'Frant'], ['GUI', 'Guide Bridge'], ['HLW', 'Hillington West'], ['MYT', 'Mytholmroyd'], ['BKM', 'Berkhamsted'], ['NEL', 'Nelson'], ['NLT', 'Northolt Park'], ['BES', 'Bescar Lane'], ['BNA', 'Burnage'], ['SRY', 'Shoeburyness'], ['MSR', 'Minster'], ['BNH', 'Barnehurst'], ['DUN', 'Dunbar'], ['LLG', 'Llangadog'], ['PIN', 'Pinhoe'], ['POR', 'Porth'], ['CTR', 'Chester'], ['MCK', 'Marne La Vallee'], ['BUO', 'Bursledon'], ['MDL', 'Middlewood'], ['RHM', 'Reedham (Surrey)'], ['WHD', 'West Hampstead'], ['BDH', 'Bedhampton'], ['ROB', 'Roby'], ['KBF', 'Kirkby-in-Furness'], ['RTR', 'Rochester'], ['STV', 'Stevenston'], ['TIP', 'Tipton'], ['ASB', 'Ardrossan South Beach'], ['DBR', 'Derby Road'], ['LMS', 'Leamington Spa'], ['FSK', 'Fiskerton'], ['HWI', 'Horwich Parkway'], ['WLI', 'Welling'], ['WGC', 'Welwyn Garden City'], ['SOU', 'Southampton Central'], ['RUE', 'Runcorn East'], ['FNH', 'Farnham'], ['SRI', 'Spring Road'], ['TAU', 'Taunton'], ['ALT', 'Altrincham'], ['WDS', 'Woodlesford'], ['LEL', 'Lelant'], ['MNR', 'Manor Road'], ['PPL', 'Pontypool & New Inn'], ['RDG', 'Reading'], ['WNR', 'Windsor & Eton Riverside'], ['SWT', 'Slaithwaite'], ['RCD', 'Rochdale'], ['CYP', 'Crystal Palace'], ['DDG', 'Dorridge'], ['KBX', 'Kirby Cross'], ['SBJ', 'Stourbridge Junction'], ['CRI', 'Cricklewood'], ['WDU', 'West Dulwich'], ['SNN', 'Swinton (Manchester)'], ['BRP', 'Brampton (Suffolk)'], ['COV', 'Coventry'], ['DGL', 'Dingle Road'], ['PYC', 'Pontyclun'], ['LNY', 'Langley'], ['GRP', 'Grove Park'], ['HOU', 'Hounslow'], ['SAE', 'Saltaire'], ['BEH', 'Bedworth'], ['SCY', 'South Croydon'], ['BCY', 'Brockley'], ['AVI', 'Avignon'], ['VIC', 'London Victoria'], ['BWD', 'Birchwood'], ['HWN', 'Harlow Town'], ['VIC', 'London Victoria'], ['FRO', 'Frome'], ['VIC', 'London Victoria'], ['AWT', 'Armathwaite'], ['CAT', 'Caterham'], ['COB', 'Cooden Beach'], ['WVH', 'Wolverhampton'], ['HME', 'Hamble'], ['AUG', 'Aughton Park'], ['BEX', 'Bexhill'], ['ACY', 'Abercynon'], ['CML', 'Carmyle'], ['PBR', 'Potters Bar'], ['TOL', 'Tolworth'], ['APN', 'Newcastle Airport'], ['ADN', 'Ardrossan Town'], ['GDP', 'Gidea Park'], ['SBJ', 'Stourbridge Junction'], ['WIJ', 'Willesden Junction'], ['SDM', 'Shieldmuir'], ['SEV', 'Sevenoaks'], ['FRM', 'Fareham'], ['HNA', 'Hinton Admiral'], ['MRN', 'Marden'], ['MIA', 'Manchester Airport'], ['SBT', 'Stourbridge Town'], ['MAI', 'Maidenhead'], ['BKH', 'Blackheath'], ['BYS', 'Braystones'], ['HGT', 'Harrogate'], ['BIL', 'Billingham'], ['STM', 'St Michaels'], ['BVD', 'Belvedere'], ['LTS', 'Lelant Saltings'], ['LHA', 'Loch Awe'], ['BAD', 'Banstead'], ['INT', 'Ingatestone'], ['MKC', 'Milton Keynes Central'], ['EDR', 'Edmonton Green'], ['BNV', 'Banavie'], ['BTP', 'Braintree Freeport'], ['ROC', 'Roche'], ['CHP', 'Chipstead'], ['FNW', 'Farnworth'], ['TAI', 'Tain'], ['GAL', 'Galashiels'], ['CHG', 'Charing'], ['RMD', 'Richmond'], ['MTN', 'Moreton (Dorset)'], ['COR', 'Corby'], ['SOI', 'Stow'], ['BLG', 'Bellgrove'], ['CNF', 'Carnforth'], ['PST', 'Prestonpans'], ['PKT', 'Park Street'], ['SKS', 'Stocksfield'], ['NRC', 'Newbury Racecourse'], ['PNY', 'Pen-y-bont'], ['EKL', 'East Kilbride'], ['SRU', 'South Ruislip'], ['CDU', 'Cam & Dursley'], ['BRV', 'Bournville'], ['WMS', 'Wemyss Bay'], ['UDD', 'Uddingston'], ['BHD', 'Brithdir'], ['MOR', 'Mortimer'], ['CUM', 'Culham'], ['SDH', 'Sudbury Hill Harrow'], ['STA', 'Stafford'], ['PRL', 'Prittlewell'], ['RDT', 'Radlett'], ['SHP', 'Shepperton'], ['CNP', 'Conway Park'], ['TLK', 'The Lakes'], ['BRX', 'Brixton'], ['MTB', 'Matlock Bath'], ['CLN', 'Chapeltown'], ['KYN', 'Keynsham'], ['NWA', 'North Walsham'], ['BYA', 'Berney Arms'], ['REC', 'Rectory Road'], ['RRB', 'Ryder Brow'], ['SUD', 'Sudbury & Harrow Road'], ['SMN', 'Southminster'], ['YAT', 'Yatton'], ['KSN', 'Kearsney'], ['PTF', 'Pantyffynnon'], ['SWN', 'Swinton (South Yorkshire)'], ['SRN', 'Strines'], ['SWA', 'Swansea'], ['TRR', 'Torre'], ['SSC', 'Seascale'], ['HOT', 'Henley-on-Thames'], ['MVL', 'Malvern Link'], ['ARR', 'Arram'], ['SLT', 'Saltcoats'], ['ANZ', 'Anerley'], ['FPK', 'Finsbury Park'], ['LAN', 'Lancaster'], ['THA', 'Thatcham'], ['BSC', 'Bescot Stadium'], ['MTO', 'Marton'], ['EGG', 'Eggesford'], ['KEH', 'Keith'], ['WCY', 'West Croydon'], ['BOD', 'Bodmin Parkway'], ['HOP', 'Hope (Derbyshire)'], ['HRW', 'Harrow & Wealdstone'], ['WTC', 'Whitchurch (Shropshire)'], ['CHX', 'London Charing Cross'], ['KIR', 'Kirkby'], ['WGA', 'Westgate-on-Sea'], ['WSM', 'Weston-super-Mare'], ['BKS', 'Bekesbourne'], ['AHT', 'Aldershot'], ['DFI', 'Duffield'], ['GIR', 'Girvan'], ['ZBB', 'Barbican Underground'], ['HPE', 'Hope (Flintshire)'], ['CLW', 'Chorleywood'], ['HHL', 'Heath High Level'], ['KKS', 'Kirk Sandall'], ['RDD', 'Riddlesdown'], ['RFY', 'Rock Ferry'], ['ABE', 'Aber'], ['HSK', 'Hassocks'], ['SHT', 'Shotton'], ['LVC', 'Liverpool Central'], ['AIN', 'Aintree'], ['HNG', 'Hengoed'], ['LIS', 'Liss'], ['ARM', 'Armadale'], ['FFA', 'Ffairfach'], ['HCB', 'Hackbridge'], ['LVC', 'Liverpool Central'], ['ELP', 'Ellesmere Port'], ['DYF', 'Dyffryn Ardudwy'], ['TYW', 'Tywyn'], ['CWN', 'Cowden'], ['EGH', 'Egham'], ['RET', 'Retford'], ['HAY', 'Hayes & Harlington'], ['SAT', 'South Acton'], ['PMT', 'Polmont'], ['HPQ', 'Harwich International'], ['WED', 'Wedgwood'], ['BIO', 'Baillieston'], ['WCH', 'Whitchurch (Hampshire)'], ['MNE', 'Manea'], ['SNF', 'Shenfield'], ['ROM', 'Romsey'], ['CHL', 'Chilworth'], ['CDN', 'Coulsdon Town'], ['TLS', 'Thorpe-le-Soken'], ['WRS', 'Wressle'], ['BDY', 'Bredbury'], ['THI', 'Thirsk'], ['WES', 'Westerton'], ['CPU', 'Capenhurst'], ['LRH', 'Larkhall'], ['OLD', 'Old Street'], ['DGT', 'Deansgate'], ['SEM', 'Seamer'], ['SVB', 'Severn Beach'], ['BMC', 'Bromley Cross'], ['SEC', 'Seaton Carew'], ['ZLW', 'Whitechapel'], ['SEE', 'Southease'], ['SOA', 'Southampton Airpt Parkway'], ['WDO', 'Waddon'], ['WTS', 'Whatstandwell'], ['LPY', 'Liverpool South Parkway'], ['HFN', 'Hertford North'], ['KGM', 'Kingham'], ['WFL', 'Wainfleet'], ['SKN', 'St Keyne Wishing Well Halt'], ['DPT', 'Devonport'], ['SOW', 'Sowerby Bridge'], ['WDU', 'West Dulwich'], ['BCB', 'Burscough Bridge'], ['HST', 'High Street'], ['LEM', 'Leyton Midland Road'], ['PYL', 'Pyle'], ['WRU', 'West Ruislip'], ['WYB', 'Weybridge'], ['TAB', 'Tame Bridge Parkway'], ['TRE', 'Trefforest Estate'], ['WYB', 'Weybridge'], ['HND', 'Hanborough'], ['WLW', 'Welwyn North'], ['BMO', 'Birmingham Moor Street'], ['BCJ', 'Burscough Junction'], ['DCW', 'Dorchester West'], ['LVJ', 'James Street'], ['RDF', 'Radcliffe (Nottinghamshire)'], ['CPY', 'Clapham (North Yorkshire)'], ['RMF', 'Romford'], ['SAV', 'Stratford-upon-Avon'], ['LHW', 'Lochwinnoch'], ['NOT', 'Nottingham'], ['CUD', 'Cuddington'], ['LLA', 'Llanaber'], ['SNE', 'Stone'], ['SHL', 'Shawlands'], ['FFD', 'Freshford'], ['SHF', 'Sheffield'], ['YRK', 'York'], ['CSD', 'Cobham & Stoke d\'Abernon'], ['ENT', 'Entwistle'], ['PRN', 'Parton'], ['ROL', 'Rolleston'], ['BRH', 'Borth'], ['BCV', 'Bruce Grove'], ['SMR', 'Smethwick Rolfe Street'], ['ACN', 'Achnasheen'], ['KWB', 'Kew Bridge'], ['SAR', 'St Andrews Road'], ['ASF', 'Ashfield'], ['FLM', 'Flimby'], ['LBT', 'Larbert'], ['WOR', 'Worle'], ['CWL', 'Colwall'], ['EXC', 'Exeter Central'], ['NTB', 'Norton Bridge'], ['TWY', 'Twyford'], ['ROR', 'Rogerstone'], ['BDI', 'Bradford Interchange'], ['WNL', 'Whinhill'], ['BLA', 'Blair Atholl'], ['KML', 'Kemsley'], ['SDR', 'Saunderton'], ['GRK', 'Gourock'], ['VXH', 'Vauxhall'], ['FTW', 'Fort William'], ['LIT', 'Littlehampton'], ['SIV', 'St Ives'], ['BLD', 'Baildon'], ['GLM', 'Gillingham (Kent)'], ['SHS', 'Shotts'], ['UCK', 'Uckfield'], ['BTG', 'Barnt Green'], ['BOM', 'Bromborough'], ['ACH', 'Achnashellach'], ['UHA', 'Uphall'], ['VXH', 'Vauxhall'], ['DIN', 'Dingwall'], ['HDW', 'Hadley Wood'], ['SOB', 'Southbourne'], ['LEE', 'Lee'], ['QBR', 'Queenborough'], ['LOC', 'Lockerbie'], ['SMA', 'Small Heath'], ['WDB', 'Woodbridge'], ['HIR', 'Horton-in-Ribblesdale'], ['PON', 'Ponders End'], ['FRI', 'Frinton-on-Sea'], ['SAL', 'Salisbury'], ['SRH', 'Streatham Hill'], ['CRK', 'Chirk'], ['EXR', 'Essex Road'], ['HOK', 'Hook'], ['SML', 'Sea Mills'], ['HLY', 'Holytown'], ['NWD', 'Norwood Junction'], ['ASY', 'Ashley'], ['ESW', 'Elmswell'], ['HOH', 'Harrow-on-the-Hill'], ['AGR', 'Angel Road'], ['NSD', 'Newstead'], ['HUL', 'Hull'], ['HLL', 'Heath Low Level'], ['PBL', 'Parbold'], ['JOH', 'Johnston'], ['SMB', 'Smithy Bridge'], ['NSH', 'North Sheen'], ['UPL', 'Upholland'], ['BGE', 'Broad Green'], ['CBY', 'Charlbury'], ['WME', 'Woodmansterne'], ['LAR', 'Largs'], ['MMO', 'Melton Mowbray'], ['LIN', 'Linlithgow'], ['WDT', 'West Drayton'], ['HFE', 'Hertford East'], ['KET', 'Kettering'], ['PUL', 'Pulborough'], ['QRB', 'Queenstown Road Battersea'], ['WMB', 'Wembley Central'], ['BRG', 'Borough Green & Wrotham'], ['GEA', 'Gretna Green'], ['KPA', 'Kensington Olympia'], ['CIM', 'Cilmeri'], ['SWR', 'Stewartby'], ['CMO', 'Camelon'], ['GLQ', 'Glasgow Queen Street'], ['BSU', 'Brunstane'], ['IFI', 'Ifield'], ['ARN', 'Arnside'], ['FRW', 'Fairwater'], ['LKE', 'Lake'], ['CTL', 'Cattal'], ['DMH', 'Dilton Marsh'], ['WWD', 'Woolwich Dockyard'], ['BTS', 'Burntisland'], ['HSW', 'Heswall'], ['KEL', 'Kelvedon'], ['DBL', 'Dunblane'], ['NLR', 'North Llanrwst'], ['HUB', 'Hunmanby'], ['SAF', 'Salfords'], ['WNE', 'Wilnecote'], ['QPK', 'Queens Park (Glasgow)'], ['WTM', 'Witham'], ['AVP', 'Aylesbury Vale Parkway'], ['PTD', 'Pontarddulais'], ['RDG', 'Reading'], ['EXM', 'Exmouth'], ['SNW', 'Swanwick'], ['FCN', 'Falconwood'], ['GOO', 'Goole'], ['LBO', 'Loughborough'], ['HSB', 'Helsby'], ['SHD', 'Shildon'], ['TAY', 'Taynuilt'], ['SNS', 'Staines'], ['CBW', 'Canterbury West'], ['EGF', 'East Garforth'], ['AUR', 'Aberdour'], ['DKG', 'Dorking'], ['GAR', 'Garrowhill'], ['HUN', 'Huntingdon'], ['LLY', 'Llwynypia'], ['SAY', 'Swanley'], ['TTH', 'Thornton Heath'], ['LSK', 'Liskeard'], ['LSW', 'Leasowe'], ['PMP', 'Plumpton'], ['WKK', 'Wakefield Kirkgate'], ['RFY', 'Rock Ferry'], ['DDK', 'Dagenham Dock'], ['HPN', 'Hapton'], ['LNB', 'Llanbradach'], ['BAD', 'Banstead'], ['BIT', 'Bicester Village'], ['MBR', 'Middlesbrough'], ['AAT', 'Achanalt'], ['HIP', 'Highams Park'], ['SIN', 'Singer'], ['TYG', 'Tygwyn'], ['CUP', 'Cupar'], ['FKC', 'Folkestone Central'], ['SIL', 'Sileby'], ['ESM', 'Elsenham'], ['EPD', 'Epsom Downs'], ['HBP', 'Hornbeam Park'], ['HOZ', 'Howwood'], ['RFY', 'Rock Ferry'], ['MEP', 'Meopham'], ['SWG', 'Swaythling'], ['AVM', 'Aviemore'], ['BHK', 'Bush Hill Park'], ['PEA', 'Peartree'], ['WNN', 'Wennington'], ['AYL', 'Aylesford'], ['PIT', 'Pitlochry'], ['OVE', 'Overpool'], ['ZCO', 'Croxley Underground'], ['GYM', 'Great Yarmouth'], ['CPK', 'Carpenders Park'], ['GLC', 'Glasgow Central'], ['LAS', 'Llansamlet'], ['SPN', 'Spooner Row'], ['FKW', 'Folkestone West'], ['KBC', 'Kinbrace'], ['AND', 'Anderston'], ['ZCW', 'Canada Water'], ['DON', 'Doncaster'], ['EAR', 'Earley'], ['CTN', 'Charlton'], ['ZFD', 'Farringdon Underground'], ['SBF', 'St Budeaux Ferry Road'], ['PCD', 'Pencoed'], ['LBG', 'London Bridge'], ['MZH', 'Maze Hill'], ['WTI', 'Winnersh Triangle'], ['HPD', 'Harpenden'], ['SHT', 'Shotton'], ['LBG', 'London Bridge'], ['NRT', 'Nethertown'], ['LBG', 'London Bridge'], ['HMY', 'Hairmyres'], ['HHB', 'Heysham Port'], ['PSH', 'Pershore'], ['PAN', 'Pangbourne'], ['CLU', 'Carluke'], ['SOC', 'Southend Central'], ['MFF', 'Minffordd'], ['BRF', 'Brierfield'], ['COT', 'Cottingley'], ['PTB', 'Pentre-bach'], ['SKG', 'Skegness'], ['INS', 'Insch'], ['EXN', 'Exton'], ['LOO', 'Looe'], ['WWA', 'Woolwich Arsenal'], ['CLK', 'Clock House'], ['BPT', 'Bishopton'], ['BAS', 'Bere Alston'], ['LCS', 'Locheilside'], ['MEV', 'Merthyr Vale'], ['BDH', 'Bedhampton'], ['SDE', 'Shadwell'], ['STP', 'London St Pancras (Intl)'], ['WEH', 'West Ham'], ['HUP', 'Humphrey Park'], ['BTO', 'Betchworth'], ['EVE', 'Evesham'], ['SEF', 'Seaford'], ['ALR', 'Alresford'], ['HNL', 'Henley-in-Arden'], ['SRL', 'Shirley'], ['BFF', 'Blaenau Ffestiniog'], ['FNN', 'Farnborough North'], ['NLW', 'Newton-le-Willows'], ['YAL', 'Yalding'], ['BMH', 'Bournemouth'], ['LHM', 'Lealholm'], ['TVP', 'Tiverton Parkway'], ['BIW', 'Biggleswade'], ['WLS', 'Woolston'], ['BIP', 'Bishopstone'], ['EBV', 'Ebbw Vale Parkway'], ['NNG', 'Newark North Gate'], ['PHG', 'Penhelig'], ['MNG', 'Manningtree'], ['TAT', 'Tattenham Corner'], ['MEN', 'Menheniot'], ['FSB', 'Fishbourne (West Sussex)'], ['CNN', 'Canonbury'], ['HRO', 'Harold Wood'], ['BKJ', 'Beckenham Junction'], ['NFN', 'Nafferton'], ['BNO', 'Benton (T & W Metro)'], ['GRV', 'Gravesend'], ['NBY', 'Newbury'], ['SDC', 'Shoreditch High Street'], ['AXP', 'Alexandra Parade'], ['FXN', 'Foxton'], ['MTS', 'Montrose'], ['BTN', 'Brighton'], ['RDG', 'Reading'], ['CIR', 'Caledonian Rd & Barnsbury'], ['TAL', 'Talsarnau'], ['CWN', 'Cowden'], ['NLS', 'Nailsea & Backwell'], ['WNH', 'Warnham'], ['HWB', 'Hawarden Bridge'], ['LLN', 'Llandaf'], ['NRB', 'Norbury'], ['CSY', 'Coseley'], ['LLL', 'Llandeilo'], ['RIC', 'Rickmansworth'], ['WMB', 'Wembley Central'], ['ADV', 'Andover'], ['PFL', 'Purfleet'], ['SWE', 'Swineshead'], ['SHB', 'Shirebrook'], ['DFD', 'Dartford'], ['HAN', 'Hanwell'], ['NUT', 'Nutbourne'], ['MLW', 'Marlow'], ['WBL', 'Warblington'], ['RHI', 'Rhiwbina'], ['DEP', 'Deptford'], ['CUB', 'Cumbernauld'], ['HCN', 'Headcorn'], ['LAW', 'Landywood'], ['THC', 'Thurnscoe'], ['CNO', 'Chetnole'], ['COI', 'Crosshill'], ['SHW', 'Shawford'], ['BAJ', 'Baglan'], ['SUR', 'Surbiton'], ['AUK', 'Auchinleck'], ['KTL', 'Kirton Lindsey'], ['LID', 'Lidlington'], ['CDR', 'Cardross'], ['SYL', 'Syon Lane'], ['HYT', 'Hyde North'], ['LAI', 'Laindon'], ['HOX', 'Hoxton'], ['LEW', 'Lewisham'], ['BSK', 'Basingstoke'], ['CRW', 'Crawley'], ['GBS', 'Goring-by-Sea'], ['WHS', 'Whyteleafe South'], ['MHR', 'Market Harborough'], ['ERD', 'Erdington'], ['GST', 'Gathurst'], ['LGG', 'Langley Green'], ['OVR', 'Overton'], ['NEH', 'New Eltham'], ['SDN', 'St Denys'], ['MTG', 'Mottingham'], ['WTR', 'Wateringbury'], ['CDB', 'Cardiff Bay'], ['FNT', 'Feniton'], ['BLP', 'Belper'], ['HSG', 'Hathersage'], ['HVH', 'Hoek Van Holland'], ['DVN', 'Davenport'], ['LWH', 'Lawrence Hill'], ['WCK', 'Wick'], ['BMB', 'Bamber Bridge'], ['DRI', 'Drigg'], ['TWN', 'Town Green'], ['CHE', 'Cheam'], ['SAX', 'Saxmundham'], ['MAG', 'Maghull'], ['SBE', 'Starbeck'], ['MCN', 'Machynlleth'], ['CBC', 'Coatbridge Central'], ['BYL', 'Barry Links'], ['BEM', 'Bempton'], ['SFR', 'Shalford'], ['BIC', 'Billericay'], ['BTR', 'Braintree'], ['ISL', 'Isleworth'], ['HLN', 'Harlington'], ['SSM', 'Stocksmoor'], ['GMN', 'Great Missenden'], ['KNE', 'Kennett'], ['POO', 'Poole'], ['RNR', 'Roughton Road'], ['ILK', 'Ilkley'], ['PMH', 'Portsmouth Harbour'], ['RDA', 'Redland'], ['FRS', 'Forsinard'], ['HRN', 'Hornsey'], ['SLY', 'Selly Oak'], ['OXT', 'Oxted'], ['CBS', 'Coatbridge Sunnyside'], ['WMD', 'Wymondham'], ['TEY', 'Teynham'], ['BAV', 'Barrow Haven'], ['BYE', 'Bynea'], ['WKB', 'West Kilbride'], ['BCU', 'Brockenhurst'], ['AMT', 'Aldermaston'], ['LGB', 'Langbank'], ['MRF', 'Moorfields'], ['PMH', 'Portsmouth Harbour'], ['ROO', 'Roose'], ['KIL', 'Kildonan'], ['BHC', 'Balloch'], ['WIV', 'Wivenhoe'], ['BTT', 'Battersby'], ['CCT', 'Cathcart'], ['HRL', 'Harlech'], ['RGW', 'Ramsgreave & Wilpshire'], ['WVF', 'Wivelsfield'], ['SAJ', 'St Johns'], ['WDH', 'Woodhouse'], ['FOG', 'Forest Gate'], ['HTF', 'Hartford'], ['WNW', 'West Norwood'], ['CSG', 'Cressington'], ['SHU', 'Stonehouse'], ['WDN', 'Walsden'], ['SAC', 'St Albans'], ['WFF', 'Whifflet'], ['HOW', 'Howden'], ['MLY', 'Morley'], ['ASG', 'Alsager'], ['LOB', 'Longbridge'], ['WOM', 'Wombwell'], ['MSH', 'Mossley Hill'], ['ECP', 'Energlyn & Churchill Park'], ['EPH', 'Elephant & Castle'], ['RDW', 'Reading West'], ['EKB', 'Eskbank'], ['BRU', 'Bruton'], ['CME', 'Combe'], ['MIH', 'Mills Hill'], ['PPD', 'Pontypridd'], ['SAD', 'Sandwell & Dudley'], ['KGT', 'Kilgetty'], ['BRI', 'Bristol Temple Meads'], ['HOC', 'Hockley'], ['LBR', 'Llanbedr'], ['NSG', 'New Southgate'], ['DGC', 'Denham Golf Club'], ['PNM', 'Penmere'], ['MHS', 'Meadowhall'], ['PSL', 'Port Sunlight'], ['DWW', 'Dawlish Warren'], ['RTN', 'Renton'], ['BUJ', 'Burton Joyce'], ['HUR', 'Hurst Green'], ['BDK', 'Baldock'], ['LNY', 'Langley'], ['BSH', 'Bushey'], ['DOW', 'Downham Market'], ['KIN', 'Kingussie'], ['BLO', 'Blaydon'], ['DVY', 'Dovey Junction'], ['BWS', 'Barrow Upon Soar'], ['SGL', 'South Gyle'], ['WHT', 'Whitchurch (Glamorgan)'], ['ACB', 'Acton Bridge'], ['ZHA', 'Hammersmith Underground'], ['WRB', 'Wrabness'], ['NQU', 'North Queensferry'], ['TYC', 'Ty Croes'], ['ANC', 'Ancaster'], ['NBN', 'New Brighton'], ['HEC', 'Heckington'], ['QUI', 'Quintrell Downs'], ['WCX', 'Wembley Stadium'], ['LWT', 'Lowestoft'], ['RAN', 'Rannoch'], ['THU', 'Thurgarton'], ['CSK', 'Calstock'], ['MER', 'Merthyr Tydfil'], ['NEI', 'Neilston'], ['CBD', 'Conon Bridge'], ['DNO', 'Dunrobin Castle'], ['HUD', 'Huddersfield'], ['SKW', 'Stoke Newington'], ['ARG', 'Arisaig'], ['CNW', 'Conwy'], ['MNN', 'Menston'], ['PLE', 'Pollokshields East'], ['LLO', 'Llandrindod'], ['LAU', 'Laurencekirk'], ['MSL', 'Mossley'], ['SIE', 'Sherburn-in-Elmet'], ['CBH', 'Cambridge Heath'], ['KBN', 'Kilburn High Road'], ['SID', 'Sidcup'], ['FEL', 'Feltham'], ['CCC', 'Criccieth'], ['STO', 'South Tottenham'], ['WOO', 'Wool'], ['GRK', 'Gourock'], ['LLI', 'Llandybie'], ['AXM', 'Axminster'], ['WGV', 'Wargrave'], ['HSD', 'Hamstead'], ['PLW', 'Pollokshields West'], ['BRK', 'Berwick (Sussex)'], ['CTW', 'Church & Oswaldtwistle'], ['XIB', 'Bourg St Maurice'], ['SKI', 'Skipton'], ['BDM', 'Bedford'], ['PLM', 'Plumley'], ['YVJ', 'Yeovil Junction'], ['DEN', 'Dean'], ['DAM', 'Dalmeny'], ['WGN', 'Wigan North Western'], ['WRE', 'Wrenbury'], ['RYN', 'Roydon'], ['YVJ', 'Yeovil Junction'], ['ABH', 'Abererch'], ['UNI', 'University'], ['AMY', 'Amberley'], ['CSB', 'Carshalton Beeches'], ['EFF', 'Effingham Junction'], ['SVK', 'Seven Kings'], ['DEA', 'Deal'], ['WNP', 'Wanstead Park'], ['ALK', 'Aslockton'], ['ULV', 'Ulverston'], ['LIV', 'Liverpool Lime Street'], ['ABC', 'Altnabreac'], ['LAP', 'Lapford'], ['NIT', 'Nitshill'], ['RAM', 'Ramsgate'], ['KNO', 'Knottingley'], ['LIV', 'Liverpool Lime Street'], ['CSH', 'Carshalton'], ['BFE', 'Bere Ferrers'], ['AVY', 'Aberdovey'], ['CBK', 'Cranbrook (Devon)'], ['WLN', 'Wellington (Shropshire)'], ['CGN', 'Cogan'], ['ASC', 'Ashchurch for Tewkesbury'], ['AVF', 'Avoncliff'], ['CBP', 'Castle Bar Park'], ['GSL', 'Gunnislake'], ['HMC', 'Hampton Court'], ['PLY', 'Plymouth'], ['CLA', 'Clandon'], ['CNE', 'Colne'], ['NXG', 'New Cross Gate'], ['CIL', 'Chilham'], ['FLI', 'Flixton'], ['NWX', 'New Cross'], ['BMY', 'Bramley (Hampshire)'], ['CWS', 'Caersws'], ['BHO', 'Blackhorse Road'], ['CFT', 'Crofton Park'], ['GLS', 'Glaisdale'], ['WMI', 'Wildmill'], ['AST', 'Aston'], ['CDT', 'Caldicot'], ['ESD', 'Elmstead Woods'], ['KLN', 'Kings Lynn'], ['SLQ', 'St Leonards Warrior Square'], ['PNC', 'Penychain'], ['BUB', 'Burnley Barracks'], ['BNC', 'Burnley Central'], ['AXM', 'Axminster'], ['AXM', 'Axminster'], ['BGS', 'Bogston'], ['BAC', 'Bache'], ['HWW', 'How Wood'], ['BNG', 'Bangor (Gwynedd)'], ['BRM', 'Barmouth'], ['DNL', 'Dunlop'], ['EML', 'East Malling'], ['CMO', 'Camelon'], ['EDY', 'East Didsbury'], ['SPR', 'Springburn'], ['ELE', 'Elmers End'], ['WKI', 'West Kirby'], ['LBZ', 'Leighton Buzzard'], ['WES', 'Westerton'], ['LYD', 'Lydney'], ['PYT', 'Poynton'], ['RCC', 'Redcar Central'], ['CWE', 'Crowle'], ['KNA', 'Knaresborough'], ['RCE', 'Redcar East'], ['BUH', 'Brough'], ['DAN', 'Darnall'], ['WNF', 'Winchfield'], ['WKF', 'Wakefield Westgate'], ['PWY', 'Patchway'], ['DZY', 'Danzey'], ['FLD', 'Fauldhouse'], ['WPL', 'Worplesdon'], ['BSL', 'Beasdale'], ['KKD', 'Kirkdale'], ['EAG', 'Eaglescliffe'], ['CRM', 'Cramlington'], ['SIH', 'St Helier'], ['HBY', 'Hartlebury'], ['COA', 'Coatdyke'], ['CHW', 'Chalkwell'], ['RYS', 'Royston'], ['DVH', 'Dove Holes'], ['HEV', 'Hever'], ['SPA', 'Spalding'], ['BOG', 'Bognor Regis'], ['EUS', 'London Euston'], ['FRL', 'Fairlie'], ['EDB', 'Edinburgh'], ['MRR', 'Morar'], ['WSH', 'Wishaw'], ['CPW', 'Chepstow'], ['SUU', 'Sunbury'], ['HAP', 'Hatfield Peverel'], ['OUN', 'Oulton Broad North'], ['MIC', 'Micheldever'], ['WOF', 'Worcester Foregate Street'], ['WRX', 'Wrexham General'], ['OUS', 'Oulton Broad South'], ['CAK', 'Cark'], ['FRY', 'Ferriby'], ['FOH', 'Forest Hill'], ['STY', 'Stratford Parkway'], ['OLF', 'Oldfield Park'], ['WAL', 'Walton-on-Thames'], ['PTT', 'Patterton'], ['GLQ', 'Glasgow Queen Street'], ['EBA', 'Euxton Balshaw Lane'], ['HLM', 'Holmwood'], ['FAV', 'Faversham'], ['GOL', 'Golspie'], ['KKH', 'Kirkhill'], ['WSR', 'Woodsmoor'], ['CNL', 'Canley'], ['SPT', 'Stockport'], ['WBD', 'Whitley Bridge'], ['HIA', 'Hampton-in-Arden'], ['BLV', 'Belle Vue'], ['DMK', 'Denmark Hill'], ['DWL', 'Dawlish'], ['FLF', 'Flowery Field'], ['DGY', 'Deganwy'], ['SYS', 'Syston'], ['KKN', 'Kirknewton'], ['WBO', 'Wimbledon Chase'], ['ALB', 'Albrighton'], ['BEP', 'Bermuda Park (Nuneaton)'], ['BFN', 'Byfleet & New Haw'], ['SKM', 'Stoke Mandeville'], ['NEM', 'New Malden'], ['SER', 'St Erth'], ['GNL', 'Green Lane'], ['HEI', 'Heighington'], ['OMS', 'Ormskirk'], ['HBN', 'Hollingbourne'], ['COL', 'Colchester'], ['MES', 'Melton'], ['AHV', 'Ash Vale'], ['KRK', 'Kirkconnel'], ['BYN', 'Bryn'], ['CWC', 'Chappel & Wakes Colne'], ['BIK', 'Birkbeck'], ['SWM', 'Swanscombe'], ['AUD', 'Audley End'], ['BRE', 'Brentwood'], ['YOK', 'Yoker'], ['AHS', 'Ashurst'], ['GSW', 'Garswood'], ['SHU', 'Stonehouse'], ['SNR', 'Sanderstead'], ['BRC', 'Breich'], ['HDM', 'Haddenham & Thame Parkway'], ['BAH', 'Bank Hall'], ['PRR', 'Princes Risborough'], ['SYA', 'Styal'], ['GPO', 'Gospel Oak'], ['SLV', 'Silver Street'], ['FZP', 'Furze Platt'], ['MFA', 'Morfa Mawddach'], ['DLG', 'Dolgarrog'], ['CWB', 'Colwyn Bay'], ['HVN', 'Havenhouse'], ['LUT', 'Luton'], ['GIG', 'Giggleswick'], ['KGP', 'Kings Park'], ['RYH', 'Rye House'], ['GOR', 'Goring & Streatley'], ['HFD', 'Hereford'], ['BIG', 'Billingshurst'], ['STJ', 'Severn Tunnel Junction'], ['SAU', 'St Austell'], ['WHS', 'Whyteleafe South'], ['WST', 'Wood Street'], ['LED', 'Ledbury'], ['MRF', 'Moorfields'], ['OLF', 'Oldfield Park'], ['ATN', 'Atherton'], ['BRS', 'Berrylands'], ['WSB', 'Westbury'], ['CYS', 'Cathays'], ['CWD', 'Creswell'], ['LOS', 'Lostwithiel'], ['BHS', 'Brockholes'], ['THT', 'Thorntonhall'], ['DRG', 'Drayton Green'], ['ANS', 'Ainsdale'], ['DYP', 'Drayton Park'], ['KLY', 'Kenley'], ['LEH', 'Lea Hall'], ['LPR', 'Long Preston'], ['SVS', 'Seven Sisters'], ['WWW', 'Wootton Wawen'], ['SHI', 'Shiplake'], ['WML', 'Wilmslow'], ['EDL', 'Edale'], ['FLX', 'Felixstowe'], ['NBR', 'Narborough'], ['PFY', 'Poulton-le-Fylde'], ['PRP', 'Preston Park'], ['COE', 'Coombe Junction Halt'], ['SST', 'Stansted Mountfitchet'], ['WLD', 'West St Leonards'], ['PMW', 'Penmaenmawr'], ['YEO', 'Yeoford'], ['YVP', 'Yeovil Pen Mill'], ['GRF', 'Garforth'], ['MON', 'Monifieth'], ['NOR', 'Normanton'], ['COM', 'Commondale'], ['ZFD', 'Farringdon Underground'], ['ORR', 'Orrell'], ['LOW', 'Lowdham'], ['YVP', 'Yeovil Pen Mill'], ['HWF', 'Heathrow Airport T4 (Bus)'], ['LPG', 'Llanfairpwll'], ['LWR', 'Llanrwst'], ['CRN', 'Crowthorne'], ['JCH', 'James Cook'], ['LLS', 'Llanishen'], ['NCE', 'New Clee'], ['RAY', 'Raynes Park'], ['SAW', 'Sawbridgeworth'], ['WLO', 'Waterloo (Merseyside)'], ['ROE', 'Rotherhithe'], ['HNB', 'Herne Bay'], ['SHY', 'Shipley'], ['MTA', 'Mountain Ash'], ['SJP', 'St James\' Park'], ['LYC', 'Lympstone Commando'], ['NWM', 'New Milton'], ['WIJ', 'Willesden Junction'], ['FLT', 'Flitwick'], ['BRA', 'Brora'], ['HYN', 'Hyndland'], ['RUF', 'Rufford'], ['PTA', 'Port Talbot Parkway'], ['SMH', 'Stamford Hill'], ['GVE', 'Garve'], ['HTE', 'Hatch End'], ['WSE', 'Winchelsea'], ['DLT', 'Dalton'], ['SPY', 'Shepley'], ['CFL', 'Crossflatts'], ['LIH', 'Leigh (Kent)'], ['LYM', 'Lympstone Village'], ['SOL', 'Solihull'], ['CTH', 'Chadwell Heath'], ['FOK', 'Four Oaks'], ['TRI', 'Tring'], ['BLB', 'Battlesbridge'], ['FAL', 'Falmouth Docks'], ['HPL', 'Hartlepool'], ['OXN', 'Oxenholme Lake District'], ['OTF', 'Otford'], ['OUT', 'Outwood'], ['WLE', 'Whittlesea'], ['SBV', 'St Budeaux Victoria Road'], ['HHY', 'Highbury & Islington'], ['CKS', 'Clarkston'], ['EDN', 'Eden Park'], ['SDP', 'Sandplace'], ['AFK', 'Ashford International'], ['DLM', 'Delamere'], ['HHY', 'Highbury & Islington'], ['INK', 'Inverkeithing'], ['SAA', 'St Albans Abbey'], ['HLB', 'Hildenborough'], ['KTH', 'Kent House'], ['BUL', 'Butlers Lane'], ['AML', 'Acton Main Line'], ['FMT', 'Falmouth Town'], ['BAM', 'Bamford'], ['FFD', 'Freshford'], ['WAT', 'London Waterloo'], ['SHN', 'Shanklin'], ['CKT', 'Crookston'], ['BKL', 'Bickley'], ['DND', 'Dinsdale'], ['NCL', 'Newcastle'], ['WLV', 'Wallasey Village'], ['THS', 'Thurso'], ['ZBS', 'Baker Street Underground'], ['WAE', 'London Waterloo East'], ['TIS', 'Tisbury'], ['BXS', 'Brussels Midi'], ['LEA', 'Leagrave'], ['BAB', 'Balcombe'], ['NCZ', 'Newcastle Central Metro'], ['ASH', 'Ash'], ['RDB', 'Redbridge'], ['BBK', 'Bilbrook'], ['BUW', 'Burley-in-Wharfedale'], ['GBD', 'Gilberdyke'], ['NSB', 'Normans Bay'], ['RGT', 'Rugeley Town'], ['SEH', 'Shoreham (Kent)'], ['BSH', 'Bushey'], ['ELG', 'Elgin'], ['FTN', 'Fratton'], ['EBN', 'Eastbourne'], ['FTM', 'Fort Matilda'], ['MBK', 'Millbrook (Hampshire)'], ['POT', 'Pontefract Tanshelf'], ['WGW', 'Wigan Wallgate'], ['SUO', 'Sutton (Surrey)'], ['AYS', 'Aylesbury'], ['LVM', 'Levenshulme'], ['WAD', 'Wadhurst'], ['PGN', 'Paignton'], ['BOC', 'Bootle'], ['BUG', 'Burgess Hill'], ['AHD', 'Ashtead'], ['OKL', 'Oakleigh Park'], ['LTT', 'Little Sutton'], ['BAU', 'Barton-on-Humber'], ['GWE', 'Gwersyllt'], ['PMH', 'Portsmouth Harbour'], ['SBU', 'Southbury'], ['CDF', 'Cardiff Central'], ['DTW', 'Droitwich Spa'], ['FST', 'London Fenchurch Street'], ['CEY', 'Cononley'], ['HML', 'Hemel Hempstead'], ['OKN', 'Oakengates'], ['CGD', 'Craigendoran'], ['PEM', 'Pemberton'], ['NHL', 'New Holland'], ['SNP', 'Stanhope'], ['EST', 'Easterhouse'], ['GRA', 'Grantham'], ['TAP', 'Taplow'], ['SUC', 'Sutton Common'], ['GNH', 'Greenhithe for Bluewater'], ['NCT', 'Newark Castle'], ['BTD', 'Bolton-on-Dearne'], ['HNC', 'Hamilton Central'], ['ECL', 'Eccleston Park'], ['OLY', 'Ockley'], ['PLD', 'Portslade'], ['BBG', 'Bishopbriggs'], ['COP', 'Copplestone'], ['SDB', 'Sandbach'], ['COV', 'Coventry'], ['EXD', 'Exeter St Davids'], ['LTH', 'Llanhilleth'], ['SQH', 'Sanquhar'], ['ERA', 'Eastham Rake'], ['BSK', 'Basingstoke'], ['MIR', 'Mirfield'], ['PFM', 'Pontefract Monkhill'], ['GUN', 'Gunnersbury'], ['WLG', 'Wallasey Grove Road'], ['PBO', 'Peterborough'], ['PLU', 'Plumstead'], ['CDQ', 'Cardiff Queen Street'], ['BXB', 'Broxbourne'], ['HNW', 'Hamilton West'], ['EXT', 'Exeter St Thomas'], ['WLT', 'Wallington'], ['HNX', 'Hunts Cross'], ['HMP', 'Hampton'], ['ALF', 'Alfreton'], ['BAA', 'Barnham'], ['SEA', 'Seaham'], ['WBY', 'West Byfleet'], ['BGL', 'Bugle'], ['WRK', 'Worksop'], ['WWI', 'West Wickham'], ['FGT', 'Faygate'], ['STW', 'Strawberry Hill'], ['NFL', 'Northfleet'], ['BUE', 'Bures'], ['NMP', 'Northampton'], ['CBL', 'Cambuslang'], ['GFN', 'Giffnock'], ['INV', 'Inverness'], ['WGR', 'Woodgrange Park'], ['STS', 'Saltash'], ['STP', 'London St Pancras (Intl)'], ['SUN', 'Sunderland'], ['SDF', 'Saundersfoot'], ['FNV', 'Furness Vale'], ['YAE', 'Yate'], ['MCV', 'Manchester Victoria'], ['RED', 'Redruth'], ['SNG', 'Sunningdale'], ['PDG', 'Padgate'], ['HTR', 'Heathrow Central Bus Stn'], ['BHI', 'Birmingham International'], ['CWH', 'Crews Hill'], ['NTA', 'Newton Abbot'], ['SFA', 'Stratford International'], ['WOH', 'Woldingham'], ['SXY', 'Saxilby'], ['GKC', 'Greenock Central'], ['PTC', 'Portchester'], ['GLD', 'Guildford'], ['BNF', 'Briton Ferry'], ['DAG', 'Dalgety Bay'], ['SOO', 'Strood'], ['DLS', 'Dalston'], ['LFD', 'Lingfield'], ['BBN', 'Blackburn'], ['CGM', 'Cottingham'], ['RVB', 'Ravensbourne'], ['AIR', 'Airbles'], ['BRR', 'Barrhead'], ['CLH', 'Clitheroe'], ['MRM', 'Manors (T & W Metro)'], ['GMT', 'Grosmont'], ['DHM', 'Durham'], ['PAR', 'Par'], ['IVY', 'Ivybridge'], ['LVN', 'Littlehaven'], ['GKW', 'Greenock West'], ['HNK', 'Hinckley'], ['KMK', 'Kilmarnock'], ['RMD', 'Richmond'], ['SIC', 'Silecroft'], ['HAD', 'Haddiscoe'], ['DNM', 'Denham'], ['OXS', 'Oxshott'], ['SLB', 'Saltburn'], ['DNT', 'Dent'], ['WHY', 'Whyteleafe'], ['CRG', 'Cross Gates'], ['LCG', 'Lochgelly'], ['BHG', 'Bathgate'], ['TNF', 'Tonfanau'], ['MAL', 'Malden Manor'], ['NUT', 'Nutbourne'], ['NWX', 'New Cross'], ['TON', 'Tonbridge'], ['TRO', 'Trowbridge'], ['WKG', 'Workington'], ['BSI', 'Balmossie'], ['SMK', 'Stowmarket'], ['LGD', 'Lingwood'], ['FBY', 'Formby'], ['NNP', 'Ninian Park'], ['ADM', 'Adisham'], ['GRL', 'Greenfaulds'], ['RLN', 'Rowlands Castle'], ['AMF', 'Ammanford'], ['KMP', 'Kempton Park'], ['SNL', 'Stoneleigh'], ['BWB', 'Bow Brickhill'], ['ABY', 'Ashburys'], ['BRY', 'Barry'], ['MYL', 'Maryland'], ['BBL', 'Bat & Ball'], ['PUT', 'Putney'], ['CAA', 'Coventry Arena'], ['HMD', 'Hampden Park'], ['GYP', 'Gypsy Lane'], ['CMY', 'Crossmyloof'], ['DUL', 'Dullingham'], ['WNM', 'Weston Milton'], ['AFV', 'Ansdell & Fairhaven'], ['SYH', 'Sydenham Hill'], ['GTW', 'Gatwick Airport'], ['HYK', 'Hoylake'], ['MIS', 'Mistley'], ['PPK', 'Possilpark & Parkhouse'], ['WYM', 'Wylam'], ['MLM', 'Millom'], ['WAV', 'Wavertree Tech Park'], ['LAM', 'Lamphey'], ['CCH', 'Chichester'], ['MLT', 'Malton'], ['SGM', 'St Germans'], ['WND', 'Wendover'], ['HAF', 'Heathrow Airport T4'], ['THE', 'Theale'], ['ADL', 'Adlington (Lancashire)'], ['HWV', 'Heathrow Airport T5'], ['PLK', 'Plockton'], ['HWC', 'Harwich Town'], ['CWU', 'Crowhurst'], ['CHK', 'Chiswick'], ['HEN', 'Hendon'], ['DRU', 'Drumgelloch'], ['HAB', 'Habrough'], ['LVT', 'Lisvane & Thornhill'], ['TOK', 'Three Oaks'], ['SVR', 'Silverdale'], ['HEL', 'Hensall'], ['SON', 'Steeton & Silsden'], ['WIC', 'Wickford'], ['NAN', 'Nantwich'], ['LUD', 'Ludlow'], ['AFS', 'Ashford (Surrey)'], ['SGH', 'South Gosforth (T & W Metro)'], ['WYL', 'Wylde Green'], ['RDH', 'Redhill'], ['RNM', 'Rainham (Essex)'], ['MIF', 'Millfield (T & W Metro)'], ['WIN', 'Winchester'], ['LLR', 'Llanharan'], ['NET', 'Netherfield'], ['BSN', 'Boston'], ['GRN', 'Grindleford'], ['APB', 'Appley Bridge'], ['PYN', 'Penryn'], ['SRR', 'Sarn'], ['BND', 'Brandon'], ['DLW', 'Dalwhinnie'], ['BIB', 'Bishops Lydeard'], ['CUX', 'Cuxton'], ['PRS', 'Prees'], ['CLC', 'Castle Cary'], ['SCF', 'Stechford'], ['CLD', 'Chelsfield'], ['RIL', 'Rice Lane'], ['TBY', 'Thornaby'], ['LPY', 'Liverpool South Parkway'], ['CRV', 'Craven Arms'], ['WMA', 'West Malling'], ['DTN', 'Denton'], ['DOC', 'Dockyard'], ['DCH', 'Dorchester South'], ['NXG', 'New Cross Gate'], ['CDS', 'Coulsdon South'], ['LLF', 'Llanfairfechan'], ['SLL', 'Stallingborough'], ['CDO', 'Cardonald'], ['HAT', 'Hatfield'], ['RDN', 'Reddish North'], ['WOS', 'Worcester Shrub Hill'], ['HAV', 'Havant'], ['SNA', 'Sandal & Agbrigg'], ['MIM', 'Moreton-in-Marsh'], ['ART', 'Arrochar & Tarbet'], ['OBN', 'Oban'], ['RDS', 'Reddish South'], ['TOO', 'Tooting'], ['WMC', 'Wilmcote'], ['SIA', 'Southend Airport'], ['EBT', 'Edenbridge Town'], ['PLG', 'Polegate'], ['BSW', 'Birmingham Snow Hill'], ['GRB', 'Great Bentley'], ['HHB', 'Heysham Port'], ['SNK', 'Sankey for Penketh'], ['BXD', 'Buxted'], ['ASK', 'Askam'], ['CFB', 'Catford Bridge'], ['GMG', 'Garth (Mid Glamorgan)'], ['NCM', 'North Camp'], ['APF', 'Appleford'], ['EWR', 'East Worthing'], ['WON', 'Walton-on-the-Naze'], ['ROW', 'Rowley Regis'], ['WSU', 'West Sutton'], ['BGG', 'Brigg'], ['EBD', 'Ebbsfleet International'], ['ZEL', 'Elephant & Castle Underground'], ['PHR', 'Penshurst'], ['MRB', 'Manorbier'], ['SPH', 'Shepherds Well'], ['STD', 'Stroud'], ['TGS', 'Ty Glas'], ['BCF', 'Beaconsfield'], ['HDF', 'Hadfield'], ['CDD', 'Cardenden'], ['LTL', 'Littleborough'], ['CHR', 'Christchurch'], ['MFT', 'Mansfield'], ['PWE', 'Pollokshaws East'], ['LPW', 'Lapworth'], ['BNE', 'Bourne End'], ['CRA', 'Cradley Heath'], ['CHO', 'Cholsey'], ['WRM', 'Wareham'], ['CSR', 'Chassen Road'], ['SEN', 'Shenstone'], ['BOE', 'Botley'], ['ANG', 'Angmering'], ['DVC', 'Dovercourt'], ['PMG', 'Porthmadog Harbour (Bus)'], ['ORN', 'Old Roan'], ['NGT', 'Newington'], ['KNI', 'Knighton'], ['GVH', 'Gravelly Hill'], ['OXF', 'Oxford'], ['CKY', 'Crosskeys'], ['BLL', 'Bardon Mill'], ['FGH', 'Fishguard Harbour'], ['LYE', 'Lye'], ['CLR', 'Clarbeston Road'], ['HBD', 'Hebden Bridge'], ['IGD', 'Invergordon'], ['YNW', 'Ynyswen'], ['PWW', 'Pollokshaws West'], ['RMB', 'Roman Bridge'], ['GRT', 'Grateley'], ['AGT', 'Aldrington'], ['CED', 'Cheddington'], ['RVN', 'Ravensthorpe'], ['KEN', 'Kendal'], ['MAR', 'Margate'], ['PSE', 'Pitsea'], ['CTK', 'City Thameslink'], ['BAT', 'Battle'], ['HEV', 'Hever'], ['WAS', 'Watton-at-Stone'], ['CLY', 'Chinley'], ['HES', 'Hessle'], ['UPH', 'Upper Halliford'], ['WNS', 'Winnersh'], ['AON', 'Alton'], ['LGK', 'Longbeck'], ['SHC', 'Streethouse'], ['EMS', 'Emsworth'], ['SYH', 'Sydenham Hill'], ['BAK', 'Battersea Park'], ['GLQ', 'Glasgow Queen Street'], ['BKJ', 'Beckenham Junction'], ['UMB', 'Umberleigh'], ['CMN', 'Carmarthen'], ['SHH', 'Shirehampton'], ['MAX', 'Maxwell Park'], ['HGY', 'Harringay'], ['AVF', 'Avoncliff'], ['BYK', 'Bentley (South Yorkshire)'], ['GER', 'Gerrards Cross'], ['HLR', 'Hall Road'], ['HNF', 'Hednesford'], ['FRD', 'Frodsham'], ['KNR', 'Kensal Rise'], ['BCC', 'Beccles'], ['HGN', 'Hough Green'], ['BKW', 'Berkswell'], ['EBR', 'Edenbridge'], ['BKT', 'Blake Street'], ['CEH', 'Coleshill Parkway'], ['LEN', 'Lenham'], ['BEC', 'Beckenham Hill'], ['FNY', 'Finchley Road & Frognal'], ['LTM', 'Lytham'], ['BKJ', 'Beckenham Junction'], ['KDG', 'Kidsgrove'], ['IGD', 'Invergordon'], ['CPH', 'Caerphilly'], ['APS', 'Apsley'], ['HTY', 'Hattersley'], ['SAL', 'Salisbury'], ['BNW', 'Bootle New Strand'], ['SOB', 'Southbourne'], ['BTH', 'Bath Spa'], ['DFE', 'Dunfermline Town'], ['SLS', 'Shettleston'], ['ELY', 'Ely'], ['BMF', 'Broomfleet'], ['NVH', 'Newhaven Harbour'], ['LCL', 'Lochailort'], ['PMD', 'Pembroke Dock'], ['WAR', 'Ware'], ['BFD', 'Brentford'], ['GLZ', 'Glazebrook'], ['HSY', 'Horsley'], ['SPI', 'Spital'], ['SHZ', 'South Hylton (T & W Metro)'], ['MOO', 'Muir of Ord'], ['NHD', 'Nunhead'], ['BKR', 'Blackridge'], ['IRL', 'Irlam'], ['NVN', 'Newhaven Town'], ['WRN', 'West Runton'], ['HDB', 'Haydon Bridge'], ['EAD', 'Earlsfield'], ['RDM', 'Riding Mill'], ['WMR', 'Widney Manor'], ['BPK', 'Brookmans Park'], ['WLF', 'Whittlesford Parkway'], ['GDN', 'Godstone'], ['TFC', 'Telford Central'], ['SHE', 'Sherborne'], ['GNB', 'Gainsborough Central'], ['BOT', 'Bootle Oriel Road'], ['EGR', 'East Grinstead'], ['LNK', 'Lanark'], ['NEG', 'Newtongrange'], ['SAL', 'Salisbury'], ['CFR', 'Chandlers Ford'], ['LGM', 'Langley Mill'], ['GSD', 'Garsdale'], ['LAG', 'Langwith-Whaley Thorns'], ['BNL', 'Barnhill'], ['IVR', 'Iver'], ['CNY', 'Cantley'], ['HGS', 'Hastings'], ['BEY', 'Ben Rhydding'], ['BMD', 'Brimsdown'], ['ARB', 'Arbroath'], ['BLN', 'Blundellsands & Crosby'], ['MSS', 'Moses Gate'], ['DST', 'Duke Street'], ['HYW', 'Hinchley Wood'], ['AYR', 'Ayr'], ['SRO', 'Shireoaks'], ['CAR', 'Carlisle'], ['DSY', 'Daisy Hill'], ['RGL', 'Rugeley Trent Valley'], ['GFF', 'Gilfach Fargoed'], ['WAF', 'Wallyford'], ['INR', 'Inverurie'], ['SBK', 'South Bank'], ['ELO', 'Elton & Orston'], ['SPB', 'Shepherds Bush'], ['STE', 'Streatham'], ['CYB', 'Cefn-y-Bedd'], ['HDY', 'Headingley'], ['HCT', 'Huncoat'], ['DYC', 'Dyce'], ['HYD', 'Heyford'], ['PRH', 'Penrhyndeudraeth'], ['SET', 'Settle'], ['WFH', 'Watford High Street'], ['DLR', 'Dalreoch'], ['BKD', 'Blakedown'], ['PTM', 'Porthmadog'], ['ORP', 'Orpington'], ['GBL', 'Gainsborough Lea Road'], ['SCU', 'Scunthorpe'], ['PTH', 'Perth'], ['TAM', 'Tamworth'], ['TRB', 'Treherbert'], ['BXY', 'Bexley'], ['TRY', 'Treorchy'], ['HRS', 'Horsforth'], ['SHV', 'Southsea Hoverport (Bus)'], ['SUM', 'Summerston'], ['WFJ', 'Watford Junction'], ['FYS', 'Ferryside'], ['NUM', 'Northumberland Park'], ['SVL', 'Staveley'], ['CYK', 'Clydebank'], ['HDN', 'Harlesden'], ['PLS', 'Pleasington'], ['TLC', 'Tal-y-Cafn'], ['WAM', 'Walmer'], ['BMG', 'Barming'], ['IFD', 'Ilford'], ['GTA', 'Great Ayton'], ['NBC', 'New Beckenham'], ['LUD', 'Ludlow'], ['FNR', 'Farningham Road'], ['CFN', 'Clifton Down'], ['HAC', 'Hackney Downs'], ['PGM', 'Pengam'], ['RLG', 'Rayleigh'], ['BKG', 'Barking'], ['BLM', 'Belmont'], ['NTC', 'Newton St Cyres'], ['RYE', 'Rye'], ['DBG', 'Mottisfont & Dunbridge'], ['NWI', 'Northwich'], ['PSC', 'Prescot'], ['DKD', 'Dunkeld & Birnam'], ['AGL', 'Abergele & Pensarn'], ['CRF', 'Carfin'], ['SOM', 'South Milford'], ['CRY', 'Crayford'], ['LIU', 'Lille Europe'], ['GLF', 'Glenfinnan'], ['SWI', 'Swindon'], ['SCR', 'St Columb Road'], ['TEO', 'Theobalds Grove'], ['BHM', 'Birmingham New Street'], ['BML', 'Bramhall'], ['WIJ', 'Willesden Junction'], ['COS', 'Cosford'], ['ACG', 'Acocks Green'], ['DVP', 'Dover Priory'], ['MOG', 'Moorgate'], ['ROS', 'Rosyth'], ['WAO', 'Walton (Merseyside)'], ['GNH', 'Greenhithe for Bluewater'], ['RWC', 'Rawcliffe'], ['LES', 'Leigh-on-Sea'], ['HLI', 'Healing'], ['WEY', 'Weymouth'], ['AFK', 'Ashford International'], ['HON', 'Honiton'], ['RCA', 'Risca & Pontymister'], ['BIY', 'Bingley'], ['FOR', 'Forres'], ['KLM', 'Kilmaurs'], ['BOR', 'Bodorgan'], ['BSS', 'Barassie'], ['PUR', 'Purley'], ['MAC', 'Macclesfield'], ['RBR', 'Robertsbridge'], ['HHE', 'Haywards Heath'], ['ALN', 'Althorne'], ['GBK', 'Greenbank'], ['BMV', 'Bromsgrove'], ['GTO', 'Gorton'], ['PMB', 'Pembroke'], ['SKE', 'Skewen'], ['CAU', 'Causeland'], ['PEN', 'Penarth'], ['UPT', 'Upton'], ['BMN', 'Bromley North'], ['ZTH', 'Tower Hill Underground'], ['KYL', 'Kyle of Lochalsh'], ['TTN', 'Totton'], ['HWF', 'Heathrow Airport T4 (Bus)'], ['BMS', 'Bromley South'], ['ASS', 'Alness'], ['SSS', 'Sheerness-on-Sea'], ['CAG', 'Carrbridge'], ['GTH', 'Garth (Powys)'], ['LOF', 'London Fields'], ['BIS', 'Bishops Stortford'], ['BRW', 'Brunswick'], ['CHH', 'Christs Hospital'], ['HHD', 'Holyhead'], ['MFL', 'Mount Florida'], ['DAK', 'Dalmarnock'], ['WSW', 'Wandsworth Common'], ['MDN', 'Maiden Newton'], ['DFL', 'Dunfermline Queen Margaret'], ['IRV', 'Irvine'], ['WHN', 'Whiston'], ['SBS', 'St Bees'], ['PKG', 'Penkridge'], ['SOU', 'Southampton Central'], ['COY', 'Coryton'], ['GGJ', 'Georgemas Junction'], ['SLR', 'Sleaford'], ['DKT', 'Dorking West'], ['SQU', 'Squires Gate'], ['CMD', 'Camden Road'], ['BSO', 'Basildon'], ['CBR', 'Cooksbridge'], ['BYM', 'Burnley Manchester Road'], ['MLF', 'Milford (Surrey)'], ['RYR', 'Ryde St Johns Road'], ['TEY', 'Teynham'], ['TOT', 'Totnes'], ['FRF', 'Fairfield'], ['PUO', 'Purley Oaks'], ['GNF', 'Greenfield'], ['GRY', 'Grays'], ['BGH', 'Brighouse'], ['FKG', 'Falkirk Grahamston'], ['HKH', 'Hawkhead'], ['PYP', 'Pont-y-Pant'], ['FKK', 'Falkirk High'], ['SOV', 'Southend Victoria'], ['MEY', 'Merryton']] +) + +function findStation (id) { + const wanted = id.toUpperCase() + const station = sMap.get(wanted) + console.log(station) + + return station +} + +module.exports = { findStation } diff --git a/src/libs/utils.js b/src/libs/utils.js new file mode 100644 index 0000000..b3c9264 --- /dev/null +++ b/src/libs/utils.js @@ -0,0 +1,120 @@ +function partOfDay (timeString, today) { + console.log(new Date()); + if (timeString === undefined || timeString === null) timeString = (new Date()).getHours().toString(); + + if (today === undefined) today = false; + + const hours = timeString.substring(0, 2); + let dayBit = ''; + + console.log('Hours', hours); + + if (hours >= 0 && hours < 4) + dayBit = 'Late Night'; + + else if (hours >= 4 && hours < 7) + dayBit = 'Early Morning'; + + else if (hours >= 7 && hours < 12) + dayBit = 'Morning'; + + else if (hours >= 12 && hours < 17) + dayBit = 'Afternoon'; + + else if (hours < 21) + dayBit = 'Evening'; + + else dayBit = 'Night'; + + if (today) + if (dayBit === 'night') { + dayBit = 'tonight'; + } + else { + dayBit = `this ${dayBit}`; + } + + console.log('partOfDay', dayBit); + + return dayBit; +} + +function toHour (extra = 0) { + const now = new Date(); + + return (3600000 - (now.getTime() % 3600000)) + extra; +} + +function hourFloor () { + const now = new Date(); + + return parseInt(~~(now.getTime() / 3600000) * 3600000, 10).toString(32); +} + +function minuteFloor () { + const now = new Date(); + + return parseInt(~~(now.getTime() / 60000) * 60000, 10).toString(32); +} + +function distance (lat1, lon1, lat2, lon2) { + const p = 0.017453292519943295; // Math.PI / 180 + const c = Math.cos; + const a = 0.5 - c((lat2 - lat1) * p) / 2 + + c(lat1 * p) * c(lat2 * p) * + (1 - c((lon2 - lon1) * p)) / 2; + + return 12742 * Math.asin(Math.sqrt(a)); // 2 * R; R = 6371 km +} + +/* function splitURL (url) { + +} */ + +const maybePluralize = (count, noun, suffix = 's') => + `${count} ${noun}${count !== 1 ? suffix : ''}`; + +function supportsLocalStorage() { + try { + if (!localStorage)return false; + else return true; + // May only need the above simple test + // - old versions of firefox may cause problem? + // return 'localStorage' in window && window['localStorage']!==null; + } + catch(e) { + return false; + } +} + +let LocalStorage = {}; + +if (supportsLocalStorage()) + LocalStorage = { + 'save':function ( i, v ) { + localStorage[i] = v; + }, + 'load':function ( i ) { + return localStorage[i]; + }, + 'exists':function(i) { + return !(typeof(localStorage[i]) === 'undefined'); + } + }; +else + LocalStorage = { + 'save':function ( i, v ) { + document.cookie = `${i }=${ encodeURIComponent(v)}`; + }, + 'load':function ( i ) { + var s = `; ${ document.cookie };`, + p = s.indexOf(`; ${ i }=`); + if (p < 0)return ''; + p = p + i.length + 3; + var p2 = s.indexOf(';', p + 1); + + return decodeURIComponent(s.substring(p, p2)); + } + }; + +module.exports = { partOfDay, toHour, hourFloor, distance, maybePluralize, minuteFloor, LocalStorage }; diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..954a149 --- /dev/null +++ b/src/main.js @@ -0,0 +1,10 @@ +import App from './App.svelte'; + +const app = new App({ + 'target': document.body, + 'props': { + + } +}); + +export default app; diff --git a/src/pages/Home.svelte b/src/pages/Home.svelte new file mode 100644 index 0000000..8bfd10b --- /dev/null +++ b/src/pages/Home.svelte @@ -0,0 +1,20 @@ + + +
+ + + + + + + + + + + + +
+ diff --git a/src/pages/NotFound.svelte b/src/pages/NotFound.svelte new file mode 100644 index 0000000..bd6a835 --- /dev/null +++ b/src/pages/NotFound.svelte @@ -0,0 +1,14 @@ + + + + +

NotFound

+ +

Oops, this route doesn't exist!

diff --git a/src/pages/Service.svelte b/src/pages/Service.svelte new file mode 100644 index 0000000..1a40c0b --- /dev/null +++ b/src/pages/Service.svelte @@ -0,0 +1,12 @@ + + + + +Service diff --git a/src/pages/Timetable.svelte b/src/pages/Timetable.svelte new file mode 100644 index 0000000..48e2fa6 --- /dev/null +++ b/src/pages/Timetable.svelte @@ -0,0 +1,41 @@ + + + +
+
+
+
{fromStationName} TO {destStationName}
+ + + +
+ +
+ diff --git a/src/routes.js b/src/routes.js new file mode 100644 index 0000000..7874fde --- /dev/null +++ b/src/routes.js @@ -0,0 +1,21 @@ +/** + * Created by WebStorm. + * User: martin + * Date: 19/04/2020 + * Time: 21:19 + + */ +// import { wrap } from 'svelte-spa-router'; + +import Home from './pages/Home.svelte'; +import Service from './pages/Service.svelte'; +import Timetable from './pages/Timetable.svelte'; +import NotFound from './pages/NotFound.svelte'; + +const routes = new Map(); +routes.set('/', Home); +routes.set('/timetable/:fromStation/:destStation', Timetable); +routes.set('/service/:serviceId', Service); +routes.set('*', NotFound); + +export default routes;