From 355ef4f4a1c5f978f2f6fc2ab4bbc50f591fc416 Mon Sep 17 00:00:00 2001 From: andrea-grapl <64504029+andrea-grapl@users.noreply.github.com> Date: Wed, 5 Aug 2020 15:41:42 -0700 Subject: [PATCH] Internal 184 log out redirect (#198) * converted useInterval to timeMod, extracted dashboard styles, fixed useEffect bug of excessive calling * broke styles into modules, formatting and addition of card info when not logged in * removed logic to check if local for login, added else statement for rerender to display login message in uploadplugin and sidebar components * fixed duplicate use state bug * fixed grapl header styling for engagementview * refactoring, fixed key errors for tables * changed color of button * black formatting --- src/js/engagement_view/package-lock.json | 16201 ++++++++++++++++ src/js/engagement_view/src/App.tsx | 25 +- src/js/engagement_view/src/Login.tsx | 14 +- .../src/components/Dashboard.tsx | 119 +- .../{SideBar.tsx => EngagementView.tsx} | 190 +- ...rContent.tsx => EngagementViewContent.tsx} | 108 +- .../src/components/GraphViz.tsx | 2 +- .../src/components/NodeTable.tsx | 69 +- .../src/components/UploadPlugin.tsx | 36 +- .../components/makeStyles/DashboardStyles.tsx | 47 + .../EngagementViewContentStyles.tsx | 37 + .../components/makeStyles/GraphVizStyles.tsx | 92 + .../components/makeStyles/NodeTableStyles.tsx | 17 + .../reusableComponents/GraplHeader.tsx | 5 +- .../reusableComponents/Notifications.tsx | 51 + .../src/modules/GraphViz/CustomTypes.tsx | 2 +- .../modules/uploads/plugins/apiRequests.tsx | 12 +- .../src/modules/uploads/plugins/useStyles.tsx | 4 + src/js/graphql_endpoint/modules/schema.js | 1 + src/js/graphql_endpoint/server.js | 8 +- .../static/js/main.303b9f70.chunk.js.map | 2 +- .../static/js/main.7a388ddd.chunk.js.map | 2 +- .../engagement_edge/src/engagement_edge.py | 13 +- .../src/grapl_model_plugin_deployer.py | 7 +- 24 files changed, 16725 insertions(+), 339 deletions(-) create mode 100644 src/js/engagement_view/package-lock.json rename src/js/engagement_view/src/components/{SideBar.tsx => EngagementView.tsx} (51%) rename src/js/engagement_view/src/components/{SideBarContent.tsx => EngagementViewContent.tsx} (76%) create mode 100644 src/js/engagement_view/src/components/makeStyles/DashboardStyles.tsx create mode 100644 src/js/engagement_view/src/components/makeStyles/EngagementViewContentStyles.tsx create mode 100644 src/js/engagement_view/src/components/makeStyles/GraphVizStyles.tsx create mode 100644 src/js/engagement_view/src/components/makeStyles/NodeTableStyles.tsx create mode 100644 src/js/engagement_view/src/components/reusableComponents/Notifications.tsx diff --git a/src/js/engagement_view/package-lock.json b/src/js/engagement_view/package-lock.json new file mode 100644 index 0000000000..82cc40a033 --- /dev/null +++ b/src/js/engagement_view/package-lock.json @@ -0,0 +1,16201 @@ +{ + "name": "grapl-fe", + "version": "0.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "3d-force-graph": { + "version": "1.66.6", + "resolved": "https://registry.npmjs.org/3d-force-graph/-/3d-force-graph-1.66.6.tgz", + "integrity": "sha512-5cByYOb6gd5QWRJv2sutyvXMGM1Hnf0p4zANs+yeYeZl8riR+FiSMbxoMCW+eWsAuQ4pLIUp+iIFZ/iTm4tlYQ==", + "requires": { + "accessor-fn": "^1.3.0", + "kapsule": "^1.13.3", + "three": "^0.118.3", + "three-dragcontrols": "^0.88.2", + "three-forcegraph": "^1.36.1", + "three-render-objects": "^1.24.3" + } + }, + "3d-force-graph-ar": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/3d-force-graph-ar/-/3d-force-graph-ar-1.6.1.tgz", + "integrity": "sha512-i8KUPutn2AOiOMi1/SkBHViNX93fhChlqN8b4nSEE0ers/5Of4XODMzfMajJwU3UcKVQVx40OOyCliG4MaQ01A==", + "requires": { + "aframe-forcegraph-component": "^2.27.1", + "kapsule": "^1.13.3" + } + }, + "3d-force-graph-vr": { + "version": "1.35.1", + "resolved": "https://registry.npmjs.org/3d-force-graph-vr/-/3d-force-graph-vr-1.35.1.tgz", + "integrity": "sha512-agQRy5/yg8kqRPEbN8yWhNYkz3nGhO7MWfkILGHH/7BoR0+StaNsY3tTemevswPUmIR3rwSKpcUjTwdAfrlIzw==", + "requires": { + "aframe": "^1.0.4", + "aframe-extras": "^6.1.0", + "aframe-forcegraph-component": "^2.27.1", + "kapsule": "^1.13.3" + } + }, + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/compat-data": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.11.0.tgz", + "integrity": "sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ==", + "requires": { + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "semver": "^5.5.0" + } + }, + "@babel/core": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.4.tgz", + "integrity": "sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.4", + "@babel/helpers": "^7.8.4", + "@babel/parser": "^7.8.4", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.4", + "@babel/types": "^7.8.3", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.0", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "@babel/generator": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.0.tgz", + "integrity": "sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ==", + "requires": { + "@babel/types": "^7.11.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "requires": { + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-builder-react-jsx": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz", + "integrity": "sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-builder-react-jsx-experimental": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.5.tgz", + "integrity": "sha512-Buewnx6M4ttG+NLkKyt7baQn7ScC/Td+e99G914fRU8fGIUivDDgVIQeDHFa5e4CRSJQt58WpNHhsAZgtzVhsg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-module-imports": "^7.10.4", + "@babel/types": "^7.10.5" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", + "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", + "requires": { + "@babel/compat-data": "^7.10.4", + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz", + "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==", + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.10.5", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", + "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.0" + } + }, + "@babel/helper-define-map": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz", + "integrity": "sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A==", + "requires": { + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", + "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==", + "requires": { + "@babel/types": "^7.11.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-module-transforms": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz", + "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==", + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/template": "^7.10.4", + "@babel/types": "^7.11.0", + "lodash": "^4.17.19" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + }, + "@babel/helper-regex": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", + "requires": { + "lodash": "^4.17.19" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz", + "integrity": "sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-replace-supers": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", + "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-simple-access": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", + "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", + "requires": { + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz", + "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==", + "requires": { + "@babel/types": "^7.11.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", + "requires": { + "@babel/types": "^7.11.0" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "@babel/helper-wrap-function": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", + "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helpers": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", + "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", + "requires": { + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.0.tgz", + "integrity": "sha512-qvRvi4oI8xii8NllyEc4MDJjuZiNaRzyb7Y7lup1NqJV8TZHF4O27CcP+72WPn/k1zkgJ6WJfnIbk4jTsVAZHw==" + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz", + "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz", + "integrity": "sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz", + "integrity": "sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-decorators": "^7.8.3" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", + "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", + "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", + "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", + "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz", + "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.10.4" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", + "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz", + "integrity": "sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", + "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.10.4.tgz", + "integrity": "sha512-2NaoC6fAk2VMdhY1eerkfHV+lVYC1u8b+jmRJISqANCJlTxYy19HGdIkkQtix2UtkcPuPu+IlDgrVseZnU03bw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.4.tgz", + "integrity": "sha512-yxQsX1dJixF4qEEdzVbst3SZQ58Nrooz8NV9Z9GL4byTE25BvJgl5lf0RECUf0fh28rZBb/RYTWn/eeKwCMrZQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz", + "integrity": "sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", + "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.4.tgz", + "integrity": "sha512-oSAEz1YkBCAKr5Yiq8/BNtvSAPwkp/IyUnwZogd8p+F0RuYQQrLeRUzIQhueQTTBy/F+a40uS7OFKxnkRvmvFQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", + "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", + "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", + "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.5.tgz", + "integrity": "sha512-6Ycw3hjpQti0qssQcA6AMSFDHeNJ++R6dIMnpRqUjFeBBTmTDPa8zgF90OVfTvAo11mXZTlVUViY1g8ffrURLg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", + "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", + "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", + "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", + "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", + "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", + "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz", + "integrity": "sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-flow": "^7.8.3" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", + "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", + "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", + "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", + "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz", + "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==", + "requires": { + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", + "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", + "requires": { + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz", + "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==", + "requires": { + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", + "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", + "requires": { + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", + "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", + "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", + "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz", + "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==", + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", + "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-react-constant-elements": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.10.4.tgz", + "integrity": "sha512-cYmQBW1pXrqBte1raMkAulXmi7rjg3VI6ZLg9QIic8Hq7BtYXaWuZSxsr2siOMI6SWwpxjWfnwhTUrd7JlAV7g==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.4.tgz", + "integrity": "sha512-Zd4X54Mu9SBfPGnEcaGcOrVAYOtjT2on8QZkLKEq1S/tHexG39d9XXGZv19VfRrDjPJzFmPfTAqOQS1pfFOujw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz", + "integrity": "sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A==", + "requires": { + "@babel/helper-builder-react-jsx": "^7.10.4", + "@babel/helper-builder-react-jsx-experimental": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.10.4" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.10.4.tgz", + "integrity": "sha512-RM3ZAd1sU1iQ7rI2dhrZRZGv0aqzNQMbkIUCS1txYpi9wHQ2ZHNjo5TwX+UD6pvFW4AbWqLVYvKy5qJSAyRGjQ==", + "requires": { + "@babel/helper-builder-react-jsx-experimental": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.10.4" + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.4.tgz", + "integrity": "sha512-yOvxY2pDiVJi0axdTWHSMi5T0DILN+H+SaeJeACHKjQLezEzhLx9nEF9xgpBLPtkZsks9cnb5P9iBEi21En3gg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.10.4" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.5.tgz", + "integrity": "sha512-wTeqHVkN1lfPLubRiZH3o73f4rfon42HpgxUSs86Nc+8QIcm/B9s8NNVXu/gwGcOyd7yDib9ikxoDLxJP0UiDA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.10.4" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", + "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", + "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz", + "integrity": "sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw==", + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "resolve": "^1.8.1", + "semver": "^5.5.1" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", + "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz", + "integrity": "sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", + "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz", + "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", + "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.11.0.tgz", + "integrity": "sha512-edJsNzTtvb3MaXQwj8403B7mZoGu9ElDJQZOKjGUnvilquxBA3IQoEIOvkX/1O8xfAsnHS/oQhe2w/IXrr+w0w==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-typescript": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", + "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/preset-env": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.0.tgz", + "integrity": "sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ==", + "requires": { + "@babel/compat-data": "^7.9.0", + "@babel/helper-compilation-targets": "^7.8.7", + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-proposal-async-generator-functions": "^7.8.3", + "@babel/plugin-proposal-dynamic-import": "^7.8.3", + "@babel/plugin-proposal-json-strings": "^7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-proposal-numeric-separator": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.9.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", + "@babel/plugin-proposal-optional-chaining": "^7.9.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.8.3", + "@babel/plugin-transform-async-to-generator": "^7.8.3", + "@babel/plugin-transform-block-scoped-functions": "^7.8.3", + "@babel/plugin-transform-block-scoping": "^7.8.3", + "@babel/plugin-transform-classes": "^7.9.0", + "@babel/plugin-transform-computed-properties": "^7.8.3", + "@babel/plugin-transform-destructuring": "^7.8.3", + "@babel/plugin-transform-dotall-regex": "^7.8.3", + "@babel/plugin-transform-duplicate-keys": "^7.8.3", + "@babel/plugin-transform-exponentiation-operator": "^7.8.3", + "@babel/plugin-transform-for-of": "^7.9.0", + "@babel/plugin-transform-function-name": "^7.8.3", + "@babel/plugin-transform-literals": "^7.8.3", + "@babel/plugin-transform-member-expression-literals": "^7.8.3", + "@babel/plugin-transform-modules-amd": "^7.9.0", + "@babel/plugin-transform-modules-commonjs": "^7.9.0", + "@babel/plugin-transform-modules-systemjs": "^7.9.0", + "@babel/plugin-transform-modules-umd": "^7.9.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.8.3", + "@babel/plugin-transform-object-super": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.8.7", + "@babel/plugin-transform-property-literals": "^7.8.3", + "@babel/plugin-transform-regenerator": "^7.8.7", + "@babel/plugin-transform-reserved-words": "^7.8.3", + "@babel/plugin-transform-shorthand-properties": "^7.8.3", + "@babel/plugin-transform-spread": "^7.8.3", + "@babel/plugin-transform-sticky-regex": "^7.8.3", + "@babel/plugin-transform-template-literals": "^7.8.3", + "@babel/plugin-transform-typeof-symbol": "^7.8.4", + "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.9.0", + "browserslist": "^4.9.1", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", + "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-react": { + "version": "7.9.1", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.9.1.tgz", + "integrity": "sha512-aJBYF23MPj0RNdp/4bHnAP0NVqqZRr9kl0NAOP4nJCex6OYVio59+dnQzsAWFuogdLyeaKA1hmfUIVZkY5J+TQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-transform-react-display-name": "^7.8.3", + "@babel/plugin-transform-react-jsx": "^7.9.1", + "@babel/plugin-transform-react-jsx-development": "^7.9.0", + "@babel/plugin-transform-react-jsx-self": "^7.9.0", + "@babel/plugin-transform-react-jsx-source": "^7.9.0" + } + }, + "@babel/preset-typescript": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.9.0.tgz", + "integrity": "sha512-S4cueFnGrIbvYJgwsVFKdvOmpiL0XGw9MFW9D0vgRys5g36PBhZRL8NX8Gr2akz8XRtzq6HuDXPD/1nniagNUg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-transform-typescript": "^7.9.0" + } + }, + "@babel/runtime": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.0.tgz", + "integrity": "sha512-qArkXsjJq7H+T86WrIFV0Fnu/tNOkZ4cgXmjkzAu3b/58D5mFIO8JH/y77t7C9q0OdDRdh9s7Ue5GasYssxtXw==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.11.0.tgz", + "integrity": "sha512-K0ioacsw8JgzDSPpUiGWokMvLzGvnZPXLrTsJfyHPrFsnp4yoKn+Ap/8NNZgWKZG9o5+qotH8tAa8AXn8gTN5A==", + "requires": { + "core-js-pure": "^3.0.0", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/traverse": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz", + "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.0", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.11.0", + "@babel/types": "^7.11.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "@babel/types": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", + "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@csstools/convert-colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", + "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==" + }, + "@csstools/normalize.css": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-10.1.0.tgz", + "integrity": "sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==" + }, + "@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" + }, + "@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==" + }, + "@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==" + }, + "@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==" + }, + "@hapi/joi": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", + "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", + "requires": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "@hapi/topo": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", + "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", + "requires": { + "@hapi/hoek": "^8.3.0" + } + }, + "@jest/console": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", + "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", + "requires": { + "@jest/source-map": "^24.9.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + } + }, + "@jest/core": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", + "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", + "requires": { + "@jest/console": "^24.7.1", + "@jest/reporters": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-changed-files": "^24.9.0", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-resolve-dependencies": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "jest-watcher": "^24.9.0", + "micromatch": "^3.1.10", + "p-each-series": "^1.0.0", + "realpath-native": "^1.1.0", + "rimraf": "^2.5.4", + "slash": "^2.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "@jest/environment": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", + "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", + "requires": { + "@jest/fake-timers": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/fake-timers": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", + "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", + "requires": { + "@jest/types": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/reporters": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", + "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", + "requires": { + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "istanbul-lib-coverage": "^2.0.2", + "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.1", + "istanbul-reports": "^2.2.6", + "jest-haste-map": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "node-notifier": "^5.4.2", + "slash": "^2.0.0", + "source-map": "^0.6.0", + "string-length": "^2.0.0" + } + }, + "@jest/source-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", + "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + } + } + }, + "@jest/test-result": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "requires": { + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@jest/test-sequencer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", + "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", + "requires": { + "@jest/test-result": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0" + } + }, + "@jest/transform": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", + "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^24.9.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.9.0", + "jest-regex-util": "^24.9.0", + "jest-util": "^24.9.0", + "micromatch": "^3.1.10", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "2.4.1" + } + }, + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@material-ui/core": { + "version": "4.9.11", + "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.9.11.tgz", + "integrity": "sha512-S2Ha9GpTxzl29XMeMc8dQX2pj97yApNzuhe/23If53fMdg5Fmd3SgbE1bMbyXeKhxwtXZjOFxd0vU+W/sez8Ew==", + "requires": { + "@babel/runtime": "^7.4.4", + "@material-ui/react-transition-group": "^4.2.0", + "@material-ui/styles": "^4.9.10", + "@material-ui/system": "^4.9.10", + "@material-ui/types": "^5.0.1", + "@material-ui/utils": "^4.9.6", + "@types/react-transition-group": "^4.2.0", + "clsx": "^1.0.4", + "hoist-non-react-statics": "^3.3.2", + "popper.js": "^1.16.1-lts", + "prop-types": "^15.7.2", + "react-is": "^16.8.0", + "react-transition-group": "^4.3.0" + } + }, + "@material-ui/icons": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.9.1.tgz", + "integrity": "sha512-GBitL3oBWO0hzBhvA9KxqcowRUsA0qzwKkURyC8nppnC3fw54KPKZ+d4V1Eeg/UnDRSzDaI9nGCdel/eh9AQMg==", + "requires": { + "@babel/runtime": "^7.4.4" + } + }, + "@material-ui/react-transition-group": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@material-ui/react-transition-group/-/react-transition-group-4.3.0.tgz", + "integrity": "sha512-CwQ0aXrlUynUTY6sh3UvKuvye1o92en20VGAs6TORnSxUYeRmkX8YeTUN3lAkGiBX1z222FxLFO36WWh6q73rQ==", + "requires": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + } + }, + "@material-ui/styles": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.10.0.tgz", + "integrity": "sha512-XPwiVTpd3rlnbfrgtEJ1eJJdFCXZkHxy8TrdieaTvwxNYj42VnnCyFzxYeNW9Lhj4V1oD8YtQ6S5Gie7bZDf7Q==", + "requires": { + "@babel/runtime": "^7.4.4", + "@emotion/hash": "^0.8.0", + "@material-ui/types": "^5.1.0", + "@material-ui/utils": "^4.9.6", + "clsx": "^1.0.4", + "csstype": "^2.5.2", + "hoist-non-react-statics": "^3.3.2", + "jss": "^10.0.3", + "jss-plugin-camel-case": "^10.0.3", + "jss-plugin-default-unit": "^10.0.3", + "jss-plugin-global": "^10.0.3", + "jss-plugin-nested": "^10.0.3", + "jss-plugin-props-sort": "^10.0.3", + "jss-plugin-rule-value-function": "^10.0.3", + "jss-plugin-vendor-prefixer": "^10.0.3", + "prop-types": "^15.7.2" + } + }, + "@material-ui/system": { + "version": "4.9.14", + "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.9.14.tgz", + "integrity": "sha512-oQbaqfSnNlEkXEziDcJDDIy8pbvwUmZXWNqlmIwDqr/ZdCK8FuV3f4nxikUh7hvClKV2gnQ9djh5CZFTHkZj3w==", + "requires": { + "@babel/runtime": "^7.4.4", + "@material-ui/utils": "^4.9.6", + "csstype": "^2.5.2", + "prop-types": "^15.7.2" + } + }, + "@material-ui/types": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz", + "integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==" + }, + "@material-ui/utils": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.10.2.tgz", + "integrity": "sha512-eg29v74P7W5r6a4tWWDAAfZldXIzfyO1am2fIsC39hdUUHm/33k6pGOKPbgDjg/U/4ifmgAePy/1OjkKN6rFRw==", + "requires": { + "@babel/runtime": "^7.4.4", + "prop-types": "^15.7.2", + "react-is": "^16.8.0" + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" + }, + "@semantic-ui-react/event-stack": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@semantic-ui-react/event-stack/-/event-stack-3.1.1.tgz", + "integrity": "sha512-SA7VOu/tY3OkooR++mm9voeQrJpYXjJaMHO1aFCcSouS2xhqMR9Gnz0LEGLOR0h9ueWPBKaQzKIrx3FTTJZmUQ==", + "requires": { + "exenv": "^1.2.2", + "prop-types": "^15.6.2" + } + }, + "@sheerun/mutationobserver-shim": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz", + "integrity": "sha512-DetpxZw1fzPD5xUBrIAoplLChO2VB8DlL5Gg+I1IR9b2wPqYIca2WSUxL5g1vLeR4MsQq1NeWriXAVffV+U1Fw==" + }, + "@stardust-ui/docs-components": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@stardust-ui/docs-components/-/docs-components-0.40.0.tgz", + "integrity": "sha512-gV2jtuJG+NWtTiA7EoLJN9Dv2LuCFpCKhVOXVFVtIg02zfB3T0bWGJPUCg5aeu1OmWWp4pbJsn/XgMsXA1HCgw==", + "requires": { + "@babel/runtime": "^7.1.2", + "copy-to-clipboard": "^3.2.0", + "object.values": "^1.1.0", + "prismjs": "^1.16.0", + "prop-types": "^15.7.2" + } + }, + "@stardust-ui/react-component-event-listener": { + "version": "0.38.0", + "resolved": "https://registry.npmjs.org/@stardust-ui/react-component-event-listener/-/react-component-event-listener-0.38.0.tgz", + "integrity": "sha512-sIP/e0dyOrrlb8K7KWumfMxj/gAifswTBC4o68Aa+C/GA73ccRp/6W1VlHvF/dlOR4KLsA+5SKnhjH36xzPsWg==", + "requires": { + "@babel/runtime": "^7.1.2", + "prop-types": "^15.7.2" + } + }, + "@stardust-ui/react-component-ref": { + "version": "0.38.0", + "resolved": "https://registry.npmjs.org/@stardust-ui/react-component-ref/-/react-component-ref-0.38.0.tgz", + "integrity": "sha512-xjs6WnvJVueSIXMWw0C3oWIgAPpcD03qw43oGOjUXqFktvpNkB73JoKIhS4sCrtQxBdct75qqr4ZL6JiyPcESw==", + "requires": { + "@babel/runtime": "^7.1.2", + "prop-types": "^15.7.2", + "react-is": "^16.6.3" + } + }, + "@svgr/babel-plugin-add-jsx-attribute": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz", + "integrity": "sha512-j7KnilGyZzYr/jhcrSYS3FGWMZVaqyCG0vzMCwzvei0coIkczuYMcniK07nI0aHJINciujjH11T72ICW5eL5Ig==" + }, + "@svgr/babel-plugin-remove-jsx-attribute": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-4.2.0.tgz", + "integrity": "sha512-3XHLtJ+HbRCH4n28S7y/yZoEQnRpl0tvTZQsHqvaeNXPra+6vE5tbRliH3ox1yZYPCxrlqaJT/Mg+75GpDKlvQ==" + }, + "@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-4.2.0.tgz", + "integrity": "sha512-yTr2iLdf6oEuUE9MsRdvt0NmdpMBAkgK8Bjhl6epb+eQWk6abBaX3d65UZ3E3FWaOwePyUgNyNCMVG61gGCQ7w==" + }, + "@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz", + "integrity": "sha512-U9m870Kqm0ko8beHawRXLGLvSi/ZMrl89gJ5BNcT452fAjtF2p4uRzXkdzvGJJJYBgx7BmqlDjBN/eCp5AAX2w==" + }, + "@svgr/babel-plugin-svg-dynamic-title": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.3.tgz", + "integrity": "sha512-w3Be6xUNdwgParsvxkkeZb545VhXEwjGMwExMVBIdPQJeyMQHqm9Msnb2a1teHBqUYL66qtwfhNkbj1iarCG7w==" + }, + "@svgr/babel-plugin-svg-em-dimensions": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-4.2.0.tgz", + "integrity": "sha512-C0Uy+BHolCHGOZ8Dnr1zXy/KgpBOkEUYY9kI/HseHVPeMbluaX3CijJr7D4C5uR8zrc1T64nnq/k63ydQuGt4w==" + }, + "@svgr/babel-plugin-transform-react-native-svg": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-4.2.0.tgz", + "integrity": "sha512-7YvynOpZDpCOUoIVlaaOUU87J4Z6RdD6spYN4eUb5tfPoKGSF9OG2NuhgYnq4jSkAxcpMaXWPf1cePkzmqTPNw==" + }, + "@svgr/babel-plugin-transform-svg-component": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz", + "integrity": "sha512-hYfYuZhQPCBVotABsXKSCfel2slf/yvJY8heTVX1PCTaq/IgASq1IyxPPKJ0chWREEKewIU/JMSsIGBtK1KKxw==" + }, + "@svgr/babel-preset": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-4.3.3.tgz", + "integrity": "sha512-6PG80tdz4eAlYUN3g5GZiUjg2FMcp+Wn6rtnz5WJG9ITGEF1pmFdzq02597Hn0OmnQuCVaBYQE1OVFAnwOl+0A==", + "requires": { + "@svgr/babel-plugin-add-jsx-attribute": "^4.2.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^4.2.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^4.2.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^4.2.0", + "@svgr/babel-plugin-svg-dynamic-title": "^4.3.3", + "@svgr/babel-plugin-svg-em-dimensions": "^4.2.0", + "@svgr/babel-plugin-transform-react-native-svg": "^4.2.0", + "@svgr/babel-plugin-transform-svg-component": "^4.2.0" + } + }, + "@svgr/core": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-4.3.3.tgz", + "integrity": "sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w==", + "requires": { + "@svgr/plugin-jsx": "^4.3.3", + "camelcase": "^5.3.1", + "cosmiconfig": "^5.2.1" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + } + } + }, + "@svgr/hast-util-to-babel-ast": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.3.2.tgz", + "integrity": "sha512-JioXclZGhFIDL3ddn4Kiq8qEqYM2PyDKV0aYno8+IXTLuYt6TOgHUbUAAFvqtb0Xn37NwP0BTHglejFoYr8RZg==", + "requires": { + "@babel/types": "^7.4.4" + } + }, + "@svgr/plugin-jsx": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz", + "integrity": "sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w==", + "requires": { + "@babel/core": "^7.4.5", + "@svgr/babel-preset": "^4.3.3", + "@svgr/hast-util-to-babel-ast": "^4.3.2", + "svg-parser": "^2.0.0" + } + }, + "@svgr/plugin-svgo": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz", + "integrity": "sha512-PrMtEDUWjX3Ea65JsVCwTIXuSqa3CG9px+DluF1/eo9mlDrgrtFE7NE/DjdhjJgSM9wenlVBzkzneSIUgfUI/w==", + "requires": { + "cosmiconfig": "^5.2.1", + "merge-deep": "^3.0.2", + "svgo": "^1.2.2" + } + }, + "@svgr/webpack": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-4.3.3.tgz", + "integrity": "sha512-bjnWolZ6KVsHhgyCoYRFmbd26p8XVbulCzSG53BDQqAr+JOAderYK7CuYrB3bDjHJuF6LJ7Wrr42+goLRV9qIg==", + "requires": { + "@babel/core": "^7.4.5", + "@babel/plugin-transform-react-constant-elements": "^7.0.0", + "@babel/preset-env": "^7.4.5", + "@babel/preset-react": "^7.0.0", + "@svgr/core": "^4.3.3", + "@svgr/plugin-jsx": "^4.3.3", + "@svgr/plugin-svgo": "^4.3.1", + "loader-utils": "^1.2.3" + } + }, + "@testing-library/dom": { + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-6.16.0.tgz", + "integrity": "sha512-lBD88ssxqEfz0wFL6MeUyyWZfV/2cjEZZV3YRpb2IoJRej/4f1jB0TzqIOznTpfR1r34CNesrubxwIlAQ8zgPA==", + "requires": { + "@babel/runtime": "^7.8.4", + "@sheerun/mutationobserver-shim": "^0.3.2", + "@types/testing-library__dom": "^6.12.1", + "aria-query": "^4.0.2", + "dom-accessibility-api": "^0.3.0", + "pretty-format": "^25.1.0", + "wait-for-expect": "^3.0.2" + }, + "dependencies": { + "@jest/types": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz", + "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, + "@types/yargs": { + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.5.tgz", + "integrity": "sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "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==", + "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==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "requires": { + "@jest/types": "^25.5.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@testing-library/jest-dom": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-4.2.4.tgz", + "integrity": "sha512-j31Bn0rQo12fhCWOUWy9fl7wtqkp7In/YP2p5ZFyRuiiB9Qs3g+hS4gAmDWONbAHcRmVooNJ5eOHQDCOmUFXHg==", + "requires": { + "@babel/runtime": "^7.5.1", + "chalk": "^2.4.1", + "css": "^2.2.3", + "css.escape": "^1.5.1", + "jest-diff": "^24.0.0", + "jest-matcher-utils": "^24.0.0", + "lodash": "^4.17.11", + "pretty-format": "^24.0.0", + "redent": "^3.0.0" + } + }, + "@testing-library/react": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-9.5.0.tgz", + "integrity": "sha512-di1b+D0p+rfeboHO5W7gTVeZDIK5+maEgstrZbWZSSvxDyfDRkkyBE1AJR5Psd6doNldluXlCWqXriUfqu/9Qg==", + "requires": { + "@babel/runtime": "^7.8.4", + "@testing-library/dom": "^6.15.0", + "@types/testing-library__react": "^9.1.2" + } + }, + "@testing-library/user-event": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-7.2.1.tgz", + "integrity": "sha512-oZ0Ib5I4Z2pUEcoo95cT1cr6slco9WY7yiPpG+RGNkj8YcYgJnM7pXmYmorNOReh8MIGcKSqXyeGjxnr8YiZbA==" + }, + "@trendmicro/react-sidenav": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@trendmicro/react-sidenav/-/react-sidenav-0.5.0.tgz", + "integrity": "sha512-NBitXTtBda763gcU27hQu6zTnq4dq1ngoB3U1h8oK2WowdTl757mqMOnuDa1dU1dgND+YLY5Q96s5NoUOjfvqA==", + "requires": { + "chained-function": "^0.5.0", + "classnames": "^2.2.5", + "prop-types": "^15.6.0", + "uncontrollable": "^7.1.1", + "warning": "^3.0.0" + } + }, + "@tweenjs/tween.js": { + "version": "18.6.0", + "resolved": "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-18.6.0.tgz", + "integrity": "sha512-z45HU0G0e/SenbvGdAlTpUR5Hur5zwZXQcqfI+f7EnVHdeb2oMI2rQghEePu7uXuvBC0nuKWG5YtZ1nWbuvqzQ==" + }, + "@types/babel__core": { + "version": "7.1.9", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.9.tgz", + "integrity": "sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw==", + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.1.tgz", + "integrity": "sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew==", + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", + "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.13.tgz", + "integrity": "sha512-i+zS7t6/s9cdQvbqKDARrcbrPvtJGlbYsMkazo03nTAK3RX9FNrLllXys22uiTGJapPOTZTQ35nHh4ISph4SLQ==", + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@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==" + }, + "@types/eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==" + }, + "@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/history": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.7.tgz", + "integrity": "sha512-2xtoL22/3Mv6a70i4+4RB7VgbDDORoWwjcqeNysojZA0R7NK17RbY5Gof/2QiFfJgX+KkWghbwJ+d/2SB8Ndzg==" + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==" + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "24.9.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.9.1.tgz", + "integrity": "sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q==", + "requires": { + "jest-diff": "^24.3.0" + } + }, + "@types/json-schema": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", + "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==" + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" + }, + "@types/node": { + "version": "12.12.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.37.tgz", + "integrity": "sha512-4mXKoDptrXAwZErQHrLzpe0FN/0Wmf5JRniSVIdwUrtDf9wnmEV1teCNLBo/TwuXhkK/bVegoEn/wmb+x0AuPg==" + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "@types/prop-types": { + "version": "15.7.3", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", + "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==" + }, + "@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==" + }, + "@types/react": { + "version": "16.9.34", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.34.tgz", + "integrity": "sha512-8AJlYMOfPe1KGLKyHpflCg5z46n0b5DbRfqDksxBLBTUpB75ypDBAO9eCUcjNwE6LCUslwTz00yyG/X9gaVtow==", + "requires": { + "@types/prop-types": "*", + "csstype": "^2.2.0" + } + }, + "@types/react-dom": { + "version": "16.9.8", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.8.tgz", + "integrity": "sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA==", + "requires": { + "@types/react": "*" + } + }, + "@types/react-router": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.8.tgz", + "integrity": "sha512-HzOyJb+wFmyEhyfp4D4NYrumi+LQgQL/68HvJO+q6XtuHSDvw6Aqov7sCAhjbNq3bUPgPqbdvjXC5HeB2oEAPg==", + "requires": { + "@types/history": "*", + "@types/react": "*" + } + }, + "@types/react-router-dom": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.1.5.tgz", + "integrity": "sha512-ArBM4B1g3BWLGbaGvwBGO75GNFbLDUthrDojV2vHLih/Tq8M+tgvY1DSwkuNrPSwdp/GUL93WSEpTZs8nVyJLw==", + "requires": { + "@types/history": "*", + "@types/react": "*", + "@types/react-router": "*" + } + }, + "@types/react-sidebar": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/react-sidebar/-/react-sidebar-3.0.0.tgz", + "integrity": "sha512-9FsJAAzl26nG0L5Yo446e5/5idJxVWktgrp6CiBfizJoTDYr0BkTpZFx3+ucDoy++OYDheWhCIwRtPFEHZOiKQ==", + "requires": { + "@types/react": "*" + } + }, + "@types/react-transition-group": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.0.tgz", + "integrity": "sha512-/QfLHGpu+2fQOqQaXh8MG9q03bFENooTb/it4jr5kKaZlDQfWvjqWZg48AwzPVMBHlRuTRAY7hRHCEOXz5kV6w==", + "requires": { + "@types/react": "*" + } + }, + "@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==" + }, + "@types/testing-library__dom": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/testing-library__dom/-/testing-library__dom-6.14.0.tgz", + "integrity": "sha512-sMl7OSv0AvMOqn1UJ6j1unPMIHRXen0Ita1ujnMX912rrOcawe4f7wu0Zt9GIQhBhJvH2BaibqFgQ3lP+Pj2hA==", + "requires": { + "pretty-format": "^24.3.0" + } + }, + "@types/testing-library__react": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/@types/testing-library__react/-/testing-library__react-9.1.3.tgz", + "integrity": "sha512-iCdNPKU3IsYwRK9JieSYAiX0+aYDXOGAmrC/3/M7AqqSDKnWWVv07X+Zk1uFSL7cMTUYzv4lQRfohucEocn5/w==", + "requires": { + "@types/react-dom": "*", + "@types/testing-library__dom": "*", + "pretty-format": "^25.1.0" + }, + "dependencies": { + "@jest/types": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz", + "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, + "@types/yargs": { + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.5.tgz", + "integrity": "sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "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==", + "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==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "requires": { + "@jest/types": "^25.5.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@types/yargs": { + "version": "13.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.9.tgz", + "integrity": "sha512-xrvhZ4DZewMDhoH1utLtOAwYQy60eYFoXeje30TzM3VOvQlBwQaEpKFq5m34k1wOw2AKIi2pwtiAjdmhvlBUzg==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==" + }, + "@types/yup": { + "version": "0.29.3", + "resolved": "https://registry.npmjs.org/@types/yup/-/yup-0.29.3.tgz", + "integrity": "sha512-XxZFKnxzTfm+DR8MMBA35UUXfUPmjPpi8HJ90VZg7q/LIbtiOhVGJ26gNnATcflcpnIyf2Qm9A+oEhswaqoDpA==" + }, + "@typescript-eslint/eslint-plugin": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz", + "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==", + "requires": { + "@typescript-eslint/experimental-utils": "2.34.0", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz", + "integrity": "sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==", + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.34.0.tgz", + "integrity": "sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==", + "requires": { + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "2.34.0", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "@typescript-eslint/typescript-estree": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz", + "integrity": "sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==", + "requires": { + "debug": "^4.1.1", + "eslint-visitor-keys": "^1.1.0", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" + } + } + }, + "@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "requires": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==" + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "requires": { + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==" + }, + "@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", + "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", + "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", + "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", + "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", + "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", + "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "abab": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.4.tgz", + "integrity": "sha512-Eu9ELJWCz/c1e9gTiCY+FceWxcqzjYEbqMgtndnuSqZSUCOL73TWNK2mHfIj4Cw2E/ongOp+JISVNCmovt2KYQ==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "accessor-fn": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/accessor-fn/-/accessor-fn-1.3.0.tgz", + "integrity": "sha512-NC5BYjrfBonksWxXrZ1WsPnh70sTQC2Uas9IL0RHQN5OETP4dO/bviPxZ7zTOahhRQ7o6avJg3ImJvRbuyHASg==" + }, + "acorn": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", + "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==" + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" + } + } + }, + "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==" + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==" + }, + "address": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==" + }, + "adjust-sourcemap-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz", + "integrity": "sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA==", + "requires": { + "assert": "1.4.1", + "camelcase": "5.0.0", + "loader-utils": "1.2.3", + "object-path": "0.11.4", + "regex-parser": "2.2.10" + }, + "dependencies": { + "camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==" + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + } + } + }, + "aframe": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/aframe/-/aframe-1.0.4.tgz", + "integrity": "sha512-iG/4VyRt22zUPxDsFjP4SHUXNPGIStM2hHX/iPblht6dtN8m09e7LAaFq4iQdXoT0EkZBWEVmXVBF1J7Tca3QQ==", + "requires": { + "custom-event-polyfill": "^1.0.6", + "debug": "github:ngokevin/debug#noTimestamp", + "deep-assign": "^2.0.0", + "document-register-element": "github:dmarcos/document-register-element#8ccc532b7f3744be954574caf3072a5fd260ca90", + "load-bmfont": "^1.2.3", + "object-assign": "^4.0.1", + "present": "0.0.6", + "promise-polyfill": "^3.1.0", + "super-animejs": "^3.1.0", + "super-three": "^0.111.6", + "three-bmfont-text": "github:dmarcos/three-bmfont-text#1babdf8507c731a18f8af3b807292e2b9740955e", + "webvr-polyfill": "^0.10.10" + }, + "dependencies": { + "debug": { + "version": "github:ngokevin/debug#ef5f8e66d49ce8bc64c6f282c15f8b7164409e3a", + "from": "github:ngokevin/debug#noTimestamp" + }, + "document-register-element": { + "version": "github:dmarcos/document-register-element#8ccc532b7f3744be954574caf3072a5fd260ca90", + "from": "github:dmarcos/document-register-element#8ccc532b7f3744be954574caf3072a5fd260ca90" + }, + "three-bmfont-text": { + "version": "github:dmarcos/three-bmfont-text#1babdf8507c731a18f8af3b807292e2b9740955e", + "from": "github:dmarcos/three-bmfont-text#1babdf8507c731a18f8af3b807292e2b9740955e", + "requires": { + "array-shuffle": "^1.0.1", + "inherits": "^2.0.1", + "layout-bmfont-text": "^1.2.0", + "nice-color-palettes": "^1.0.1", + "object-assign": "^4.0.1", + "quad-indices": "^2.0.1", + "three-buffer-vertex-data": "github:dmarcos/three-buffer-vertex-data#69378fc58daf27d3b1d930df9f233473e4a4818c" + } + }, + "three-buffer-vertex-data": { + "version": "github:dmarcos/three-buffer-vertex-data#69378fc58daf27d3b1d930df9f233473e4a4818c", + "from": "github:dmarcos/three-buffer-vertex-data#69378fc58daf27d3b1d930df9f233473e4a4818c", + "requires": { + "flatten-vertex-data": "^1.0.0" + } + } + } + }, + "aframe-extras": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/aframe-extras/-/aframe-extras-6.1.0.tgz", + "integrity": "sha512-4UXIRN5juhPCC2DqHQ+pBaFViNEbpXN+TkR7GfF8eJlPbkygeDLlJsNN7cWGIRLRzw4JGGl0tcw8MHlqzH9jtg==", + "requires": { + "three-pathfinding": "^0.7.0" + } + }, + "aframe-forcegraph-component": { + "version": "2.27.1", + "resolved": "https://registry.npmjs.org/aframe-forcegraph-component/-/aframe-forcegraph-component-2.27.1.tgz", + "integrity": "sha512-eB7oSIpCg413++I8Ce3oMrG/T3Or48Xwyy5+ildaeYKlI0Tf7M1C7h3l6mGR1WUalB7kxgSbJPG18+ZcLqQxjg==", + "requires": { + "accessor-fn": "^1.3.0", + "three-forcegraph": "^1.36.1" + } + }, + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" + }, + "an-array": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/an-array/-/an-array-1.0.0.tgz", + "integrity": "sha1-wSWlu4JXd4419LT2qpx9D6nkJmU=" + }, + "ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "requires": { + "ansi-wrap": "^0.1.0" + } + }, + "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==", + "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==" + } + } + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "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==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=" + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", + "requires": { + "buffer-equal": "^1.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "requires": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + } + }, + "arity-n": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz", + "integrity": "sha1-2edrEXM+CFacCEeuezmyhgswt0U=" + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=" + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + }, + "array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + } + }, + "array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", + "requires": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + } + } + }, + "array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + } + } + }, + "array-shuffle": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-shuffle/-/array-shuffle-1.0.1.tgz", + "integrity": "sha1-fqSIKjVrS8pfVF4LblLq9tlxVXo=" + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==" + }, + "array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "requires": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "as-number": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/as-number/-/as-number-1.0.0.tgz", + "integrity": "sha1-rLJ+NPj52KsNqeN287iVmGD4CmY=" + }, + "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==", + "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==", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "requires": { + "util": "0.10.3" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=" + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "requires": { + "lodash": "^4.17.14" + } + }, + "async-done": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" + }, + "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==" + }, + "async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", + "requires": { + "async-done": "^1.2.2" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "autoprefixer": { + "version": "9.8.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", + "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + } + }, + "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=" + }, + "aws4": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", + "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==" + }, + "axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==" + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "babel-eslint": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.3.tgz", + "integrity": "sha512-z3U7eMY6r/3f3/JB9mTsLjyxrv0Yb1zb8PCWCLpguxfCzBIZUwy23R1t/XKewP+8mEN2Ck8Dtr4q20z6ce6SoA==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, + "babel-extract-comments": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz", + "integrity": "sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==", + "requires": { + "babylon": "^6.18.0" + } + }, + "babel-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", + "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", + "requires": { + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.9.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" + } + }, + "babel-loader": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", + "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", + "requires": { + "find-cache-dir": "^2.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1", + "pify": "^4.0.1" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + } + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-istanbul": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", + "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + } + } + }, + "babel-plugin-jest-hoist": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", + "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", + "requires": { + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "requires": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + }, + "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==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "parse-json": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.1.tgz", + "integrity": "sha512-ztoZ4/DYeXQq4E21v169sC8qWINGpcosGv9XhTDvg9/hWvx/zrFkc9BiWxR58OJLHGk28j5BL0SDLeV2WmFZlQ==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + }, + "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==" + } + } + }, + "babel-plugin-named-asset-import": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.6.tgz", + "integrity": "sha512-1aGDUfL1qOOIoqk9QKGIo2lANk+C7ko/fqH0uIyC71x3PEGz0uVP8ISgfEsFuG+FKmjHTvFK/nNM8dowpmUxLA==" + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" + } + }, + "babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" + }, + "babel-preset-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", + "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", + "requires": { + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.9.0" + } + }, + "babel-preset-react-app": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-9.1.2.tgz", + "integrity": "sha512-k58RtQOKH21NyKtzptoAvtAODuAJJs3ZhqBMl456/GnXEQ/0La92pNmwgWoMn5pBTrsvk3YYXdY7zpY4e3UIxA==", + "requires": { + "@babel/core": "7.9.0", + "@babel/plugin-proposal-class-properties": "7.8.3", + "@babel/plugin-proposal-decorators": "7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "7.8.3", + "@babel/plugin-proposal-numeric-separator": "7.8.3", + "@babel/plugin-proposal-optional-chaining": "7.9.0", + "@babel/plugin-transform-flow-strip-types": "7.9.0", + "@babel/plugin-transform-react-display-name": "7.8.3", + "@babel/plugin-transform-runtime": "7.9.0", + "@babel/preset-env": "7.9.0", + "@babel/preset-react": "7.9.1", + "@babel/preset-typescript": "7.9.0", + "@babel/runtime": "7.9.0", + "babel-plugin-macros": "2.8.0", + "babel-plugin-transform-react-remove-prop-types": "0.4.24" + }, + "dependencies": { + "@babel/core": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", + "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.0", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helpers": "^7.9.0", + "@babel/parser": "^7.9.0", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", + "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", + "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz", + "integrity": "sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/runtime": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.0.tgz", + "integrity": "sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + } + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + }, + "bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", + "requires": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bezier-js": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/bezier-js/-/bezier-js-2.6.1.tgz", + "integrity": "sha512-jelZM33eNzcZ9snJ/5HqJLw3IzXvA8RFcBjkdOB8SDYyOvW8Y2tTosojAiBTnD1MhbHoWUYNbxUXxBl61TxbRg==" + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "bn.js": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz", + "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" + } + } + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "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==", + "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==", + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } + } + }, + "browserify-sign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.0.tgz", + "integrity": "sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA==", + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.2", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.13.0.tgz", + "integrity": "sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ==", + "requires": { + "caniuse-lite": "^1.0.30001093", + "electron-to-chromium": "^1.3.488", + "escalade": "^3.0.1", + "node-releases": "^1.1.58" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=" + }, + "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==" + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" + }, + "buffer-to-arraybuffer": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz", + "integrity": "sha1-YGSkD6dutDxyOrqe+PbhIW0QURo=" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "cacache": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", + "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", + "requires": { + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" + }, + "camel-case": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.1.tgz", + "integrity": "sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==", + "requires": { + "pascal-case": "^3.1.1", + "tslib": "^1.10.0" + } + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001109", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001109.tgz", + "integrity": "sha512-4JIXRodHzdS3HdK8nSgIqXYLExOvG+D2/EenSvcub2Kp3QEADjo2v2oUn5g0n0D+UNwG9BtwKOyGcSq2qvQXvQ==" + }, + "canvas-color-tracker": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/canvas-color-tracker/-/canvas-color-tracker-1.1.2.tgz", + "integrity": "sha512-xaWufeNHVrvsPTWfqk7wQ4202wFtWWQc9jVSXbCpYIJV1sLxG6eVgS9qCNrET/u4ZxgDNIe8J/G0Nw8r44/KtQ==", + "requires": { + "tinycolor2": "^1.4.1" + } + }, + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "requires": { + "rsvp": "^4.8.4" + } + }, + "cardboard-vr-display": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/cardboard-vr-display/-/cardboard-vr-display-1.0.19.tgz", + "integrity": "sha512-+MjcnWKAkb95p68elqZLDPzoiF/dGncQilLGvPBM5ZorABp/ao3lCs7nnRcYBckmuNkg1V/5rdGDKoUaCVsHzQ==", + "requires": { + "gl-preserve-state": "^1.0.0", + "nosleep.js": "^0.7.0", + "webvr-polyfill-dpdb": "^1.0.17" + } + }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz", + "integrity": "sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ==" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "chained-function": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/chained-function/-/chained-function-0.5.0.tgz", + "integrity": "sha1-JWS73994AxlL6/daayvQQe3iOzo=" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "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==" + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "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==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "classnames": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", + "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" + }, + "clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "requires": { + "source-map": "~0.6.0" + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" + }, + "clipboard": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.6.tgz", + "integrity": "sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg==", + "optional": true, + "requires": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=" + }, + "clone-deep": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", + "integrity": "sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY=", + "requires": { + "for-own": "^0.1.3", + "is-plain-object": "^2.0.1", + "kind-of": "^3.0.2", + "lazy-cache": "^1.0.3", + "shallow-clone": "^0.1.2" + }, + "dependencies": { + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "requires": { + "for-in": "^1.0.1" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" + }, + "cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "clsx": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", + "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==" + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "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=" + }, + "collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", + "requires": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", + "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "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==", + "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=" + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" + }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "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==" + }, + "common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "compose-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz", + "integrity": "sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8=", + "requires": { + "arity-n": "^1.0.4" + } + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "confusing-browser-globals": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", + "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==" + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==" + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "copy-props": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", + "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", + "requires": { + "each-props": "^1.3.0", + "is-plain-object": "^2.0.1" + } + }, + "copy-to-clipboard": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", + "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", + "requires": { + "toggle-selection": "^1.0.6" + } + }, + "core-js": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==" + }, + "core-js-compat": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", + "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "requires": { + "browserslist": "^4.8.5", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + } + } + }, + "core-js-pure": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.5.tgz", + "integrity": "sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==" + }, + "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=" + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } + } + }, + "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==", + "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==", + "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" + } + }, + "create-react-context": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.3.0.tgz", + "integrity": "sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw==", + "requires": { + "gud": "^1.0.0", + "warning": "^4.0.3" + }, + "dependencies": { + "warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "requires": { + "loose-envify": "^1.0.0" + } + } + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + } + }, + "css-blank-pseudo": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", + "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", + "requires": { + "postcss": "^7.0.5" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-has-pseudo": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", + "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^5.0.0-rc.4" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "css-loader": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.2.tgz", + "integrity": "sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA==", + "requires": { + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.23", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.1.1", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.0.2", + "schema-utils": "^2.6.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + } + } + }, + "css-prefers-color-scheme": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", + "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", + "requires": { + "postcss": "^7.0.5" + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + } + }, + "css-vendor": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", + "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", + "requires": { + "@babel/runtime": "^7.8.3", + "is-in-browser": "^1.0.2" + } + }, + "css-what": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.3.0.tgz", + "integrity": "sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg==" + }, + "css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=" + }, + "cssdb": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", + "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==" + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=" + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=" + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==" + }, + "csso": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", + "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", + "requires": { + "css-tree": "1.0.0-alpha.39" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", + "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", + "requires": { + "mdn-data": "2.0.6", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", + "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==" + } + } + }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + }, + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "requires": { + "cssom": "0.3.x" + } + }, + "csstype": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.10.tgz", + "integrity": "sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w==" + }, + "custom-event-polyfill": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/custom-event-polyfill/-/custom-event-polyfill-1.0.7.tgz", + "integrity": "sha512-TDDkd5DkaZxZFM8p+1I3yAlvM3rSr1wbrOliG4yJiwinMZN8z/iGL7BTlDkrJcYTmgUSb4ywVCc3ZaUtOtC76w==" + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "d3": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-5.16.0.tgz", + "integrity": "sha512-4PL5hHaHwX4m7Zr1UapXW23apo6pexCgdetdJ5kTmADpG/7T9Gkxw0M0tf/pjoB63ezCCm0u5UaFYy2aMt0Mcw==", + "requires": { + "d3-array": "1", + "d3-axis": "1", + "d3-brush": "1", + "d3-chord": "1", + "d3-collection": "1", + "d3-color": "1", + "d3-contour": "1", + "d3-dispatch": "1", + "d3-drag": "1", + "d3-dsv": "1", + "d3-ease": "1", + "d3-fetch": "1", + "d3-force": "1", + "d3-format": "1", + "d3-geo": "1", + "d3-hierarchy": "1", + "d3-interpolate": "1", + "d3-path": "1", + "d3-polygon": "1", + "d3-quadtree": "1", + "d3-random": "1", + "d3-scale": "2", + "d3-scale-chromatic": "1", + "d3-selection": "1", + "d3-shape": "1", + "d3-time": "1", + "d3-time-format": "2", + "d3-timer": "1", + "d3-transition": "1", + "d3-voronoi": "1", + "d3-zoom": "1" + } + }, + "d3-array": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", + "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==" + }, + "d3-axis": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.12.tgz", + "integrity": "sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ==" + }, + "d3-binarytree": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/d3-binarytree/-/d3-binarytree-0.1.8.tgz", + "integrity": "sha512-+N2TjL9CAGMkjwlnsx/wUiHJtAnik6S63AfvWS6RYkraD60ixgI4S7q3sMR5ugLMXWckWhZfvUpZQzwAzkm/lA==" + }, + "d3-brush": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.1.5.tgz", + "integrity": "sha512-rEaJ5gHlgLxXugWjIkolTA0OyMvw8UWU1imYXy1v642XyyswmI1ybKOv05Ft+ewq+TFmdliD3VuK0pRp1VT/5A==", + "requires": { + "d3-dispatch": "1", + "d3-drag": "1", + "d3-interpolate": "1", + "d3-selection": "1", + "d3-transition": "1" + } + }, + "d3-chord": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-1.0.6.tgz", + "integrity": "sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA==", + "requires": { + "d3-array": "1", + "d3-path": "1" + } + }, + "d3-collection": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz", + "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==" + }, + "d3-color": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", + "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" + }, + "d3-contour": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-1.3.2.tgz", + "integrity": "sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg==", + "requires": { + "d3-array": "^1.1.1" + } + }, + "d3-dispatch": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz", + "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==" + }, + "d3-drag": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.5.tgz", + "integrity": "sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==", + "requires": { + "d3-dispatch": "1", + "d3-selection": "1" + } + }, + "d3-dsv": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.2.0.tgz", + "integrity": "sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==", + "requires": { + "commander": "2", + "iconv-lite": "0.4", + "rw": "1" + } + }, + "d3-ease": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.6.tgz", + "integrity": "sha512-SZ/lVU7LRXafqp7XtIcBdxnWl8yyLpgOmzAk0mWBI9gXNzLDx5ybZgnRbH9dN/yY5tzVBqCQ9avltSnqVwessQ==" + }, + "d3-fetch": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-1.2.0.tgz", + "integrity": "sha512-yC78NBVcd2zFAyR/HnUiBS7Lf6inSCoWcSxFfw8FYL7ydiqe80SazNwoffcqOfs95XaLo7yebsmQqDKSsXUtvA==", + "requires": { + "d3-dsv": "1" + } + }, + "d3-force": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.2.1.tgz", + "integrity": "sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg==", + "requires": { + "d3-collection": "1", + "d3-dispatch": "1", + "d3-quadtree": "1", + "d3-timer": "1" + } + }, + "d3-force-3d": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/d3-force-3d/-/d3-force-3d-2.1.0.tgz", + "integrity": "sha512-nMD4RUa2so/sx5iaMqjouHVbcf1mfF0lIoYrx7+3l8u/YWEBVFJFjIdGoUovLuDch3o0xBjmidDlvq85rIr/3A==", + "requires": { + "d3-binarytree": "^0.1.8", + "d3-dispatch": "^1.0.6", + "d3-octree": "^0.1.8", + "d3-quadtree": "^1.0.7", + "d3-timer": "^1.0.10" + } + }, + "d3-format": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.4.tgz", + "integrity": "sha512-TWks25e7t8/cqctxCmxpUuzZN11QxIA7YrMbram94zMQ0PXjE4LVIMe/f6a4+xxL8HQ3OsAFULOINQi1pE62Aw==" + }, + "d3-geo": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.12.1.tgz", + "integrity": "sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==", + "requires": { + "d3-array": "1" + } + }, + "d3-hierarchy": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz", + "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==" + }, + "d3-interpolate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz", + "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==", + "requires": { + "d3-color": "1" + } + }, + "d3-octree": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/d3-octree/-/d3-octree-0.1.8.tgz", + "integrity": "sha512-DCN9v/itq78qhZVbhOE/y7tLUQUHMtdKUg5N9aUDusgN5ANbNvGJFD1C6yjY8KeEoB8ONHzwN8xEoHb9Ww9joQ==" + }, + "d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + }, + "d3-polygon": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.6.tgz", + "integrity": "sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ==" + }, + "d3-quadtree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.7.tgz", + "integrity": "sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==" + }, + "d3-random": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-1.1.2.tgz", + "integrity": "sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ==" + }, + "d3-scale": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-2.2.2.tgz", + "integrity": "sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==", + "requires": { + "d3-array": "^1.2.0", + "d3-collection": "1", + "d3-format": "1", + "d3-interpolate": "1", + "d3-time": "1", + "d3-time-format": "2" + } + }, + "d3-scale-chromatic": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz", + "integrity": "sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg==", + "requires": { + "d3-color": "1", + "d3-interpolate": "1" + } + }, + "d3-selection": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.2.tgz", + "integrity": "sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==" + }, + "d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "requires": { + "d3-path": "1" + } + }, + "d3-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz", + "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==" + }, + "d3-time-format": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.2.3.tgz", + "integrity": "sha512-RAHNnD8+XvC4Zc4d2A56Uw0yJoM7bsvOlJR33bclxq399Rak/b9bhvu/InjxdWhPtkgU53JJcleJTGkNRnN6IA==", + "requires": { + "d3-time": "1" + } + }, + "d3-timer": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz", + "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==" + }, + "d3-transition": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.3.2.tgz", + "integrity": "sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==", + "requires": { + "d3-color": "1", + "d3-dispatch": "1", + "d3-ease": "1", + "d3-interpolate": "1", + "d3-selection": "^1.1.0", + "d3-timer": "1" + } + }, + "d3-voronoi": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.4.tgz", + "integrity": "sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==" + }, + "d3-zoom": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.8.3.tgz", + "integrity": "sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ==", + "requires": { + "d3-dispatch": "1", + "d3-drag": "1", + "d3-interpolate": "1", + "d3-selection": "1", + "d3-transition": "1" + } + }, + "damerau-levenshtein": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", + "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-joint": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/data-joint/-/data-joint-1.2.3.tgz", + "integrity": "sha512-un7896FtODs3x2v55w7aoXLcNYR47z6LcpAsUdWhbQ6tDVeZti0MZusMM+pzbXJ4Qn1A9WeGSGZgCf7GM65pQQ==", + "requires": { + "index-array-by": "^1.3.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "debounce": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.0.tgz", + "integrity": "sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-assign": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-2.0.0.tgz", + "integrity": "sha1-6+BrHwfwja5ZdiDj3RYi83GhxXI=", + "requires": { + "is-obj": "^1.0.0" + } + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "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=" + }, + "deepmerge": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" + }, + "default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "requires": { + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + }, + "default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=" + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", + "optional": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=" + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==" + }, + "detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "requires": { + "address": "^1.0.1", + "debug": "^2.6.0" + } + }, + "diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==" + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } + } + }, + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "requires": { + "arrify": "^1.0.1", + "path-type": "^3.0.0" + }, + "dependencies": { + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-accessibility-api": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.3.0.tgz", + "integrity": "sha512-PzwHEmsRP3IGY4gv/Ug+rMeaTIyTJvadCb+ujYXYeIylbHJezIyNToe8KfEgHTCEYyC+/bUghYOGg8yMGlZ6vA==" + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "requires": { + "utila": "~0.4" + } + }, + "dom-helpers": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.1.4.tgz", + "integrity": "sha512-TjMyeVUvNEnOnhzs6uAn9Ya47GmMo3qq7m+Lr/3ON0Rs5kHvb8I+SQYjLUSYn7qhEm0QjW0yrBkvz9yOrwwz1A==", + "requires": { + "@babel/runtime": "^7.8.7", + "csstype": "^2.6.7" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==" + } + } + }, + "dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.3.tgz", + "integrity": "sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA==", + "requires": { + "no-case": "^3.0.3", + "tslib": "^1.10.0" + } + }, + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "requires": { + "is-obj": "^2.0.0" + }, + "dependencies": { + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + } + } + }, + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" + }, + "dtype": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dtype/-/dtype-2.0.0.tgz", + "integrity": "sha1-zQUjI84GFETs0uj1dI9popvihDQ=" + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "requires": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "electron-to-chromium": { + "version": "1.3.516", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.516.tgz", + "integrity": "sha512-WDM5AAQdOrvLqSX8g3Zd5AujBXfMxf96oeZkff0U2HF5op3tjShE+on2yay3r1UD4M9I3p0iHpAS4+yV8U8A9A==" + }, + "elliptic": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", + "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "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" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } + } + }, + "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==" + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", + "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "entities": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==" + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "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==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "escalade": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz", + "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "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=" + }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "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" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.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==", + "requires": { + "eslint-visitor-keys": "^1.1.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==", + "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==", + "requires": { + "type-fest": "^0.8.1" + } + }, + "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==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" + }, + "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==" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "eslint-config-react-app": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz", + "integrity": "sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ==", + "requires": { + "confusing-browser-globals": "^1.0.9" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", + "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + } + }, + "eslint-loader": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-3.0.3.tgz", + "integrity": "sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw==", + "requires": { + "fs-extra": "^8.1.0", + "loader-fs-cache": "^1.0.2", + "loader-utils": "^1.2.3", + "object-hash": "^2.0.1", + "schema-utils": "^2.6.1" + } + }, + "eslint-module-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.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==", + "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=", + "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=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "requires": { + "find-up": "^2.1.0" + } + } + } + }, + "eslint-plugin-flowtype": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz", + "integrity": "sha512-W5hLjpFfZyZsXfo5anlu7HM970JBDqbEshAJUkeczP6BFCIfJXuiIBQXyberLRtOStT0OGPF8efeTbxlHk4LpQ==", + "requires": { + "lodash": "^4.17.15" + } + }, + "eslint-plugin-import": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.0.tgz", + "integrity": "sha512-NK42oA0mUc8Ngn4kONOPsPB1XhbUvNHqF+g307dPV28aknPoiNnKLFd9em4nkswwepdF5ouieqv5Th/63U7YJQ==", + "requires": { + "array-includes": "^3.0.3", + "array.prototype.flat": "^1.2.1", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.2", + "eslint-module-utils": "^2.4.1", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.0", + "read-pkg-up": "^2.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.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==", + "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=", + "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=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "^2.0.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + } + } + }, + "eslint-plugin-jsx-a11y": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz", + "integrity": "sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg==", + "requires": { + "@babel/runtime": "^7.4.5", + "aria-query": "^3.0.0", + "array-includes": "^3.0.3", + "ast-types-flow": "^0.0.7", + "axobject-query": "^2.0.2", + "damerau-levenshtein": "^1.0.4", + "emoji-regex": "^7.0.2", + "has": "^1.0.3", + "jsx-ast-utils": "^2.2.1" + }, + "dependencies": { + "aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + } + } + }, + "eslint-plugin-react": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.18.0.tgz", + "integrity": "sha512-p+PGoGeV4SaZRDsXqdj9OWcOrOpZn8gXoGPcIQTzo2IDMbAKhNDnME9myZWqO3Ic4R3YmwAZ1lDjWl2R2hMUVQ==", + "requires": { + "array-includes": "^3.1.1", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.2.3", + "object.entries": "^1.1.1", + "object.fromentries": "^2.0.2", + "object.values": "^1.1.1", + "prop-types": "^15.7.2", + "resolve": "^1.14.2" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "requires": { + "esutils": "^2.0.2" + } + } + } + }, + "eslint-plugin-react-hooks": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz", + "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==" + }, + "eslint-scope": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", + "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "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==" + }, + "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==", + "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==" + } + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "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==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "eventemitter3": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==" + }, + "events": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==" + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "requires": { + "original": "^1.0.0" + } + }, + "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==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "exec-sh": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", + "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==" + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exenv": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", + "integrity": "sha1-KueOhdmJQVhnCwPUe+wfA72Ru50=" + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "expect": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", + "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", + "requires": { + "@jest/types": "^24.9.0", + "ansi-styles": "^3.2.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.9.0" + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + } + } + }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "requires": { + "bser": "2.1.1" + } + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "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==", + "requires": { + "flat-cache": "^2.0.1" + } + }, + "file-loader": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz", + "integrity": "sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==", + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.5.0" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, + "filesize": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.0.1.tgz", + "integrity": "sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg==" + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + } + }, + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==" + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "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==" + }, + "flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", + "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==" + }, + "flatten-vertex-data": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flatten-vertex-data/-/flatten-vertex-data-1.0.2.tgz", + "integrity": "sha512-BvCBFK2NZqerFTdMDgqfHBwxYWnxeCkwONsw6PvBMcUXqo8U/KDWwmXhqx1x2kLIg7DqIsJfOaJFOmlua3Lxuw==", + "requires": { + "dtype": "^2.0.0" + } + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "fn-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-3.0.0.tgz", + "integrity": "sha512-eNMNr5exLoavuAMhIUVsOKF79SWd/zG104ef6sxBTSw+cZc6BXdQXDvYcGvp0VbxVVSp1XDUNoz7mg1xMtSznA==" + }, + "follow-redirects": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.12.1.tgz", + "integrity": "sha512-tmRv0AVuR7ZyouUHLeNSiO6pqulF7dYa3s19c6t+wz9LD69/uSzdMxJ2S91nTI9U3rt/IldxpzMOFejp6f0hjg==" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "requires": { + "for-in": "^1.0.1" + } + }, + "force-graph": { + "version": "1.32.3", + "resolved": "https://registry.npmjs.org/force-graph/-/force-graph-1.32.3.tgz", + "integrity": "sha512-cwjkkf/rlc5zt+ovGbRONyR7gRke3naHteiOzUUHGb2+33z3/xFs1BjNFNpOO/TK7BfnBcRU3xHlJ7dhqtXQ/w==", + "requires": { + "@tweenjs/tween.js": "^18.6.0", + "accessor-fn": "^1.3.0", + "bezier-js": "^2.6.1", + "canvas-color-tracker": "^1.1.2", + "d3-array": "^2.4.0", + "d3-drag": "^1.2.5", + "d3-force-3d": "^2.1.0", + "d3-scale": "^3.2.1", + "d3-scale-chromatic": "^1.5.0", + "d3-selection": "^1.4.2", + "d3-zoom": "^1.8.3", + "index-array-by": "^1.3.0", + "kapsule": "^1.13.3", + "lodash.throttle": "^4.1.1" + }, + "dependencies": { + "d3-array": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.5.0.tgz", + "integrity": "sha512-U+CrYn19GmiKeI9qU1RLV1p5ZodBKXw64k9Z3Id6d11LLuZ4JdyCnMT6W/2b84bvqEMFU15zg/JC3/oRYTanVg==" + }, + "d3-scale": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.2.1.tgz", + "integrity": "sha512-huz5byJO/6MPpz6Q8d4lg7GgSpTjIZW/l+1MQkzKfu2u8P6hjaXaStOpmyrD6ymKoW87d2QVFCKvSjLwjzx/rA==", + "requires": { + "d3-array": "1.2.0 - 2", + "d3-format": "1", + "d3-interpolate": "^1.2.0", + "d3-time": "1", + "d3-time-format": "2" + } + } + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "fork-ts-checker-webpack-plugin": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz", + "integrity": "sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ==", + "requires": { + "babel-code-frame": "^6.22.0", + "chalk": "^2.4.1", + "chokidar": "^3.3.0", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==" + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.1.tgz", + "integrity": "sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==", + "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.4.0" + } + }, + "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==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "optional": true + }, + "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==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "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==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "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==", + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "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==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "formik": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/formik/-/formik-2.1.4.tgz", + "integrity": "sha512-oKz8S+yQBzuQVSEoxkqqJrKQS5XJASWGVn6mrs+oTWrBoHgByVwwI1qHiVc9GKDpZBU9vAxXYAKz2BvujlwunA==", + "requires": { + "deepmerge": "^2.1.1", + "hoist-non-react-statics": "^3.3.0", + "lodash": "^4.17.14", + "lodash-es": "^4.17.14", + "react-fast-compare": "^2.0.1", + "scheduler": "^0.18.0", + "tiny-warning": "^1.0.2", + "tslib": "^1.10.0" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fromentries": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.2.1.tgz", + "integrity": "sha512-Xu2Qh8yqYuDhQGOhD5iJGninErSfI9A3FrriD3tjUgV5VbJFeH8vfgZ9HnC6jWN80QDVNQK5vmxRAmEAp7Mevw==" + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "requires": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "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=" + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==" + }, + "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==" + }, + "get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + }, + "dependencies": { + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "gl-preserve-state": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gl-preserve-state/-/gl-preserve-state-1.0.0.tgz", + "integrity": "sha512-zQZ25l3haD4hvgJZ6C9+s0ebdkW9y+7U2qxvGu1uWOJh8a4RU+jURIKEQhf8elIlFpMH6CrAY2tH0mYrRjet3Q==" + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "requires": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" + }, + "glob-watcher": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", + "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", + "requires": { + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "normalize-path": "^3.0.0", + "object.defaults": "^1.1.0" + } + }, + "global": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", + "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "requires": { + "min-document": "^2.19.0", + "process": "~0.5.1" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "globby": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz", + "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==", + "requires": { + "array-union": "^1.0.1", + "dir-glob": "2.0.0", + "fast-glob": "^2.0.2", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "dependencies": { + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + } + } + }, + "glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "requires": { + "sparkles": "^1.0.0" + } + }, + "good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", + "optional": true, + "requires": { + "delegate": "^3.1.2" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" + }, + "gud": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", + "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" + }, + "gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "requires": { + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" + }, + "dependencies": { + "gulp-cli": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", + "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", + "requires": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.4.0", + "isobject": "^3.0.1", + "liftoff": "^3.1.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.2.0", + "yargs": "^7.1.0" + } + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "requires": { + "glogg": "^1.0.0" + } + }, + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + } + } + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "harmony-reflect": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz", + "integrity": "sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA==" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "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=" + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" + }, + "history": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.0.0.tgz", + "integrity": "sha512-3NyRMKIiFSJmIPdq7FxkNMJkQ7ZEtVblOQ38VtKaA0zZMW1Eo6Q6W8oDKEflr1kNNTItSnk4JMCO1deeSgbLLg==", + "requires": { + "@babel/runtime": "^7.7.6" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "requires": { + "react-is": "^16.7.0" + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "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==" + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=" + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=" + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "html-entities": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz", + "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==" + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" + }, + "html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "requires": { + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" + }, + "dependencies": { + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" + } + } + }, + "html-webpack-plugin": { + "version": "4.0.0-beta.11", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.11.tgz", + "integrity": "sha512-4Xzepf0qWxf8CGg7/WQM5qBB2Lc/NFI7MhU59eUDTkuQp3skZczH4UA1d6oQyDEIoMDgERVhRyTdtUPZ5s5HBg==", + "requires": { + "html-minifier-terser": "^5.0.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.15", + "pretty-error": "^2.1.1", + "tapable": "^1.1.3", + "util.promisify": "1.0.0" + }, + "dependencies": { + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + } + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, + "http-parser-js": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.2.tgz", + "integrity": "sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ==" + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "hyphenate-style-name": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", + "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" + }, + "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" + } + }, + "icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "requires": { + "postcss": "^7.0.14" + } + }, + "identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=", + "requires": { + "harmony-reflect": "^1.4.6" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" + }, + "immer": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/immer/-/immer-1.10.0.tgz", + "integrity": "sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg==" + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, + "index-array-by": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/index-array-by/-/index-array-by-1.3.0.tgz", + "integrity": "sha512-INSV8BJwW/IF9wj/hzq6tDQhc3AYBnQ/wY9mNIGiPEvxDI1sR0OaL1VQg74ZIZqg3fbmW5zQgf2Bxc51zDwRZg==" + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "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==" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "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==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==" + }, + "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==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + } + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.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=" + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-callable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==" + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" + }, + "is-docker": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.0.0.tgz", + "integrity": "sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==" + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "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=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" + }, + "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==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-in-browser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", + "integrity": "sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU=" + }, + "is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=" + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", + "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" + }, + "is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==" + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==" + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==" + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.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==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "istanbul-reports": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", + "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", + "requires": { + "html-escaper": "^2.0.0" + } + }, + "jerrypick": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/jerrypick/-/jerrypick-1.0.3.tgz", + "integrity": "sha512-WAKRydAghCIeJTIcuYNPNWZE+pfGjL0vc48qzGj4dFIXzBkjHyyOoNCf959O3K5jhkI7IhpRnAYhA3N2xbX5uQ==" + }, + "jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz", + "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==", + "requires": { + "import-local": "^2.0.0", + "jest-cli": "^24.9.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "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=" + }, + "jest-cli": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", + "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", + "requires": { + "@jest/core": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "import-local": "^2.0.0", + "is-ci": "^2.0.0", + "jest-config": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "prompts": "^2.0.1", + "realpath-native": "^1.1.0", + "yargs": "^13.3.0" + } + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "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==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "jest-changed-files": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", + "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", + "requires": { + "@jest/types": "^24.9.0", + "execa": "^1.0.0", + "throat": "^4.0.0" + } + }, + "jest-config": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", + "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.9.0", + "@jest/types": "^24.9.0", + "babel-jest": "^24.9.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.9.0", + "jest-environment-node": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.9.0", + "realpath-native": "^1.1.0" + } + }, + "jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-docblock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", + "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", + "requires": { + "detect-newline": "^2.1.0" + } + }, + "jest-each": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", + "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", + "requires": { + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-environment-jsdom": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", + "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0", + "jsdom": "^11.5.1" + } + }, + "jest-environment-jsdom-fourteen": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-1.0.1.tgz", + "integrity": "sha512-DojMX1sY+at5Ep+O9yME34CdidZnO3/zfPh8UW+918C5fIZET5vCjfkegixmsi7AtdYfkr4bPlIzmWnlvQkP7Q==", + "requires": { + "@jest/environment": "^24.3.0", + "@jest/fake-timers": "^24.3.0", + "@jest/types": "^24.3.0", + "jest-mock": "^24.0.0", + "jest-util": "^24.0.0", + "jsdom": "^14.1.0" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" + }, + "jsdom": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", + "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", + "requires": { + "abab": "^2.0.0", + "acorn": "^6.0.4", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.1.3", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.5.0", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.2", + "xml-name-validator": "^3.0.0" + } + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "jest-environment-node": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", + "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0" + } + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==" + }, + "jest-haste-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", + "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", + "requires": { + "@jest/types": "^24.9.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" + } + }, + "jest-jasmine2": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", + "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^24.9.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0", + "throat": "^4.0.0" + } + }, + "jest-leak-detector": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", + "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", + "requires": { + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-matcher-utils": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", + "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", + "requires": { + "chalk": "^2.0.1", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-message-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", + "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-mock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", + "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", + "requires": { + "@jest/types": "^24.9.0" + } + }, + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==" + }, + "jest-regex-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", + "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==" + }, + "jest-resolve": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", + "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", + "requires": { + "@jest/types": "^24.9.0", + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "jest-pnp-resolver": "^1.2.1", + "realpath-native": "^1.1.0" + } + }, + "jest-resolve-dependencies": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", + "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", + "requires": { + "@jest/types": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-snapshot": "^24.9.0" + } + }, + "jest-runner": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", + "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.4.2", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-docblock": "^24.3.0", + "jest-haste-map": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-leak-detector": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" + } + }, + "jest-runtime": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", + "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/source-map": "^24.3.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "strip-bom": "^3.0.0", + "yargs": "^13.3.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "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=" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "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==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "jest-serializer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", + "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==" + }, + "jest-snapshot": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", + "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "expect": "^24.9.0", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^24.9.0", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "jest-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", + "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", + "requires": { + "@jest/console": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/source-map": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + } + } + }, + "jest-validate": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", + "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", + "requires": { + "@jest/types": "^24.9.0", + "camelcase": "^5.3.1", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "leven": "^3.1.0", + "pretty-format": "^24.9.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + } + } + }, + "jest-watch-typeahead": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz", + "integrity": "sha512-f7VpLebTdaXs81rg/oj4Vg/ObZy2QtGzAmGLNsqUS5G5KtSN68tFcIsbvNODfNyQxU78g7D8x77o3bgfBTR+2Q==", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^2.4.1", + "jest-regex-util": "^24.9.0", + "jest-watcher": "^24.3.0", + "slash": "^3.0.0", + "string-length": "^3.1.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, + "string-length": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-3.1.0.tgz", + "integrity": "sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA==", + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^5.2.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==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "jest-watcher": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", + "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", + "requires": { + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "jest-util": "^24.9.0", + "string-length": "^2.0.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" + } + } + }, + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "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==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "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.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "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=" + }, + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==" + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "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==" + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "requires": { + "jsonify": "~0.0.0" + } + }, + "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=" + }, + "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=" + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==" + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jss": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.3.0.tgz", + "integrity": "sha512-B5sTRW9B6uHaUVzSo9YiMEOEp3UX8lWevU0Fsv+xtRnsShmgCfIYX44bTH8bPJe6LQKqEXku3ulKuHLbxBS97Q==", + "requires": { + "@babel/runtime": "^7.3.1", + "csstype": "^2.6.5", + "is-in-browser": "^1.1.3", + "tiny-warning": "^1.0.2" + } + }, + "jss-plugin-camel-case": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.3.0.tgz", + "integrity": "sha512-tadWRi/SLWqLK3EUZEdDNJL71F3ST93Zrl9JYMjV0QDqKPAl0Liue81q7m/nFUpnSTXczbKDy4wq8rI8o7WFqA==", + "requires": { + "@babel/runtime": "^7.3.1", + "hyphenate-style-name": "^1.0.3", + "jss": "^10.3.0" + } + }, + "jss-plugin-default-unit": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.3.0.tgz", + "integrity": "sha512-tT5KkIXAsZOSS9WDSe8m8lEHIjoEOj4Pr0WrG0WZZsMXZ1mVLFCSsD2jdWarQWDaRNyMj/I4d7czRRObhOxSuw==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "^10.3.0" + } + }, + "jss-plugin-global": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.3.0.tgz", + "integrity": "sha512-etYTG/y3qIR/vxZnKY+J3wXwObyBDNhBiB3l/EW9/pE3WHE//BZdK8LFvQcrCO48sZW1Z6paHo6klxUPP7WbzA==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "^10.3.0" + } + }, + "jss-plugin-nested": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.3.0.tgz", + "integrity": "sha512-qWiEkoXNEkkZ+FZrWmUGpf+zBsnEOmKXhkjNX85/ZfWhH9dfGxUCKuJFuOWFM+rjQfxV4csfesq4hY0jk8Qt0w==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "^10.3.0", + "tiny-warning": "^1.0.2" + } + }, + "jss-plugin-props-sort": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.3.0.tgz", + "integrity": "sha512-boetORqL/lfd7BWeFD3K+IyPqyIC+l3CRrdZr+NPq7Noqp+xyg/0MR7QisgzpxCEulk+j2CRcEUoZsvgPC4nTg==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "^10.3.0" + } + }, + "jss-plugin-rule-value-function": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.3.0.tgz", + "integrity": "sha512-7WiMrKIHH3rwxTuJki9+7nY11r1UXqaUZRhHvqTD4/ZE+SVhvtD5Tx21ivNxotwUSleucA/8boX+NF21oXzr5Q==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "^10.3.0", + "tiny-warning": "^1.0.2" + } + }, + "jss-plugin-vendor-prefixer": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.3.0.tgz", + "integrity": "sha512-sZQbrcZyP5V0ADjCLwUA1spVWoaZvM7XZ+2fSeieZFBj31cRsnV7X70FFDerMHeiHAXKWzYek+67nMDjhrZAVQ==", + "requires": { + "@babel/runtime": "^7.3.1", + "css-vendor": "^2.0.8", + "jss": "^10.3.0" + } + }, + "jsx-ast-utils": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", + "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==", + "requires": { + "array-includes": "^3.1.1", + "object.assign": "^4.1.0" + } + }, + "just-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", + "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=" + }, + "kapsule": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/kapsule/-/kapsule-1.13.3.tgz", + "integrity": "sha512-Qgzn1p0ywJsXJ3NBjIGst/EGvH2VF+YeVsVfWHZ1ZFX1v7AJfz215OWf3mRFy6NZBbN67yc1qUxAuJU+vuTtAA==", + "requires": { + "debounce": "^1.2.0" + } + }, + "keyboard-key": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keyboard-key/-/keyboard-key-1.1.0.tgz", + "integrity": "sha512-qkBzPTi3rlAKvX7k0/ub44sqOfXeLc/jcnGGmj5c7BJpU8eDrEVPyhCvNYAaoubbsLm9uGWwQJO1ytQK1a9/dQ==" + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==" + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" + }, + "last-call-webpack-plugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", + "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", + "requires": { + "lodash": "^4.17.5", + "webpack-sources": "^1.1.0" + } + }, + "last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", + "requires": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + } + }, + "layout-bmfont-text": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/layout-bmfont-text/-/layout-bmfont-text-1.3.4.tgz", + "integrity": "sha1-8g8sVGR3T0jabOipl/vObUaUW4E=", + "requires": { + "as-number": "^1.0.0", + "word-wrapper": "^1.0.7", + "xtend": "^4.0.0" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "requires": { + "readable-stream": "^2.0.5" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "^1.0.0" + } + }, + "lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", + "requires": { + "flush-write-stream": "^1.0.2" + } + }, + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==" + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "requires": { + "leven": "^3.1.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "liftoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "requires": { + "extend": "^3.0.0", + "findup-sync": "^3.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" + }, + "load-bmfont": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", + "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", + "requires": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^2.9.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + }, + "dependencies": { + "buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=" + } + } + }, + "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=", + "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" + } + }, + "loader-fs-cache": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz", + "integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==", + "requires": { + "find-cache-dir": "^0.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "requires": { + "find-up": "^1.0.0" + } + } + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + } + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" + }, + "lodash-es": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz", + "integrity": "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ==" + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + }, + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=" + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "loglevel": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz", + "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==" + }, + "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" + } + }, + "lower-case": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", + "integrity": "sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==", + "requires": { + "tslib": "^1.10.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + }, + "dependencies": { + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + } + } + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "requires": { + "kind-of": "^6.0.2" + } + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "requires": { + "tmpl": "1.0.x" + } + }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==" + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-limit": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/map-limit/-/map-limit-0.0.1.tgz", + "integrity": "sha1-63lhAxwPDo0AG/LVb6toXViCLzg=", + "requires": { + "once": "~1.3.0" + }, + "dependencies": { + "once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "requires": { + "wrappy": "1" + } + } + } + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "^1.0.0" + } + }, + "matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", + "requires": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + }, + "dependencies": { + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "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==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge-deep": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.2.tgz", + "integrity": "sha512-T7qC8kg4Zoti1cFd8Cr0M+qaZfOwjlPDEdZIIPPB2JZctjaPM4fX+i7HOId69tAti2fvO6X5ldfYUONDODsrkA==", + "requires": { + "arr-union": "^3.1.0", + "clone-deep": "^0.2.4", + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "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==" + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "microevent.ts": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", + "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "requires": { + "mime-db": "1.44.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "requires": { + "dom-walk": "^0.1.0" + } + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" + }, + "mini-create-react-context": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.0.tgz", + "integrity": "sha512-b0TytUgFSbgFJGzJqXPKCFCBWigAjpjo+Fl7Vf7ZbKRDptszpppKxXH6DRXEABZ/gcEQczeb0iZ7JvL8e8jjCA==", + "requires": { + "@babel/runtime": "^7.5.5", + "tiny-warning": "^1.0.3" + } + }, + "mini-css-extract-plugin": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", + "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==", + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "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==" + }, + "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=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "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==" + }, + "minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "requires": { + "minipass": "^3.0.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "requires": { + "for-in": "^0.1.3", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=" + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" + }, + "mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==" + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "new-array": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/new-array/-/new-array-1.0.0.tgz", + "integrity": "sha1-XbxjnZYerH8an7wacUbsEvKST78=" + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + }, + "ngraph.events": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ngraph.events/-/ngraph.events-1.2.1.tgz", + "integrity": "sha512-D4C+nXH/RFxioGXQdHu8ELDtC6EaCiNsZtih0IvyGN81OZSUby4jXoJ5+RNWasfsd0FnKxxpAROyUMzw64QNsw==" + }, + "ngraph.expose": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ngraph.expose/-/ngraph.expose-1.0.0.tgz", + "integrity": "sha512-xQXBvaN8cuNucgHuOK1aOWb6q6Yn5QcTWzI1XR5+SBPYuJhIDeO3Z8pm7/WdM1dS+ys4mofA5D0MpTDIxP+d5A==" + }, + "ngraph.forcelayout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ngraph.forcelayout/-/ngraph.forcelayout-1.0.1.tgz", + "integrity": "sha512-vTUK9v2V7L1DjPY5K1nCfsxwo76XggdvPy7qPcnJ6tCUJfB9Sk6Y+Re8VYnGMu+qxhq6kEsNfnEUDaZbdM1VyA==", + "requires": { + "ngraph.events": "^1.0.0", + "ngraph.physics.simulator": "^2.0.0" + } + }, + "ngraph.forcelayout3d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ngraph.forcelayout3d/-/ngraph.forcelayout3d-1.0.1.tgz", + "integrity": "sha512-AFFb3DfZS0hjykvo+DVA5hM1q/Nnf74sd5DEKPWJUcpJumZm+nH9QY26eoqRN/4eiyuOSXbL52aiUqbap7mzFw==", + "requires": { + "ngraph.expose": "^1.0.0", + "ngraph.forcelayout": "^1.0.1", + "ngraph.merge": "^1.0.0", + "ngraph.physics.primitives": "^1.0.0", + "ngraph.quadtreebh3d": "^1.0.0", + "ngraph.random": "^1.0.0" + } + }, + "ngraph.graph": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/ngraph.graph/-/ngraph.graph-19.1.0.tgz", + "integrity": "sha512-9cws84qfPkrYa7BaBtT+KgZfLXrd6pNL9Gl5Do+MBO/0Hm6rOM7qK78MZaO1uEoIK6p2pgUs6lu29zn/6tP59w==", + "requires": { + "ngraph.events": "^1.2.1" + } + }, + "ngraph.merge": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ngraph.merge/-/ngraph.merge-1.0.0.tgz", + "integrity": "sha512-5J8YjGITUJeapsomtTALYsw7rFveYkM+lBj3QiYZ79EymQcuri65Nw3knQtFxQBU1r5iOaVRXrSwMENUPK62Vg==" + }, + "ngraph.physics.primitives": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ngraph.physics.primitives/-/ngraph.physics.primitives-1.0.0.tgz", + "integrity": "sha512-zdxzy76L6PxlWLjeXsvNGgzGaQt8mo7IPSzZseQBIXC2AV7UAdcfSnnE1e+ECihjlqkUdsvgKk+ne3GxU2diHg==" + }, + "ngraph.physics.simulator": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ngraph.physics.simulator/-/ngraph.physics.simulator-2.0.0.tgz", + "integrity": "sha512-XsdabfrLXNu8TafHatJv5ZOKUvwn7fPPtBjmNWHDp4QRTvSdC5H277luVzduXPt6C9lD5DKtGxYSyv5wnjcvFg==", + "requires": { + "ngraph.events": "^1.0.0", + "ngraph.expose": "^1.0.0", + "ngraph.merge": "^1.0.0", + "ngraph.physics.primitives": "^1.0.0", + "ngraph.quadtreebh": "^1.0.0", + "ngraph.random": "^1.0.0" + } + }, + "ngraph.quadtreebh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ngraph.quadtreebh/-/ngraph.quadtreebh-1.0.0.tgz", + "integrity": "sha512-cXc1JOIBu0flCPiIRintjs0G6LDhNmuVjDffq8PQQMP/i1324oQXdhbvlxjBepXjgfB/VIdVvwgfHjSs31A3Ig==", + "requires": { + "ngraph.random": "^1.0.0" + } + }, + "ngraph.quadtreebh3d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ngraph.quadtreebh3d/-/ngraph.quadtreebh3d-1.0.0.tgz", + "integrity": "sha512-wwhtehVz4tV87DeKH73TIw94LgKXCdprG2BXGN6GvHoS26T6ATJLhUPjEO7wnnrlb5N9d9X8xrYcyCYrcykQDA==", + "requires": { + "ngraph.random": "^1.0.0" + } + }, + "ngraph.random": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ngraph.random/-/ngraph.random-1.0.1.tgz", + "integrity": "sha512-o7rcaRy0X2OwdDoGG8g5bMlY1/jn43nREY72bRh89q9o7OfmK9CjJgsgu//cFNUA9AdOrRGByqH8GbWESNbhzA==" + }, + "nice-color-palettes": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nice-color-palettes/-/nice-color-palettes-1.0.1.tgz", + "integrity": "sha1-h16gHchu+uf1leBmqLJmDnIGBT4=", + "requires": { + "map-limit": "0.0.1", + "minimist": "^1.2.0", + "new-array": "^1.0.0", + "xhr-request": "^1.0.1" + } + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "no-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.3.tgz", + "integrity": "sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw==", + "requires": { + "lower-case": "^2.0.1", + "tslib": "^1.10.0" + } + }, + "node-forge": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", + "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==" + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "requires": { + "inherits": "2.0.3" + } + } + } + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=" + }, + "node-notifier": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", + "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", + "requires": { + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + } + }, + "node-releases": { + "version": "1.1.60", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.60.tgz", + "integrity": "sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA==" + }, + "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==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + }, + "dependencies": { + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + } + } + }, + "nosleep.js": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/nosleep.js/-/nosleep.js-0.7.0.tgz", + "integrity": "sha1-z9kZwlUjyg0PSmn7MwXAg62u4ok=" + }, + "now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "requires": { + "once": "^1.3.2" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" + }, + "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=" + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-hash": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.0.3.tgz", + "integrity": "sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg==" + }, + "object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==" + }, + "object-is": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", + "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object-path": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz", + "integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk=" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.entries": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz", + "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "has": "^1.0.3" + } + }, + "object.fromentries": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz", + "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + } + }, + "object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.1.tgz", + "integrity": "sha512-ZpZpjcJeugQfWsfyQlshVoowIIQ1qBGSVll4rfDq6JJVO//fesjoX808hXWfBjY+ROZgpKDI5TRSRBSoJiZ8eg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-7.1.0.tgz", + "integrity": "sha512-lLPI5KgOwEYCDKXf4np7y1PBEkj7HYIyP2DY8mVDRnx0VIIu6bNrRB0R66TuO7Mack6EnTNLm4uvcl1UoklTpA==", + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "dependencies": { + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "requires": { + "is-docker": "^2.0.0" + } + } + } + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optimize-css-assets-webpack-plugin": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz", + "integrity": "sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA==", + "requires": { + "cssnano": "^4.1.10", + "last-call-webpack-plugin": "^3.0.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "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" + } + }, + "ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", + "requires": { + "readable-stream": "^2.0.1" + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "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=" + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + }, + "p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", + "requires": { + "p-reduce": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=" + }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "requires": { + "retry": "^0.12.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "param-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.3.tgz", + "integrity": "sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA==", + "requires": { + "dot-case": "^3.0.3", + "tslib": "^1.10.0" + } + }, + "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==", + "requires": { + "callsites": "^3.0.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + } + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "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-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU=" + }, + "parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY=" + }, + "parse-bmfont-xml": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", + "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", + "requires": { + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.4.5" + } + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-headers": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.3.tgz", + "integrity": "sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA==" + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==" + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "pascal-case": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.1.tgz", + "integrity": "sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA==", + "requires": { + "no-case": "^3.0.3", + "tslib": "^1.10.0" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=" + }, + "path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "requires": { + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + } + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pbkdf2": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "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=" + }, + "phin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "^2.0.0" + } + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + } + } + }, + "pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + } + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" + }, + "pnp-webpack-plugin": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.0.tgz", + "integrity": "sha512-ZcMGn/xF/fCOq+9kWMP9vVVxjIkMCja72oy3lziR7UHy0hHFZ57iVpQ71OtveVbmzeCmphBg8pxNdk/hlK99aQ==", + "requires": { + "ts-pnp": "^1.1.2" + } + }, + "polished": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/polished/-/polished-3.6.5.tgz", + "integrity": "sha512-VwhC9MlhW7O5dg/z7k32dabcAFW1VI2+7fSe8cE/kXcfL7mVdoa5UxciYGW2sJU78ldDLT6+ROEKIZKFNTnUXQ==", + "requires": { + "@babel/runtime": "^7.9.2" + } + }, + "popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "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==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-attribute-case-insensitive": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", + "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^6.0.2" + } + }, + "postcss-browser-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz", + "integrity": "sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig==", + "requires": { + "postcss": "^7" + } + }, + "postcss-calc": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz", + "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==", + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-color-functional-notation": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", + "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==", + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-color-gray": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz", + "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==", + "requires": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.5", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-color-hex-alpha": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz", + "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==", + "requires": { + "postcss": "^7.0.14", + "postcss-values-parser": "^2.0.1" + } + }, + "postcss-color-mod-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", + "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", + "requires": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-color-rebeccapurple": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz", + "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==", + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-custom-media": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", + "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==", + "requires": { + "postcss": "^7.0.14" + } + }, + "postcss-custom-properties": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz", + "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==", + "requires": { + "postcss": "^7.0.17", + "postcss-values-parser": "^2.0.1" + } + }, + "postcss-custom-selectors": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz", + "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==", + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-dir-pseudo-class": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz", + "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==", + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-double-position-gradients": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", + "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==", + "requires": { + "postcss": "^7.0.5", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-env-function": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz", + "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==", + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-flexbugs-fixes": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.1.0.tgz", + "integrity": "sha512-jr1LHxQvStNNAHlgco6PzY308zvLklh7SJVYuWUwyUQncofaAlD2l+P/gxKHOdqWKe7xJSkVLFF/2Tp+JqMSZA==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-focus-visible": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz", + "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-focus-within": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz", + "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-font-variant": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz", + "integrity": "sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-gap-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz", + "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-image-set-function": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", + "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==", + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-initial": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz", + "integrity": "sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==", + "requires": { + "lodash.template": "^4.5.0", + "postcss": "^7.0.2" + } + }, + "postcss-lab-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz", + "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==", + "requires": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-load-config": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", + "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "postcss-logical": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", + "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-media-minmax": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", + "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "requires": { + "postcss": "^7.0.5" + } + }, + "postcss-modules-local-by-default": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", + "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.32", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", + "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + } + }, + "postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "requires": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, + "postcss-nesting": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", + "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-normalize": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-8.0.1.tgz", + "integrity": "sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ==", + "requires": { + "@csstools/normalize.css": "^10.1.0", + "browserslist": "^4.6.2", + "postcss": "^7.0.17", + "postcss-browser-comments": "^3.0.0", + "sanitize.css": "^10.0.0" + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-overflow-shorthand": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", + "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-page-break": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz", + "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-place": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz", + "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==", + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-preset-env": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", + "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==", + "requires": { + "autoprefixer": "^9.6.1", + "browserslist": "^4.6.4", + "caniuse-lite": "^1.0.30000981", + "css-blank-pseudo": "^0.1.4", + "css-has-pseudo": "^0.10.0", + "css-prefers-color-scheme": "^3.1.1", + "cssdb": "^4.4.0", + "postcss": "^7.0.17", + "postcss-attribute-case-insensitive": "^4.0.1", + "postcss-color-functional-notation": "^2.0.1", + "postcss-color-gray": "^5.0.0", + "postcss-color-hex-alpha": "^5.0.3", + "postcss-color-mod-function": "^3.0.3", + "postcss-color-rebeccapurple": "^4.0.1", + "postcss-custom-media": "^7.0.8", + "postcss-custom-properties": "^8.0.11", + "postcss-custom-selectors": "^5.1.2", + "postcss-dir-pseudo-class": "^5.0.0", + "postcss-double-position-gradients": "^1.0.0", + "postcss-env-function": "^2.0.2", + "postcss-focus-visible": "^4.0.0", + "postcss-focus-within": "^3.0.0", + "postcss-font-variant": "^4.0.0", + "postcss-gap-properties": "^2.0.0", + "postcss-image-set-function": "^3.0.1", + "postcss-initial": "^3.0.0", + "postcss-lab-function": "^2.0.1", + "postcss-logical": "^3.0.0", + "postcss-media-minmax": "^4.0.0", + "postcss-nesting": "^7.0.0", + "postcss-overflow-shorthand": "^2.0.0", + "postcss-page-break": "^2.0.0", + "postcss-place": "^4.0.1", + "postcss-pseudo-class-any-link": "^6.0.0", + "postcss-replace-overflow-wrap": "^3.0.0", + "postcss-selector-matches": "^4.0.0", + "postcss-selector-not": "^4.0.0" + } + }, + "postcss-pseudo-class-any-link": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz", + "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==", + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-replace-overflow-wrap": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", + "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-safe-parser": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz", + "integrity": "sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-selector-matches": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", + "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==", + "requires": { + "balanced-match": "^1.0.0", + "postcss": "^7.0.2" + } + }, + "postcss-selector-not": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz", + "integrity": "sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ==", + "requires": { + "balanced-match": "^1.0.0", + "postcss": "^7.0.2" + } + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" + }, + "postcss-values-parser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", + "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", + "requires": { + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, + "present": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/present/-/present-0.0.6.tgz", + "integrity": "sha1-nu/3ANqp6ZhhM1Lkf3rCMk1PrwI=" + }, + "prettier": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.3.tgz", + "integrity": "sha512-5qpBDBHO9fpE0zruKiTZm8Gxmz7kknO+WlQR/ivV+RMwgDw/WjOgmxLDn66MPrxq/WZPx/EgEZzh87xJO5E6Fw==" + }, + "pretty-bytes": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.3.0.tgz", + "integrity": "sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg==" + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "requires": { + "renderkid": "^2.0.1", + "utila": "~0.4" + } + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=" + }, + "prismjs": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.20.0.tgz", + "integrity": "sha512-AEDjSrVNkynnw6A+B1DsFkd6AVdTnp+/WoUixFRULlCLZVRZlVQMVWio/16jv7G1FscUxQxOQhWwApgbnxr6kQ==", + "requires": { + "clipboard": "^2.0.0" + } + }, + "process": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=" + }, + "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==" + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, + "promise": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", + "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==", + "requires": { + "asap": "~2.0.6" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" + }, + "promise-polyfill": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-3.1.0.tgz", + "integrity": "sha1-YpUrAdBZsRW0MnY7fvRhuA9t9H0=" + }, + "prompts": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.3.2.tgz", + "integrity": "sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA==", + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.4" + } + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "property-expr": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.2.tgz", + "integrity": "sha512-bc/5ggaYZxNkFKj374aLbEDqVADdYaLcFo8XBkishUWbaAdjlphaBFns9TvRA2pUseVL/wMFmui9X3IdNDU37g==" + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "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" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } + } + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "quad-indices": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/quad-indices/-/quad-indices-2.0.1.tgz", + "integrity": "sha1-ppQdiaE9Y+7WwdSlpiGgRjYXqBQ=", + "requires": { + "an-array": "^1.0.0", + "dtype": "^2.0.0", + "is-buffer": "^1.0.2" + } + }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "querystringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==" + }, + "raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "requires": { + "performance-now": "^2.1.0" + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "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==", + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + } + } + }, + "react": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", + "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-app-polyfill": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz", + "integrity": "sha512-OfBnObtnGgLGfweORmdZbyEz+3dgVePQBb3zipiaDsMHV1NpWm0rDFYIVXFV/AK+x4VIIfWHhrdMIeoTLyRr2g==", + "requires": { + "core-js": "^3.5.0", + "object-assign": "^4.1.1", + "promise": "^8.0.3", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.3", + "whatwg-fetch": "^3.0.0" + } + }, + "react-dev-utils": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-10.2.1.tgz", + "integrity": "sha512-XxTbgJnYZmxuPtY3y/UV0D8/65NKkmaia4rXzViknVnZeVlklSh8u6TnaEYPfAi/Gh1TP4mEOXHI6jQOPbeakQ==", + "requires": { + "@babel/code-frame": "7.8.3", + "address": "1.1.2", + "browserslist": "4.10.0", + "chalk": "2.4.2", + "cross-spawn": "7.0.1", + "detect-port-alt": "1.1.6", + "escape-string-regexp": "2.0.0", + "filesize": "6.0.1", + "find-up": "4.1.0", + "fork-ts-checker-webpack-plugin": "3.1.1", + "global-modules": "2.0.0", + "globby": "8.0.2", + "gzip-size": "5.1.1", + "immer": "1.10.0", + "inquirer": "7.0.4", + "is-root": "2.1.0", + "loader-utils": "1.2.3", + "open": "^7.0.2", + "pkg-up": "3.1.0", + "react-error-overlay": "^6.0.7", + "recursive-readdir": "2.2.2", + "shell-quote": "1.7.2", + "strip-ansi": "6.0.0", + "text-table": "0.2.0" + }, + "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==", + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "browserslist": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.10.0.tgz", + "integrity": "sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA==", + "requires": { + "caniuse-lite": "^1.0.30001035", + "electron-to-chromium": "^1.3.378", + "node-releases": "^1.1.52", + "pkg-up": "^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==" + }, + "cross-spawn": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", + "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + }, + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "inquirer": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz", + "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^2.4.2", + "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.2.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "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==" + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "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==" + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "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==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "react-dom": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", + "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + }, + "dependencies": { + "scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + } + } + }, + "react-error-overlay": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.7.tgz", + "integrity": "sha512-TAv1KJFh3RhqxNvhzxj6LeT5NWklP6rDr2a0jaTfsZ5wSZWHOGeqQyejUp3xxLfPt2UpyJEcVQB/zyPcmonNFA==" + }, + "react-fast-compare": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", + "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==" + }, + "react-force-graph": { + "version": "1.32.4", + "resolved": "https://registry.npmjs.org/react-force-graph/-/react-force-graph-1.32.4.tgz", + "integrity": "sha512-ahjWnV8qofCJdzjWRd7WUK1RJNIQLioh7hvU/M7lWjjFpK485obH5OgCKnnKqS7c8jrbdHHSSvxXGTrrp5clkg==", + "requires": { + "3d-force-graph": "^1.61.1", + "3d-force-graph-ar": "^1.3.1", + "3d-force-graph-vr": "^1.32.1", + "force-graph": "^1.28.0", + "prop-types": "^15.7.2", + "react-kapsule": "^2.1.8" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "react-kapsule": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/react-kapsule/-/react-kapsule-2.2.0.tgz", + "integrity": "sha512-TkMVej2Ehs9/wyY+HpZwfYOfs6p1ZAJzvaZoPtZmhOUQja+Fl653ogYjYDnKnxE/yzGjYw7GmM3OrR65QGYi/w==", + "requires": { + "fromentries": "^1.2.1", + "jerrypick": "^1.0.3" + } + }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "react-popper": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.7.tgz", + "integrity": "sha512-nmqYTx7QVjCm3WUZLeuOomna138R1luC4EqkW3hxJUrAe+3eNz3oFCLYdnPwILfn0mX1Ew2c3wctrjlUMYYUww==", + "requires": { + "@babel/runtime": "^7.1.2", + "create-react-context": "^0.3.0", + "deep-equal": "^1.1.1", + "popper.js": "^1.14.4", + "prop-types": "^15.6.1", + "typed-styles": "^0.0.7", + "warning": "^4.0.2" + }, + "dependencies": { + "warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "requires": { + "loose-envify": "^1.0.0" + } + } + } + }, + "react-router": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz", + "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==", + "requires": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "mini-create-react-context": "^0.4.0", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "dependencies": { + "history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "requires": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + } + } + }, + "react-router-dom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz", + "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==", + "requires": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.2.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "dependencies": { + "history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "requires": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + } + } + }, + "react-scripts": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-3.4.0.tgz", + "integrity": "sha512-pBqaAroFoHnFAkuX+uSK9Th1uEh2GYdGY2IG1I9/7HmuEf+ls3lLCk1p2GFYRSrLMz6ieQR/SyN6TLIGK3hKRg==", + "requires": { + "@babel/core": "7.8.4", + "@svgr/webpack": "4.3.3", + "@typescript-eslint/eslint-plugin": "^2.10.0", + "@typescript-eslint/parser": "^2.10.0", + "babel-eslint": "10.0.3", + "babel-jest": "^24.9.0", + "babel-loader": "8.0.6", + "babel-plugin-named-asset-import": "^0.3.6", + "babel-preset-react-app": "^9.1.1", + "camelcase": "^5.3.1", + "case-sensitive-paths-webpack-plugin": "2.3.0", + "css-loader": "3.4.2", + "dotenv": "8.2.0", + "dotenv-expand": "5.1.0", + "eslint": "^6.6.0", + "eslint-config-react-app": "^5.2.0", + "eslint-loader": "3.0.3", + "eslint-plugin-flowtype": "4.6.0", + "eslint-plugin-import": "2.20.0", + "eslint-plugin-jsx-a11y": "6.2.3", + "eslint-plugin-react": "7.18.0", + "eslint-plugin-react-hooks": "^1.6.1", + "file-loader": "4.3.0", + "fs-extra": "^8.1.0", + "fsevents": "2.1.2", + "html-webpack-plugin": "4.0.0-beta.11", + "identity-obj-proxy": "3.0.0", + "jest": "24.9.0", + "jest-environment-jsdom-fourteen": "1.0.1", + "jest-resolve": "24.9.0", + "jest-watch-typeahead": "0.4.2", + "mini-css-extract-plugin": "0.9.0", + "optimize-css-assets-webpack-plugin": "5.0.3", + "pnp-webpack-plugin": "1.6.0", + "postcss-flexbugs-fixes": "4.1.0", + "postcss-loader": "3.0.0", + "postcss-normalize": "8.0.1", + "postcss-preset-env": "6.7.0", + "postcss-safe-parser": "4.0.1", + "react-app-polyfill": "^1.0.6", + "react-dev-utils": "^10.2.0", + "resolve": "1.15.0", + "resolve-url-loader": "3.1.1", + "sass-loader": "8.0.2", + "semver": "6.3.0", + "style-loader": "0.23.1", + "terser-webpack-plugin": "2.3.4", + "ts-pnp": "1.1.5", + "url-loader": "2.3.0", + "webpack": "4.41.5", + "webpack-dev-server": "3.10.2", + "webpack-manifest-plugin": "2.2.0", + "workbox-webpack-plugin": "4.3.1" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "fsevents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "optional": true + }, + "resolve": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz", + "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "react-transition-group": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.1.tgz", + "integrity": "sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw==", + "requires": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "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=", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.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==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "requires": { + "util.promisify": "^1.0.0" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "requires": { + "resolve": "^1.1.6" + } + }, + "recursive-readdir": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", + "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "requires": { + "minimatch": "3.0.4" + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "regenerate": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", + "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==" + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regex-parser": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.10.tgz", + "integrity": "sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA==" + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==" + }, + "regexpu-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" + }, + "remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "requires": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + } + }, + "remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "requires": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "renderkid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", + "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", + "requires": { + "css-select": "^1.1.0", + "dom-converter": "^0.2", + "htmlparser2": "^3.3.0", + "strip-ansi": "^3.0.0", + "utila": "^0.4.0" + }, + "dependencies": { + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + } + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==" + }, + "replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", + "requires": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "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" + } + }, + "request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "requires": { + "lodash": "^4.17.19" + } + }, + "request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "requires": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "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=" + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + }, + "resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "requires": { + "value-or-function": "^3.0.0" + } + }, + "resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "resolve-url-loader": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz", + "integrity": "sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ==", + "requires": { + "adjust-sourcemap-loader": "2.0.0", + "camelcase": "5.3.1", + "compose-function": "3.0.3", + "convert-source-map": "1.7.0", + "es6-iterator": "2.0.3", + "loader-utils": "1.2.3", + "postcss": "7.0.21", + "rework": "1.0.1", + "rework-visit": "1.0.0", + "source-map": "0.6.1" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "postcss": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "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==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" + }, + "rework": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", + "integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=", + "requires": { + "convert-source-map": "^0.3.3", + "css": "^2.0.0" + }, + "dependencies": { + "convert-source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", + "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=" + } + } + }, + "rework-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", + "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=" + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=" + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=" + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "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==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==" + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "requires": { + "aproba": "^1.1.1" + } + }, + "rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" + }, + "rxjs": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz", + "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==", + "requires": { + "tslib": "^1.9.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==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + } + }, + "sanitize.css": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-10.0.0.tgz", + "integrity": "sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg==" + }, + "sass-loader": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", + "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", + "requires": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.2.3", + "neo-async": "^2.6.1", + "schema-utils": "^2.6.1", + "semver": "^6.3.0" + }, + "dependencies": { + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "requires": { + "kind-of": "^6.0.2" + } + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "requires": { + "xmlchars": "^2.1.1" + } + }, + "scheduler": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.18.0.tgz", + "integrity": "sha512-agTSHR1Nbfi6ulI0kYNK0203joW2Y5W4po4l+v03tOoiJKpTBbxpNhWDvqc/4IcOw+KLmSiQLTasZ4cab2/UWQ==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "requires": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + } + }, + "select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=", + "optional": true + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" + }, + "selfsigned": { + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", + "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "requires": { + "node-forge": "0.9.0" + } + }, + "semantic-ui-react": { + "version": "0.88.2", + "resolved": "https://registry.npmjs.org/semantic-ui-react/-/semantic-ui-react-0.88.2.tgz", + "integrity": "sha512-+02kN2z8PuA/cMdvDUsHhbJmBzxxgOXVHMFr9XK7zGb0wkW9A6OPQMFokWz7ozlVtKjN6r7zsb+Qvjk/qq1OWw==", + "requires": { + "@babel/runtime": "^7.1.2", + "@semantic-ui-react/event-stack": "^3.1.0", + "@stardust-ui/react-component-event-listener": "~0.38.0", + "@stardust-ui/react-component-ref": "~0.38.0", + "classnames": "^2.2.6", + "keyboard-key": "^1.0.4", + "lodash": "^4.17.15", + "prop-types": "^15.7.2", + "react-is": "^16.8.6", + "react-popper": "^1.3.4", + "shallowequal": "^1.1.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", + "requires": { + "sver-compat": "^1.5.0" + } + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==" + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", + "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", + "requires": { + "is-extendable": "^0.1.1", + "kind-of": "^2.0.1", + "lazy-cache": "^0.2.3", + "mixin-object": "^2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", + "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", + "requires": { + "is-buffer": "^1.0.2" + } + }, + "lazy-cache": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" + } + } + }, + "shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "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=" + }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" + }, + "simple-get": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz", + "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==", + "requires": { + "decompress-response": "^3.3.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + } + } + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "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=" + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==" + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "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==" + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", + "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", + "requires": { + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" + }, + "stack-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", + "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==" + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==" + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "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==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.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=", + "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=" + } + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-comments": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz", + "integrity": "sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==", + "requires": { + "babel-extract-comments": "^1.0.0", + "babel-plugin-transform-object-rest-spread": "^6.26.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "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==", + "requires": { + "min-indent": "^1.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + }, + "style-loader": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", + "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "super-animejs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/super-animejs/-/super-animejs-3.1.0.tgz", + "integrity": "sha512-6MFAFJDRuvwkovxQZPruuyHinTa4rgj4hNLOndjcYYhZLckoXtVRY9rJPuq8p6c/tgZJrFYEAYAfJ2/hhNtUCA==" + }, + "super-three": { + "version": "0.111.6", + "resolved": "https://registry.npmjs.org/super-three/-/super-three-0.111.6.tgz", + "integrity": "sha512-/OJTOBpmm7MRx8R0G5Zr9sX8EqsELy7SwATb5n0FP145QsrP134pY2W489sfkJYqZmGkpHmG1ulQ0M94icThBw==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", + "requires": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + } + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + }, + "synchronous-promise": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.13.tgz", + "integrity": "sha512-R9N6uDkVsghHePKh1TEqbnLddO2IY25OcsksyFp/qBe7XYd0PVbKEWxhcdMhpLzE1I6skj5l4aEZ3CRxcbArlA==" + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "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==" + }, + "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=" + }, + "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==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + }, + "terser-webpack-plugin": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.4.tgz", + "integrity": "sha512-Nv96Nws2R2nrFOpbzF6IxRDpIkkIfmhvOws+IqMvYdFLO7o6wAILWFKONFgaYy8+T4LVz77DQW0f7wOeDEAjrg==", + "requires": { + "cacache": "^13.0.1", + "find-cache-dir": "^3.2.0", + "jest-worker": "^25.1.0", + "p-limit": "^2.2.2", + "schema-utils": "^2.6.4", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.4.3", + "webpack-sources": "^1.4.3" + }, + "dependencies": { + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "requires": { + "find-up": "^4.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "test-exclude": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", + "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", + "requires": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + } + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "three": { + "version": "0.118.3", + "resolved": "https://registry.npmjs.org/three/-/three-0.118.3.tgz", + "integrity": "sha512-ijECXrNzDkHieoeh2H69kgawTGH8DiamhR4uBN8jEM7VHSKvfTdEvOoHsA8Aq7dh7PHAxhlqBsN5arBI3KixSw==" + }, + "three-dragcontrols": { + "version": "0.88.2", + "resolved": "https://registry.npmjs.org/three-dragcontrols/-/three-dragcontrols-0.88.2.tgz", + "integrity": "sha512-Qqhbo7+K5TAeqlYlUiI0EBp14uI9nbgoLANas3p4v4kz3h5HmOlComV9UhLI2x3BtdCdcHSuiyDL7sTrtP772w==" + }, + "three-forcegraph": { + "version": "1.36.1", + "resolved": "https://registry.npmjs.org/three-forcegraph/-/three-forcegraph-1.36.1.tgz", + "integrity": "sha512-ZrmF9Xf3LKnWVrNin0zAap07r7WsxOobacSZsl36+03gkME7aYsnQViLhEorhaVmtQ62MG+I7jn++n9H8JqS4w==", + "requires": { + "accessor-fn": "^1.3.0", + "d3-array": "^2.4.0", + "d3-force-3d": "^2.1.0", + "d3-scale": "^3.2.1", + "d3-scale-chromatic": "^1.5.0", + "data-joint": "^1.2.3", + "kapsule": "^1.13.3", + "ngraph.forcelayout": "^1.0.1", + "ngraph.forcelayout3d": "^1.0.1", + "ngraph.graph": "^19.1.0", + "tinycolor2": "^1.4.1" + }, + "dependencies": { + "d3-array": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.5.0.tgz", + "integrity": "sha512-U+CrYn19GmiKeI9qU1RLV1p5ZodBKXw64k9Z3Id6d11LLuZ4JdyCnMT6W/2b84bvqEMFU15zg/JC3/oRYTanVg==" + }, + "d3-scale": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.2.1.tgz", + "integrity": "sha512-huz5byJO/6MPpz6Q8d4lg7GgSpTjIZW/l+1MQkzKfu2u8P6hjaXaStOpmyrD6ymKoW87d2QVFCKvSjLwjzx/rA==", + "requires": { + "d3-array": "1.2.0 - 2", + "d3-format": "1", + "d3-interpolate": "^1.2.0", + "d3-time": "1", + "d3-time-format": "2" + } + } + } + }, + "three-pathfinding": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/three-pathfinding/-/three-pathfinding-0.7.0.tgz", + "integrity": "sha512-UwWvzgio1UFe81n5jKHNzB4B+AG3wfZ54OKp7bTb1MHuC3cy6RTtr0dbbiPQQoqxzr+DRArR2DUwQSEknw5+nw==" + }, + "three-render-objects": { + "version": "1.24.3", + "resolved": "https://registry.npmjs.org/three-render-objects/-/three-render-objects-1.24.3.tgz", + "integrity": "sha512-+NCdiRloIwDu/iW1602VE7YXgfLmzxpSWDzm/rIaTGrtlErfWIZ+YxCLneWUkW6V6ALkCcg4Y+mDfpIfPCs0MQ==", + "requires": { + "@tweenjs/tween.js": "^18.6.0", + "accessor-fn": "^1.3.0", + "kapsule": "^1.13.3", + "polished": "^3.6.5" + } + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=" + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" + }, + "tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", + "optional": true + }, + "tiny-invariant": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz", + "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==" + }, + "tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, + "tinycolor2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz", + "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=" + }, + "to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", + "requires": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "requires": { + "through2": "^2.0.3" + } + }, + "toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=" + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha1-riF2gXXRVZ1IvvNUILL0li8JwzA=" + }, + "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==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "requires": { + "punycode": "^2.1.0" + } + }, + "ts-pnp": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.1.5.tgz", + "integrity": "sha512-ti7OGMOUOzo66wLF3liskw6YQIaSsBgc4GOAlWRnIEj8htCxJUxskanMUoJOD6MDCRAXo36goXJZch+nOS0VMA==" + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" + }, + "tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "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=" + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "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==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typed-styles": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz", + "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "typescript": { + "version": "3.7.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz", + "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==" + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" + }, + "uncontrollable": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.1.1.tgz", + "integrity": "sha512-EcPYhot3uWTS3w00R32R2+vS8Vr53tttrvMj/yA1uYRhf8hbTG2GyugGqWDY0qIskxn0uTTojVd6wPYW9ZEf8Q==", + "requires": { + "@babel/runtime": "^7.6.3", + "@types/react": "^16.9.11", + "invariant": "^2.2.4", + "react-lifecycles-compat": "^3.0.4" + } + }, + "undertaker": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.1.tgz", + "integrity": "sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA==", + "requires": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + } + }, + "undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=" + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==" + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==" + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==" + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "requires": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + }, + "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==", + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "url-loader": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.3.0.tgz", + "integrity": "sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==", + "requires": { + "loader-utils": "^1.2.3", + "mime": "^2.4.4", + "schema-utils": "^2.5.0" + }, + "dependencies": { + "mime": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==" + } + } + }, + "url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "url-set-query": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", + "integrity": "sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk=" + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "v8-compile-cache": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", + "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==" + }, + "v8flags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "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==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" + }, + "value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vinyl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", + "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + }, + "vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "requires": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + } + }, + "vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "requires": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "wait-for-expect": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/wait-for-expect/-/wait-for-expect-3.0.2.tgz", + "integrity": "sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag==" + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "requires": { + "makeerror": "1.0.x" + } + }, + "warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "watchpack": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz", + "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", + "requires": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "optional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "optional": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "optional": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.1.tgz", + "integrity": "sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==", + "optional": 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.4.0" + } + }, + "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==", + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "optional": true + }, + "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==", + "optional": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "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==", + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "optional": true + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "optional": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "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==", + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "watchpack-chokidar2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", + "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "optional": true, + "requires": { + "chokidar": "^2.1.8" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "webpack": { + "version": "4.41.5", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.5.tgz", + "integrity": "sha512-wp0Co4vpyumnp3KlkmpM5LWuzvZYayDwM2n17EHFr4qxBBbRokC7DJawPJC7TfSFZ9HZ6GsdH40EBj4UV0nmpw==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.2.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.6.0", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "serialize-javascript": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", + "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "requires": { + "randombytes": "^2.1.0" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "terser-webpack-plugin": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz", + "integrity": "sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==", + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^3.1.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + } + } + }, + "webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "mime": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==" + } + } + }, + "webpack-dev-server": { + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.10.2.tgz", + "integrity": "sha512-pxZKPYb+n77UN8u9YxXT4IaIrGcNtijh/mi8TXbErHmczw0DtPnMTTjHj+eNjkqLOaAZM/qD7V59j/qJsEiaZA==", + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.2.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.6", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.25", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.7", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.4.0", + "spdy": "^4.0.1", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "12.0.5" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==" + }, + "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=" + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "requires": { + "invert-kv": "^2.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "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==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "requires": { + "async-limiter": "~1.0.0" + } + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" + } + } + }, + "webpack-manifest-plugin": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz", + "integrity": "sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ==", + "requires": { + "fs-extra": "^7.0.0", + "lodash": ">=3.5 <5", + "object.entries": "^1.1.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" + }, + "webvr-polyfill": { + "version": "0.10.12", + "resolved": "https://registry.npmjs.org/webvr-polyfill/-/webvr-polyfill-0.10.12.tgz", + "integrity": "sha512-trDJEVUQnRIVAnmImjEQ0BlL1NfuWl8+eaEdu+bs4g59c7OtETi/5tFkgEFDRaWEYwHntXs/uFF3OXZuutNGGA==", + "requires": { + "cardboard-vr-display": "^1.0.19" + } + }, + "webvr-polyfill-dpdb": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/webvr-polyfill-dpdb/-/webvr-polyfill-dpdb-1.0.17.tgz", + "integrity": "sha512-WOd4s0gSrb0fOlOtIpqFbwLBATax/ka7DFAB/u+C9KJBBJk1/x/FZlFynOqsNrUxMJniOdO7ViFJwVdMScMQzA==" + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-fetch": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.2.0.tgz", + "integrity": "sha512-SdGPoQMMnzVYThUbSrEvqTlkvC1Ux27NehaJ/GUHBfNrh5Mjg+1/uRyFMwVnxO2MrikMWvWAqUGgQOfVU4hT7w==" + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, + "whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "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=" + }, + "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==" + }, + "word-wrapper": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/word-wrapper/-/word-wrapper-1.0.7.tgz", + "integrity": "sha1-HxSv6/Zt/fD+9V79NxhO+9CMKLY=" + }, + "workbox-background-sync": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz", + "integrity": "sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-broadcast-update": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz", + "integrity": "sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-build": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-4.3.1.tgz", + "integrity": "sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw==", + "requires": { + "@babel/runtime": "^7.3.4", + "@hapi/joi": "^15.0.0", + "common-tags": "^1.8.0", + "fs-extra": "^4.0.2", + "glob": "^7.1.3", + "lodash.template": "^4.4.0", + "pretty-bytes": "^5.1.0", + "stringify-object": "^3.3.0", + "strip-comments": "^1.0.2", + "workbox-background-sync": "^4.3.1", + "workbox-broadcast-update": "^4.3.1", + "workbox-cacheable-response": "^4.3.1", + "workbox-core": "^4.3.1", + "workbox-expiration": "^4.3.1", + "workbox-google-analytics": "^4.3.1", + "workbox-navigation-preload": "^4.3.1", + "workbox-precaching": "^4.3.1", + "workbox-range-requests": "^4.3.1", + "workbox-routing": "^4.3.1", + "workbox-strategies": "^4.3.1", + "workbox-streams": "^4.3.1", + "workbox-sw": "^4.3.1", + "workbox-window": "^4.3.1" + }, + "dependencies": { + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } + } + }, + "workbox-cacheable-response": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz", + "integrity": "sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-core": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-4.3.1.tgz", + "integrity": "sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg==" + }, + "workbox-expiration": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-4.3.1.tgz", + "integrity": "sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-google-analytics": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz", + "integrity": "sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg==", + "requires": { + "workbox-background-sync": "^4.3.1", + "workbox-core": "^4.3.1", + "workbox-routing": "^4.3.1", + "workbox-strategies": "^4.3.1" + } + }, + "workbox-navigation-preload": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz", + "integrity": "sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-precaching": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-4.3.1.tgz", + "integrity": "sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-range-requests": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz", + "integrity": "sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-routing": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-4.3.1.tgz", + "integrity": "sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-strategies": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-4.3.1.tgz", + "integrity": "sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-streams": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-4.3.1.tgz", + "integrity": "sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-sw": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-4.3.1.tgz", + "integrity": "sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w==" + }, + "workbox-webpack-plugin": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz", + "integrity": "sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ==", + "requires": { + "@babel/runtime": "^7.0.0", + "json-stable-stringify": "^1.0.1", + "workbox-build": "^4.3.1" + } + }, + "workbox-window": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-4.3.1.tgz", + "integrity": "sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "requires": { + "errno": "~0.1.7" + } + }, + "worker-rpc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", + "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", + "requires": { + "microevent.ts": "~0.1.1" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-atomic": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", + "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xhr": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz", + "integrity": "sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ==", + "requires": { + "global": "~4.3.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "xhr-request": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", + "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", + "requires": { + "buffer-to-arraybuffer": "^0.0.5", + "object-assign": "^4.1.1", + "query-string": "^5.0.1", + "simple-get": "^2.7.0", + "timed-out": "^4.0.1", + "url-set-query": "^1.0.0", + "xhr": "^2.0.4" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, + "xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha1-qQKekp09vN7RafPG4oI42VpdWig=" + }, + "xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + } + }, + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yaml": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", + "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==" + }, + "yargs": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.1.tgz", + "integrity": "sha512-huO4Fr1f9PmiJJdll5kwoS2e4GqzGSsMT3PPMpOwoVkOK8ckqAewMTZyA6LXVQWflleb/Z8oPBEvNsMft0XE+g==", + "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-security.0" + } + }, + "yargs-parser": { + "version": "5.0.0-security.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz", + "integrity": "sha512-T69y4Ps64LNesYxeYGYPvfoMTt/7y1XtfpIslUeK4um+9Hu7hlGoRtaDLvdXb7+/tfq4opVa2HRY5xGip022rQ==", + "requires": { + "camelcase": "^3.0.0", + "object.assign": "^4.1.0" + } + }, + "yup": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/yup/-/yup-0.29.1.tgz", + "integrity": "sha512-U7mPIbgfQWI6M3hZCJdGFrr+U0laG28FxMAKIgNvgl7OtyYuUoc4uy9qCWYHZjh49b8T7Ug8NNDdiMIEytcXrQ==", + "requires": { + "@babel/runtime": "^7.9.6", + "fn-name": "~3.0.0", + "lodash": "^4.17.15", + "lodash-es": "^4.17.11", + "property-expr": "^2.0.2", + "synchronous-promise": "^2.0.10", + "toposort": "^2.0.2" + } + } + } +} diff --git a/src/js/engagement_view/src/App.tsx b/src/js/engagement_view/src/App.tsx index a7839be4af..5502d47380 100644 --- a/src/js/engagement_view/src/App.tsx +++ b/src/js/engagement_view/src/App.tsx @@ -1,26 +1,27 @@ import React from 'react'; import './LogIn.css'; -import {LogIn} from './Login'; -import {EngagementUx} from "./components/SideBar"; +import { LogIn } from './Login'; +import { EngagementUx } from "./components/EngagementView"; import Dashboard from "./components/Dashboard"; import UploadPlugin from "./components/UploadPlugin"; -import {HashRouter, Route, Switch} from 'react-router-dom'; +import { HashRouter, Route, Switch } from 'react-router-dom'; // Updates our react state, as well as localStorage state, to reflect the page // we should render export default function App() { - console.log("App loaded"); + console.log("Grapl loaded"); + return ( <> - - - - - - - - + + + + + + + + ) } diff --git a/src/js/engagement_view/src/Login.tsx b/src/js/engagement_view/src/Login.tsx index e85da3fd9e..e8b3d09b52 100644 --- a/src/js/engagement_view/src/Login.tsx +++ b/src/js/engagement_view/src/Login.tsx @@ -20,16 +20,24 @@ const useStyles = makeStyles( const engagement_edge = getAuthEdge(); -export const checkLogin = async () => { +export const checkLogin = async (): Promise => { + + try { + const res = await fetch(`${engagement_edge}checkLogin`, { - method: 'get', + method: 'post', credentials: 'include', } ); const body = await res.json(); - return body['success'] === 'True'; + + return (body['success'] === 'True') + } catch (e) { + console.warn(e); + return null + } }; const validationSchema = Yup.object().shape({ diff --git a/src/js/engagement_view/src/components/Dashboard.tsx b/src/js/engagement_view/src/components/Dashboard.tsx index 9aa78edd34..e2e4db034a 100644 --- a/src/js/engagement_view/src/components/Dashboard.tsx +++ b/src/js/engagement_view/src/components/Dashboard.tsx @@ -1,66 +1,65 @@ -import React from 'react'; -import {createStyles, makeStyles, Theme} from "@material-ui/core/styles"; +import React, { useEffect, useState } from 'react'; +import { checkLogin } from '../Login'; import GraplHeader from "./reusableComponents/GraplHeader"; -import {Link} from 'react-router-dom'; +import { Link } from 'react-router-dom'; +import { dasboardStyles } from './makeStyles/DashboardStyles'; +import LoginNotification from "./reusableComponents/Notifications"; -const useStyles = makeStyles( (theme: Theme) => - createStyles({ - root: { - display: "flex", - }, - button: { - backgroundColor: "#42C6FF", - margin: "0.25rem", - padding: "0.25rem", - }, - welcome: { - width:"70%", - textAlign:"center", - backgroundColor: "#373740", - height: "100vh", - color: "white" - }, - nav: { - margin: "2rem", - width: "30%", - display: "flex", - flexDirection: "column", - }, - dashboard: { - display: "flex", - flexDirection: "row", - }, - link: { - color: "white", - textDecoration: "none", - padding: ".75rem", - backgroundColor: "#42C6FF", - margin: "1rem", - textAlign: "center", - borderRadius: ".35rem", - textTransform: "uppercase", - fontWeight: "bolder" - }, - - }) -); +const useStyles = dasboardStyles; export default function Dashboard() { - const classes = useStyles(); - return ( - <> - + const classes = useStyles(); + + const [state, setState] = useState({ + loggedIn: true, + renderedOnce: false, + }); + + useEffect( + () => { + if(state.renderedOnce){ + return; + } + + const interval = setInterval(async () => { + await checkLogin() + .then((loggedIn) => { + if(!loggedIn){ + console.warn("Logged out") + } + setState({ + loggedIn: loggedIn || false, + renderedOnce: true, + }); + }); + }, 2000); + + return () => { clearInterval(interval) } + }, + [state, setState]) + + console.log("state - loggedin", state.loggedIn); + + const loggedIn = state.loggedIn; + + return ( + <> + -
-
- Engagements - Upload Plugin -
+
+
+ Engagements + Upload Plugin +
+ +
+
+ {!loggedIn ? : ""} +
-
-

Welcome!

-
-
- - ) -} +

Welcome!

+ +
+ + ) +} diff --git a/src/js/engagement_view/src/components/SideBar.tsx b/src/js/engagement_view/src/components/EngagementView.tsx similarity index 51% rename from src/js/engagement_view/src/components/SideBar.tsx rename to src/js/engagement_view/src/components/EngagementView.tsx index 90bb49f9ea..143c0c2149 100644 --- a/src/js/engagement_view/src/components/SideBar.tsx +++ b/src/js/engagement_view/src/components/EngagementView.tsx @@ -1,8 +1,7 @@ import GraphDisplay from "./GraphViz"; -import React from "react"; -import SideBarContent from './SideBarContent' +import React, {useEffect} from "react"; +import EngagementViewContent from './EngagementViewContent' import clsx from "clsx"; -import {createStyles, makeStyles, Theme} from "@material-ui/core/styles"; import Drawer from "@material-ui/core/Drawer"; import AppBar from "@material-ui/core/AppBar"; import Toolbar from "@material-ui/core/Toolbar"; @@ -13,101 +12,27 @@ import KeyboardArrowLeftIcon from '@material-ui/icons/KeyboardArrowLeft'; import Button from "@material-ui/core/Button"; import { Node } from "../modules/GraphViz/CustomTypes"; import Home from '@material-ui/icons/Home'; -import {Link} from 'react-router-dom' - -const drawerWidth = 500; - -const useStyles = makeStyles((theme: Theme) => - createStyles({ - root: { - display: "flex" - }, - button: { - backgroundColor: "#42C6FF", - margin: "0.25rem", - padding: "0.20rem", - }, - appBar: { - transition: theme.transitions.create(["margin", "width"], { - easing: theme.transitions.easing.sharp, - duration: theme.transitions.duration.leavingScreen - }) - }, - appBarShift: { - width: `calc(100% - ${drawerWidth}px)`, - marginLeft: drawerWidth, - transition: theme.transitions.create(["margin", "width"], { - easing: theme.transitions.easing.easeOut, - duration: theme.transitions.duration.enteringScreen - }) - }, - menuButton: { - marginRight: theme.spacing(2), - color: "#42C6FF" - }, - hide: { - display: "none" - }, - drawer: { - width: drawerWidth, - flexShrink: 0 - }, - drawerPaper: { - width: drawerWidth - }, - drawerHeader: { - display: "flex", - alignItems: "center", - padding: theme.spacing(0, 1), - // necessary for content to be below app bar - ...theme.mixins.toolbar, - justifyContent: "flex-end" - }, - content: { - flexGrow: 1, - padding: theme.spacing(3), - transition: theme.transitions.create("margin", { - easing: theme.transitions.easing.sharp, - duration: theme.transitions.duration.leavingScreen - }), - marginLeft: -drawerWidth - }, - contentShift: { - transition: theme.transitions.create("margin", { - easing: theme.transitions.easing.easeOut, - duration: theme.transitions.duration.enteringScreen - }), - marginLeft: 0, - }, - lensName:{ - color:"#EAFDFF", - fontSize: "1.5rem", - }, - header:{ - fontSize: "35px", - }, - headerContent: { - width: "100vw", - display: "flex", - justifyContent: "space-between", - }, - close:{ - color:"#42C6FF", - }, - link: { - color: "#42C6FF", - textDecoration: "none" - } - }) -); - -type SideBarProps = { +import { Link } from 'react-router-dom'; +import { checkLogin } from '../Login'; +import LoginNotification from "./reusableComponents/Notifications"; +import { useStyles } from "./makeStyles/GraphVizStyles"; + +type EngagementViewProps = { setLens: (lens: string) => void, curLens: string, curNode: Node | null } -export default function SideBar({setLens, curLens, curNode}: SideBarProps) { +const defaultEngagementUxState = (): EngagementUxState => { + return { + curLens: "", + curNode: null, + loggedIn: true, + renderedOnce: false + } +} + +export default function EngagementView({setLens, curLens, curNode}: EngagementViewProps) { const classes = useStyles(); const [open, setOpen] = React.useState(true); @@ -149,9 +74,8 @@ export default function SideBar({setLens, curLens, curNode}: SideBarProps) { > GRAPL - + - @@ -170,10 +94,10 @@ export default function SideBar({setLens, curLens, curNode}: SideBarProps) { - + @@ -182,7 +106,9 @@ export default function SideBar({setLens, curLens, curNode}: SideBarProps) { [classes.contentShift]: open })} > -
+ +
+

{/* selected lens name */} {curLens || ""} @@ -196,22 +122,42 @@ export default function SideBar({setLens, curLens, curNode}: SideBarProps) { type EngagementUxState = { curLens: string, - curNode: Node | null -} - -const defaultEngagementUxState = (): EngagementUxState => { - return { - curLens: "", - curNode: null, - } + curNode: Node | null, + loggedIn: boolean, + renderedOnce: boolean, } export const EngagementUx = () => { + const classes = useStyles(); const [state, setState] = React.useState(defaultEngagementUxState()); - + + useEffect( + () => { + if (state.renderedOnce) { + return; + } + const interval = setInterval(async () => { + await checkLogin() + .then((loggedIn) => { + if (!loggedIn) { + console.warn("Logged out") + } + setState({ + ...state, + loggedIn: loggedIn || false, + renderedOnce: true, + }); + }); + }, 2000); + return () => { clearInterval(interval) } + }, + [state, setState]); + + const loggedIn = state.loggedIn; + return ( <> - setState({ ...state, @@ -221,16 +167,22 @@ export const EngagementUx = () => { curLens={state.curLens} curNode={state.curNode} /> + <> +
+ {!loggedIn ? : ""} +
- { - setState({ - ...state, - curNode: node, - }) - }} - /> + { + setState({ + ...state, + curNode: node, + }) + }} + /> + ) } \ No newline at end of file diff --git a/src/js/engagement_view/src/components/SideBarContent.tsx b/src/js/engagement_view/src/components/EngagementViewContent.tsx similarity index 76% rename from src/js/engagement_view/src/components/SideBarContent.tsx rename to src/js/engagement_view/src/components/EngagementViewContent.tsx index 55fa50d5e9..175e12c0b9 100644 --- a/src/js/engagement_view/src/components/SideBarContent.tsx +++ b/src/js/engagement_view/src/components/EngagementViewContent.tsx @@ -1,7 +1,6 @@ import React, {useEffect, useState} from "react"; import NodeTable from './NodeTable' import Button from "@material-ui/core/Button"; -import { makeStyles } from "@material-ui/core/styles"; import ExpandMoreIcon from '@material-ui/icons/ExpandMore'; import BubbleChartIcon from '@material-ui/icons/BubbleChart'; import LensIcon from '@material-ui/icons/Lens'; @@ -16,44 +15,9 @@ import { getGraphQlEdge } from "../modules/GraphViz/engagement_edge/getApiURLs"; import TablePagination from '@material-ui/core/TablePagination'; import { ClassNameMap } from '@material-ui/styles/withStyles'; -import {SelectLensProps, ToggleLensTableProps, ToggleLensTableState, SideBarContentProps, NodeDetailsProps, ToggleNodeTableProps, PaginationState} from "../modules/GraphViz/CustomTypes" - -const useStyles = makeStyles({ - root:{ - fontSize: "1rem", - }, - button: { - width: ".005%", - color: "white", - backgroundColor:"#424242", - }, - title: { - fontSize: "25px", - color: "#ffffff", - }, - icon:{ - color: "#42C6FF", - margin: "15px 0 0 10px", - }, - expand:{ - color: "#42C6FF", - margin: "0px" - }, - header:{ - display: "flex" - }, - table: { - minWidth: 450, - }, - lensName: { - fontSize: "16px", - }, - pagination: { - margin: ".5rem", - backgroundColor: "#595959", - } -}); +import {SelectLensProps, ToggleLensTableProps, ToggleLensTableState, EngagementViewContentProps, NodeDetailsProps, ToggleNodeTableProps, PaginationState} from "../modules/GraphViz/CustomTypes" +import { useStyles } from './makeStyles/EngagementViewContentStyles'; function SelectLens(props: SelectLensProps) { const classes = useStyles(); @@ -97,39 +61,39 @@ const pagedTable = ( ) => { return ( - - { - state.lenses - .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage) - .map( - (lens: Lens) => { - return( - - - - -
- ) - } - ) - } + + { + state.lenses + .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage) + .map( + (lens: Lens) => { + return( + + + + +
+ ) + } + ) + }
) } @@ -280,7 +244,7 @@ function ToggleNodeTable({curNode}: ToggleNodeTableProps) { -export default function SideBarContent({setLens, curNode}: SideBarContentProps) { +export default function EngagementViewContent({setLens, curNode}: EngagementViewContentProps) { return ( <> diff --git a/src/js/engagement_view/src/components/GraphViz.tsx b/src/js/engagement_view/src/components/GraphViz.tsx index d3ef5b0c10..240493e7c5 100644 --- a/src/js/engagement_view/src/components/GraphViz.tsx +++ b/src/js/engagement_view/src/components/GraphViz.tsx @@ -211,7 +211,7 @@ const GraphDisplay = ({lensName, setCurNode}: GraphDisplayProps) => { useEffect(() => { // console.log("useEffect - setting forceRef state"); forceRef.current.d3Force("link", d3.forceLink()); - forceRef.current.d3Force('collide', d3.forceCollide(22)); + forceRef.current.d3Force('collide', d3.forceCollide(22)); forceRef.current.d3Force("charge", d3.forceManyBody()); forceRef.current.d3Force('box', () => { const N = 100; diff --git a/src/js/engagement_view/src/components/NodeTable.tsx b/src/js/engagement_view/src/components/NodeTable.tsx index b88b933ff3..0ed75a2273 100644 --- a/src/js/engagement_view/src/components/NodeTable.tsx +++ b/src/js/engagement_view/src/components/NodeTable.tsx @@ -1,5 +1,4 @@ import React from "react"; -import { makeStyles } from '@material-ui/core/styles'; import Table from '@material-ui/core/Table'; import TableBody from '@material-ui/core/TableBody'; import TableCell from '@material-ui/core/TableCell'; @@ -8,24 +7,8 @@ import TableHead from '@material-ui/core/TableHead'; import TableRow from '@material-ui/core/TableRow'; import { mapEdgeProps } from '../modules/GraphViz/graph/graph_traverse'; import { mapNodeProps } from './GraphViz'; -import { Node } from "../modules/GraphViz/CustomTypes" - - -const useStyles = makeStyles({ - root: { - fontSize: ".75em" - }, - nodeTable: { - minWidth: 450, - }, - tableHeader: { - fontSize: ".85rem", - backgroundColor: "#595959" - }, - nodeTableData: { - fontSize: ".75rem" - }, -}); +import { Node } from "../modules/GraphViz/CustomTypes"; +import { useStyles } from "./makeStyles/NodeTableStyles"; function innerTable(node: Node, styles: any) { if(node) { @@ -84,31 +67,29 @@ function NodeTable({node}: NodeTableProps){ } ) - return( - - - { - innerTable(node, classes) - } - - { - Object.entries(displayNode).map((entry) => { - const [key, value] = entry; - - return( - - {key} - {value as any} - - ) - }) - } - -
-
- ) - - + return( + + + { + innerTable(node, classes) + } + + { + Object.entries(displayNode).map((entry) => { + const [key, value] = entry; + + return( + + {key} + {value as any} + + ) + }) + } + +
+
+ ) } diff --git a/src/js/engagement_view/src/components/UploadPlugin.tsx b/src/js/engagement_view/src/components/UploadPlugin.tsx index 424534814b..6d425a37ba 100644 --- a/src/js/engagement_view/src/components/UploadPlugin.tsx +++ b/src/js/engagement_view/src/components/UploadPlugin.tsx @@ -1,14 +1,48 @@ -import React from 'react'; +import React, {useEffect, useState} from 'react'; import GraplHeader from "./reusableComponents/GraplHeader"; import { useStyles } from "../modules/uploads/plugins/useStyles"; import { UploadForm } from "../modules/uploads/plugins/uploadPlugins"; import { PluginTable } from "../modules/uploads/plugins/pluginTable"; +import { checkLogin } from '../Login'; +import LoginNotification from "./reusableComponents/Notifications"; + const UploadPlugin = () => { const classes = useStyles(); + const [state, setState] = useState({ + loggedIn: true, + renderedOnce: false, + }); + + useEffect(() => { + if (state.renderedOnce){ + return + } + const interval = setInterval(async() => { + await checkLogin() + .then((loggedIn) => { + if(!loggedIn){ + console.warn("Logged Out") + } + setState({ + loggedIn: loggedIn || false, + renderedOnce: true, + }); + }); + }, 2000); + return () => { clearInterval(interval) } + }, [state, setState]); + + const loggedIn = state.loggedIn; + return( <> + +
+ {!loggedIn ? : ""} +
+
diff --git a/src/js/engagement_view/src/components/makeStyles/DashboardStyles.tsx b/src/js/engagement_view/src/components/makeStyles/DashboardStyles.tsx new file mode 100644 index 0000000000..2aaffce197 --- /dev/null +++ b/src/js/engagement_view/src/components/makeStyles/DashboardStyles.tsx @@ -0,0 +1,47 @@ +import {createStyles, makeStyles, Theme} from "@material-ui/core/styles"; + +export const dasboardStyles = makeStyles( (theme: Theme) => +createStyles({ + root: { + display: "flex", + }, + button: { + backgroundColor: "#42C6FF", + margin: "0.25rem", + padding: "0.25rem", + }, + welcome: { + width:"70%", + textAlign:"center", + backgroundColor: "#373740", + height: "100vh", + color: "white", + }, + loggedIn: { + display:"flex", + justifyContent: "flex-end", + }, + nav: { + margin: "2rem", + width: "30%", + display: "flex", + flexDirection: "column", + }, + dashboard: { + display: "flex", + flexDirection: "row", + }, + link: { + color: "white", + textDecoration: "none", + padding: ".75rem", + backgroundColor: "#42C6FF", + margin: "1rem", + textAlign: "center", + borderRadius: ".35rem", + textTransform: "uppercase", + fontWeight: "bolder" + }, + +}) +); \ No newline at end of file diff --git a/src/js/engagement_view/src/components/makeStyles/EngagementViewContentStyles.tsx b/src/js/engagement_view/src/components/makeStyles/EngagementViewContentStyles.tsx new file mode 100644 index 0000000000..bb056eb37d --- /dev/null +++ b/src/js/engagement_view/src/components/makeStyles/EngagementViewContentStyles.tsx @@ -0,0 +1,37 @@ +import { makeStyles } from "@material-ui/core/styles"; + +export const useStyles = makeStyles({ + root:{ + fontSize: "1rem", + }, + button: { + width: ".005%", + color: "white", + backgroundColor:"#424242", + }, + title: { + fontSize: "25px", + color: "#ffffff", + }, + icon:{ + color: "#42C6FF", + margin: "15px 0 0 10px", + }, + expand:{ + color: "#42C6FF", + margin: "0px" + }, + header:{ + display: "flex" + }, + table: { + minWidth: 450, + }, + lensName: { + fontSize: "16px", + }, + pagination: { + margin: ".5rem", + backgroundColor: "#595959", + } +}); \ No newline at end of file diff --git a/src/js/engagement_view/src/components/makeStyles/GraphVizStyles.tsx b/src/js/engagement_view/src/components/makeStyles/GraphVizStyles.tsx new file mode 100644 index 0000000000..1b4dc322e9 --- /dev/null +++ b/src/js/engagement_view/src/components/makeStyles/GraphVizStyles.tsx @@ -0,0 +1,92 @@ +import {createStyles, makeStyles, Theme} from "@material-ui/core/styles"; + +const drawerWidth = 500; + +export const useStyles = makeStyles((theme: Theme) => + createStyles({ + root: { + display: "flex" + }, + button: { + backgroundColor: "#42C6FF", + margin: "0.25rem", + padding: "0.20rem", + }, + loggedIn: { + display: "flex", + alignItems: "flex-end", + justifyContent: "flex-end", + }, + appBar: { + transition: theme.transitions.create(["margin", "width"], { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.leavingScreen + }) + }, + appBarShift: { + width: `calc(100% - ${drawerWidth}px)`, + marginLeft: drawerWidth, + transition: theme.transitions.create(["margin", "width"], { + easing: theme.transitions.easing.easeOut, + duration: theme.transitions.duration.enteringScreen + }) + }, + menuButton: { + marginRight: theme.spacing(2), + color: "#42C6FF" + }, + hide: { + display: "none" + }, + drawer: { + width: drawerWidth, + flexShrink: 0 + }, + drawerPaper: { + width: drawerWidth + }, + drawerHeader: { + display: "flex", + alignItems: "center", + padding: theme.spacing(0, 1), + // necessary for content to be below app bar + ...theme.mixins.toolbar, + justifyContent: "flex-end" + }, + content: { + flexGrow: 1, + padding: theme.spacing(3), + transition: theme.transitions.create("margin", { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.leavingScreen + }), + marginLeft: -drawerWidth + }, + contentShift: { + transition: theme.transitions.create("margin", { + easing: theme.transitions.easing.easeOut, + duration: theme.transitions.duration.enteringScreen + }), + marginLeft: 0, + }, + lensName:{ + color:"#EAFDFF", + fontSize: "1.5rem", + }, + header:{ + fontSize: "35px", + }, + headerContent: { + width: "100vw", + display: "flex", + justifyContent: "space-between", + }, + close:{ + color:"#42C6FF", + }, + link: { + color: "#42C6FF", + textDecoration: "none" + } + }) +); \ No newline at end of file diff --git a/src/js/engagement_view/src/components/makeStyles/NodeTableStyles.tsx b/src/js/engagement_view/src/components/makeStyles/NodeTableStyles.tsx new file mode 100644 index 0000000000..2f200c37d3 --- /dev/null +++ b/src/js/engagement_view/src/components/makeStyles/NodeTableStyles.tsx @@ -0,0 +1,17 @@ +import { makeStyles } from '@material-ui/core/styles'; + +export const useStyles = makeStyles({ + root: { + fontSize: ".75em" + }, + nodeTable: { + minWidth: 450, + }, + tableHeader: { + fontSize: ".85rem", + backgroundColor: "#595959" + }, + nodeTableData: { + fontSize: ".75rem" + }, +}); diff --git a/src/js/engagement_view/src/components/reusableComponents/GraplHeader.tsx b/src/js/engagement_view/src/components/reusableComponents/GraplHeader.tsx index 4a2172b537..0f1ebdb1b2 100644 --- a/src/js/engagement_view/src/components/reusableComponents/GraplHeader.tsx +++ b/src/js/engagement_view/src/components/reusableComponents/GraplHeader.tsx @@ -2,9 +2,9 @@ import React from 'react'; import AppBar from "@material-ui/core/AppBar"; import Toolbar from "@material-ui/core/Toolbar"; import Typography from "@material-ui/core/Typography"; -import {createStyles, makeStyles, Theme} from "@material-ui/core/styles"; +import { createStyles, makeStyles, Theme } from "@material-ui/core/styles"; import Home from '@material-ui/icons/Home'; -import {Link} from 'react-router-dom'; +import { Link } from 'react-router-dom'; const useStyles = makeStyles( (theme: Theme) => @@ -23,7 +23,6 @@ const useStyles = makeStyles( ) ); - type GraplHeaderProps = { displayBtn: boolean } diff --git a/src/js/engagement_view/src/components/reusableComponents/Notifications.tsx b/src/js/engagement_view/src/components/reusableComponents/Notifications.tsx new file mode 100644 index 0000000000..c5ea26b80a --- /dev/null +++ b/src/js/engagement_view/src/components/reusableComponents/Notifications.tsx @@ -0,0 +1,51 @@ + import React from 'react'; + import { makeStyles } from '@material-ui/core/styles'; + import Card from '@material-ui/core/Card'; + import CardActionArea from '@material-ui/core/CardActionArea'; + import CardActions from '@material-ui/core/CardActions'; + import CardContent from '@material-ui/core/CardContent'; + import Button from '@material-ui/core/Button'; + import Typography from '@material-ui/core/Typography'; + + const useStyles = makeStyles({ + root: { + maxWidth: 345, + postion: "fixed", + }, + button: { + border: "2px solid white", + backgroundColor: "#42c6ff", + } + }); + + + export default function LoginNotification() { + const classes = useStyles(); + + return ( + + + + + You are not logged in and changes cannot be saved. + + + + + + + + + + ); + } diff --git a/src/js/engagement_view/src/modules/GraphViz/CustomTypes.tsx b/src/js/engagement_view/src/modules/GraphViz/CustomTypes.tsx index 89222559d0..659a95544a 100644 --- a/src/js/engagement_view/src/modules/GraphViz/CustomTypes.tsx +++ b/src/js/engagement_view/src/modules/GraphViz/CustomTypes.tsx @@ -198,7 +198,7 @@ export type ToggleLensTableState = { offset: number, } -export type SideBarContentProps = { +export type EngagementViewContentProps = { setLens: (lens: string) => void, curNode: Node | null } diff --git a/src/js/engagement_view/src/modules/uploads/plugins/apiRequests.tsx b/src/js/engagement_view/src/modules/uploads/plugins/apiRequests.tsx index 369f0c4655..88533fedc3 100644 --- a/src/js/engagement_view/src/modules/uploads/plugins/apiRequests.tsx +++ b/src/js/engagement_view/src/modules/uploads/plugins/apiRequests.tsx @@ -12,11 +12,15 @@ export const getPluginList = async () => { } ); - const body = await res.json(); - - let pluginList: string[] = body.success.plugin_list; + const body = await res.json() as any; - return pluginList + try { + let pluginList: string[] = body.success.plugin_list; + return pluginList + } catch (e) { + console.warn(e); + return [] + } } export const deletePlugin = async ( pluginName: string ): Promise => { diff --git a/src/js/engagement_view/src/modules/uploads/plugins/useStyles.tsx b/src/js/engagement_view/src/modules/uploads/plugins/useStyles.tsx index 269b23a3a5..28243f6aea 100644 --- a/src/js/engagement_view/src/modules/uploads/plugins/useStyles.tsx +++ b/src/js/engagement_view/src/modules/uploads/plugins/useStyles.tsx @@ -16,6 +16,10 @@ export const useStyles = makeStyles( padding: "0.25rem", borderRadius: "6px", }, + loggedIn: { + display:"flex", + justifyContent: "flex-end", + }, inputFiles: { border: "none", width: "35vw", diff --git a/src/js/graphql_endpoint/modules/schema.js b/src/js/graphql_endpoint/modules/schema.js index ace6441aaf..92cfc9463f 100644 --- a/src/js/graphql_endpoint/modules/schema.js +++ b/src/js/graphql_endpoint/modules/schema.js @@ -420,6 +420,7 @@ const handleLensScope = async (parent, args) => { const lens_name = args.lens_name; const lens = await getLensByName(dg_client, lens_name); + lens["scope"] = lens["scope"] || []; for (const node of lens["scope"]) { diff --git a/src/js/graphql_endpoint/server.js b/src/js/graphql_endpoint/server.js index ec3dc56bd5..c6ecac86b1 100644 --- a/src/js/graphql_endpoint/server.js +++ b/src/js/graphql_endpoint/server.js @@ -51,13 +51,7 @@ const corsDelegate = (req, callback) => { } -const middleware = [cors(corsDelegate)]; - -if (!IS_LOCAL) { - middleware.push(validateJwt) -} else { - console.info("Running locally - disabling auth"); -} +const middleware = [cors(corsDelegate), validateJwt]; app.options('*', cors(corsDelegate)); app.use('/graphql', middleware, graphqlHTTP({ diff --git a/src/js/grapl-cdk/edge_ux/static/js/main.303b9f70.chunk.js.map b/src/js/grapl-cdk/edge_ux/static/js/main.303b9f70.chunk.js.map index 2faabadf2d..dd57ed7749 100644 --- a/src/js/grapl-cdk/edge_ux/static/js/main.303b9f70.chunk.js.map +++ b/src/js/grapl-cdk/edge_ux/static/js/main.303b9f70.chunk.js.map @@ -1 +1 @@ -{"version":3,"sources":["modules/GraphViz/engagement_edge/getApiURLs.tsx","Login.tsx","modules/GraphViz/calculations/node/nodeCalcs.tsx","modules/GraphViz/calculations/link/linkCalcs.tsx","modules/GraphViz/graphColoring/coloring.tsx","modules/GraphViz/graph/graph_traverse.tsx","modules/GraphViz/graphQL/expandScope.tsx","modules/GraphViz/graph/mergeGraphs.tsx","modules/GraphViz/graphQL/graphQLAdjacencyMatrix.tsx","modules/GraphViz/graph/labels.tsx","components/GraphViz.tsx","components/NodeTable.tsx","components/SideBarContent.tsx","components/SideBar.tsx","components/reusableComponents/GraplHeader.tsx","components/Dashboard.tsx","modules/uploads/plugins/useStyles.tsx","modules/uploads/plugins/apiRequests.tsx","modules/uploads/plugins/uploadPlugins.tsx","modules/uploads/plugins/pluginTable.tsx","components/UploadPlugin.tsx","App.tsx","serviceWorker.ts","index.tsx"],"names":["getGraphQlEdge","window","location","hostname","getModelPluginEdge","engagement_edge","LogIn","_","className","initialValues","userName","password","onSubmit","values","a","console","log","sha256WithPepper","login","history","replaceState","warn","name","type","placeholder","sha256","message","msgBuffer","TextEncoder","encode","crypto","subtle","digest","hashBuffer","hashArray","Array","from","Uint8Array","map","b","toString","slice","join","username","hashed","i","fetch","method","body","JSON","stringify","headers","credentials","res","json","calcNodeRiskPercentile","_nodeRisk","_allRisks","nodeRisk","risk","allRisks","n","sort","undefined","length","riskIndex","Math","floor","findNode","id","nodes","node","calcLinkRiskPercentile","link","Graph","linkRisk","srcNode","source","dstNode","target","error","srcRisk","dstRisk","round","calcLinkRisk","BKDRHash","str","hash","MAX_SAFE_INTEGER","parseInt","charCodeAt","calcNodeRgb","colorHash","nodeType","rgb","percentToColor","percentile","calcLinkColor","mapGraph","f","visited","Set","mapEdgeProps","edgeName","neighbor","_mapGraph","has","uid","add","mapEdges","prop","Object","prototype","hasOwnProperty","call","maybeNeighbor","isArray","graphql_edge","builtins","unpackPluginNodes","predicates","edge_name","dgraph_type","pluginNode","keys","forEach","key","retrieveGraph","lens","query","expandScope","then","data","lens_scope","lensWithScope","scope","lensName","mergeNodes","x","y","merged","mapNodeProps","mergeGraphs","curGraph","update","links","outputGraph","updated","Map","set","newNode","get","label","newLink","newLinkSource","newLinkTarget","getNodeType","t","node_type","randomInt","min","max","random","graphQLAdjacencyMatrix","inputGraph","nodeMap","traverseNeighbors","callback","fromNode","toNode","push","traverseNodes","nodeLabel","_node","process_name","process_id","file_path","external_ip","lens_name","getNodeLabel","strippedNode","analyzer_names","risks","risk_score","analyzer_name","edge","_neighbor","vizNode","HSL2RGB","H","S","L","q","p","color","o","ColorHash","options","hsl","hueRanges","range","apply","LS","lightness","saturation","param","concat","this","hue","updateGraph","state","setState","mergeUpdate","graphData","curLensName","catch","e","GraphDisplay","setCurNode","React","useState","defaultGraphDisplayState","forceRef","useRef","useEffect","current","d3Force","d3","abs","vx","vy","interval","setInterval","clearInterval","enableNodeDrag","linkDirectionalParticles","linkDirectionalParticleWidth","linkRiskPercentile","calcLinkParticleWidth","linkDirectionalParticleColor","linkDirectionalParticleSpeed","onNodeClick","event","linkDirectionalArrowLength","linkWidth","linkDirectionalArrowRelPos","riskPercentile","calcLinkDirectionalArrowRelPos","linkCanvasObjectMode","linkCanvasObject","ctx","start","end","textPos","assign","c","relLink","maxTextLength","sqrt","pow","LABEL_NODE_MARGIN","textAngle","atan2","PI","mapLabel","font","fontSize","measureText","width","textWidth","bckgDimensions","save","translate","rotate","fillStyle","fillRect","textAlign","textBaseline","fillText","restore","nodeCanvasObject","globalScale","NODE_R","nodeSize","beginPath","arc","nodeColors","riskColor","fill","nodeRbg","ref","useStyles","makeStyles","root","nodeTable","minWidth","tableHeader","backgroundColor","nodeTableData","NodeTable","classes","hidden","displayNode","propName","includes","Date","toLocaleString","TableContainer","Table","styles","TableHead","TableRow","TableCell","align","innerTable","TableBody","entries","entry","value","button","title","icon","margin","expand","header","display","table","pagination","SelectLens","props","component","Button","onClick","setLens","lens_type","score","ToggleLensTable","toggled","lenses","first","offset","page","setPage","rowsPerPage","setRowsPerPage","getLenses","response","handleChangePage","handleChangeRowsPerPage","TablePagination","aria-label","rowsPerPageOptions","count","onChangePage","onChangeRowsPerPage","Number","pagedTable","Divider","errors","jres","NodeDetails","ToggleNodeTable","curNode","toggle","SideBarContent","theme","createStyles","padding","appBar","transition","transitions","create","easing","sharp","duration","leavingScreen","appBarShift","marginLeft","easeOut","enteringScreen","menuButton","marginRight","spacing","hide","drawer","flexShrink","drawerPaper","drawerHeader","alignItems","mixins","toolbar","justifyContent","content","flexGrow","contentShift","headerContent","close","textDecoration","SideBar","curLens","open","setOpen","AppBar","position","clsx","Toolbar","IconButton","Typography","variant","noWrap","to","Drawer","anchor","paper","paragraph","EngagementUx","GraplHeader","displayBtn","welcome","height","nav","flexDirection","dashboard","Dashboard","formContainer","btn","borderRadius","inputFiles","border","upload","succMsg","errMsg","pluginTable","boxShadow","uploadFormContainer","uploadForm","fontFamily","getPluginList","pluginList","success","plugin_list","deletePlugin","pluginName","plugins_to_delete","uploadFilesToDgraph","payload","Success","readFile","file","Promise","resolve","reject","reader","FileReader","addEventListener","fileRes","result","TextDecoder","decode","readAsText","Message","status","UploadForm","curFiles","fileMap","reads","fileRead","fileResult","path","webkitRelativePath","mozRelativePath","all","plugins","didSucceed","directory","webkitdirectory","mozdirectory","multiple","onChange","currentTarget","files","PluginTable","rows","newPage","UploadPlugin","App","exact","Boolean","match","darkTheme","createMuiTheme","palette","primary","main","rootElement","document","getElementById","ReactDOM","render","StrictMode","ThemeProvider","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.303b9f70.chunk.js","sourcesContent":["export const getAuthEdge = () => {\n return \"http://\" + window.location.hostname + \":8900/\"\n}\n\nexport const getGraphQlEdge = () => {\n return \"http://\" + window.location.hostname + \":5000/\"\n}\n\nexport const getModelPluginEdge = () => {\n return \"http://\" + window.location.hostname + \":8123/\"\n}","import React from 'react';\nimport './LogIn.css';\nimport {Field, Form, Formik} from \"formik\";\nimport {LoginProps} from '../src/modules/GraphViz/CustomTypes';\nimport {getAuthEdge} from './modules/GraphViz/engagement_edge/getApiURLs';\n\nconst engagement_edge = getAuthEdge();\n\nexport const checkLogin = async () => {\n const res = await fetch(`${engagement_edge}checkLogin`, {\n method: 'get',\n credentials: 'include',\n });\n\n const body = await res.json();\n\n return body['success'] === 'True';\n};\n\nexport const LogIn = (_: LoginProps) => {\n return (\n
\n
Grapl
\n
\n {\n console.log(\"logging in\");\n const password = await sha256WithPepper(\n values.userName, values.password\n );\n \n const loginSuccess = login(values.userName, password);\n \n if (loginSuccess) {\n window.history.replaceState('/login', \"\", \"/\")\n console.log(\"Logged in\");\n } else {\n console.warn(\"Login failed!\")\n }\n }}\n >\n
\n
\n
\n \n \n \n \n
\n
\n );\n}\n\nasync function sha256(message: string) {\n // encode as UTF-8\n const msgBuffer = new TextEncoder().encode(message);\n\n // hash the message\n const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);\n\n // convert ArrayBuffer to Array\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n\n // convert bytes to hex string\n return hashArray.map(b => ('00' + b.toString(16)).slice(-2)).join('');\n}\n\n\nconst sha256WithPepper = async (username: string, password: string) => {\n // The pepper only exists to prevent rainbow tables for extremely weak passwords\n // Client side hashing itself is only to prevent cases where the password is\n // exposed before it makes it into the password database\n const pepper = \"f1dafbdcab924862a198deaa5b6bae29aef7f2a442f841da975f1c515529d254\";\n let hashed = await sha256(password + pepper + username);\n\n for (let i = 0; i < 5000; i++) {\n hashed = await sha256(hashed)\n }\n return hashed\n};\n\nconst login = async (username: string, password: string) => {\n try {\n const res = await fetch(`${engagement_edge}login`, {\n method: 'post',\n body: JSON.stringify({\n 'username': username,\n 'password': password\n }),\n headers: {\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n });\n \n const body = await res.json();\n console.log(\"body\", body);\n return body['success'] === 'True';\n } catch (e) {\n console.log(e);\n return false\n }\n };\n\nexport default LogIn;\n","import {VizGraph, VizNode} from '../../CustomTypes';\n\nexport const calcNodeRiskPercentile = (_nodeRisk: number | {risk: number}, _allRisks: any) => {\n let nodeRisk = _nodeRisk;\n if (typeof _nodeRisk === 'object') {\n nodeRisk = _nodeRisk.risk;\n }\n\n const allRisks = _allRisks\n .map((n: any) => n || 0)\n .sort((a: number, b: number) => a - b);\n\n if (nodeRisk === undefined || nodeRisk === 0 || allRisks.length === 0) {\n return 0\n }\n\n let riskIndex = 0;\n for (const risk of allRisks) {\n if (nodeRisk >= risk) {\n riskIndex += 1;\n }\n }\n\n return Math.floor((riskIndex / allRisks.length) * 100)\n};\n\n\nexport const nodeSize = (node: VizNode, Graph: VizGraph) => {\n const nodes = [...Graph.nodes].map(node => node.risk);\n const riskPercentile = calcNodeRiskPercentile(node.risk, nodes);\n\n if (riskPercentile >= 75) {\n return 6\n } else if (riskPercentile >= 25) {\n return 5\n } else {\n return 4\n }\n};\n","import { calcNodeRiskPercentile } from '../node/nodeCalcs'; \nimport { LinkType, VizNode, VizGraph } from '../../CustomTypes';\n\n\nconst findNode = (id: number, nodes: VizNode[]) => {\n for (const node of (nodes || [])) {\n if (node.id === id) {\n return node\n }\n }\n return null\n};\n\nexport const calcLinkRisk = (link: LinkType, Graph: VizGraph) => {\n // console.log(\"LINK\", link)\n let srcNode = \n // findNode(link.source, Graph.nodes) || \n findNode(link.source.name, Graph.nodes);\n let dstNode = \n // findNode(link.target, Graph.nodes)||\n findNode(link.target.name, Graph.nodes);\n\n if (!srcNode || !dstNode) {\n console.error(\"Missing srcNode/dstNode\", srcNode, link, dstNode);\n return 0;\n }\n\n const srcRisk = srcNode.risk || 0;\n const dstRisk = dstNode.risk || 0;\n\n return Math.round((srcRisk + dstRisk) / 2)\n};\n\nexport const calcLinkDirectionalArrowRelPos = (link: LinkType, Graph: VizGraph) => {\n const node = \n // findNode(link.target, Graph.nodes) || \n findNode(link.target.name, Graph.nodes);\n\n if (node === null || node.risk === 0) {\n return 1.0\n }\n const nodes = [...Graph.nodes].map(node => node.risk);\n const riskPercentile = calcNodeRiskPercentile(node.risk, nodes);\n\n if (riskPercentile === 0) {\n return 1.0\n }\n\n if (riskPercentile >= 75) {\n return 0.95\n } else if (riskPercentile >= 50) {\n return 0.9\n } else if (riskPercentile >= 25) {\n return 0.85\n } else {\n return 1.0\n }\n};\n\nexport const calcLinkRiskPercentile = (link: LinkType, Graph: VizGraph) => {\n const linkRisk = calcLinkRisk(link, Graph);\n const nodes = [...Graph.nodes].map(node => node.risk);\n\n return calcNodeRiskPercentile(linkRisk, nodes);\n};\n\nexport const calcLinkParticleWidth = (link: LinkType, Graph:VizGraph) => {\n const linkRiskPercentile = calcLinkRiskPercentile(link, Graph);\n if (linkRiskPercentile >= 75) {\n return 5\n } else if (linkRiskPercentile >= 50) {\n return 4\n } else if (linkRiskPercentile >= 25) {\n return 3\n } else {\n return 2\n }\n};\n","import { calcNodeRiskPercentile } from '../calculations/node/nodeCalcs';\nimport { calcLinkRiskPercentile } from '../calculations/link/linkCalcs';\nimport { LinkType, VizGraph, VizNode } from '../CustomTypes'\nimport { ColorHash } from '../../../components/GraphViz';\n\nexport const BKDRHash = (str: string) => {\n const seed = 131;\n const seed2 = 137;\n let hash = 0 as number;\n // make hash more sensitive for short string like 'a', 'b', 'c'\n str += 'x';\n // Note: Number.MAX_SAFE_INTEGER equals 9007199254740991\n const MAX_SAFE_INTEGER = parseInt(9007199254740991 / seed2 as any) as any;\n for (let i = 0; i < str.length; i++) {\n if (hash > MAX_SAFE_INTEGER) {\n hash = parseInt(hash / seed2 as any);\n }\n hash = hash * seed + str.charCodeAt(i);\n }\n return hash;\n};\n\n//# TODO: Add custom coloring for each node\nexport const calcNodeRgb = (node: VizNode, colorHash: ColorHash) => {\n if (node.nodeType === 'Process') {\n return [31, 185, 128]\n } else if (node.nodeType === 'File') {\n return [177, 93, 255]\n } \n \n // else if (node.nodeType === 'Lens'){\n // return []\n // } else if(node.nodeType === 'IpPort'){\n // return []\n // } else if(node.nodeType === 'IpConnection'){\n // return []\n // } else if(node.nodeType === 'ProcessInboundConnection'){\n // return []\n // } else if(node.nodeType === 'ProcessOutboundConnection'){\n // return []\n // } \n \n else{\n return colorHash.rgb(node.nodeType)\n }\n}\n\n\nexport const percentToColor = (percentile: number) => {\n const hue = (100 - percentile) * 40 / 100;\n\n return `hsl(${hue}, 100%, 50%)`;\n};\n\nexport const calcLinkColor = (link: LinkType, Graph: VizGraph) => {\n const risk = calcLinkRiskPercentile(link, Graph);\n // Default link color if no risk\n if (risk === 0) {\n return 'white'\n }\n return percentToColor(risk);\n};\n\n\nexport const riskColor = (node: VizNode, Graph: VizGraph, colorHash: ColorHash) => {\n const nodes = [...Graph.nodes].map(node => node.risk);\n\n const riskPercentile = calcNodeRiskPercentile(node.risk, nodes);\n\n if (riskPercentile === 0) {\n const nodeColors = calcNodeRgb(node, colorHash);\n return `rgba(${nodeColors[0]}, ${nodeColors[1]}, ${nodeColors[2]}, 1)`;\n }\n\n return percentToColor(riskPercentile);\n};\n\n\n","import { Node } from \"../CustomTypes\";\n\nconst _mapGraph = (node: Node, visited: Set, f:(node:Node, prop:string, neighbor: Node) => void) => {\n mapEdgeProps(node, (edgeName: string, neighbor:Node) => {\n if (visited.has(node.uid + edgeName + neighbor.uid)) {\n return\n }\n\n visited.add(node.uid + edgeName + neighbor.uid);\n\n f(node, edgeName, neighbor);\n _mapGraph(neighbor, visited, f)\n })\n};\n\nexport const mapGraph = (node:Node, f:(node:Node, prop:string, neighbor: Node) => void) => {\n const visited: Set = new Set();\n mapEdgeProps(node, (edgeName:string , neighbor:Node) => {\n\n f(node, edgeName, neighbor);\n _mapGraph(neighbor, visited, f)\n })\n};\n\n// type fType = (prop:string, neighbor: Node) => void)\n// Given a node, call 'f' on any of its neighbors\nexport const mapEdges = (node: Node, f: (prop:string, neighbor: Node) => void) => {\n for (const prop in node) {\n if (Object.prototype.hasOwnProperty.call(node, prop)) {\n const maybeNeighbor = (node as any)[prop];\n if(Array.isArray(maybeNeighbor)) {\n for (const neighbor of maybeNeighbor) {\n if (neighbor.uid !== undefined) {\n f(prop, neighbor)\n }\n }\n } else {\n if (maybeNeighbor && maybeNeighbor.uid !== undefined) {\n f(prop, maybeNeighbor)\n }\n }\n }\n }\n};\n\nexport const mapEdgeProps = (node: Node, f: (prop:string, neighbor: Node) => void) => {\n for (const prop in node) {\n if (Object.prototype.hasOwnProperty.call(node, prop)) {\n const maybeNeighbor = (node as any)[prop];\n if(Array.isArray(maybeNeighbor)) {\n for (const neighbor of maybeNeighbor) {\n if (neighbor.uid !== undefined) {\n f(prop, neighbor)\n }\n }\n } else {\n if (maybeNeighbor && maybeNeighbor.uid !== undefined) {\n f(prop, maybeNeighbor)\n }\n }\n }\n }\n};\n\nexport const traverseNodes = (node: Node, callback: (node: Node) => void) => {\n callback(node);\n mapEdges(node, (_, neighbor) => {\n traverseNodes(neighbor, callback);\n })\n}\n\nexport const traverseNeighbors = (node: Node, callback: (node:Node, prop:string, neighbor: Node) => void) => {\n mapEdges(node, (edgeName: string, neighbor: Node) => {\n callback(node, edgeName, neighbor);\n\n traverseNeighbors(neighbor, callback);\n })\n}\n\n","import {BaseNode, LensScopeResponse} from '../../GraphViz/CustomTypes'\nimport {mapGraph} from \"../graph/graph_traverse\";\nimport {getGraphQlEdge} from '../engagement_edge/getApiURLs';\n\nconst graphql_edge = getGraphQlEdge();\n\nconst builtins = new Set([\n 'Process',\n 'File',\n 'IpAddress',\n 'Asset',\n 'Risk',\n 'IpConnections',\n 'ProcessInboundConnections',\n 'ProcessOutboundConnections',\n])\n\nconst unpackPluginNodes = (nodes: BaseNode[]) => {\n for (const node of nodes) {\n if (!(node as any).predicates) {\n continue\n }\n mapGraph(node, (node, edge_name, neighbor) => {\n if ((node as any).predicates) {\n if(!builtins.has((node as any).predicates.dgraph_type[0])) {\n // Using 'any' because the PluginType is temporary, and not valid outside of the initial response\n const pluginNode = {...(node as any).predicates};\n delete (node as any).predicates\n Object.keys(pluginNode).forEach(function(key) { (node as any)[key] = pluginNode[key]; });\n }\n }\n\n if ((neighbor as any).predicates) {\n if(!builtins.has((neighbor as any).predicates.dgraph_type[0])) {\n // Using 'any' because the PluginType is temporary, and not valid outside of the initial response\n const pluginNode = {...(neighbor as any).predicates};\n delete (neighbor as any).predicates\n Object.keys(pluginNode).forEach(function(key) { (neighbor as any)[key] = pluginNode[key]; });\n }\n }\n })\n\n }\n}\n\nexport const retrieveGraph = async (lens: string): Promise<(LensScopeResponse & BaseNode)> => {\n const query = expandScope(lens);\n\n const res = await fetch(`${graphql_edge}graphql`,\n {\n method: 'post',\n body: JSON.stringify({ query }),\n headers: {\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n })\n .then(res => res.json())\n .then(res => {\n console.log('retrieveGraph res', res);\n return res\n })\n .then((res) => res.data)\n .then((res) => res.lens_scope);\n\n const lensWithScope = await res;\n console.log('LensWithScope: ', lensWithScope);\n unpackPluginNodes(lensWithScope.scope);\n return lensWithScope;\n};\n\nexport const expandScope = (lensName: string) => {\n \n const query = `\n {\n lens_scope(lens_name: \"${lensName}\") {\n uid,\n node_key,\n lens_name,\n lens_type,\n dgraph_type,\n scope {\n ... on Process {\n uid,\n node_key, \n dgraph_type,\n process_name, \n process_id,\n children {\n uid, \n node_key, \n dgraph_type,\n process_name, \n process_id,\n }, \n risks { \n uid,\n dgraph_type,\n node_key, \n analyzer_name, \n risk_score\n },\n }\n \n ... on Asset {\n uid, \n node_key, \n dgraph_type,\n hostname,\n asset_ip{\n ip_address\n }, \n asset_processes{\n uid, \n node_key, \n dgraph_type,\n process_name, \n process_id,\n },\n files_on_asset{\n uid, \n node_key, \n dgraph_type,\n file_path\n }, \n risks { \n uid,\n dgraph_type,\n node_key, \n analyzer_name, \n risk_score\n },\n }\n\n ... on File {\n uid,\n node_key, \n dgraph_type,\n risks { \n uid,\n dgraph_type,\n node_key, \n analyzer_name, \n risk_score\n },\n }\n\n ... on PluginType {\n predicates,\n }\n }\n }\n }\n`;\n\n return query;\n}\n\n","import {mapNodeProps} from '../../../../src/components/GraphViz';\nimport {Node, MergeGraphType} from '../CustomTypes'; \n\n// merges y into x, returns true if update occurred\nconst mergeNodes = (x: Node, y: Node) => {\n let merged = false;\n mapNodeProps(y, (prop: string) => {\n if (!Object.prototype.hasOwnProperty.call(x, prop)) {\n merged = true;\n (x as any)[prop] = (y as any)[prop]\n }\n });\n\n return merged;\n};\n\n// #TODO: This algorithm is exponential, and doesn't have to be\nexport const mergeGraphs = (curGraph: MergeGraphType, update: MergeGraphType): MergeGraphType | null => {\n // Merges two graphs into a new graph\n // returns 'null' if there are no updates to be made\n\n if (!update.nodes && !update.links) {\n // empty update\n return null\n }\n\n const outputGraph: MergeGraphType = {nodes: [], links: []};\n\n let updated = false;\n\n const nodes = new Map();\n const links = new Map();\n\n for (const node of curGraph.nodes) {\n nodes.set(node.uid, node)\n }\n\n for (const newNode of update.nodes) {\n const node = nodes.get(newNode.uid);\n if (node) {\n if (mergeNodes(node, newNode)) {\n updated = true;\n }\n } else {\n nodes.set(newNode.uid, newNode);\n updated = true;\n }\n }\n// #TODO: console.log on link.source, check to see if it's an object or not. It should never be an object\n// this should only be a string / an int. At some point, it was getting sent as an object\n for (const link of curGraph.links) {\n if (link) {\n const source = link.source.uid || link.source;\n const target = link.target.uid || link.target;\n links.set(\n source + link.label + target,\n link,\n )\n }\n }\n\n for (const newLink of update.links) {\n const newLinkSource = newLink.source || newLink.source;\n const newLinkTarget = newLink.target || newLink.target;\n const link = links.get(newLinkSource + newLink.label + newLinkTarget);\n if (!link) {\n links.set(newLink.source + newLink.label + newLink.target, newLink);\n updated = true;\n }\n }\n\n outputGraph.nodes = Array.from(nodes.values());\n outputGraph.links = Array.from(links.values());\n if (updated) {\n return outputGraph;\n } else {\n return null;\n }\n}","import { traverseNodes, traverseNeighbors, mapEdges } from \"../graph/graph_traverse\"\nimport { getNodeLabel } from '../graph/labels';\nimport {LensScopeResponse, BaseNode} from \"../../GraphViz/CustomTypes\"\n\ninterface IVizNode {\n uid: number,\n name: number,\n id: number, \n nodeType: string,\n nodeLabel: string,\n x: number,\n y: number,\n}\n\ninterface VizProcessNode extends IVizNode {\n process_id: number,\n process_name: string,\n created_timestamp: number, \n terminate_time: number,\n image_name: string, \n arguments: string,\n}\n\nexport interface File extends IVizNode {\n file_name: string,\n file_path: string,\n file_extension: string,\n file_mime_type: string,\n file_size: number,\n file_version: string, \n file_description: string,\n file_product: string,\n file_company: string, \n file_directory: string,\n file_inode: number,\n file_hard_links: string, \n signed: boolean,\n signed_status: string, \n md5_hash: string,\n sha1_hash: string,\n sha256_hash: string,\n}\n\nexport interface IpConnections extends IVizNode {\n src_ip_addr: string,\n src_port: string,\n dst_ip_addr: string,\n dst_port: string,\n created_timestamp: number,\n terminated_timestamp: number,\n last_seen_timestamp: number,\n}\ninterface VizAssetNode extends IVizNode {\n hostname: string,\n}\n\ninterface VizLensNode extends IVizNode {\n lens_name: string,\n lens_type: string, \n}\n\ntype VizDynamicNode = IVizNode;\n\ntype VizNode = VizProcessNode | VizAssetNode | VizLensNode | VizDynamicNode;\n\ntype VizLink = {\n source: number,\n label: string,\n target: number, \n}\n\ntype AdjacencyMatrix = {\n nodes: VizNode[],\n links: VizLink[]\n}\n\n\nconst getNodeType = (node: BaseNode) => {\n const t = node.dgraph_type || node.node_type;\n\n if (t) {\n if (Array.isArray(t)) {\n return t[0]\n }\n return t\n }\n\n console.warn('Unable to find type for node ', node);\n return 'Unknown';\n};\n\nfunction randomInt(min: number, max: number) // min and max included\n{\n let randomNum: number = Math.floor(Math.random() * (max - min + 1) + min);\n return randomNum;\n}\n\n\nexport const graphQLAdjacencyMatrix = (inputGraph: (LensScopeResponse & BaseNode)): AdjacencyMatrix => {\n\n const nodes: VizNode[] = []; \n const links: VizLink[] = [];\n\n const nodeMap: Map = new Map();\n\n traverseNeighbors(inputGraph, \n (fromNode: BaseNode, edgeName: string, toNode: BaseNode) => {\n if(edgeName !== 'scope'){\n \n if(getNodeType(fromNode) === 'Unknown'){\n return;\n }\n\n if(getNodeType(toNode) === 'Unknown'){\n return;\n }\n\n if(getNodeType(fromNode) === 'Risk'){\n return;\n }\n\n if(getNodeType(toNode) === 'Risk'){\n return;\n }\n \n links.push({\n source: fromNode.uid,\n label: edgeName, \n target: toNode.uid\n })\n } \n })\n\n traverseNodes(inputGraph, (node: BaseNode) => {\n const nodeType = getNodeType(node);\n\n if(nodeType === 'Unknown'){\n return;\n }\n\n if(nodeType === 'Risk'){\n return; \n }\n\n const nodeLabel = getNodeLabel(nodeType, node);\n\n const strippedNode = {...node};\n\n strippedNode.risk = strippedNode.risk || 0;\n strippedNode.analyzer_names = strippedNode.analyzer_names || \"\";\n\n for(const risk of node.risks || []){\n strippedNode.risk += risk.risk_score || 0;\n if (strippedNode.analyzer_names && risk.analyzer_name) {\n // #TODO: Link to the analyzer details\n strippedNode.analyzer_names += \", \"\n }\n strippedNode.analyzer_names += risk.analyzer_name || \"\";\n }\n\n mapEdges(node, (edge: string, _neighbor: BaseNode) => {\n // The stripped node is being converted to another type, so we can cast\n // to any here\n (strippedNode as any)[edge] = undefined;\n })\n\n const vizNode = {\n name: node.uid,\n ...strippedNode,\n id: node.uid,\n nodeType,\n nodeLabel,\n x: 200 + randomInt(1, 50),\n y: 150 + randomInt(1, 50),\n };\n\n nodeMap.set(node.uid, vizNode);\n })\n\n for (const vizNode of (nodeMap.values() as any)) {\n nodes.push(vizNode)\n }\n\n return {\n nodes, \n links\n }\n}\n","import { Node } from '../CustomTypes'\n\nconst getNodeLabel = (nodeType: string, node: Node) => {\n console.log('nodetype', nodeType);\n\n const _node = node as any; // ignore-any\n\n switch(nodeType) {\n case \"Process\": return _node.process_name || _node.process_id || 'Process';\n case \"Asset\": return _node.hostname || 'Asset';\n case \"File\": return _node.file_path || 'File';\n case \"IpAddress\": return _node.external_ip || 'IpAddress';\n case \"Lens\": return _node.lens_name || 'Lens';\n default: return nodeType || '';\n }\n};\n\nconst mapLabel = (label: string) => {\n if (label === 'children') {\n return 'executed'\n }\n return label\n};\n\nexport { mapLabel, getNodeLabel }","// @ts-nocheck\nimport React, { useEffect, useRef } from 'react';\nimport { ForceGraph2D } from 'react-force-graph';\nimport * as d3 from \"d3\";\nimport { BKDRHash, riskColor, calcNodeRgb , calcLinkColor} from \"../modules/GraphViz/graphColoring/coloring.tsx\";\nimport { retrieveGraph } from '../modules/GraphViz/graphQL/expandScope.tsx';\nimport { mapLabel } from '../modules/GraphViz/graph/labels.tsx';\nimport { nodeSize } from '../modules/GraphViz/calculations/node/nodeCalcs.tsx'\nimport { calcLinkDirectionalArrowRelPos, calcLinkParticleWidth } from '../modules/GraphViz/calculations/link/linkCalcs.tsx'\nimport {mergeGraphs} from '../modules/GraphViz/graph/mergeGraphs.tsx'\nimport {graphQLAdjacencyMatrix} from '../modules/GraphViz/graphQL/graphQLAdjacencyMatrix.tsx'\nimport { Node, LinkType, GraphType, ColorHashOptions } from \"../modules/GraphViz/CustomTypes\"\n\ntype ColorHashOptions = {\n lightness: number,\n saturation: number,\n hue: number,\n hash: BKDRHash,\n}\n\n/**\n * Convert HSL to RGB\n *\n * @see {@link http://zh.wikipedia.org/wiki/HSL和HSV色彩空间} for further information.\n * @param {Number} H Hue ∈ [0, 360)\n * @param {Number} S Saturation ∈ [0, 1]\n * @param {Number} L Lightness ∈ [0, 1]\n * @returns {Array} R, G, B ∈ [0, 255]\n */\nconst HSL2RGB = (H: number, S: number, L: number) => {\n H /= 360;\n\n const q = L < 0.5 ? L * (1 + S) : L + S - L * S;\n const p = 2 * L - q;\n\n return [H + 1 / 3, H, H - 1 / 3].map((color) => {\n if (color < 0) {\n color++;\n }\n if (color > 1) {\n color--;\n }\n if (color < 1 / 6) {\n color = p + (q - p) * 6 * color;\n } else if (color < 0.5) {\n color = q;\n } else if (color < 2 / 3) {\n color = p + (q - p) * 6 * (2 / 3 - color);\n } else {\n color = p;\n }\n return Math.round(color * 255);\n });\n};\n\nconst isArray = (o: Object) => {\n return Object.prototype.toString.call(o) === '[object Array]';\n};\n\n/**\n * Color Hash Class\n *\n * @class\n */\n\nexport class ColorHash {\n constructor(options: ColorHashOptions | undefined) {\n options = options || {};\n\n const LS = [options.lightness, options.saturation].map((param) => {\n param = param || [0.35, 0.5, 0.65]; // note that 3 is a prime\n return isArray(param) ? param.concat() : [param];\n });\n \n this.L = LS[0];\n this.S = LS[1];\n \n if (typeof options.hue === 'number') {\n options.hue = {min: options.hue, max: options.hue};\n }\n if (typeof options.hue === 'object' && !isArray(options.hue)) {\n options.hue = [options.hue];\n }\n if (typeof options.hue === 'undefined') {\n options.hue = [];\n }\n this.hueRanges = options.hue.map(function (range: number) {\n return {\n min: typeof range.min === 'undefined' ? 0 : range.min,\n max: typeof range.max === 'undefined' ? 360 : range.max\n };\n });\n \n this.hash = options.hash || BKDRHash;\n } \n /**\n * Returns the hash in [h, s, l].\n * Note that H ∈ [0, 360); S ∈ [0, 1]; L ∈ [0, 1];\n *\n * @param {String} str string to hash\n * @returns {Array} [h, s, l]\n */\n hsl = (str: string) => {\n let H, S, L;\n let hash = this.hash(str);\n \n if (this.hueRanges.length) {\n const range = this.hueRanges[hash % this.hueRanges.length];\n const hueResolution = 727; // note that 727 is a prime\n H = ((hash / this.hueRanges.length) % hueResolution) * (range.max - range.min) / hueResolution + range.min;\n } else {\n H = hash % 359; // note that 359 is a prime\n }\n hash = parseInt(hash / 360 as any);\n S = this.S[hash % this.S.length];\n hash = parseInt(hash / this.S.length as any);\n L = this.L[hash % this.L.length];\n \n return [H, S, L];\n }\n\n /**\n * Returns the hash in [r, g, b].\n * Note that R, G, B ∈ [0, 255]\n *\n * @param {String} str string to hash\n * @returns {Array} [r, g, b]\n */\n rgb = (str: string) => {\n const hsl = this.hsl(str);\n return HSL2RGB.apply(this, hsl);\n };\n}\n\n\nexport const mapNodeProps = (node: Node, f: (string) => void) => {\n for (const prop in node) {\n if (Object.prototype.hasOwnProperty.call(node, prop)) {\n if (Array.isArray(node[prop])) {\n if (node[prop].length > 0) {\n if (node[prop][0].uid === undefined) {\n f(prop)\n }\n }\n } else {\n f(prop)\n }\n }\n }\n};\n\ntype GraphState = {\n curLensName: LensType[], \n graphData: GraphType[]\n}\n\nconst updateGraph = async (\n lensName: string, \n state: GraphState, \n setState: (state: GraphState) => void,\n) => {\n if (!lensName) {\n return;\n }\n\n await retrieveGraph(lensName)\n .then(async (scope) => {\n const update = graphQLAdjacencyMatrix(scope);\n console.log('update', update);\n const mergeUpdate = mergeGraphs(state.graphData, update);\n if (mergeUpdate !== null) {\n if (state.curLensName === lensName) {\n setState({\n ...state,\n curLensName: lensName,\n graphData: mergeUpdate,\n })\n } else {\n setState({\n ...state,\n curLensName: lensName,\n graphData: update,\n })\n }\n }\n })\n .catch((e) => console.error(\"Failed to retrieveGraph \", e))\n}\n\ntype GraphDisplayProps = {\n lensName: string | null,\n setCurNode: (string) => void,\n}\n\ntype GraphDisplayState = {\n graphData: AdjacencyMatrix,\n curLensName: string | null,\n}\n\nconst defaultGraphDisplayState = (lensName: string): GraphDisplayState => {\n return {\n graphData: {nodes: [], links: []},\n curLensName: lensName,\n }\n}\n\nconst GraphDisplay = ({lensName, setCurNode}: GraphDisplayProps) => {\n const [state, setState] = React.useState(defaultGraphDisplayState(lensName));\n const forceRef = useRef(null);\n\n useEffect(() => {\n // console.log(\"useEffect - setting forceRef state\");\n forceRef.current.d3Force(\"link\", d3.forceLink());\n forceRef.current.d3Force('collide', d3.forceCollide(22));\n forceRef.current.d3Force(\"charge\", d3.forceManyBody());\n forceRef.current.d3Force('box', () => {\n const N = 100;\n // console.log(Graph.width(), Graph.height())\n const SQUARE_HALF_SIDE = 20 * N * 0.5;\n state.graphData.nodes.forEach(node => {\n const x = node.x || 0, y = node.y || 0;\n // bounce on box walls\n if (Math.abs(x) > SQUARE_HALF_SIDE) {\n node.vx *= -1;\n }\n if (Math.abs(y) > SQUARE_HALF_SIDE) {\n node.vy *= -1;\n }\n });\n });\n }, [state])\n\n\n useEffect(() => {\n updateGraph(lensName, state, setState);\n const interval = setInterval(async () => {\n if (lensName) {\n await updateGraph(lensName, state, setState);\n }\n }, 1000);\n return () => clearInterval(interval);\n }, [lensName, state]);\n\n const graphData = state.graphData;\n\n const colorHash = new ColorHash({});\n\n // #TODO: ADD ZOOM HANDLERS FOR MAX ZOOM IN/OUT\n\n return (\n <>\n node.nodeLabel}\n enableNodeDrag={true}\n linkDirectionalParticles={1}\n linkDirectionalParticleWidth={(link) => {\n return calcLinkParticleWidth(link, graphData);\n }}\n linkDirectionalParticleColor={(link) => {\n return calcLinkColor(link, graphData)\n }}\n linkDirectionalParticleSpeed={0.005}\n onNodeClick={\n (node: Node, event: string) => {\n setCurNode(node);\n }\n }\n linkDirectionalArrowLength={8}\n linkWidth={4}\n linkDirectionalArrowRelPos={(link => {\n return calcLinkDirectionalArrowRelPos(link, graphData);\n })}\n linkCanvasObjectMode={(() => 'after')}\n linkCanvasObject={((link: LinkType, ctx: any) => {\n const MAX_FONT_SIZE = 8;\n const LABEL_NODE_MARGIN = 8 * 1.5;\n const start = link.source;\n const end = link.target;\n // ignore unbound links\n link.color = calcLinkColor(link, graphData);\n\n if (typeof start !== 'object' || typeof end !== 'object') return;\n // calculate label positioning\n const textPos = Object.assign(\n ...['x', 'y'].map((c: any) => (\n {\n [c]: start[c] + (end[c] - start[c]) / 2 // calc middle point\n }\n )) as any\n );\n\n const relLink = {x: end.x - start.x, y: end.y - start.y};\n\n const maxTextLength = Math.sqrt(Math.pow(relLink.x, 2) + Math.pow(relLink.y, 2)) - LABEL_NODE_MARGIN * 8;\n\n let textAngle = Math.atan2(relLink.y, relLink.x);\n // maintain label vertical orientation for legibility\n if (textAngle > Math.PI / 2) textAngle = -(Math.PI - textAngle);\n if (textAngle < -Math.PI / 2) textAngle = -(-Math.PI - textAngle);\n\n const label = mapLabel(link.label);\n // estimate fontSize to fit in link length\n ctx.font = '50px Arial';\n const fontSize = Math.min(MAX_FONT_SIZE, maxTextLength / ctx.measureText(label).width);\n ctx.font = `${fontSize + 5}px Arial`;\n\n let textWidth = ctx.measureText(label).width;\n\n textWidth += Math.round(textWidth * 0.25);\n\n const bckgDimensions = [textWidth, fontSize].map(n => n + fontSize * 0.2); // some padding\n // draw text label (with background rect)\n ctx.save();\n ctx.translate(textPos.x, textPos.y);\n ctx.rotate(textAngle);\n ctx.fillStyle = 'rgb(115,222,255,1)';\n ctx.fillRect(-bckgDimensions[0] / 2, -bckgDimensions[1] / 2, ...bckgDimensions);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n ctx.fillStyle = 'white';\n //content, left/right, top/bottom\n ctx.fillText(label, .75, 3);\n ctx.restore();\n })}\n nodeCanvasObject={((node: Node, ctx: any, globalScale: any) => {\n // add ring just for highlighted nodes\n\n const NODE_R = nodeSize(node, graphData);\n ctx.save();\n\n // Risk outline color\n ctx.beginPath();\n ctx.arc(node.x, node.y, NODE_R * 1.3, 0, 2 * Math.PI, false);\n ctx.fillStyle = riskColor(node, graphData, colorHash);\n ctx.fill();\n ctx.restore();\n\n ctx.save();\n\n // Node color\n ctx.beginPath();\n ctx.arc(node.x, node.y, NODE_R * 1.2, 0, 2 * Math.PI, false);\n\n const nodeRbg = calcNodeRgb(node, colorHash);\n\n ctx.fillStyle = `rgba(${nodeRbg[0]}, ${nodeRbg[1]}, ${nodeRbg[2]}, 1)`;\n ctx.fill();\n ctx.restore();\n\n const label = node.nodeLabel;\n\n const fontSize = 15 / globalScale;\n\n ctx.font = `${fontSize}px Arial`;\n\n\n const textWidth = ctx.measureText(label).width;\n\n const bckgDimensions = [textWidth, fontSize].map(n => n + fontSize * 0.2); // some padding\n // node label color\n ctx.fillStyle = 'rgba(48, 48, 48, 0.8)';\n ctx.fillRect(node.x - bckgDimensions[0] / 2, node.y - bckgDimensions[1] / 2, ...bckgDimensions);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n ctx.fillStyle = 'white';\n ctx.fillText(label, node.x, node.y);\n\n })}\n ref={forceRef}\n />\n \n )\n}\n\nexport default GraphDisplay;\n","import React from \"react\";\nimport { makeStyles } from '@material-ui/core/styles';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport TableHead from '@material-ui/core/TableHead';\nimport TableRow from '@material-ui/core/TableRow';\nimport { mapEdgeProps } from '../modules/GraphViz/graph/graph_traverse';\nimport { mapNodeProps } from './GraphViz';\nimport { Node } from \"../modules/GraphViz/CustomTypes\"\n\n\nconst useStyles = makeStyles({\n root: {\n fontSize: \".75em\"\n },\n nodeTable: {\n minWidth: 450,\n }, \n tableHeader: {\n fontSize: \".85rem\", \n backgroundColor: \"#595959\"\n }, \n nodeTableData: {\n fontSize: \".75rem\"\n },\n});\n\nfunction innerTable(node: Node, styles: any) {\n if(node) {\n return (\n \n \n \n PROPERTY \n \n \n VALUE \n \n \n \n )\n } else {\n return <>\n }\n}\n\ntype NodeTableProps = {\n node: Node\n}\n\nfunction NodeTable({node}: NodeTableProps){\n const classes = useStyles();\n const hidden = new Set(\n ['id', 'dgraph.type', 'dgraph_type', '__indexColor', 'risks','uid', 'scope', 'name', 'nodeType', 'nodeLabel', 'x', 'y', 'index', 'vy', 'vx', 'fx', 'fy']\n );\n\n mapEdgeProps(node, (edgeName: string, _neighbor: Node) => {\n hidden.add(edgeName)\n });\n\n const displayNode = {} as any;\n\n mapNodeProps(\n node, \n (propName: string) => {\n const prop = (node as any)[propName];\n\n if(!hidden.has(propName)){\n if (prop) {\n if (propName.includes('_time')) {\n displayNode[propName] = new Date(prop).toLocaleString()\n } else {\n displayNode[propName] = prop;\n }\n }\n } \n }\n )\n\n return(\n \n \n {\n innerTable(node, classes)\n }\n \n {\n Object.entries(displayNode).map((entry) => {\n const [key, value] = entry;\n \n return(\n \n {key}\n {value as any}\n \n ) \n })\n }\n \n
\n
\n ) \n \n \n}\n\n\nexport default NodeTable ","import React, {useEffect, useState} from \"react\";\nimport NodeTable from './NodeTable'\nimport Button from \"@material-ui/core/Button\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport BubbleChartIcon from '@material-ui/icons/BubbleChart';\nimport LensIcon from '@material-ui/icons/Lens';\nimport Divider from \"@material-ui/core/Divider\";\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableContainer from \"@material-ui/core/TableContainer\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport { Lens } from \"../modules/GraphViz/CustomTypes\";\nimport { getGraphQlEdge } from \"../modules/GraphViz/engagement_edge/getApiURLs\";\n\nimport TablePagination from '@material-ui/core/TablePagination';\nimport { ClassNameMap } from '@material-ui/styles/withStyles';\nimport {SelectLensProps, ToggleLensTableProps, ToggleLensTableState, SideBarContentProps, NodeDetailsProps, ToggleNodeTableProps, PaginationState} from \"../modules/GraphViz/CustomTypes\"\n\nconst useStyles = makeStyles({\n root:{\n fontSize: \"1rem\",\n },\n button: {\n width: \".005%\",\n color: \"white\",\n backgroundColor:\"#424242\",\n },\n title: {\n fontSize: \"25px\",\n color: \"#ffffff\",\n },\n icon:{\n color: \"#42C6FF\",\n margin: \"15px 0 0 10px\",\n }, \n expand:{\n color: \"#42C6FF\",\n margin: \"0px\"\n },\n header:{\n display: \"flex\"\n }, \n table: {\n minWidth: 450, \n },\n lensName: {\n fontSize: \"16px\",\n },\n pagination: {\n margin: \".5rem\",\n backgroundColor: \"#595959\",\n }\n});\n\n\nfunction SelectLens(props: SelectLensProps) {\n const classes = useStyles();\n return (\n <>\n \n \n \n \n \n \n )\n}\n\nconst defaultToggleLensTableState = (): ToggleLensTableState => {\n return {\n toggled: true,\n lenses: [],\n first: 100, // first is the page size\n offset: 0, // by default, start from page 0\n }\n}\n\n\nconst pagedTable = (\n state: PaginationState, \n page: number, \n rowsPerPage: number, \n handleChangePage: (event: React.MouseEvent | null, page: number) => void, \n handleChangeRowsPerPage: (event: React.ChangeEvent) => void, \n setLens: (lens: string) => void, \n classes: ClassNameMap\n) => {\n return (\n \n \n {\n state.lenses \n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map(\n (lens: Lens) => {\n return(\n \n \n \n \n
\n )\n }\n )\n }\n
\n )\n}\n\nfunction ToggleLensTable( {setLens}: ToggleLensTableProps ) {\n const [state, setState] = useState(defaultToggleLensTableState());\n const classes = useStyles();\n\n const [page, setPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const handleChangePage = (event: React.MouseEvent | null, page: number) => {\n setPage(page);\n }\n const handleChangeRowsPerPage = (event: React.ChangeEvent) => {\n console.log(\"Handle Row Event\", event)\n setRowsPerPage(parseInt(event.target.value, 10));\n setPage(0);\n }\n\n useEffect( () => {\n const interval = setInterval(\n () => {\n console.log(\"Fetching lenses\");\n getLenses(state.first, state.offset)\n .then((response) => {\n if (response.lenses && response.lenses !== state.lenses) {\n const lenses = state.lenses.concat(response.lenses);\n setState({\n ...state,\n offset: state.offset + response.lenses.length || 0,\n lenses,\n })\n }\n }\n )\n }, 1000);\n return () => clearInterval(interval);\n });\n\n return (\n <>\n
\n \n \n LENSES \n \n { \n setState({\n ...state,\n toggled: !state.toggled,\n }) \n }}> \n \n \n
\n \n
\n { \n state.toggled && \n pagedTable(state, page, rowsPerPage, handleChangePage, handleChangeRowsPerPage, setLens, classes)\n }\n
\n\n \n \n )\n}\n\nconst graphql_edge = getGraphQlEdge();\n\nconst getLenses = async (first: number, offset: number) => {\n // console.log('fetching graph from', graphql_edge);\n\n const query = `\n {\n lenses(first: ${first}, offset: ${offset}) {\n uid,\n node_key,\n lens_name,\n score, \n lens_type,\n }\n }\n `;\n // console.log(`connecting to: ${graphql_edge}graphql`);\n const res = await fetch(`${graphql_edge}graphql`,\n {\n method: 'post',\n body: JSON.stringify({ query: query }),\n headers: {\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n })\n .then(res => res.json())\n .then(res => {\n if (res.errors) {\n console.error(\"lenses failed\", res.errors);\n res.data = {lenses: []};\n }\n return res\n })\n .then((res) => res.data);\n\n const jres = await res;\n return jres;\n};\n\nconst NodeDetails = ({node}: NodeDetailsProps) => {\n return (\n <>\n \n \n )\n}\n\nfunction ToggleNodeTable({curNode}: ToggleNodeTableProps) {\n const [toggled, toggle] = useState(true);\n const classes = useStyles();\n return (\n <>\n
\n
\n NODE\n { toggle(toggled => !toggled) }\n }> \t\n \n \n
\n\n
\n {\n toggled && curNode && \n <>\n { }\n \n }\n
\n
\n \n )\n}\n\n\n\nexport default function SideBarContent({setLens, curNode}: SideBarContentProps) {\n return (\n <>\n \n \n \n );\n}\n\n","import GraphDisplay from \"./GraphViz\";\nimport React from \"react\";\nimport SideBarContent from './SideBarContent'\nimport clsx from \"clsx\";\nimport {createStyles, makeStyles, Theme} from \"@material-ui/core/styles\";\nimport Drawer from \"@material-ui/core/Drawer\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Divider from \"@material-ui/core/Divider\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport KeyboardArrowLeftIcon from '@material-ui/icons/KeyboardArrowLeft';\nimport Button from \"@material-ui/core/Button\";\nimport { Node } from \"../modules/GraphViz/CustomTypes\";\nimport Home from '@material-ui/icons/Home';\nimport {Link} from 'react-router-dom'\n\nconst drawerWidth = 500;\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n display: \"flex\"\n },\n button: {\n backgroundColor: \"#42C6FF\",\n margin: \"0.25rem\",\n padding: \"0.20rem\",\n }, \n appBar: {\n transition: theme.transitions.create([\"margin\", \"width\"], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen\n })\n },\n appBarShift: {\n width: `calc(100% - ${drawerWidth}px)`,\n marginLeft: drawerWidth,\n transition: theme.transitions.create([\"margin\", \"width\"], {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen\n })\n },\n menuButton: {\n marginRight: theme.spacing(2),\n color: \"#42C6FF\"\n },\n hide: {\n display: \"none\"\n },\n drawer: {\n width: drawerWidth,\n flexShrink: 0\n },\n drawerPaper: {\n width: drawerWidth\n },\n drawerHeader: {\n display: \"flex\",\n alignItems: \"center\",\n padding: theme.spacing(0, 1),\n // necessary for content to be below app bar\n ...theme.mixins.toolbar,\n justifyContent: \"flex-end\"\n },\n content: {\n flexGrow: 1,\n padding: theme.spacing(3),\n transition: theme.transitions.create(\"margin\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen\n }),\n marginLeft: -drawerWidth\n },\n contentShift: {\n transition: theme.transitions.create(\"margin\", {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen\n }),\n marginLeft: 0,\n },\n lensName:{\n color:\"#EAFDFF\",\n fontSize: \"1.5rem\", \n },\n header:{\n fontSize: \"35px\",\n }, \n headerContent: {\n width: \"100vw\",\n display: \"flex\", \n justifyContent: \"space-between\",\n },\n close:{\n color:\"#42C6FF\",\n },\n link: {\n color: \"#42C6FF\", \n textDecoration: \"none\"\n }\n })\n);\n\ntype SideBarProps = {\n setLens: (lens: string) => void,\n curLens: string,\n curNode: Node | null\n}\n\nexport default function SideBar({setLens, curLens, curNode}: SideBarProps) {\n const classes = useStyles();\n\n const [open, setOpen] = React.useState(true);\n\n const handleDrawerOpen = () => {\n setOpen(true);\n };\n\n const handleDrawerClose = () => {\n setOpen(false);\n };\n\n return (\n
\n {/* */}\n \n \n \n {/* // Menu Icon */}\n ☰\n \n\n
\n \n GRAPL \n \n \n
\n\n
\n \n\n \n
\n \n
\n\n \n\n \n\n \n\n \n
\n

\n {/* selected lens name */}\n {curLens || \"\"} \n

\n\n \n \n
\n );\n}\n\ntype EngagementUxState = {\n curLens: string, \n curNode: Node | null \n}\n\nconst defaultEngagementUxState = (): EngagementUxState => {\n return {\n curLens: \"\",\n curNode: null,\n }\n}\n\nexport const EngagementUx = () => {\n const [state, setState] = React.useState(defaultEngagementUxState());\n \n return (\n <>\n setState({\n ...state,\n curLens: lens,\n })\n }\n curLens={state.curLens}\n curNode={state.curNode}\n />\n\n {\n setState({\n ...state,\n curNode: node,\n })\n }}\n />\n \n )\n}","import React from 'react';\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport Typography from \"@material-ui/core/Typography\";\nimport {createStyles, makeStyles, Theme} from \"@material-ui/core/styles\";\nimport Home from '@material-ui/icons/Home';\nimport {Link} from 'react-router-dom';\n\nconst useStyles = makeStyles(\n (theme: Theme) =>\n createStyles({\n root: {\n display: \"flex\",\n },\n header: {\n justifyContent: \"space-between\",\n }, \n link:{\n color:\"#42C6FF\", \n textDecoration: \"none\"\n }\n }\n )\n);\n\n\ntype GraplHeaderProps = {\n displayBtn: boolean\n}\n\nconst GraplHeader = ({displayBtn}: GraplHeaderProps) => {\n const classes = useStyles();\n return(\n <>\n \n \n \n GRAPL\n \n {\n displayBtn &&\n \n\n }\n \n \n \n ) \n}\n\nexport default GraplHeader; ","import React from 'react';\nimport Button from \"@material-ui/core/Button\";\nimport {createStyles, makeStyles, Theme} from \"@material-ui/core/styles\";\nimport GraplHeader from \"./reusableComponents/GraplHeader\";\nimport {Link} from 'react-router-dom';\n\nconst useStyles = makeStyles( (theme: Theme) =>\n createStyles({\n root: {\n display: \"flex\",\n },\n button: {\n backgroundColor: \"#42C6FF\",\n margin: \"0.25rem\",\n padding: \"0.25rem\",\n }, \n welcome: {\n width:\"70%\",\n textAlign:\"center\",\n backgroundColor: \"#373740\",\n height: \"100vh\",\n },\n nav: {\n margin: \"2rem\",\n width: \"30%\",\n display: \"flex\",\n flexDirection: \"column\",\n },\n dashboard:{\n display: \"flex\",\n flexDirection: \"row\",\n }, \n link:{\n color: \"white\",\n textDecoration: \"none\"\n }\n })\n);\n\nexport default function Dashboard() {\n const classes = useStyles();\n return (\n <> \n \n\n
\n
\n \n \n \n \n \n
\n\n
\n

Welcome, username

\n
\n
\n \n )\n}\n","import { createStyles, makeStyles, Theme } from \"@material-ui/core/styles\";\n\nexport const useStyles = makeStyles(\n (theme: Theme) =>\n createStyles({\n root: {\n display: \"flex\",\n },\n formContainer: {\n color: \"white\", \n margin: \"1rem\",\n },\n btn: {\n backgroundColor: \"#42C6FF\",\n margin: \"0.25rem\",\n padding: \"0.25rem\",\n borderRadius: \"6px\",\n },\n inputFiles: {\n border: \"none\",\n width: \"35vw\",\n },\n upload: {\n display: \"flex\",\n },\n succMsg: {\n color: \"#03dac6\",\n }, \n errMsg: {\n color: \"#CF6679\",\n }, \n pluginTable: {\n backgroundColor: \"#292929\",\n margin: \"1em\",\n width: \"50%\",\n height: \"100%\",\n boxShadow: \" 1.5px 1.5px #000000\",\n }, \n uploadFormContainer: {\n backgroundColor: \"#292929\",\n margin: \"1em\", \n width: \"50%\",\n height: \"100%\",\n boxShadow: \"1.5px 1.5px #000000\",\n display: \"flex\", \n }, \n uploadForm: {\n fontFamily: \"Arial\",\n display: \"flex\",\n fontSize: \".75rem\",\n }\n }\n )\n);","import { PluginPayload } from \"../plugins/uploadPluginTypes\";\nimport {getModelPluginEdge} from \"../../GraphViz/engagement_edge/getApiURLs\"\n\nexport const getPluginList = async () => {\n const res = await fetch(`${getModelPluginEdge()}listModelPlugins`, \n {\n method: 'post',\n headers: {\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n }\n );\n\n const body = await res.json();\n\n let pluginList: string[] = body.success.plugin_list;\n\n return pluginList\n}\n\nexport const deletePlugin = async ( pluginName: string ): Promise => {\n const res = await fetch(`${getModelPluginEdge()}deleteModelPlugin`, \n {\n method: 'post',\n headers: {\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n body: JSON.stringify({plugins_to_delete: [pluginName]})\n }\n );\n await res.json();\n return true;\n};\n\nexport const uploadFilesToDgraph = async (payload: PluginPayload ): Promise => {\n const res = await fetch(`${getModelPluginEdge()}deploy`, \n {\n method: 'post',\n headers: {\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n body: JSON.stringify(payload)\n }\n );\n const body = await res.json();\n console.log(\"body\", body)\n return body.success.Success;\n};","import React, { SyntheticEvent } from 'react';\nimport { Field, Form, Formik } from \"formik\";\nimport Button from \"@material-ui/core/Button\";\nimport CloudUploadIcon from '@material-ui/icons/CloudUpload';\nimport { Event, UploadFormState, DirectoryUpload, MessageProps} from \"./uploadPluginTypes\"\nimport { uploadFilesToDgraph } from \"./apiRequests\";\nimport { useStyles } from \"./useStyles\";\n\nconst readFile = async (file: Blob): Promise => {\n return await new Promise(\n (resolve, reject) => {\n const reader = new FileReader();\n reader.addEventListener('load', (event: ProgressEvent) => {\n if (event.target === null) {\n console.warn(\"onload event was null\");\n return;\n } else {\n const fileRes = event.target.result;\n if (fileRes === null) {\n console.warn(\"Read pluginfile was null\");\n reject(null)\n return;\n } else {\n if (typeof(fileRes) === 'string') {\n resolve(fileRes);\n } else {\n resolve(new TextDecoder().decode(fileRes));\n }\n }\n }\n });\n return reader.readAsText(file);\n }\n )\n}\n\nconst defaultUploadFormState = (): UploadFormState => {\n return {curFiles: null, success: null}\n}\n\nconst Message = ({status}: MessageProps) => {\n const classes = useStyles();\n if (status === true) {\n return(\n
Plugins Successfully Deployed!
\n )\n } else if (status === false){\n return(\n
Upload Unsuccessful
\n )\n } else {\n return (
)\n }\n \n}\n\nexport const UploadForm = () => {\n const [state, setState] = React.useState(defaultUploadFormState());\n const classes = useStyles();\n\n return(\n
\n

UPLOAD DIRECTORY WITH PLUGINS:

\n { \n const fileMap = {} as any;\n const reads: Promise[] = [];\n const {curFiles} = state;\n\n if (curFiles === null) {\n console.warn(\"Attempted to upload files without selecting any\");\n return\n }\n \n for(const f of curFiles){\n let fileRead = readFile(f).then((fileResult) => {\n // This any is because webkitRelativePath is not standard, and therefor\n // is not part of the File type\n const path = ((f as any).webkitRelativePath || (f as any).mozRelativePath);\n\n fileMap[path] = fileResult;\n });\n reads.push(fileRead);\n }\n let success = true;\n Promise.all(reads).then(() => {\n return uploadFilesToDgraph({plugins: fileMap});\n })\n .then((didSucceed) => {success = success && didSucceed;})\n .then(() => setState({...state, success}))\n }\n }\n >\n
\n {/* accept = property to restrict types, currently we accept ANY type */}\n ) => {\n setState({\n ...state,\n curFiles: event.currentTarget.files\n })\n }\n }\n /> \n \n \n \n
\n \n
\n )\n}","import React, { useEffect, useState } from 'react';\nimport Table from '@material-ui/core/Table';\nimport TableRow from '@material-ui/core/TableRow';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport TableHead from '@material-ui/core/TableHead';\nimport TablePagination from '@material-ui/core/TablePagination';\nimport Button from \"@material-ui/core/Button\";\nimport DeleteOutlinedIcon from '@material-ui/icons/DeleteOutlined';\nimport { PluginTableState } from \"../plugins/uploadPluginTypes\"\nimport { getPluginList, deletePlugin} from \"../plugins/apiRequests\";\nimport { useStyles } from \"../plugins/useStyles\";\n\nconst defaultPluginTableState = (): PluginTableState => {\n return {\n rows: [],\n toggle: true,\n }\n}\n\nexport const PluginTable = () => {\n const classes = useStyles();\n\n const [state, setState] = React.useState(defaultPluginTableState());\n const [page, setPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const handleChangePage = (event: React.MouseEvent | null, newPage:number) => {\n setPage(newPage);\n }\n const handleChangeRowsPerPage = (event: React.ChangeEvent) => {\n console.log(\"Event\", event)\n setRowsPerPage(parseInt(event.target.value, 10));\n setPage(0);\n }\n\n useEffect(() => {\n // console.log(\"fetching plugins\");\n const interval = setInterval(async () => {\n await getPluginList().then((rows) => {\n setState({\n toggle: state.toggle ,\n rows\n })\n });\n }, 1000);\n return () => clearInterval(interval);\n\n }, [state.toggle])\n\n return(\n <>\n \n \n \n \n PLUGINS\n \n \n \n {state.rows.map(\n (pluginName: string) => {\n return \n \n {pluginName} \n \n \n \n }\n )}\n \n
\n \n
\n \n )\n}","import React from 'react';\nimport GraplHeader from \"./reusableComponents/GraplHeader\";\nimport { useStyles } from \"../modules/uploads/plugins/useStyles\";\nimport { UploadForm } from \"../modules/uploads/plugins/uploadPlugins\"; \nimport { PluginTable } from \"../modules/uploads/plugins/pluginTable\";\n\nconst UploadPlugin = () => {\n const classes = useStyles();\n return(\n <>\n \n
\n
\n \n
\n
\n \n
\n
\n \n )\n}\n\nexport default UploadPlugin;","import React from 'react';\nimport './LogIn.css';\nimport {LogIn} from './Login';\nimport {EngagementUx} from \"./components/SideBar\";\nimport Dashboard from \"./components/Dashboard\";\nimport UploadPlugin from \"./components/UploadPlugin\";\nimport {HashRouter, Route, Switch} from 'react-router-dom';\n\n// Updates our react state, as well as localStorage state, to reflect the page\n// we should render\n\nexport default function App() {\n console.log(\"App loaded\");\n return (\n <>\n \n \n \n \n \n \n \n \n \n )\n}\n\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(\n process.env.PUBLIC_URL,\n window.location.href\n );\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport { createMuiTheme, ThemeProvider } from '@material-ui/core/styles'\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\nimport { HashRouter } from 'react-router-dom';\n\n\nconst darkTheme = createMuiTheme({\n palette: {\n type: 'dark',\n primary: {\n main: '#373740',\n }\n }\n})\n\nconst rootElement = document.getElementById('root')\n\nReactDOM.render(\n \n \n \n , \n \n \n ,\n rootElement\n);\n\nserviceWorker.unregister();\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["modules/GraphViz/engagement_edge/getApiURLs.tsx","Login.tsx","modules/GraphViz/calculations/node/nodeCalcs.tsx","modules/GraphViz/calculations/link/linkCalcs.tsx","modules/GraphViz/graphColoring/coloring.tsx","modules/GraphViz/graph/graph_traverse.tsx","modules/GraphViz/graphQL/expandScope.tsx","modules/GraphViz/graph/mergeGraphs.tsx","modules/GraphViz/graphQL/graphQLAdjacencyMatrix.tsx","modules/GraphViz/graph/labels.tsx","components/GraphViz.tsx","components/NodeTable.tsx","components/EngagementViewContent.tsx","components/EngagementView.tsx","components/reusableComponents/GraplHeader.tsx","components/Dashboard.tsx","modules/uploads/plugins/useStyles.tsx","modules/uploads/plugins/apiRequests.tsx","modules/uploads/plugins/uploadPlugins.tsx","modules/uploads/plugins/pluginTable.tsx","components/UploadPlugin.tsx","App.tsx","serviceWorker.ts","index.tsx"],"names":["getGraphQlEdge","window","location","hostname","getModelPluginEdge","engagement_edge","LogIn","_","className","initialValues","userName","password","onSubmit","values","a","console","log","sha256WithPepper","login","history","replaceState","warn","name","type","placeholder","sha256","message","msgBuffer","TextEncoder","encode","crypto","subtle","digest","hashBuffer","hashArray","Array","from","Uint8Array","map","b","toString","slice","join","username","hashed","i","fetch","method","body","JSON","stringify","headers","credentials","res","json","calcNodeRiskPercentile","_nodeRisk","_allRisks","nodeRisk","risk","allRisks","n","sort","undefined","length","riskIndex","Math","floor","findNode","id","nodes","node","calcLinkRiskPercentile","link","Graph","linkRisk","srcNode","source","dstNode","target","error","srcRisk","dstRisk","round","calcLinkRisk","BKDRHash","str","hash","MAX_SAFE_INTEGER","parseInt","charCodeAt","calcNodeRgb","colorHash","nodeType","rgb","percentToColor","percentile","calcLinkColor","mapGraph","f","visited","Set","mapEdgeProps","edgeName","neighbor","_mapGraph","has","uid","add","mapEdges","prop","Object","prototype","hasOwnProperty","call","maybeNeighbor","isArray","graphql_edge","builtins","unpackPluginNodes","predicates","edge_name","dgraph_type","pluginNode","keys","forEach","key","retrieveGraph","lens","query","expandScope","then","data","lens_scope","lensWithScope","scope","lensName","mergeNodes","x","y","merged","mapNodeProps","mergeGraphs","curGraph","update","links","outputGraph","updated","Map","set","newNode","get","label","newLink","newLinkSource","newLinkTarget","getNodeType","t","node_type","randomInt","min","max","random","graphQLAdjacencyMatrix","inputGraph","nodeMap","traverseNeighbors","callback","fromNode","toNode","push","traverseNodes","nodeLabel","_node","process_name","process_id","file_path","external_ip","lens_name","getNodeLabel","strippedNode","analyzer_names","risks","risk_score","analyzer_name","edge","_neighbor","vizNode","HSL2RGB","H","S","L","q","p","color","o","ColorHash","options","hsl","hueRanges","range","apply","LS","lightness","saturation","param","concat","this","hue","updateGraph","state","setState","mergeUpdate","graphData","curLensName","catch","e","GraphDisplay","setCurNode","React","useState","defaultGraphDisplayState","forceRef","useRef","useEffect","current","d3Force","d3","abs","vx","vy","interval","setInterval","clearInterval","enableNodeDrag","linkDirectionalParticles","linkDirectionalParticleWidth","linkRiskPercentile","calcLinkParticleWidth","linkDirectionalParticleColor","linkDirectionalParticleSpeed","onNodeClick","event","linkDirectionalArrowLength","linkWidth","linkDirectionalArrowRelPos","riskPercentile","calcLinkDirectionalArrowRelPos","linkCanvasObjectMode","linkCanvasObject","ctx","start","end","textPos","assign","c","relLink","maxTextLength","sqrt","pow","LABEL_NODE_MARGIN","textAngle","atan2","PI","mapLabel","font","fontSize","measureText","width","textWidth","bckgDimensions","save","translate","rotate","fillStyle","fillRect","textAlign","textBaseline","fillText","restore","nodeCanvasObject","globalScale","NODE_R","nodeSize","beginPath","arc","nodeColors","riskColor","fill","nodeRbg","ref","useStyles","makeStyles","root","nodeTable","minWidth","tableHeader","backgroundColor","nodeTableData","NodeTable","classes","hidden","displayNode","propName","includes","Date","toLocaleString","TableContainer","Table","styles","TableHead","TableRow","TableCell","align","innerTable","TableBody","entries","entry","value","button","title","icon","margin","expand","header","display","table","pagination","SelectLens","props","component","Button","onClick","setLens","lens_type","score","ToggleLensTable","toggled","lenses","first","offset","page","setPage","rowsPerPage","setRowsPerPage","getLenses","response","handleChangePage","handleChangeRowsPerPage","TablePagination","aria-label","rowsPerPageOptions","count","onChangePage","onChangeRowsPerPage","Number","pagedTable","Divider","errors","jres","NodeDetails","ToggleNodeTable","curNode","toggle","SideBarContent","theme","createStyles","padding","appBar","transition","transitions","create","easing","sharp","duration","leavingScreen","appBarShift","marginLeft","easeOut","enteringScreen","menuButton","marginRight","spacing","hide","drawer","flexShrink","drawerPaper","drawerHeader","alignItems","mixins","toolbar","justifyContent","content","flexGrow","contentShift","headerContent","close","textDecoration","SideBar","curLens","open","setOpen","AppBar","position","clsx","Toolbar","IconButton","Typography","variant","noWrap","to","Drawer","anchor","paper","paragraph","EngagementUx","GraplHeader","displayBtn","welcome","height","nav","flexDirection","dashboard","Dashboard","formContainer","btn","borderRadius","inputFiles","border","upload","succMsg","errMsg","pluginTable","boxShadow","uploadFormContainer","uploadForm","fontFamily","getPluginList","pluginList","success","plugin_list","deletePlugin","pluginName","plugins_to_delete","uploadFilesToDgraph","payload","Success","readFile","file","Promise","resolve","reject","reader","FileReader","addEventListener","fileRes","result","TextDecoder","decode","readAsText","Message","status","UploadForm","curFiles","fileMap","reads","fileRead","fileResult","path","webkitRelativePath","mozRelativePath","all","plugins","didSucceed","directory","webkitdirectory","mozdirectory","multiple","onChange","currentTarget","files","PluginTable","rows","newPage","UploadPlugin","App","exact","Boolean","match","darkTheme","createMuiTheme","palette","primary","main","rootElement","document","getElementById","ReactDOM","render","StrictMode","ThemeProvider","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.303b9f70.chunk.js","sourcesContent":["export const getAuthEdge = () => {\n return \"http://\" + window.location.hostname + \":8900/\"\n}\n\nexport const getGraphQlEdge = () => {\n return \"http://\" + window.location.hostname + \":5000/\"\n}\n\nexport const getModelPluginEdge = () => {\n return \"http://\" + window.location.hostname + \":8123/\"\n}","import React from 'react';\nimport './LogIn.css';\nimport {Field, Form, Formik} from \"formik\";\nimport {LoginProps} from '../src/modules/GraphViz/CustomTypes';\nimport {getAuthEdge} from './modules/GraphViz/engagement_edge/getApiURLs';\n\nconst engagement_edge = getAuthEdge();\n\nexport const checkLogin = async () => {\n const res = await fetch(`${engagement_edge}checkLogin`, {\n method: 'get',\n credentials: 'include',\n });\n\n const body = await res.json();\n\n return body['success'] === 'True';\n};\n\nexport const LogIn = (_: LoginProps) => {\n return (\n
\n
Grapl
\n
\n {\n console.log(\"logging in\");\n const password = await sha256WithPepper(\n values.userName, values.password\n );\n \n const loginSuccess = login(values.userName, password);\n \n if (loginSuccess) {\n window.history.replaceState('/login', \"\", \"/\")\n console.log(\"Logged in\");\n } else {\n console.warn(\"Login failed!\")\n }\n }}\n >\n
\n
\n
\n \n \n \n \n
\n
\n );\n}\n\nasync function sha256(message: string) {\n // encode as UTF-8\n const msgBuffer = new TextEncoder().encode(message);\n\n // hash the message\n const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);\n\n // convert ArrayBuffer to Array\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n\n // convert bytes to hex string\n return hashArray.map(b => ('00' + b.toString(16)).slice(-2)).join('');\n}\n\n\nconst sha256WithPepper = async (username: string, password: string) => {\n // The pepper only exists to prevent rainbow tables for extremely weak passwords\n // Client side hashing itself is only to prevent cases where the password is\n // exposed before it makes it into the password database\n const pepper = \"f1dafbdcab924862a198deaa5b6bae29aef7f2a442f841da975f1c515529d254\";\n let hashed = await sha256(password + pepper + username);\n\n for (let i = 0; i < 5000; i++) {\n hashed = await sha256(hashed)\n }\n return hashed\n};\n\nconst login = async (username: string, password: string) => {\n try {\n const res = await fetch(`${engagement_edge}login`, {\n method: 'post',\n body: JSON.stringify({\n 'username': username,\n 'password': password\n }),\n headers: {\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n });\n \n const body = await res.json();\n console.log(\"body\", body);\n return body['success'] === 'True';\n } catch (e) {\n console.log(e);\n return false\n }\n };\n\nexport default LogIn;\n","import {VizGraph, VizNode} from '../../CustomTypes';\n\nexport const calcNodeRiskPercentile = (_nodeRisk: number | {risk: number}, _allRisks: any) => {\n let nodeRisk = _nodeRisk;\n if (typeof _nodeRisk === 'object') {\n nodeRisk = _nodeRisk.risk;\n }\n\n const allRisks = _allRisks\n .map((n: any) => n || 0)\n .sort((a: number, b: number) => a - b);\n\n if (nodeRisk === undefined || nodeRisk === 0 || allRisks.length === 0) {\n return 0\n }\n\n let riskIndex = 0;\n for (const risk of allRisks) {\n if (nodeRisk >= risk) {\n riskIndex += 1;\n }\n }\n\n return Math.floor((riskIndex / allRisks.length) * 100)\n};\n\n\nexport const nodeSize = (node: VizNode, Graph: VizGraph) => {\n const nodes = [...Graph.nodes].map(node => node.risk);\n const riskPercentile = calcNodeRiskPercentile(node.risk, nodes);\n\n if (riskPercentile >= 75) {\n return 6\n } else if (riskPercentile >= 25) {\n return 5\n } else {\n return 4\n }\n};\n","import { calcNodeRiskPercentile } from '../node/nodeCalcs'; \nimport { LinkType, VizNode, VizGraph } from '../../CustomTypes';\n\n\nconst findNode = (id: number, nodes: VizNode[]) => {\n for (const node of (nodes || [])) {\n if (node.id === id) {\n return node\n }\n }\n return null\n};\n\nexport const calcLinkRisk = (link: LinkType, Graph: VizGraph) => {\n // console.log(\"LINK\", link)\n let srcNode = \n // findNode(link.source, Graph.nodes) || \n findNode(link.source.name, Graph.nodes);\n let dstNode = \n // findNode(link.target, Graph.nodes)||\n findNode(link.target.name, Graph.nodes);\n\n if (!srcNode || !dstNode) {\n console.error(\"Missing srcNode/dstNode\", srcNode, link, dstNode);\n return 0;\n }\n\n const srcRisk = srcNode.risk || 0;\n const dstRisk = dstNode.risk || 0;\n\n return Math.round((srcRisk + dstRisk) / 2)\n};\n\nexport const calcLinkDirectionalArrowRelPos = (link: LinkType, Graph: VizGraph) => {\n const node = \n // findNode(link.target, Graph.nodes) || \n findNode(link.target.name, Graph.nodes);\n\n if (node === null || node.risk === 0) {\n return 1.0\n }\n const nodes = [...Graph.nodes].map(node => node.risk);\n const riskPercentile = calcNodeRiskPercentile(node.risk, nodes);\n\n if (riskPercentile === 0) {\n return 1.0\n }\n\n if (riskPercentile >= 75) {\n return 0.95\n } else if (riskPercentile >= 50) {\n return 0.9\n } else if (riskPercentile >= 25) {\n return 0.85\n } else {\n return 1.0\n }\n};\n\nexport const calcLinkRiskPercentile = (link: LinkType, Graph: VizGraph) => {\n const linkRisk = calcLinkRisk(link, Graph);\n const nodes = [...Graph.nodes].map(node => node.risk);\n\n return calcNodeRiskPercentile(linkRisk, nodes);\n};\n\nexport const calcLinkParticleWidth = (link: LinkType, Graph:VizGraph) => {\n const linkRiskPercentile = calcLinkRiskPercentile(link, Graph);\n if (linkRiskPercentile >= 75) {\n return 5\n } else if (linkRiskPercentile >= 50) {\n return 4\n } else if (linkRiskPercentile >= 25) {\n return 3\n } else {\n return 2\n }\n};\n","import { calcNodeRiskPercentile } from '../calculations/node/nodeCalcs';\nimport { calcLinkRiskPercentile } from '../calculations/link/linkCalcs';\nimport { LinkType, VizGraph, VizNode } from '../CustomTypes'\nimport { ColorHash } from '../../../components/GraphViz';\n\nexport const BKDRHash = (str: string) => {\n const seed = 131;\n const seed2 = 137;\n let hash = 0 as number;\n // make hash more sensitive for short string like 'a', 'b', 'c'\n str += 'x';\n // Note: Number.MAX_SAFE_INTEGER equals 9007199254740991\n const MAX_SAFE_INTEGER = parseInt(9007199254740991 / seed2 as any) as any;\n for (let i = 0; i < str.length; i++) {\n if (hash > MAX_SAFE_INTEGER) {\n hash = parseInt(hash / seed2 as any);\n }\n hash = hash * seed + str.charCodeAt(i);\n }\n return hash;\n};\n\n//# TODO: Add custom coloring for each node\nexport const calcNodeRgb = (node: VizNode, colorHash: ColorHash) => {\n if (node.nodeType === 'Process') {\n return [31, 185, 128]\n } else if (node.nodeType === 'File') {\n return [177, 93, 255]\n } \n \n // else if (node.nodeType === 'Lens'){\n // return []\n // } else if(node.nodeType === 'IpPort'){\n // return []\n // } else if(node.nodeType === 'IpConnection'){\n // return []\n // } else if(node.nodeType === 'ProcessInboundConnection'){\n // return []\n // } else if(node.nodeType === 'ProcessOutboundConnection'){\n // return []\n // } \n \n else{\n return colorHash.rgb(node.nodeType)\n }\n}\n\n\nexport const percentToColor = (percentile: number) => {\n const hue = (100 - percentile) * 40 / 100;\n\n return `hsl(${hue}, 100%, 50%)`;\n};\n\nexport const calcLinkColor = (link: LinkType, Graph: VizGraph) => {\n const risk = calcLinkRiskPercentile(link, Graph);\n // Default link color if no risk\n if (risk === 0) {\n return 'white'\n }\n return percentToColor(risk);\n};\n\n\nexport const riskColor = (node: VizNode, Graph: VizGraph, colorHash: ColorHash) => {\n const nodes = [...Graph.nodes].map(node => node.risk);\n\n const riskPercentile = calcNodeRiskPercentile(node.risk, nodes);\n\n if (riskPercentile === 0) {\n const nodeColors = calcNodeRgb(node, colorHash);\n return `rgba(${nodeColors[0]}, ${nodeColors[1]}, ${nodeColors[2]}, 1)`;\n }\n\n return percentToColor(riskPercentile);\n};\n\n\n","import { Node } from \"../CustomTypes\";\n\nconst _mapGraph = (node: Node, visited: Set, f:(node:Node, prop:string, neighbor: Node) => void) => {\n mapEdgeProps(node, (edgeName: string, neighbor:Node) => {\n if (visited.has(node.uid + edgeName + neighbor.uid)) {\n return\n }\n\n visited.add(node.uid + edgeName + neighbor.uid);\n\n f(node, edgeName, neighbor);\n _mapGraph(neighbor, visited, f)\n })\n};\n\nexport const mapGraph = (node:Node, f:(node:Node, prop:string, neighbor: Node) => void) => {\n const visited: Set = new Set();\n mapEdgeProps(node, (edgeName:string , neighbor:Node) => {\n\n f(node, edgeName, neighbor);\n _mapGraph(neighbor, visited, f)\n })\n};\n\n// type fType = (prop:string, neighbor: Node) => void)\n// Given a node, call 'f' on any of its neighbors\nexport const mapEdges = (node: Node, f: (prop:string, neighbor: Node) => void) => {\n for (const prop in node) {\n if (Object.prototype.hasOwnProperty.call(node, prop)) {\n const maybeNeighbor = (node as any)[prop];\n if(Array.isArray(maybeNeighbor)) {\n for (const neighbor of maybeNeighbor) {\n if (neighbor.uid !== undefined) {\n f(prop, neighbor)\n }\n }\n } else {\n if (maybeNeighbor && maybeNeighbor.uid !== undefined) {\n f(prop, maybeNeighbor)\n }\n }\n }\n }\n};\n\nexport const mapEdgeProps = (node: Node, f: (prop:string, neighbor: Node) => void) => {\n for (const prop in node) {\n if (Object.prototype.hasOwnProperty.call(node, prop)) {\n const maybeNeighbor = (node as any)[prop];\n if(Array.isArray(maybeNeighbor)) {\n for (const neighbor of maybeNeighbor) {\n if (neighbor.uid !== undefined) {\n f(prop, neighbor)\n }\n }\n } else {\n if (maybeNeighbor && maybeNeighbor.uid !== undefined) {\n f(prop, maybeNeighbor)\n }\n }\n }\n }\n};\n\nexport const traverseNodes = (node: Node, callback: (node: Node) => void) => {\n callback(node);\n mapEdges(node, (_, neighbor) => {\n traverseNodes(neighbor, callback);\n })\n}\n\nexport const traverseNeighbors = (node: Node, callback: (node:Node, prop:string, neighbor: Node) => void) => {\n mapEdges(node, (edgeName: string, neighbor: Node) => {\n callback(node, edgeName, neighbor);\n\n traverseNeighbors(neighbor, callback);\n })\n}\n\n","import {BaseNode, LensScopeResponse} from '../../GraphViz/CustomTypes'\nimport {mapGraph} from \"../graph/graph_traverse\";\nimport {getGraphQlEdge} from '../engagement_edge/getApiURLs';\n\nconst graphql_edge = getGraphQlEdge();\n\nconst builtins = new Set([\n 'Process',\n 'File',\n 'IpAddress',\n 'Asset',\n 'Risk',\n 'IpConnections',\n 'ProcessInboundConnections',\n 'ProcessOutboundConnections',\n])\n\nconst unpackPluginNodes = (nodes: BaseNode[]) => {\n for (const node of nodes) {\n if (!(node as any).predicates) {\n continue\n }\n mapGraph(node, (node, edge_name, neighbor) => {\n if ((node as any).predicates) {\n if(!builtins.has((node as any).predicates.dgraph_type[0])) {\n // Using 'any' because the PluginType is temporary, and not valid outside of the initial response\n const pluginNode = {...(node as any).predicates};\n delete (node as any).predicates\n Object.keys(pluginNode).forEach(function(key) { (node as any)[key] = pluginNode[key]; });\n }\n }\n\n if ((neighbor as any).predicates) {\n if(!builtins.has((neighbor as any).predicates.dgraph_type[0])) {\n // Using 'any' because the PluginType is temporary, and not valid outside of the initial response\n const pluginNode = {...(neighbor as any).predicates};\n delete (neighbor as any).predicates\n Object.keys(pluginNode).forEach(function(key) { (neighbor as any)[key] = pluginNode[key]; });\n }\n }\n })\n\n }\n}\n\nexport const retrieveGraph = async (lens: string): Promise<(LensScopeResponse & BaseNode)> => {\n const query = expandScope(lens);\n\n const res = await fetch(`${graphql_edge}graphql`,\n {\n method: 'post',\n body: JSON.stringify({ query }),\n headers: {\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n })\n .then(res => res.json())\n .then(res => {\n console.log('retrieveGraph res', res);\n return res\n })\n .then((res) => res.data)\n .then((res) => res.lens_scope);\n\n const lensWithScope = await res;\n console.log('LensWithScope: ', lensWithScope);\n unpackPluginNodes(lensWithScope.scope);\n return lensWithScope;\n};\n\nexport const expandScope = (lensName: string) => {\n \n const query = `\n {\n lens_scope(lens_name: \"${lensName}\") {\n uid,\n node_key,\n lens_name,\n lens_type,\n dgraph_type,\n scope {\n ... on Process {\n uid,\n node_key, \n dgraph_type,\n process_name, \n process_id,\n children {\n uid, \n node_key, \n dgraph_type,\n process_name, \n process_id,\n }, \n risks { \n uid,\n dgraph_type,\n node_key, \n analyzer_name, \n risk_score\n },\n }\n \n ... on Asset {\n uid, \n node_key, \n dgraph_type,\n hostname,\n asset_ip{\n ip_address\n }, \n asset_processes{\n uid, \n node_key, \n dgraph_type,\n process_name, \n process_id,\n },\n files_on_asset{\n uid, \n node_key, \n dgraph_type,\n file_path\n }, \n risks { \n uid,\n dgraph_type,\n node_key, \n analyzer_name, \n risk_score\n },\n }\n\n ... on File {\n uid,\n node_key, \n dgraph_type,\n risks { \n uid,\n dgraph_type,\n node_key, \n analyzer_name, \n risk_score\n },\n }\n\n ... on PluginType {\n predicates,\n }\n }\n }\n }\n`;\n\n return query;\n}\n\n","import {mapNodeProps} from '../../../../src/components/GraphViz';\nimport {Node, MergeGraphType} from '../CustomTypes'; \n\n// merges y into x, returns true if update occurred\nconst mergeNodes = (x: Node, y: Node) => {\n let merged = false;\n mapNodeProps(y, (prop: string) => {\n if (!Object.prototype.hasOwnProperty.call(x, prop)) {\n merged = true;\n (x as any)[prop] = (y as any)[prop]\n }\n });\n\n return merged;\n};\n\n// #TODO: This algorithm is exponential, and doesn't have to be\nexport const mergeGraphs = (curGraph: MergeGraphType, update: MergeGraphType): MergeGraphType | null => {\n // Merges two graphs into a new graph\n // returns 'null' if there are no updates to be made\n\n if (!update.nodes && !update.links) {\n // empty update\n return null\n }\n\n const outputGraph: MergeGraphType = {nodes: [], links: []};\n\n let updated = false;\n\n const nodes = new Map();\n const links = new Map();\n\n for (const node of curGraph.nodes) {\n nodes.set(node.uid, node)\n }\n\n for (const newNode of update.nodes) {\n const node = nodes.get(newNode.uid);\n if (node) {\n if (mergeNodes(node, newNode)) {\n updated = true;\n }\n } else {\n nodes.set(newNode.uid, newNode);\n updated = true;\n }\n }\n// #TODO: console.log on link.source, check to see if it's an object or not. It should never be an object\n// this should only be a string / an int. At some point, it was getting sent as an object\n for (const link of curGraph.links) {\n if (link) {\n const source = link.source.uid || link.source;\n const target = link.target.uid || link.target;\n links.set(\n source + link.label + target,\n link,\n )\n }\n }\n\n for (const newLink of update.links) {\n const newLinkSource = newLink.source || newLink.source;\n const newLinkTarget = newLink.target || newLink.target;\n const link = links.get(newLinkSource + newLink.label + newLinkTarget);\n if (!link) {\n links.set(newLink.source + newLink.label + newLink.target, newLink);\n updated = true;\n }\n }\n\n outputGraph.nodes = Array.from(nodes.values());\n outputGraph.links = Array.from(links.values());\n if (updated) {\n return outputGraph;\n } else {\n return null;\n }\n}","import { traverseNodes, traverseNeighbors, mapEdges } from \"../graph/graph_traverse\"\nimport { getNodeLabel } from '../graph/labels';\nimport {LensScopeResponse, BaseNode} from \"../../GraphViz/CustomTypes\"\n\ninterface IVizNode {\n uid: number,\n name: number,\n id: number, \n nodeType: string,\n nodeLabel: string,\n x: number,\n y: number,\n}\n\ninterface VizProcessNode extends IVizNode {\n process_id: number,\n process_name: string,\n created_timestamp: number, \n terminate_time: number,\n image_name: string, \n arguments: string,\n}\n\nexport interface File extends IVizNode {\n file_name: string,\n file_path: string,\n file_extension: string,\n file_mime_type: string,\n file_size: number,\n file_version: string, \n file_description: string,\n file_product: string,\n file_company: string, \n file_directory: string,\n file_inode: number,\n file_hard_links: string, \n signed: boolean,\n signed_status: string, \n md5_hash: string,\n sha1_hash: string,\n sha256_hash: string,\n}\n\nexport interface IpConnections extends IVizNode {\n src_ip_addr: string,\n src_port: string,\n dst_ip_addr: string,\n dst_port: string,\n created_timestamp: number,\n terminated_timestamp: number,\n last_seen_timestamp: number,\n}\ninterface VizAssetNode extends IVizNode {\n hostname: string,\n}\n\ninterface VizLensNode extends IVizNode {\n lens_name: string,\n lens_type: string, \n}\n\ntype VizDynamicNode = IVizNode;\n\ntype VizNode = VizProcessNode | VizAssetNode | VizLensNode | VizDynamicNode;\n\ntype VizLink = {\n source: number,\n label: string,\n target: number, \n}\n\ntype AdjacencyMatrix = {\n nodes: VizNode[],\n links: VizLink[]\n}\n\n\nconst getNodeType = (node: BaseNode) => {\n const t = node.dgraph_type || node.node_type;\n\n if (t) {\n if (Array.isArray(t)) {\n return t[0]\n }\n return t\n }\n\n console.warn('Unable to find type for node ', node);\n return 'Unknown';\n};\n\nfunction randomInt(min: number, max: number) // min and max included\n{\n let randomNum: number = Math.floor(Math.random() * (max - min + 1) + min);\n return randomNum;\n}\n\n\nexport const graphQLAdjacencyMatrix = (inputGraph: (LensScopeResponse & BaseNode)): AdjacencyMatrix => {\n\n const nodes: VizNode[] = []; \n const links: VizLink[] = [];\n\n const nodeMap: Map = new Map();\n\n traverseNeighbors(inputGraph, \n (fromNode: BaseNode, edgeName: string, toNode: BaseNode) => {\n if(edgeName !== 'scope'){\n \n if(getNodeType(fromNode) === 'Unknown'){\n return;\n }\n\n if(getNodeType(toNode) === 'Unknown'){\n return;\n }\n\n if(getNodeType(fromNode) === 'Risk'){\n return;\n }\n\n if(getNodeType(toNode) === 'Risk'){\n return;\n }\n \n links.push({\n source: fromNode.uid,\n label: edgeName, \n target: toNode.uid\n })\n } \n })\n\n traverseNodes(inputGraph, (node: BaseNode) => {\n const nodeType = getNodeType(node);\n\n if(nodeType === 'Unknown'){\n return;\n }\n\n if(nodeType === 'Risk'){\n return; \n }\n\n const nodeLabel = getNodeLabel(nodeType, node);\n\n const strippedNode = {...node};\n\n strippedNode.risk = strippedNode.risk || 0;\n strippedNode.analyzer_names = strippedNode.analyzer_names || \"\";\n\n for(const risk of node.risks || []){\n strippedNode.risk += risk.risk_score || 0;\n if (strippedNode.analyzer_names && risk.analyzer_name) {\n // #TODO: Link to the analyzer details\n strippedNode.analyzer_names += \", \"\n }\n strippedNode.analyzer_names += risk.analyzer_name || \"\";\n }\n\n mapEdges(node, (edge: string, _neighbor: BaseNode) => {\n // The stripped node is being converted to another type, so we can cast\n // to any here\n (strippedNode as any)[edge] = undefined;\n })\n\n const vizNode = {\n name: node.uid,\n ...strippedNode,\n id: node.uid,\n nodeType,\n nodeLabel,\n x: 200 + randomInt(1, 50),\n y: 150 + randomInt(1, 50),\n };\n\n nodeMap.set(node.uid, vizNode);\n })\n\n for (const vizNode of (nodeMap.values() as any)) {\n nodes.push(vizNode)\n }\n\n return {\n nodes, \n links\n }\n}\n","import { Node } from '../CustomTypes'\n\nconst getNodeLabel = (nodeType: string, node: Node) => {\n console.log('nodetype', nodeType);\n\n const _node = node as any; // ignore-any\n\n switch(nodeType) {\n case \"Process\": return _node.process_name || _node.process_id || 'Process';\n case \"Asset\": return _node.hostname || 'Asset';\n case \"File\": return _node.file_path || 'File';\n case \"IpAddress\": return _node.external_ip || 'IpAddress';\n case \"Lens\": return _node.lens_name || 'Lens';\n default: return nodeType || '';\n }\n};\n\nconst mapLabel = (label: string) => {\n if (label === 'children') {\n return 'executed'\n }\n return label\n};\n\nexport { mapLabel, getNodeLabel }","// @ts-nocheck\nimport React, { useEffect, useRef } from 'react';\nimport { ForceGraph2D } from 'react-force-graph';\nimport * as d3 from \"d3\";\nimport { BKDRHash, riskColor, calcNodeRgb , calcLinkColor} from \"../modules/GraphViz/graphColoring/coloring.tsx\";\nimport { retrieveGraph } from '../modules/GraphViz/graphQL/expandScope.tsx';\nimport { mapLabel } from '../modules/GraphViz/graph/labels.tsx';\nimport { nodeSize } from '../modules/GraphViz/calculations/node/nodeCalcs.tsx'\nimport { calcLinkDirectionalArrowRelPos, calcLinkParticleWidth } from '../modules/GraphViz/calculations/link/linkCalcs.tsx'\nimport {mergeGraphs} from '../modules/GraphViz/graph/mergeGraphs.tsx'\nimport {graphQLAdjacencyMatrix} from '../modules/GraphViz/graphQL/graphQLAdjacencyMatrix.tsx'\nimport { Node, LinkType, GraphType, ColorHashOptions } from \"../modules/GraphViz/CustomTypes\"\n\ntype ColorHashOptions = {\n lightness: number,\n saturation: number,\n hue: number,\n hash: BKDRHash,\n}\n\n/**\n * Convert HSL to RGB\n *\n * @see {@link http://zh.wikipedia.org/wiki/HSL和HSV色彩空间} for further information.\n * @param {Number} H Hue ∈ [0, 360)\n * @param {Number} S Saturation ∈ [0, 1]\n * @param {Number} L Lightness ∈ [0, 1]\n * @returns {Array} R, G, B ∈ [0, 255]\n */\nconst HSL2RGB = (H: number, S: number, L: number) => {\n H /= 360;\n\n const q = L < 0.5 ? L * (1 + S) : L + S - L * S;\n const p = 2 * L - q;\n\n return [H + 1 / 3, H, H - 1 / 3].map((color) => {\n if (color < 0) {\n color++;\n }\n if (color > 1) {\n color--;\n }\n if (color < 1 / 6) {\n color = p + (q - p) * 6 * color;\n } else if (color < 0.5) {\n color = q;\n } else if (color < 2 / 3) {\n color = p + (q - p) * 6 * (2 / 3 - color);\n } else {\n color = p;\n }\n return Math.round(color * 255);\n });\n};\n\nconst isArray = (o: Object) => {\n return Object.prototype.toString.call(o) === '[object Array]';\n};\n\n/**\n * Color Hash Class\n *\n * @class\n */\n\nexport class ColorHash {\n constructor(options: ColorHashOptions | undefined) {\n options = options || {};\n\n const LS = [options.lightness, options.saturation].map((param) => {\n param = param || [0.35, 0.5, 0.65]; // note that 3 is a prime\n return isArray(param) ? param.concat() : [param];\n });\n \n this.L = LS[0];\n this.S = LS[1];\n \n if (typeof options.hue === 'number') {\n options.hue = {min: options.hue, max: options.hue};\n }\n if (typeof options.hue === 'object' && !isArray(options.hue)) {\n options.hue = [options.hue];\n }\n if (typeof options.hue === 'undefined') {\n options.hue = [];\n }\n this.hueRanges = options.hue.map(function (range: number) {\n return {\n min: typeof range.min === 'undefined' ? 0 : range.min,\n max: typeof range.max === 'undefined' ? 360 : range.max\n };\n });\n \n this.hash = options.hash || BKDRHash;\n } \n /**\n * Returns the hash in [h, s, l].\n * Note that H ∈ [0, 360); S ∈ [0, 1]; L ∈ [0, 1];\n *\n * @param {String} str string to hash\n * @returns {Array} [h, s, l]\n */\n hsl = (str: string) => {\n let H, S, L;\n let hash = this.hash(str);\n \n if (this.hueRanges.length) {\n const range = this.hueRanges[hash % this.hueRanges.length];\n const hueResolution = 727; // note that 727 is a prime\n H = ((hash / this.hueRanges.length) % hueResolution) * (range.max - range.min) / hueResolution + range.min;\n } else {\n H = hash % 359; // note that 359 is a prime\n }\n hash = parseInt(hash / 360 as any);\n S = this.S[hash % this.S.length];\n hash = parseInt(hash / this.S.length as any);\n L = this.L[hash % this.L.length];\n \n return [H, S, L];\n }\n\n /**\n * Returns the hash in [r, g, b].\n * Note that R, G, B ∈ [0, 255]\n *\n * @param {String} str string to hash\n * @returns {Array} [r, g, b]\n */\n rgb = (str: string) => {\n const hsl = this.hsl(str);\n return HSL2RGB.apply(this, hsl);\n };\n}\n\n\nexport const mapNodeProps = (node: Node, f: (string) => void) => {\n for (const prop in node) {\n if (Object.prototype.hasOwnProperty.call(node, prop)) {\n if (Array.isArray(node[prop])) {\n if (node[prop].length > 0) {\n if (node[prop][0].uid === undefined) {\n f(prop)\n }\n }\n } else {\n f(prop)\n }\n }\n }\n};\n\ntype GraphState = {\n curLensName: LensType[], \n graphData: GraphType[]\n}\n\nconst updateGraph = async (\n lensName: string, \n state: GraphState, \n setState: (state: GraphState) => void,\n) => {\n if (!lensName) {\n return;\n }\n\n await retrieveGraph(lensName)\n .then(async (scope) => {\n const update = graphQLAdjacencyMatrix(scope);\n console.log('update', update);\n const mergeUpdate = mergeGraphs(state.graphData, update);\n if (mergeUpdate !== null) {\n if (state.curLensName === lensName) {\n setState({\n ...state,\n curLensName: lensName,\n graphData: mergeUpdate,\n })\n } else {\n setState({\n ...state,\n curLensName: lensName,\n graphData: update,\n })\n }\n }\n })\n .catch((e) => console.error(\"Failed to retrieveGraph \", e))\n}\n\ntype GraphDisplayProps = {\n lensName: string | null,\n setCurNode: (string) => void,\n}\n\ntype GraphDisplayState = {\n graphData: AdjacencyMatrix,\n curLensName: string | null,\n}\n\nconst defaultGraphDisplayState = (lensName: string): GraphDisplayState => {\n return {\n graphData: {nodes: [], links: []},\n curLensName: lensName,\n }\n}\n\nconst GraphDisplay = ({lensName, setCurNode}: GraphDisplayProps) => {\n const [state, setState] = React.useState(defaultGraphDisplayState(lensName));\n const forceRef = useRef(null);\n\n useEffect(() => {\n // console.log(\"useEffect - setting forceRef state\");\n forceRef.current.d3Force(\"link\", d3.forceLink());\n forceRef.current.d3Force('collide', d3.forceCollide(22));\n forceRef.current.d3Force(\"charge\", d3.forceManyBody());\n forceRef.current.d3Force('box', () => {\n const N = 100;\n // console.log(Graph.width(), Graph.height())\n const SQUARE_HALF_SIDE = 20 * N * 0.5;\n state.graphData.nodes.forEach(node => {\n const x = node.x || 0, y = node.y || 0;\n // bounce on box walls\n if (Math.abs(x) > SQUARE_HALF_SIDE) {\n node.vx *= -1;\n }\n if (Math.abs(y) > SQUARE_HALF_SIDE) {\n node.vy *= -1;\n }\n });\n });\n }, [state])\n\n\n useEffect(() => {\n updateGraph(lensName, state, setState);\n const interval = setInterval(async () => {\n if (lensName) {\n await updateGraph(lensName, state, setState);\n }\n }, 1000);\n return () => clearInterval(interval);\n }, [lensName, state]);\n\n const graphData = state.graphData;\n\n const colorHash = new ColorHash({});\n\n // #TODO: ADD ZOOM HANDLERS FOR MAX ZOOM IN/OUT\n\n return (\n <>\n node.nodeLabel}\n enableNodeDrag={true}\n linkDirectionalParticles={1}\n linkDirectionalParticleWidth={(link) => {\n return calcLinkParticleWidth(link, graphData);\n }}\n linkDirectionalParticleColor={(link) => {\n return calcLinkColor(link, graphData)\n }}\n linkDirectionalParticleSpeed={0.005}\n onNodeClick={\n (node: Node, event: string) => {\n setCurNode(node);\n }\n }\n linkDirectionalArrowLength={8}\n linkWidth={4}\n linkDirectionalArrowRelPos={(link => {\n return calcLinkDirectionalArrowRelPos(link, graphData);\n })}\n linkCanvasObjectMode={(() => 'after')}\n linkCanvasObject={((link: LinkType, ctx: any) => {\n const MAX_FONT_SIZE = 8;\n const LABEL_NODE_MARGIN = 8 * 1.5;\n const start = link.source;\n const end = link.target;\n // ignore unbound links\n link.color = calcLinkColor(link, graphData);\n\n if (typeof start !== 'object' || typeof end !== 'object') return;\n // calculate label positioning\n const textPos = Object.assign(\n ...['x', 'y'].map((c: any) => (\n {\n [c]: start[c] + (end[c] - start[c]) / 2 // calc middle point\n }\n )) as any\n );\n\n const relLink = {x: end.x - start.x, y: end.y - start.y};\n\n const maxTextLength = Math.sqrt(Math.pow(relLink.x, 2) + Math.pow(relLink.y, 2)) - LABEL_NODE_MARGIN * 8;\n\n let textAngle = Math.atan2(relLink.y, relLink.x);\n // maintain label vertical orientation for legibility\n if (textAngle > Math.PI / 2) textAngle = -(Math.PI - textAngle);\n if (textAngle < -Math.PI / 2) textAngle = -(-Math.PI - textAngle);\n\n const label = mapLabel(link.label);\n // estimate fontSize to fit in link length\n ctx.font = '50px Arial';\n const fontSize = Math.min(MAX_FONT_SIZE, maxTextLength / ctx.measureText(label).width);\n ctx.font = `${fontSize + 5}px Arial`;\n\n let textWidth = ctx.measureText(label).width;\n\n textWidth += Math.round(textWidth * 0.25);\n\n const bckgDimensions = [textWidth, fontSize].map(n => n + fontSize * 0.2); // some padding\n // draw text label (with background rect)\n ctx.save();\n ctx.translate(textPos.x, textPos.y);\n ctx.rotate(textAngle);\n ctx.fillStyle = 'rgb(115,222,255,1)';\n ctx.fillRect(-bckgDimensions[0] / 2, -bckgDimensions[1] / 2, ...bckgDimensions);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n ctx.fillStyle = 'white';\n //content, left/right, top/bottom\n ctx.fillText(label, .75, 3);\n ctx.restore();\n })}\n nodeCanvasObject={((node: Node, ctx: any, globalScale: any) => {\n // add ring just for highlighted nodes\n\n const NODE_R = nodeSize(node, graphData);\n ctx.save();\n\n // Risk outline color\n ctx.beginPath();\n ctx.arc(node.x, node.y, NODE_R * 1.3, 0, 2 * Math.PI, false);\n ctx.fillStyle = riskColor(node, graphData, colorHash);\n ctx.fill();\n ctx.restore();\n\n ctx.save();\n\n // Node color\n ctx.beginPath();\n ctx.arc(node.x, node.y, NODE_R * 1.2, 0, 2 * Math.PI, false);\n\n const nodeRbg = calcNodeRgb(node, colorHash);\n\n ctx.fillStyle = `rgba(${nodeRbg[0]}, ${nodeRbg[1]}, ${nodeRbg[2]}, 1)`;\n ctx.fill();\n ctx.restore();\n\n const label = node.nodeLabel;\n\n const fontSize = 15 / globalScale;\n\n ctx.font = `${fontSize}px Arial`;\n\n\n const textWidth = ctx.measureText(label).width;\n\n const bckgDimensions = [textWidth, fontSize].map(n => n + fontSize * 0.2); // some padding\n // node label color\n ctx.fillStyle = 'rgba(48, 48, 48, 0.8)';\n ctx.fillRect(node.x - bckgDimensions[0] / 2, node.y - bckgDimensions[1] / 2, ...bckgDimensions);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n ctx.fillStyle = 'white';\n ctx.fillText(label, node.x, node.y);\n\n })}\n ref={forceRef}\n />\n \n )\n}\n\nexport default GraphDisplay;\n","import React from \"react\";\nimport { makeStyles } from '@material-ui/core/styles';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport TableHead from '@material-ui/core/TableHead';\nimport TableRow from '@material-ui/core/TableRow';\nimport { mapEdgeProps } from '../modules/GraphViz/graph/graph_traverse';\nimport { mapNodeProps } from './GraphViz';\nimport { Node } from \"../modules/GraphViz/CustomTypes\"\n\n\nconst useStyles = makeStyles({\n root: {\n fontSize: \".75em\"\n },\n nodeTable: {\n minWidth: 450,\n }, \n tableHeader: {\n fontSize: \".85rem\", \n backgroundColor: \"#595959\"\n }, \n nodeTableData: {\n fontSize: \".75rem\"\n },\n});\n\nfunction innerTable(node: Node, styles: any) {\n if(node) {\n return (\n \n \n \n PROPERTY \n \n \n VALUE \n \n \n \n )\n } else {\n return <>\n }\n}\n\ntype NodeTableProps = {\n node: Node\n}\n\nfunction NodeTable({node}: NodeTableProps){\n const classes = useStyles();\n const hidden = new Set(\n ['id', 'dgraph.type', 'dgraph_type', '__indexColor', 'risks','uid', 'scope', 'name', 'nodeType', 'nodeLabel', 'x', 'y', 'index', 'vy', 'vx', 'fx', 'fy']\n );\n\n mapEdgeProps(node, (edgeName: string, _neighbor: Node) => {\n hidden.add(edgeName)\n });\n\n const displayNode = {} as any;\n\n mapNodeProps(\n node, \n (propName: string) => {\n const prop = (node as any)[propName];\n\n if(!hidden.has(propName)){\n if (prop) {\n if (propName.includes('_time')) {\n displayNode[propName] = new Date(prop).toLocaleString()\n } else {\n displayNode[propName] = prop;\n }\n }\n } \n }\n )\n\n return(\n \n \n {\n innerTable(node, classes)\n }\n \n {\n Object.entries(displayNode).map((entry) => {\n const [key, value] = entry;\n \n return(\n \n {key}\n {value as any}\n \n ) \n })\n }\n \n
\n
\n ) \n \n \n}\n\n\nexport default NodeTable ","import React, {useEffect, useState} from \"react\";\nimport NodeTable from './NodeTable'\nimport Button from \"@material-ui/core/Button\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport BubbleChartIcon from '@material-ui/icons/BubbleChart';\nimport LensIcon from '@material-ui/icons/Lens';\nimport Divider from \"@material-ui/core/Divider\";\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableContainer from \"@material-ui/core/TableContainer\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport { Lens } from \"../modules/GraphViz/CustomTypes\";\nimport { getGraphQlEdge } from \"../modules/GraphViz/engagement_edge/getApiURLs\";\n\nimport TablePagination from '@material-ui/core/TablePagination';\nimport { ClassNameMap } from '@material-ui/styles/withStyles';\nimport {SelectLensProps, ToggleLensTableProps, ToggleLensTableState, SideBarContentProps, NodeDetailsProps, ToggleNodeTableProps, PaginationState} from \"../modules/GraphViz/CustomTypes\"\n\nconst useStyles = makeStyles({\n root:{\n fontSize: \"1rem\",\n },\n button: {\n width: \".005%\",\n color: \"white\",\n backgroundColor:\"#424242\",\n },\n title: {\n fontSize: \"25px\",\n color: \"#ffffff\",\n },\n icon:{\n color: \"#42C6FF\",\n margin: \"15px 0 0 10px\",\n }, \n expand:{\n color: \"#42C6FF\",\n margin: \"0px\"\n },\n header:{\n display: \"flex\"\n }, \n table: {\n minWidth: 450, \n },\n lensName: {\n fontSize: \"16px\",\n },\n pagination: {\n margin: \".5rem\",\n backgroundColor: \"#595959\",\n }\n});\n\n\nfunction SelectLens(props: SelectLensProps) {\n const classes = useStyles();\n return (\n <>\n \n \n \n \n \n \n )\n}\n\nconst defaultToggleLensTableState = (): ToggleLensTableState => {\n return {\n toggled: true,\n lenses: [],\n first: 100, // first is the page size\n offset: 0, // by default, start from page 0\n }\n}\n\n\nconst pagedTable = (\n state: PaginationState, \n page: number, \n rowsPerPage: number, \n handleChangePage: (event: React.MouseEvent | null, page: number) => void, \n handleChangeRowsPerPage: (event: React.ChangeEvent) => void, \n setLens: (lens: string) => void, \n classes: ClassNameMap\n) => {\n return (\n \n \n {\n state.lenses \n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map(\n (lens: Lens) => {\n return(\n \n \n \n \n
\n )\n }\n )\n }\n
\n )\n}\n\nfunction ToggleLensTable( {setLens}: ToggleLensTableProps ) {\n const [state, setState] = useState(defaultToggleLensTableState());\n const classes = useStyles();\n\n const [page, setPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const handleChangePage = (event: React.MouseEvent | null, page: number) => {\n setPage(page);\n }\n const handleChangeRowsPerPage = (event: React.ChangeEvent) => {\n console.log(\"Handle Row Event\", event)\n setRowsPerPage(parseInt(event.target.value, 10));\n setPage(0);\n }\n\n useEffect( () => {\n const interval = setInterval(\n () => {\n console.log(\"Fetching lenses\");\n getLenses(state.first, state.offset)\n .then((response) => {\n if (response.lenses && response.lenses !== state.lenses) {\n const lenses = state.lenses.concat(response.lenses);\n setState({\n ...state,\n offset: state.offset + response.lenses.length || 0,\n lenses,\n })\n }\n }\n )\n }, 1000);\n return () => clearInterval(interval);\n });\n\n return (\n <>\n
\n \n \n LENSES \n \n { \n setState({\n ...state,\n toggled: !state.toggled,\n }) \n }}> \n \n \n
\n \n
\n { \n state.toggled && \n pagedTable(state, page, rowsPerPage, handleChangePage, handleChangeRowsPerPage, setLens, classes)\n }\n
\n\n \n \n )\n}\n\nconst graphql_edge = getGraphQlEdge();\n\nconst getLenses = async (first: number, offset: number) => {\n // console.log('fetching graph from', graphql_edge);\n\n const query = `\n {\n lenses(first: ${first}, offset: ${offset}) {\n uid,\n node_key,\n lens_name,\n score, \n lens_type,\n }\n }\n `;\n // console.log(`connecting to: ${graphql_edge}graphql`);\n const res = await fetch(`${graphql_edge}graphql`,\n {\n method: 'post',\n body: JSON.stringify({ query: query }),\n headers: {\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n })\n .then(res => res.json())\n .then(res => {\n if (res.errors) {\n console.error(\"lenses failed\", res.errors);\n res.data = {lenses: []};\n }\n return res\n })\n .then((res) => res.data);\n\n const jres = await res;\n return jres;\n};\n\nconst NodeDetails = ({node}: NodeDetailsProps) => {\n return (\n <>\n \n \n )\n}\n\nfunction ToggleNodeTable({curNode}: ToggleNodeTableProps) {\n const [toggled, toggle] = useState(true);\n const classes = useStyles();\n return (\n <>\n
\n
\n NODE\n { toggle(toggled => !toggled) }\n }> \t\n \n \n
\n\n
\n {\n toggled && curNode && \n <>\n { }\n \n }\n
\n
\n \n )\n}\n\n\n\nexport default function SideBarContent({setLens, curNode}: SideBarContentProps) {\n return (\n <>\n \n \n \n );\n}\n\n","import GraphDisplay from \"./GraphViz\";\nimport React from \"react\";\nimport SideBarContent from './SideBarContent'\nimport clsx from \"clsx\";\nimport {createStyles, makeStyles, Theme} from \"@material-ui/core/styles\";\nimport Drawer from \"@material-ui/core/Drawer\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Divider from \"@material-ui/core/Divider\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport KeyboardArrowLeftIcon from '@material-ui/icons/KeyboardArrowLeft';\nimport Button from \"@material-ui/core/Button\";\nimport { Node } from \"../modules/GraphViz/CustomTypes\";\nimport Home from '@material-ui/icons/Home';\nimport {Link} from 'react-router-dom'\n\nconst drawerWidth = 500;\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n display: \"flex\"\n },\n button: {\n backgroundColor: \"#42C6FF\",\n margin: \"0.25rem\",\n padding: \"0.20rem\",\n }, \n appBar: {\n transition: theme.transitions.create([\"margin\", \"width\"], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen\n })\n },\n appBarShift: {\n width: `calc(100% - ${drawerWidth}px)`,\n marginLeft: drawerWidth,\n transition: theme.transitions.create([\"margin\", \"width\"], {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen\n })\n },\n menuButton: {\n marginRight: theme.spacing(2),\n color: \"#42C6FF\"\n },\n hide: {\n display: \"none\"\n },\n drawer: {\n width: drawerWidth,\n flexShrink: 0\n },\n drawerPaper: {\n width: drawerWidth\n },\n drawerHeader: {\n display: \"flex\",\n alignItems: \"center\",\n padding: theme.spacing(0, 1),\n // necessary for content to be below app bar\n ...theme.mixins.toolbar,\n justifyContent: \"flex-end\"\n },\n content: {\n flexGrow: 1,\n padding: theme.spacing(3),\n transition: theme.transitions.create(\"margin\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen\n }),\n marginLeft: -drawerWidth\n },\n contentShift: {\n transition: theme.transitions.create(\"margin\", {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen\n }),\n marginLeft: 0,\n },\n lensName:{\n color:\"#EAFDFF\",\n fontSize: \"1.5rem\", \n },\n header:{\n fontSize: \"35px\",\n }, \n headerContent: {\n width: \"100vw\",\n display: \"flex\", \n justifyContent: \"space-between\",\n },\n close:{\n color:\"#42C6FF\",\n },\n link: {\n color: \"#42C6FF\", \n textDecoration: \"none\"\n }\n })\n);\n\ntype SideBarProps = {\n setLens: (lens: string) => void,\n curLens: string,\n curNode: Node | null\n}\n\nexport default function SideBar({setLens, curLens, curNode}: SideBarProps) {\n const classes = useStyles();\n\n const [open, setOpen] = React.useState(true);\n\n const handleDrawerOpen = () => {\n setOpen(true);\n };\n\n const handleDrawerClose = () => {\n setOpen(false);\n };\n\n return (\n
\n {/* */}\n \n \n \n {/* // Menu Icon */}\n ☰\n \n\n
\n \n GRAPL \n \n \n
\n\n
\n \n\n \n
\n \n
\n\n \n\n \n\n \n\n \n
\n

\n {/* selected lens name */}\n {curLens || \"\"} \n

\n\n \n \n
\n );\n}\n\ntype EngagementUxState = {\n curLens: string, \n curNode: Node | null \n}\n\nconst defaultEngagementUxState = (): EngagementUxState => {\n return {\n curLens: \"\",\n curNode: null,\n }\n}\n\nexport const EngagementUx = () => {\n const [state, setState] = React.useState(defaultEngagementUxState());\n \n return (\n <>\n setState({\n ...state,\n curLens: lens,\n })\n }\n curLens={state.curLens}\n curNode={state.curNode}\n />\n\n {\n setState({\n ...state,\n curNode: node,\n })\n }}\n />\n \n )\n}","import React from 'react';\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport Typography from \"@material-ui/core/Typography\";\nimport {createStyles, makeStyles, Theme} from \"@material-ui/core/styles\";\nimport Home from '@material-ui/icons/Home';\nimport {Link} from 'react-router-dom';\n\nconst useStyles = makeStyles(\n (theme: Theme) =>\n createStyles({\n root: {\n display: \"flex\",\n },\n header: {\n justifyContent: \"space-between\",\n }, \n link:{\n color:\"#42C6FF\", \n textDecoration: \"none\"\n }\n }\n )\n);\n\n\ntype GraplHeaderProps = {\n displayBtn: boolean\n}\n\nconst GraplHeader = ({displayBtn}: GraplHeaderProps) => {\n const classes = useStyles();\n return(\n <>\n \n \n \n GRAPL\n \n {\n displayBtn &&\n \n\n }\n \n \n \n ) \n}\n\nexport default GraplHeader; ","import React from 'react';\nimport Button from \"@material-ui/core/Button\";\nimport {createStyles, makeStyles, Theme} from \"@material-ui/core/styles\";\nimport GraplHeader from \"./reusableComponents/GraplHeader\";\nimport {Link} from 'react-router-dom';\n\nconst useStyles = makeStyles( (theme: Theme) =>\n createStyles({\n root: {\n display: \"flex\",\n },\n button: {\n backgroundColor: \"#42C6FF\",\n margin: \"0.25rem\",\n padding: \"0.25rem\",\n }, \n welcome: {\n width:\"70%\",\n textAlign:\"center\",\n backgroundColor: \"#373740\",\n height: \"100vh\",\n },\n nav: {\n margin: \"2rem\",\n width: \"30%\",\n display: \"flex\",\n flexDirection: \"column\",\n },\n dashboard:{\n display: \"flex\",\n flexDirection: \"row\",\n }, \n link:{\n color: \"white\",\n textDecoration: \"none\"\n }\n })\n);\n\nexport default function Dashboard() {\n const classes = useStyles();\n return (\n <> \n \n\n
\n
\n \n \n \n \n \n
\n\n
\n

Welcome, username

\n
\n
\n \n )\n}\n","import { createStyles, makeStyles, Theme } from \"@material-ui/core/styles\";\n\nexport const useStyles = makeStyles(\n (theme: Theme) =>\n createStyles({\n root: {\n display: \"flex\",\n },\n formContainer: {\n color: \"white\", \n margin: \"1rem\",\n },\n btn: {\n backgroundColor: \"#42C6FF\",\n margin: \"0.25rem\",\n padding: \"0.25rem\",\n borderRadius: \"6px\",\n },\n inputFiles: {\n border: \"none\",\n width: \"35vw\",\n },\n upload: {\n display: \"flex\",\n },\n succMsg: {\n color: \"#03dac6\",\n }, \n errMsg: {\n color: \"#CF6679\",\n }, \n pluginTable: {\n backgroundColor: \"#292929\",\n margin: \"1em\",\n width: \"50%\",\n height: \"100%\",\n boxShadow: \" 1.5px 1.5px #000000\",\n }, \n uploadFormContainer: {\n backgroundColor: \"#292929\",\n margin: \"1em\", \n width: \"50%\",\n height: \"100%\",\n boxShadow: \"1.5px 1.5px #000000\",\n display: \"flex\", \n }, \n uploadForm: {\n fontFamily: \"Arial\",\n display: \"flex\",\n fontSize: \".75rem\",\n }\n }\n )\n);","import { PluginPayload } from \"../plugins/uploadPluginTypes\";\nimport {getModelPluginEdge} from \"../../GraphViz/engagement_edge/getApiURLs\"\n\nexport const getPluginList = async () => {\n const res = await fetch(`${getModelPluginEdge()}listModelPlugins`, \n {\n method: 'post',\n headers: {\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n }\n );\n\n const body = await res.json();\n\n let pluginList: string[] = body.success.plugin_list;\n\n return pluginList\n}\n\nexport const deletePlugin = async ( pluginName: string ): Promise => {\n const res = await fetch(`${getModelPluginEdge()}deleteModelPlugin`, \n {\n method: 'post',\n headers: {\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n body: JSON.stringify({plugins_to_delete: [pluginName]})\n }\n );\n await res.json();\n return true;\n};\n\nexport const uploadFilesToDgraph = async (payload: PluginPayload ): Promise => {\n const res = await fetch(`${getModelPluginEdge()}deploy`, \n {\n method: 'post',\n headers: {\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n body: JSON.stringify(payload)\n }\n );\n const body = await res.json();\n console.log(\"body\", body)\n return body.success.Success;\n};","import React, { SyntheticEvent } from 'react';\nimport { Field, Form, Formik } from \"formik\";\nimport Button from \"@material-ui/core/Button\";\nimport CloudUploadIcon from '@material-ui/icons/CloudUpload';\nimport { Event, UploadFormState, DirectoryUpload, MessageProps} from \"./uploadPluginTypes\"\nimport { uploadFilesToDgraph } from \"./apiRequests\";\nimport { useStyles } from \"./useStyles\";\n\nconst readFile = async (file: Blob): Promise => {\n return await new Promise(\n (resolve, reject) => {\n const reader = new FileReader();\n reader.addEventListener('load', (event: ProgressEvent) => {\n if (event.target === null) {\n console.warn(\"onload event was null\");\n return;\n } else {\n const fileRes = event.target.result;\n if (fileRes === null) {\n console.warn(\"Read pluginfile was null\");\n reject(null)\n return;\n } else {\n if (typeof(fileRes) === 'string') {\n resolve(fileRes);\n } else {\n resolve(new TextDecoder().decode(fileRes));\n }\n }\n }\n });\n return reader.readAsText(file);\n }\n )\n}\n\nconst defaultUploadFormState = (): UploadFormState => {\n return {curFiles: null, success: null}\n}\n\nconst Message = ({status}: MessageProps) => {\n const classes = useStyles();\n if (status === true) {\n return(\n
Plugins Successfully Deployed!
\n )\n } else if (status === false){\n return(\n
Upload Unsuccessful
\n )\n } else {\n return (
)\n }\n \n}\n\nexport const UploadForm = () => {\n const [state, setState] = React.useState(defaultUploadFormState());\n const classes = useStyles();\n\n return(\n
\n

UPLOAD DIRECTORY WITH PLUGINS:

\n { \n const fileMap = {} as any;\n const reads: Promise[] = [];\n const {curFiles} = state;\n\n if (curFiles === null) {\n console.warn(\"Attempted to upload files without selecting any\");\n return\n }\n \n for(const f of curFiles){\n let fileRead = readFile(f).then((fileResult) => {\n // This any is because webkitRelativePath is not standard, and therefor\n // is not part of the File type\n const path = ((f as any).webkitRelativePath || (f as any).mozRelativePath);\n\n fileMap[path] = fileResult;\n });\n reads.push(fileRead);\n }\n let success = true;\n Promise.all(reads).then(() => {\n return uploadFilesToDgraph({plugins: fileMap});\n })\n .then((didSucceed) => {success = success && didSucceed;})\n .then(() => setState({...state, success}))\n }\n }\n >\n
\n {/* accept = property to restrict types, currently we accept ANY type */}\n ) => {\n setState({\n ...state,\n curFiles: event.currentTarget.files\n })\n }\n }\n /> \n \n \n \n
\n \n
\n )\n}","import React, { useEffect, useState } from 'react';\nimport Table from '@material-ui/core/Table';\nimport TableRow from '@material-ui/core/TableRow';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport TableHead from '@material-ui/core/TableHead';\nimport TablePagination from '@material-ui/core/TablePagination';\nimport Button from \"@material-ui/core/Button\";\nimport DeleteOutlinedIcon from '@material-ui/icons/DeleteOutlined';\nimport { PluginTableState } from \"../plugins/uploadPluginTypes\"\nimport { getPluginList, deletePlugin} from \"../plugins/apiRequests\";\nimport { useStyles } from \"../plugins/useStyles\";\n\nconst defaultPluginTableState = (): PluginTableState => {\n return {\n rows: [],\n toggle: true,\n }\n}\n\nexport const PluginTable = () => {\n const classes = useStyles();\n\n const [state, setState] = React.useState(defaultPluginTableState());\n const [page, setPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const handleChangePage = (event: React.MouseEvent | null, newPage:number) => {\n setPage(newPage);\n }\n const handleChangeRowsPerPage = (event: React.ChangeEvent) => {\n console.log(\"Event\", event)\n setRowsPerPage(parseInt(event.target.value, 10));\n setPage(0);\n }\n\n useEffect(() => {\n // console.log(\"fetching plugins\");\n const interval = setInterval(async () => {\n await getPluginList().then((rows) => {\n setState({\n toggle: state.toggle ,\n rows\n })\n });\n }, 1000);\n return () => clearInterval(interval);\n\n }, [state.toggle])\n\n return(\n <>\n \n \n \n \n PLUGINS\n \n \n \n {state.rows.map(\n (pluginName: string) => {\n return \n \n {pluginName} \n \n \n \n }\n )}\n \n
\n \n
\n \n )\n}","import React from 'react';\nimport GraplHeader from \"./reusableComponents/GraplHeader\";\nimport { useStyles } from \"../modules/uploads/plugins/useStyles\";\nimport { UploadForm } from \"../modules/uploads/plugins/uploadPlugins\"; \nimport { PluginTable } from \"../modules/uploads/plugins/pluginTable\";\n\nconst UploadPlugin = () => {\n const classes = useStyles();\n return(\n <>\n \n
\n
\n \n
\n
\n \n
\n
\n \n )\n}\n\nexport default UploadPlugin;","import React from 'react';\nimport './LogIn.css';\nimport {LogIn} from './Login';\nimport {EngagementUx} from \"./components/EngagementView\";\nimport Dashboard from \"./components/Dashboard\";\nimport UploadPlugin from \"./components/UploadPlugin\";\nimport {HashRouter, Route, Switch} from 'react-router-dom';\n\n// Updates our react state, as well as localStorage state, to reflect the page\n// we should render\n\nexport default function App() {\n console.log(\"App loaded\");\n return (\n <>\n \n \n \n \n \n \n \n \n \n )\n}\n\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(\n process.env.PUBLIC_URL,\n window.location.href\n );\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport { createMuiTheme, ThemeProvider } from '@material-ui/core/styles'\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\nimport { HashRouter } from 'react-router-dom';\n\n\nconst darkTheme = createMuiTheme({\n palette: {\n type: 'dark',\n primary: {\n main: '#373740',\n }\n }\n})\n\nconst rootElement = document.getElementById('root')\n\nReactDOM.render(\n \n \n \n , \n \n \n ,\n rootElement\n);\n\nserviceWorker.unregister();\n"],"sourceRoot":""} \ No newline at end of file diff --git a/src/js/grapl-cdk/edge_ux/static/js/main.7a388ddd.chunk.js.map b/src/js/grapl-cdk/edge_ux/static/js/main.7a388ddd.chunk.js.map index 04fe4b6e77..3f5e0dca79 100644 --- a/src/js/grapl-cdk/edge_ux/static/js/main.7a388ddd.chunk.js.map +++ b/src/js/grapl-cdk/edge_ux/static/js/main.7a388ddd.chunk.js.map @@ -1 +1 @@ -{"version":3,"sources":["modules/GraphViz/engagement_edge/getApiURLs.tsx","Login.tsx","modules/GraphViz/calculations/node/nodeCalcs.tsx","modules/GraphViz/calculations/link/linkCalcs.tsx","modules/GraphViz/graphColoring/coloring.tsx","modules/GraphViz/graph/graph_traverse.tsx","modules/GraphViz/graphQL/expandScope.tsx","modules/GraphViz/graph/mergeGraphs.tsx","modules/GraphViz/graphQL/graphQLAdjacencyMatrix.tsx","modules/GraphViz/graph/labels.tsx","components/GraphViz.tsx","components/NodeTable.tsx","components/SideBarContent.tsx","components/SideBar.tsx","components/reusableComponents/GraplHeader.tsx","components/Dashboard.tsx","modules/uploads/plugins/useStyles.tsx","modules/uploads/plugins/apiRequests.tsx","modules/uploads/plugins/uploadPlugins.tsx","modules/uploads/plugins/pluginTable.tsx","components/UploadPlugin.tsx","App.tsx","serviceWorker.ts","index.tsx"],"names":["getGraphQlEdge","window","location","hostname","getModelPluginEdge","engagement_edge","LogIn","_","className","initialValues","userName","password","onSubmit","values","a","console","log","sha256WithPepper","login","history","replaceState","warn","name","type","placeholder","sha256","message","msgBuffer","TextEncoder","encode","crypto","subtle","digest","hashBuffer","hashArray","Array","from","Uint8Array","map","b","toString","slice","join","username","hashed","i","fetch","method","body","JSON","stringify","headers","credentials","res","json","calcNodeRiskPercentile","_nodeRisk","_allRisks","nodeRisk","risk","allRisks","n","sort","undefined","length","riskIndex","Math","floor","findNode","id","nodes","node","calcLinkRiskPercentile","link","Graph","linkRisk","srcNode","source","dstNode","target","error","srcRisk","dstRisk","round","calcLinkRisk","BKDRHash","str","hash","MAX_SAFE_INTEGER","parseInt","charCodeAt","calcNodeRgb","colorHash","nodeType","rgb","percentToColor","percentile","calcLinkColor","mapGraph","f","visited","Set","mapEdgeProps","edgeName","neighbor","_mapGraph","has","uid","add","mapEdges","prop","Object","prototype","hasOwnProperty","call","maybeNeighbor","isArray","graphql_edge","builtins","unpackPluginNodes","predicates","edge_name","dgraph_type","pluginNode","keys","forEach","key","retrieveGraph","lens","query","expandScope","then","data","lens_scope","lensWithScope","scope","lensName","mergeNodes","x","y","merged","mapNodeProps","mergeGraphs","curGraph","update","links","outputGraph","updated","Map","set","newNode","get","label","newLink","newLinkSource","newLinkTarget","getNodeType","t","node_type","randomInt","min","max","random","graphQLAdjacencyMatrix","inputGraph","nodeMap","traverseNeighbors","callback","fromNode","toNode","push","traverseNodes","nodeLabel","_node","process_name","process_id","file_path","external_ip","lens_name","getNodeLabel","strippedNode","analyzer_names","risks","risk_score","analyzer_name","edge","_neighbor","vizNode","HSL2RGB","H","S","L","q","p","color","o","ColorHash","options","hsl","hueRanges","range","apply","LS","lightness","saturation","param","concat","this","hue","updateGraph","state","setState","mergeUpdate","graphData","curLensName","catch","e","GraphDisplay","setCurNode","React","useState","defaultGraphDisplayState","forceRef","useRef","useEffect","current","d3Force","d3","abs","vx","vy","interval","setInterval","clearInterval","enableNodeDrag","linkDirectionalParticles","linkDirectionalParticleWidth","linkRiskPercentile","calcLinkParticleWidth","linkDirectionalParticleColor","linkDirectionalParticleSpeed","onNodeClick","event","linkDirectionalArrowLength","linkWidth","linkDirectionalArrowRelPos","riskPercentile","calcLinkDirectionalArrowRelPos","linkCanvasObjectMode","linkCanvasObject","ctx","start","end","textPos","assign","c","relLink","maxTextLength","sqrt","pow","LABEL_NODE_MARGIN","textAngle","atan2","PI","mapLabel","font","fontSize","measureText","width","textWidth","bckgDimensions","save","translate","rotate","fillStyle","fillRect","textAlign","textBaseline","fillText","restore","nodeCanvasObject","globalScale","NODE_R","nodeSize","beginPath","arc","nodeColors","riskColor","fill","nodeRbg","ref","useStyles","makeStyles","root","nodeTable","minWidth","tableHeader","backgroundColor","nodeTableData","NodeTable","classes","hidden","displayNode","propName","includes","Date","toLocaleString","TableContainer","Table","styles","TableHead","TableRow","TableCell","align","innerTable","TableBody","entries","entry","value","button","title","icon","margin","expand","header","display","table","pagination","SelectLens","props","component","Button","onClick","setLens","lens_type","score","ToggleLensTable","toggled","lenses","first","offset","page","setPage","rowsPerPage","setRowsPerPage","getLenses","response","handleChangePage","handleChangeRowsPerPage","TablePagination","aria-label","rowsPerPageOptions","count","onChangePage","onChangeRowsPerPage","Number","pagedTable","Divider","errors","jres","NodeDetails","ToggleNodeTable","curNode","toggle","SideBarContent","theme","createStyles","padding","appBar","transition","transitions","create","easing","sharp","duration","leavingScreen","appBarShift","marginLeft","easeOut","enteringScreen","menuButton","marginRight","spacing","hide","drawer","flexShrink","drawerPaper","drawerHeader","alignItems","mixins","toolbar","justifyContent","content","flexGrow","contentShift","headerContent","close","textDecoration","SideBar","curLens","open","setOpen","AppBar","position","clsx","Toolbar","IconButton","Typography","variant","noWrap","to","Drawer","anchor","paper","paragraph","EngagementUx","GraplHeader","displayBtn","welcome","height","nav","flexDirection","dashboard","Dashboard","formContainer","btn","borderRadius","inputFiles","border","upload","succMsg","errMsg","pluginTable","boxShadow","uploadFormContainer","uploadForm","fontFamily","getPluginList","pluginList","success","plugin_list","deletePlugin","pluginName","plugins_to_delete","uploadFilesToDgraph","payload","Success","readFile","file","Promise","resolve","reject","reader","FileReader","addEventListener","fileRes","result","TextDecoder","decode","readAsText","Message","status","UploadForm","curFiles","fileMap","reads","fileRead","fileResult","path","webkitRelativePath","mozRelativePath","all","plugins","didSucceed","directory","webkitdirectory","mozdirectory","multiple","onChange","currentTarget","files","PluginTable","rows","newPage","UploadPlugin","App","exact","Boolean","match","darkTheme","createMuiTheme","palette","primary","main","rootElement","document","getElementById","ReactDOM","render","StrictMode","ThemeProvider","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.7a388ddd.chunk.js","sourcesContent":["export const getAuthEdge = () => {\n return \"http://\" + window.location.hostname + \":8900/\"\n}\n\nexport const getGraphQlEdge = () => {\n return \"http://\" + window.location.hostname + \":5000/\"\n}\n\nexport const getModelPluginEdge = () => {\n return \"http://\" + window.location.hostname + \":8123/\"\n}","import React from 'react';\nimport './LogIn.css';\nimport {Field, Form, Formik} from \"formik\";\nimport {LoginProps} from '../src/modules/GraphViz/CustomTypes';\nimport {getAuthEdge} from './modules/GraphViz/engagement_edge/getApiURLs';\n\nconst engagement_edge = getAuthEdge();\n\nexport const checkLogin = async () => {\n const res = await fetch(`${engagement_edge}checkLogin`, {\n method: 'get',\n credentials: 'include',\n });\n\n const body = await res.json();\n\n return body['success'] === 'True';\n};\n\nexport const LogIn = (_: LoginProps) => {\n return (\n
\n
Grapl
\n
\n {\n console.log(\"logging in\");\n const password = await sha256WithPepper(\n values.userName, values.password\n );\n \n const loginSuccess = await login(values.userName, password);\n \n if (loginSuccess) {\n window.history.replaceState('/login', \"\", \"/\")\n console.log(\"Logged in\");\n } else {\n console.warn(\"Login failed!\")\n }\n }}\n >\n
\n
\n
\n \n \n \n \n
\n
\n );\n}\n\nasync function sha256(message: string) {\n // encode as UTF-8\n const msgBuffer = new TextEncoder().encode(message);\n\n // hash the message\n const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);\n\n // convert ArrayBuffer to Array\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n\n // convert bytes to hex string\n return hashArray.map(b => ('00' + b.toString(16)).slice(-2)).join('');\n}\n\n\nconst sha256WithPepper = async (username: string, password: string) => {\n // The pepper only exists to prevent rainbow tables for extremely weak passwords\n // Client side hashing itself is only to prevent cases where the password is\n // exposed before it makes it into the password database\n const pepper = \"f1dafbdcab924862a198deaa5b6bae29aef7f2a442f841da975f1c515529d254\";\n let hashed = await sha256(password + pepper + username);\n\n for (let i = 0; i < 5000; i++) {\n hashed = await sha256(hashed)\n }\n return hashed\n};\n\nconst login = async (username: string, password: string) => {\n try {\n const res = await fetch(`${engagement_edge}login`, {\n method: 'post',\n body: JSON.stringify({\n 'username': username,\n 'password': password\n }),\n headers: {\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n });\n \n const body = await res.json();\n console.log(\"body\", body);\n return body['success'] === 'True';\n } catch (e) {\n console.log(e);\n return false\n }\n };\n\nexport default LogIn;\n","import {VizGraph, VizNode} from '../../CustomTypes';\n\nexport const calcNodeRiskPercentile = (_nodeRisk: number | {risk: number}, _allRisks: any) => {\n let nodeRisk = _nodeRisk;\n if (typeof _nodeRisk === 'object') {\n nodeRisk = _nodeRisk.risk;\n }\n\n const allRisks = _allRisks\n .map((n: any) => n || 0)\n .sort((a: number, b: number) => a - b);\n\n if (nodeRisk === undefined || nodeRisk === 0 || allRisks.length === 0) {\n return 0\n }\n\n let riskIndex = 0;\n for (const risk of allRisks) {\n if (nodeRisk >= risk) {\n riskIndex += 1;\n }\n }\n\n return Math.floor((riskIndex / allRisks.length) * 100)\n};\n\n\nexport const nodeSize = (node: VizNode, Graph: VizGraph) => {\n const nodes = [...Graph.nodes].map(node => node.risk);\n const riskPercentile = calcNodeRiskPercentile(node.risk, nodes);\n\n if (riskPercentile >= 75) {\n return 6\n } else if (riskPercentile >= 25) {\n return 5\n } else {\n return 4\n }\n};\n","import { calcNodeRiskPercentile } from '../node/nodeCalcs'; \nimport { LinkType, VizNode, VizGraph } from '../../CustomTypes';\n\n\nconst findNode = (id: number, nodes: VizNode[]) => {\n for (const node of (nodes || [])) {\n if (node.id === id) {\n return node\n }\n }\n return null\n};\n\nexport const calcLinkRisk = (link: LinkType, Graph: VizGraph) => {\n // console.log(\"LINK\", link)\n let srcNode = \n // findNode(link.source, Graph.nodes) || \n findNode(link.source.name, Graph.nodes);\n let dstNode = \n // findNode(link.target, Graph.nodes)||\n findNode(link.target.name, Graph.nodes);\n\n if (!srcNode || !dstNode) {\n console.error(\"Missing srcNode/dstNode\", srcNode, link, dstNode);\n return 0;\n }\n\n const srcRisk = srcNode.risk || 0;\n const dstRisk = dstNode.risk || 0;\n\n return Math.round((srcRisk + dstRisk) / 2)\n};\n\nexport const calcLinkDirectionalArrowRelPos = (link: LinkType, Graph: VizGraph) => {\n const node = \n // findNode(link.target, Graph.nodes) || \n findNode(link.target.name, Graph.nodes);\n\n if (node === null || node.risk === 0) {\n return 1.0\n }\n const nodes = [...Graph.nodes].map(node => node.risk);\n const riskPercentile = calcNodeRiskPercentile(node.risk, nodes);\n\n if (riskPercentile === 0) {\n return 1.0\n }\n\n if (riskPercentile >= 75) {\n return 0.95\n } else if (riskPercentile >= 50) {\n return 0.9\n } else if (riskPercentile >= 25) {\n return 0.85\n } else {\n return 1.0\n }\n};\n\nexport const calcLinkRiskPercentile = (link: LinkType, Graph: VizGraph) => {\n const linkRisk = calcLinkRisk(link, Graph);\n const nodes = [...Graph.nodes].map(node => node.risk);\n\n return calcNodeRiskPercentile(linkRisk, nodes);\n};\n\nexport const calcLinkParticleWidth = (link: LinkType, Graph:VizGraph) => {\n const linkRiskPercentile = calcLinkRiskPercentile(link, Graph);\n if (linkRiskPercentile >= 75) {\n return 5\n } else if (linkRiskPercentile >= 50) {\n return 4\n } else if (linkRiskPercentile >= 25) {\n return 3\n } else {\n return 2\n }\n};\n","import { calcNodeRiskPercentile } from '../calculations/node/nodeCalcs';\nimport { calcLinkRiskPercentile } from '../calculations/link/linkCalcs';\nimport { LinkType, VizGraph, VizNode } from '../CustomTypes'\nimport { ColorHash } from '../../../components/GraphViz';\n\nexport const BKDRHash = (str: string) => {\n const seed = 131;\n const seed2 = 137;\n let hash = 0 as number;\n // make hash more sensitive for short string like 'a', 'b', 'c'\n str += 'x';\n // Note: Number.MAX_SAFE_INTEGER equals 9007199254740991\n const MAX_SAFE_INTEGER = parseInt(9007199254740991 / seed2 as any) as any;\n for (let i = 0; i < str.length; i++) {\n if (hash > MAX_SAFE_INTEGER) {\n hash = parseInt(hash / seed2 as any);\n }\n hash = hash * seed + str.charCodeAt(i);\n }\n return hash;\n};\n\n//# TODO: Add custom coloring for each node\nexport const calcNodeRgb = (node: VizNode, colorHash: ColorHash) => {\n if (node.nodeType === 'Process') {\n return [31, 185, 128]\n } else if (node.nodeType === 'File') {\n return [177, 93, 255]\n } \n \n // else if (node.nodeType === 'Lens'){\n // return []\n // } else if(node.nodeType === 'IpPort'){\n // return []\n // } else if(node.nodeType === 'IpConnection'){\n // return []\n // } else if(node.nodeType === 'ProcessInboundConnection'){\n // return []\n // } else if(node.nodeType === 'ProcessOutboundConnection'){\n // return []\n // } \n \n else{\n return colorHash.rgb(node.nodeType)\n }\n}\n\n\nexport const percentToColor = (percentile: number) => {\n const hue = (100 - percentile) * 40 / 100;\n\n return `hsl(${hue}, 100%, 50%)`;\n};\n\nexport const calcLinkColor = (link: LinkType, Graph: VizGraph) => {\n const risk = calcLinkRiskPercentile(link, Graph);\n // Default link color if no risk\n if (risk === 0) {\n return 'white'\n }\n return percentToColor(risk);\n};\n\n\nexport const riskColor = (node: VizNode, Graph: VizGraph, colorHash: ColorHash) => {\n const nodes = [...Graph.nodes].map(node => node.risk);\n\n const riskPercentile = calcNodeRiskPercentile(node.risk, nodes);\n\n if (riskPercentile === 0) {\n const nodeColors = calcNodeRgb(node, colorHash);\n return `rgba(${nodeColors[0]}, ${nodeColors[1]}, ${nodeColors[2]}, 1)`;\n }\n\n return percentToColor(riskPercentile);\n};\n\n\n","import { Node } from \"../CustomTypes\";\n\nconst _mapGraph = (node: Node, visited: Set, f:(node:Node, prop:string, neighbor: Node) => void) => {\n mapEdgeProps(node, (edgeName: string, neighbor:Node) => {\n if (visited.has(node.uid + edgeName + neighbor.uid)) {\n return\n }\n\n visited.add(node.uid + edgeName + neighbor.uid);\n\n f(node, edgeName, neighbor);\n _mapGraph(neighbor, visited, f)\n })\n};\n\nexport const mapGraph = (node:Node, f:(node:Node, prop:string, neighbor: Node) => void) => {\n const visited: Set = new Set();\n mapEdgeProps(node, (edgeName:string , neighbor:Node) => {\n\n f(node, edgeName, neighbor);\n _mapGraph(neighbor, visited, f)\n })\n};\n\n// type fType = (prop:string, neighbor: Node) => void)\n// Given a node, call 'f' on any of its neighbors\nexport const mapEdges = (node: Node, f: (prop:string, neighbor: Node) => void) => {\n for (const prop in node) {\n if (Object.prototype.hasOwnProperty.call(node, prop)) {\n const maybeNeighbor = (node as any)[prop];\n if(Array.isArray(maybeNeighbor)) {\n for (const neighbor of maybeNeighbor) {\n if (neighbor.uid !== undefined) {\n f(prop, neighbor)\n }\n }\n } else {\n if (maybeNeighbor && maybeNeighbor.uid !== undefined) {\n f(prop, maybeNeighbor)\n }\n }\n }\n }\n};\n\nexport const mapEdgeProps = (node: Node, f: (prop:string, neighbor: Node) => void) => {\n for (const prop in node) {\n if (Object.prototype.hasOwnProperty.call(node, prop)) {\n const maybeNeighbor = (node as any)[prop];\n if(Array.isArray(maybeNeighbor)) {\n for (const neighbor of maybeNeighbor) {\n if (neighbor.uid !== undefined) {\n f(prop, neighbor)\n }\n }\n } else {\n if (maybeNeighbor && maybeNeighbor.uid !== undefined) {\n f(prop, maybeNeighbor)\n }\n }\n }\n }\n};\n\nexport const traverseNodes = (node: Node, callback: (node: Node) => void) => {\n callback(node);\n mapEdges(node, (_, neighbor) => {\n traverseNodes(neighbor, callback);\n })\n}\n\nexport const traverseNeighbors = (node: Node, callback: (node:Node, prop:string, neighbor: Node) => void) => {\n mapEdges(node, (edgeName: string, neighbor: Node) => {\n callback(node, edgeName, neighbor);\n\n traverseNeighbors(neighbor, callback);\n })\n}\n\n","import {BaseNode, LensScopeResponse} from '../../GraphViz/CustomTypes'\nimport {mapGraph} from \"../graph/graph_traverse\";\nimport {getGraphQlEdge} from '../engagement_edge/getApiURLs';\n\nconst graphql_edge = getGraphQlEdge();\n\nconst builtins = new Set([\n 'Process',\n 'File',\n 'IpAddress',\n 'Asset',\n 'Risk',\n 'IpConnections',\n 'ProcessInboundConnections',\n 'ProcessOutboundConnections',\n])\n\nconst unpackPluginNodes = (nodes: BaseNode[]) => {\n for (const node of nodes) {\n if (!(node as any).predicates) {\n continue\n }\n mapGraph(node, (node, edge_name, neighbor) => {\n if ((node as any).predicates) {\n if(!builtins.has((node as any).predicates.dgraph_type[0])) {\n // Using 'any' because the PluginType is temporary, and not valid outside of the initial response\n const pluginNode = {...(node as any).predicates};\n delete (node as any).predicates\n Object.keys(pluginNode).forEach(function(key) { (node as any)[key] = pluginNode[key]; });\n }\n }\n\n if ((neighbor as any).predicates) {\n if(!builtins.has((neighbor as any).predicates.dgraph_type[0])) {\n // Using 'any' because the PluginType is temporary, and not valid outside of the initial response\n const pluginNode = {...(neighbor as any).predicates};\n delete (neighbor as any).predicates\n Object.keys(pluginNode).forEach(function(key) { (neighbor as any)[key] = pluginNode[key]; });\n }\n }\n })\n\n }\n}\n\nexport const retrieveGraph = async (lens: string): Promise<(LensScopeResponse & BaseNode)> => {\n const query = expandScope(lens);\n\n const res = await fetch(`${graphql_edge}graphql`,\n {\n method: 'post',\n body: JSON.stringify({ query }),\n headers: {\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n })\n .then(res => res.json())\n .then(res => {\n console.log('retrieveGraph res', res);\n return res\n })\n .then((res) => res.data)\n .then((res) => res.lens_scope);\n\n const lensWithScope = await res;\n console.log('LensWithScope: ', lensWithScope);\n unpackPluginNodes(lensWithScope.scope);\n return lensWithScope;\n};\n\nexport const expandScope = (lensName: string) => {\n \n const query = `\n {\n lens_scope(lens_name: \"${lensName}\") {\n uid,\n node_key,\n lens_name,\n lens_type,\n dgraph_type,\n scope {\n ... on Process {\n uid,\n node_key, \n dgraph_type,\n process_name, \n process_id,\n children {\n uid, \n node_key, \n dgraph_type,\n process_name, \n process_id,\n }, \n risks { \n uid,\n dgraph_type,\n node_key, \n analyzer_name, \n risk_score\n },\n }\n \n ... on Asset {\n uid, \n node_key, \n dgraph_type,\n hostname,\n asset_ip{\n ip_address\n }, \n asset_processes{\n uid, \n node_key, \n dgraph_type,\n process_name, \n process_id,\n },\n files_on_asset{\n uid, \n node_key, \n dgraph_type,\n file_path\n }, \n risks { \n uid,\n dgraph_type,\n node_key, \n analyzer_name, \n risk_score\n },\n }\n\n ... on File {\n uid,\n node_key, \n dgraph_type,\n risks { \n uid,\n dgraph_type,\n node_key, \n analyzer_name, \n risk_score\n },\n }\n\n ... on PluginType {\n predicates,\n }\n }\n }\n }\n`;\n\n return query;\n}\n\n","import {mapNodeProps} from '../../../../src/components/GraphViz';\nimport {Node, MergeGraphType} from '../CustomTypes'; \n\n// merges y into x, returns true if update occurred\nconst mergeNodes = (x: Node, y: Node) => {\n let merged = false;\n mapNodeProps(y, (prop: string) => {\n if (!Object.prototype.hasOwnProperty.call(x, prop)) {\n merged = true;\n (x as any)[prop] = (y as any)[prop]\n }\n });\n\n return merged;\n};\n\n// #TODO: This algorithm is exponential, and doesn't have to be\nexport const mergeGraphs = (curGraph: MergeGraphType, update: MergeGraphType): MergeGraphType | null => {\n // Merges two graphs into a new graph\n // returns 'null' if there are no updates to be made\n\n if (!update.nodes && !update.links) {\n // empty update\n return null\n }\n\n const outputGraph: MergeGraphType = {nodes: [], links: []};\n\n let updated = false;\n\n const nodes = new Map();\n const links = new Map();\n\n for (const node of curGraph.nodes) {\n nodes.set(node.uid, node)\n }\n\n for (const newNode of update.nodes) {\n const node = nodes.get(newNode.uid);\n if (node) {\n if (mergeNodes(node, newNode)) {\n updated = true;\n }\n } else {\n nodes.set(newNode.uid, newNode);\n updated = true;\n }\n }\n// #TODO: console.log on link.source, check to see if it's an object or not. It should never be an object\n// this should only be a string / an int. At some point, it was getting sent as an object\n for (const link of curGraph.links) {\n if (link) {\n const source = link.source.uid || link.source;\n const target = link.target.uid || link.target;\n links.set(\n source + link.label + target,\n link,\n )\n }\n }\n\n for (const newLink of update.links) {\n const newLinkSource = newLink.source || newLink.source;\n const newLinkTarget = newLink.target || newLink.target;\n const link = links.get(newLinkSource + newLink.label + newLinkTarget);\n if (!link) {\n links.set(newLink.source + newLink.label + newLink.target, newLink);\n updated = true;\n }\n }\n\n outputGraph.nodes = Array.from(nodes.values());\n outputGraph.links = Array.from(links.values());\n if (updated) {\n return outputGraph;\n } else {\n return null;\n }\n}","import { traverseNodes, traverseNeighbors, mapEdges } from \"../graph/graph_traverse\"\nimport { getNodeLabel } from '../graph/labels';\nimport {LensScopeResponse, BaseNode} from \"../../GraphViz/CustomTypes\"\n\ninterface IVizNode {\n uid: number,\n name: number,\n id: number, \n nodeType: string,\n nodeLabel: string,\n x: number,\n y: number,\n}\n\ninterface VizProcessNode extends IVizNode {\n process_id: number,\n process_name: string,\n created_timestamp: number, \n terminate_time: number,\n image_name: string, \n arguments: string,\n}\n\nexport interface File extends IVizNode {\n file_name: string,\n file_path: string,\n file_extension: string,\n file_mime_type: string,\n file_size: number,\n file_version: string, \n file_description: string,\n file_product: string,\n file_company: string, \n file_directory: string,\n file_inode: number,\n file_hard_links: string, \n signed: boolean,\n signed_status: string, \n md5_hash: string,\n sha1_hash: string,\n sha256_hash: string,\n}\n\nexport interface IpConnections extends IVizNode {\n src_ip_addr: string,\n src_port: string,\n dst_ip_addr: string,\n dst_port: string,\n created_timestamp: number,\n terminated_timestamp: number,\n last_seen_timestamp: number,\n}\ninterface VizAssetNode extends IVizNode {\n hostname: string,\n}\n\ninterface VizLensNode extends IVizNode {\n lens_name: string,\n lens_type: string, \n}\n\ntype VizDynamicNode = IVizNode;\n\ntype VizNode = VizProcessNode | VizAssetNode | VizLensNode | VizDynamicNode;\n\ntype VizLink = {\n source: number,\n label: string,\n target: number, \n}\n\ntype AdjacencyMatrix = {\n nodes: VizNode[],\n links: VizLink[]\n}\n\n\nconst getNodeType = (node: BaseNode) => {\n const t = node.dgraph_type || node.node_type;\n\n if (t) {\n if (Array.isArray(t)) {\n return t[0]\n }\n return t\n }\n\n console.warn('Unable to find type for node ', node);\n return 'Unknown';\n};\n\nfunction randomInt(min: number, max: number) // min and max included\n{\n let randomNum: number = Math.floor(Math.random() * (max - min + 1) + min);\n return randomNum;\n}\n\n\nexport const graphQLAdjacencyMatrix = (inputGraph: (LensScopeResponse & BaseNode)): AdjacencyMatrix => {\n\n const nodes: VizNode[] = []; \n const links: VizLink[] = [];\n\n const nodeMap: Map = new Map();\n\n traverseNeighbors(inputGraph, \n (fromNode: BaseNode, edgeName: string, toNode: BaseNode) => {\n if(edgeName !== 'scope'){\n \n if(getNodeType(fromNode) === 'Unknown'){\n return;\n }\n\n if(getNodeType(toNode) === 'Unknown'){\n return;\n }\n\n if(getNodeType(fromNode) === 'Risk'){\n return;\n }\n\n if(getNodeType(toNode) === 'Risk'){\n return;\n }\n \n links.push({\n source: fromNode.uid,\n label: edgeName, \n target: toNode.uid\n })\n } \n })\n\n traverseNodes(inputGraph, (node: BaseNode) => {\n const nodeType = getNodeType(node);\n\n if(nodeType === 'Unknown'){\n return;\n }\n\n if(nodeType === 'Risk'){\n return; \n }\n\n const nodeLabel = getNodeLabel(nodeType, node);\n\n const strippedNode = {...node};\n\n strippedNode.risk = strippedNode.risk || 0;\n strippedNode.analyzer_names = strippedNode.analyzer_names || \"\";\n\n for(const risk of node.risks || []){\n strippedNode.risk += risk.risk_score || 0;\n if (strippedNode.analyzer_names && risk.analyzer_name) {\n // #TODO: Link to the analyzer details\n strippedNode.analyzer_names += \", \"\n }\n strippedNode.analyzer_names += risk.analyzer_name || \"\";\n }\n\n mapEdges(node, (edge: string, _neighbor: BaseNode) => {\n // The stripped node is being converted to another type, so we can cast\n // to any here\n (strippedNode as any)[edge] = undefined;\n })\n\n const vizNode = {\n name: node.uid,\n ...strippedNode,\n id: node.uid,\n nodeType,\n nodeLabel,\n x: 200 + randomInt(1, 50),\n y: 150 + randomInt(1, 50),\n };\n\n nodeMap.set(node.uid, vizNode);\n })\n\n for (const vizNode of (nodeMap.values() as any)) {\n nodes.push(vizNode)\n }\n\n return {\n nodes, \n links\n }\n}\n","import { Node } from '../CustomTypes'\n\nconst getNodeLabel = (nodeType: string, node: Node) => {\n console.log('nodetype', nodeType);\n\n const _node = node as any; // ignore-any\n\n switch(nodeType) {\n case \"Process\": return _node.process_name || _node.process_id || 'Process';\n case \"Asset\": return _node.hostname || 'Asset';\n case \"File\": return _node.file_path || 'File';\n case \"IpAddress\": return _node.external_ip || 'IpAddress';\n case \"Lens\": return _node.lens_name || 'Lens';\n default: return nodeType || '';\n }\n};\n\nconst mapLabel = (label: string) => {\n if (label === 'children') {\n return 'executed'\n }\n return label\n};\n\nexport { mapLabel, getNodeLabel }","// @ts-nocheck\nimport React, { useEffect, useRef } from 'react';\nimport { ForceGraph2D } from 'react-force-graph';\nimport * as d3 from \"d3\";\nimport { BKDRHash, riskColor, calcNodeRgb , calcLinkColor} from \"../modules/GraphViz/graphColoring/coloring.tsx\";\nimport { retrieveGraph } from '../modules/GraphViz/graphQL/expandScope.tsx';\nimport { mapLabel } from '../modules/GraphViz/graph/labels.tsx';\nimport { nodeSize } from '../modules/GraphViz/calculations/node/nodeCalcs.tsx'\nimport { calcLinkDirectionalArrowRelPos, calcLinkParticleWidth } from '../modules/GraphViz/calculations/link/linkCalcs.tsx'\nimport {mergeGraphs} from '../modules/GraphViz/graph/mergeGraphs.tsx'\nimport {graphQLAdjacencyMatrix} from '../modules/GraphViz/graphQL/graphQLAdjacencyMatrix.tsx'\nimport { Node, LinkType, GraphType, ColorHashOptions } from \"../modules/GraphViz/CustomTypes\"\n\ntype ColorHashOptions = {\n lightness: number,\n saturation: number,\n hue: number,\n hash: BKDRHash,\n}\n\n/**\n * Convert HSL to RGB\n *\n * @see {@link http://zh.wikipedia.org/wiki/HSL和HSV色彩空间} for further information.\n * @param {Number} H Hue ∈ [0, 360)\n * @param {Number} S Saturation ∈ [0, 1]\n * @param {Number} L Lightness ∈ [0, 1]\n * @returns {Array} R, G, B ∈ [0, 255]\n */\nconst HSL2RGB = (H: number, S: number, L: number) => {\n H /= 360;\n\n const q = L < 0.5 ? L * (1 + S) : L + S - L * S;\n const p = 2 * L - q;\n\n return [H + 1 / 3, H, H - 1 / 3].map((color) => {\n if (color < 0) {\n color++;\n }\n if (color > 1) {\n color--;\n }\n if (color < 1 / 6) {\n color = p + (q - p) * 6 * color;\n } else if (color < 0.5) {\n color = q;\n } else if (color < 2 / 3) {\n color = p + (q - p) * 6 * (2 / 3 - color);\n } else {\n color = p;\n }\n return Math.round(color * 255);\n });\n};\n\nconst isArray = (o: Object) => {\n return Object.prototype.toString.call(o) === '[object Array]';\n};\n\n/**\n * Color Hash Class\n *\n * @class\n */\n\nexport class ColorHash {\n constructor(options: ColorHashOptions | undefined) {\n options = options || {};\n\n const LS = [options.lightness, options.saturation].map((param) => {\n param = param || [0.35, 0.5, 0.65]; // note that 3 is a prime\n return isArray(param) ? param.concat() : [param];\n });\n \n this.L = LS[0];\n this.S = LS[1];\n \n if (typeof options.hue === 'number') {\n options.hue = {min: options.hue, max: options.hue};\n }\n if (typeof options.hue === 'object' && !isArray(options.hue)) {\n options.hue = [options.hue];\n }\n if (typeof options.hue === 'undefined') {\n options.hue = [];\n }\n this.hueRanges = options.hue.map(function (range: number) {\n return {\n min: typeof range.min === 'undefined' ? 0 : range.min,\n max: typeof range.max === 'undefined' ? 360 : range.max\n };\n });\n \n this.hash = options.hash || BKDRHash;\n } \n /**\n * Returns the hash in [h, s, l].\n * Note that H ∈ [0, 360); S ∈ [0, 1]; L ∈ [0, 1];\n *\n * @param {String} str string to hash\n * @returns {Array} [h, s, l]\n */\n hsl = (str: string) => {\n let H, S, L;\n let hash = this.hash(str);\n \n if (this.hueRanges.length) {\n const range = this.hueRanges[hash % this.hueRanges.length];\n const hueResolution = 727; // note that 727 is a prime\n H = ((hash / this.hueRanges.length) % hueResolution) * (range.max - range.min) / hueResolution + range.min;\n } else {\n H = hash % 359; // note that 359 is a prime\n }\n hash = parseInt(hash / 360 as any);\n S = this.S[hash % this.S.length];\n hash = parseInt(hash / this.S.length as any);\n L = this.L[hash % this.L.length];\n \n return [H, S, L];\n }\n\n /**\n * Returns the hash in [r, g, b].\n * Note that R, G, B ∈ [0, 255]\n *\n * @param {String} str string to hash\n * @returns {Array} [r, g, b]\n */\n rgb = (str: string) => {\n const hsl = this.hsl(str);\n return HSL2RGB.apply(this, hsl);\n };\n}\n\n\nexport const mapNodeProps = (node: Node, f: (string) => void) => {\n for (const prop in node) {\n if (Object.prototype.hasOwnProperty.call(node, prop)) {\n if (Array.isArray(node[prop])) {\n if (node[prop].length > 0) {\n if (node[prop][0].uid === undefined) {\n f(prop)\n }\n }\n } else {\n f(prop)\n }\n }\n }\n};\n\ntype GraphState = {\n curLensName: LensType[], \n graphData: GraphType[]\n}\n\nconst updateGraph = async (\n lensName: string, \n state: GraphState, \n setState: (state: GraphState) => void,\n) => {\n if (!lensName) {\n return;\n }\n\n await retrieveGraph(lensName)\n .then(async (scope) => {\n const update = graphQLAdjacencyMatrix(scope);\n console.log('update', update);\n const mergeUpdate = mergeGraphs(state.graphData, update);\n if (mergeUpdate !== null) {\n if (state.curLensName === lensName) {\n setState({\n ...state,\n curLensName: lensName,\n graphData: mergeUpdate,\n })\n } else {\n setState({\n ...state,\n curLensName: lensName,\n graphData: update,\n })\n }\n }\n })\n .catch((e) => console.error(\"Failed to retrieveGraph \", e))\n}\n\ntype GraphDisplayProps = {\n lensName: string | null,\n setCurNode: (string) => void,\n}\n\ntype GraphDisplayState = {\n graphData: AdjacencyMatrix,\n curLensName: string | null,\n}\n\nconst defaultGraphDisplayState = (lensName: string): GraphDisplayState => {\n return {\n graphData: {nodes: [], links: []},\n curLensName: lensName,\n }\n}\n\nconst GraphDisplay = ({lensName, setCurNode}: GraphDisplayProps) => {\n const [state, setState] = React.useState(defaultGraphDisplayState(lensName));\n const forceRef = useRef(null);\n\n useEffect(() => {\n // console.log(\"useEffect - setting forceRef state\");\n forceRef.current.d3Force(\"link\", d3.forceLink());\n forceRef.current.d3Force('collide', d3.forceCollide(22));\n forceRef.current.d3Force(\"charge\", d3.forceManyBody());\n forceRef.current.d3Force('box', () => {\n const N = 100;\n // console.log(Graph.width(), Graph.height())\n const SQUARE_HALF_SIDE = 20 * N * 0.5;\n state.graphData.nodes.forEach(node => {\n const x = node.x || 0, y = node.y || 0;\n // bounce on box walls\n if (Math.abs(x) > SQUARE_HALF_SIDE) {\n node.vx *= -1;\n }\n if (Math.abs(y) > SQUARE_HALF_SIDE) {\n node.vy *= -1;\n }\n });\n });\n }, [state])\n\n\n useEffect(() => {\n updateGraph(lensName, state, setState);\n const interval = setInterval(async () => {\n if (lensName) {\n await updateGraph(lensName, state, setState);\n }\n }, 1000);\n return () => clearInterval(interval);\n }, [lensName, state]);\n\n const graphData = state.graphData;\n\n const colorHash = new ColorHash({});\n\n // #TODO: ADD ZOOM HANDLERS FOR MAX ZOOM IN/OUT\n\n return (\n <>\n node.nodeLabel}\n enableNodeDrag={true}\n linkDirectionalParticles={1}\n linkDirectionalParticleWidth={(link) => {\n return calcLinkParticleWidth(link, graphData);\n }}\n linkDirectionalParticleColor={(link) => {\n return calcLinkColor(link, graphData)\n }}\n linkDirectionalParticleSpeed={0.005}\n onNodeClick={\n (node: Node, event: string) => {\n setCurNode(node);\n }\n }\n linkDirectionalArrowLength={8}\n linkWidth={4}\n linkDirectionalArrowRelPos={(link => {\n return calcLinkDirectionalArrowRelPos(link, graphData);\n })}\n linkCanvasObjectMode={(() => 'after')}\n linkCanvasObject={((link: LinkType, ctx: any) => {\n const MAX_FONT_SIZE = 8;\n const LABEL_NODE_MARGIN = 8 * 1.5;\n const start = link.source;\n const end = link.target;\n // ignore unbound links\n link.color = calcLinkColor(link, graphData);\n\n if (typeof start !== 'object' || typeof end !== 'object') return;\n // calculate label positioning\n const textPos = Object.assign(\n ...['x', 'y'].map((c: any) => (\n {\n [c]: start[c] + (end[c] - start[c]) / 2 // calc middle point\n }\n )) as any\n );\n\n const relLink = {x: end.x - start.x, y: end.y - start.y};\n\n const maxTextLength = Math.sqrt(Math.pow(relLink.x, 2) + Math.pow(relLink.y, 2)) - LABEL_NODE_MARGIN * 8;\n\n let textAngle = Math.atan2(relLink.y, relLink.x);\n // maintain label vertical orientation for legibility\n if (textAngle > Math.PI / 2) textAngle = -(Math.PI - textAngle);\n if (textAngle < -Math.PI / 2) textAngle = -(-Math.PI - textAngle);\n\n const label = mapLabel(link.label);\n // estimate fontSize to fit in link length\n ctx.font = '50px Arial';\n const fontSize = Math.min(MAX_FONT_SIZE, maxTextLength / ctx.measureText(label).width);\n ctx.font = `${fontSize + 5}px Arial`;\n\n let textWidth = ctx.measureText(label).width;\n\n textWidth += Math.round(textWidth * 0.25);\n\n const bckgDimensions = [textWidth, fontSize].map(n => n + fontSize * 0.2); // some padding\n // draw text label (with background rect)\n ctx.save();\n ctx.translate(textPos.x, textPos.y);\n ctx.rotate(textAngle);\n ctx.fillStyle = 'rgb(115,222,255,1)';\n ctx.fillRect(-bckgDimensions[0] / 2, -bckgDimensions[1] / 2, ...bckgDimensions);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n ctx.fillStyle = 'white';\n //content, left/right, top/bottom\n ctx.fillText(label, .75, 3);\n ctx.restore();\n })}\n nodeCanvasObject={((node: Node, ctx: any, globalScale: any) => {\n // add ring just for highlighted nodes\n\n const NODE_R = nodeSize(node, graphData);\n ctx.save();\n\n // Risk outline color\n ctx.beginPath();\n ctx.arc(node.x, node.y, NODE_R * 1.3, 0, 2 * Math.PI, false);\n ctx.fillStyle = riskColor(node, graphData, colorHash);\n ctx.fill();\n ctx.restore();\n\n ctx.save();\n\n // Node color\n ctx.beginPath();\n ctx.arc(node.x, node.y, NODE_R * 1.2, 0, 2 * Math.PI, false);\n\n const nodeRbg = calcNodeRgb(node, colorHash);\n\n ctx.fillStyle = `rgba(${nodeRbg[0]}, ${nodeRbg[1]}, ${nodeRbg[2]}, 1)`;\n ctx.fill();\n ctx.restore();\n\n const label = node.nodeLabel;\n\n const fontSize = 15 / globalScale;\n\n ctx.font = `${fontSize}px Arial`;\n\n\n const textWidth = ctx.measureText(label).width;\n\n const bckgDimensions = [textWidth, fontSize].map(n => n + fontSize * 0.2); // some padding\n // node label color\n ctx.fillStyle = 'rgba(48, 48, 48, 0.8)';\n ctx.fillRect(node.x - bckgDimensions[0] / 2, node.y - bckgDimensions[1] / 2, ...bckgDimensions);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n ctx.fillStyle = 'white';\n ctx.fillText(label, node.x, node.y);\n\n })}\n ref={forceRef}\n />\n \n )\n}\n\nexport default GraphDisplay;\n","import React from \"react\";\nimport { makeStyles } from '@material-ui/core/styles';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport TableHead from '@material-ui/core/TableHead';\nimport TableRow from '@material-ui/core/TableRow';\nimport { mapEdgeProps } from '../modules/GraphViz/graph/graph_traverse';\nimport { mapNodeProps } from './GraphViz';\nimport { Node } from \"../modules/GraphViz/CustomTypes\"\n\n\nconst useStyles = makeStyles({\n root: {\n fontSize: \".75em\"\n },\n nodeTable: {\n minWidth: 450,\n }, \n tableHeader: {\n fontSize: \".85rem\", \n backgroundColor: \"#595959\"\n }, \n nodeTableData: {\n fontSize: \".75rem\"\n },\n});\n\nfunction innerTable(node: Node, styles: any) {\n if(node) {\n return (\n \n \n \n PROPERTY \n \n \n VALUE \n \n \n \n )\n } else {\n return <>\n }\n}\n\ntype NodeTableProps = {\n node: Node\n}\n\nfunction NodeTable({node}: NodeTableProps){\n const classes = useStyles();\n const hidden = new Set(\n ['id', 'dgraph.type', 'dgraph_type', '__indexColor', 'risks','uid', 'scope', 'name', 'nodeType', 'nodeLabel', 'x', 'y', 'index', 'vy', 'vx', 'fx', 'fy']\n );\n\n mapEdgeProps(node, (edgeName: string, _neighbor: Node) => {\n hidden.add(edgeName)\n });\n\n const displayNode = {} as any;\n\n mapNodeProps(\n node, \n (propName: string) => {\n const prop = (node as any)[propName];\n\n if(!hidden.has(propName)){\n if (prop) {\n if (propName.includes('_time')) {\n displayNode[propName] = new Date(prop).toLocaleString()\n } else {\n displayNode[propName] = prop;\n }\n }\n } \n }\n )\n\n return(\n \n \n {\n innerTable(node, classes)\n }\n \n {\n Object.entries(displayNode).map((entry) => {\n const [key, value] = entry;\n \n return(\n \n {key}\n {value as any}\n \n ) \n })\n }\n \n
\n
\n ) \n \n \n}\n\n\nexport default NodeTable ","import React, {useEffect, useState} from \"react\";\nimport NodeTable from './NodeTable'\nimport Button from \"@material-ui/core/Button\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport BubbleChartIcon from '@material-ui/icons/BubbleChart';\nimport LensIcon from '@material-ui/icons/Lens';\nimport Divider from \"@material-ui/core/Divider\";\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableContainer from \"@material-ui/core/TableContainer\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport { Lens } from \"../modules/GraphViz/CustomTypes\";\nimport { getGraphQlEdge } from \"../modules/GraphViz/engagement_edge/getApiURLs\";\n\nimport TablePagination from '@material-ui/core/TablePagination';\nimport { ClassNameMap } from '@material-ui/styles/withStyles';\nimport {SelectLensProps, ToggleLensTableProps, ToggleLensTableState, SideBarContentProps, NodeDetailsProps, ToggleNodeTableProps, PaginationState} from \"../modules/GraphViz/CustomTypes\"\n\nconst useStyles = makeStyles({\n root:{\n fontSize: \"1rem\",\n },\n button: {\n width: \".005%\",\n color: \"white\",\n backgroundColor:\"#424242\",\n },\n title: {\n fontSize: \"25px\",\n color: \"#ffffff\",\n },\n icon:{\n color: \"#42C6FF\",\n margin: \"15px 0 0 10px\",\n }, \n expand:{\n color: \"#42C6FF\",\n margin: \"0px\"\n },\n header:{\n display: \"flex\"\n }, \n table: {\n minWidth: 450, \n },\n lensName: {\n fontSize: \"16px\",\n },\n pagination: {\n margin: \".5rem\",\n backgroundColor: \"#595959\",\n }\n});\n\n\nfunction SelectLens(props: SelectLensProps) {\n const classes = useStyles();\n return (\n <>\n \n \n \n \n \n \n )\n}\n\nconst defaultToggleLensTableState = (): ToggleLensTableState => {\n return {\n toggled: true,\n lenses: [],\n first: 100, // first is the page size\n offset: 0, // by default, start from page 0\n }\n}\n\n\nconst pagedTable = (\n state: PaginationState, \n page: number, \n rowsPerPage: number, \n handleChangePage: (event: React.MouseEvent | null, page: number) => void, \n handleChangeRowsPerPage: (event: React.ChangeEvent) => void, \n setLens: (lens: string) => void, \n classes: ClassNameMap\n) => {\n return (\n \n \n {\n state.lenses \n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map(\n (lens: Lens) => {\n return(\n \n \n \n \n
\n )\n }\n )\n }\n
\n )\n}\n\nfunction ToggleLensTable( {setLens}: ToggleLensTableProps ) {\n const [state, setState] = useState(defaultToggleLensTableState());\n const classes = useStyles();\n\n const [page, setPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const handleChangePage = (event: React.MouseEvent | null, page: number) => {\n setPage(page);\n }\n const handleChangeRowsPerPage = (event: React.ChangeEvent) => {\n console.log(\"Handle Row Event\", event)\n setRowsPerPage(parseInt(event.target.value, 10));\n setPage(0);\n }\n\n useEffect( () => {\n const interval = setInterval(\n () => {\n console.log(\"Fetching lenses\");\n getLenses(state.first, state.offset)\n .then((response) => {\n if (response.lenses && response.lenses !== state.lenses) {\n const lenses = state.lenses.concat(response.lenses);\n setState({\n ...state,\n offset: state.offset + response.lenses.length || 0,\n lenses,\n })\n }\n }\n )\n }, 1000);\n return () => clearInterval(interval);\n });\n\n return (\n <>\n
\n \n \n LENSES \n \n { \n setState({\n ...state,\n toggled: !state.toggled,\n }) \n }}> \n \n \n
\n \n
\n { \n state.toggled && \n pagedTable(state, page, rowsPerPage, handleChangePage, handleChangeRowsPerPage, setLens, classes)\n }\n
\n\n \n \n )\n}\n\nconst graphql_edge = getGraphQlEdge();\n\nconst getLenses = async (first: number, offset: number) => {\n // console.log('fetching graph from', graphql_edge);\n\n const query = `\n {\n lenses(first: ${first}, offset: ${offset}) {\n uid,\n node_key,\n lens_name,\n score, \n lens_type,\n }\n }\n `;\n // console.log(`connecting to: ${graphql_edge}graphql`);\n const res = await fetch(`${graphql_edge}graphql`,\n {\n method: 'post',\n body: JSON.stringify({ query: query }),\n headers: {\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n })\n .then(res => res.json())\n .then(res => {\n if (res.errors) {\n console.error(\"lenses failed\", res.errors);\n res.data = {lenses: []};\n }\n return res\n })\n .then((res) => res.data);\n\n const jres = await res;\n return jres;\n};\n\nconst NodeDetails = ({node}: NodeDetailsProps) => {\n return (\n <>\n \n \n )\n}\n\nfunction ToggleNodeTable({curNode}: ToggleNodeTableProps) {\n const [toggled, toggle] = useState(true);\n const classes = useStyles();\n return (\n <>\n
\n
\n NODE\n { toggle(toggled => !toggled) }\n }> \t\n \n \n
\n\n
\n {\n toggled && curNode && \n <>\n { }\n \n }\n
\n
\n \n )\n}\n\n\n\nexport default function SideBarContent({setLens, curNode}: SideBarContentProps) {\n return (\n <>\n \n \n \n );\n}\n\n","import GraphDisplay from \"./GraphViz\";\nimport React from \"react\";\nimport SideBarContent from './SideBarContent'\nimport clsx from \"clsx\";\nimport {createStyles, makeStyles, Theme} from \"@material-ui/core/styles\";\nimport Drawer from \"@material-ui/core/Drawer\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Divider from \"@material-ui/core/Divider\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport KeyboardArrowLeftIcon from '@material-ui/icons/KeyboardArrowLeft';\nimport Button from \"@material-ui/core/Button\";\nimport { Node } from \"../modules/GraphViz/CustomTypes\";\nimport Home from '@material-ui/icons/Home';\nimport {Link} from 'react-router-dom'\n\nconst drawerWidth = 500;\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n display: \"flex\"\n },\n button: {\n backgroundColor: \"#42C6FF\",\n margin: \"0.25rem\",\n padding: \"0.20rem\",\n }, \n appBar: {\n transition: theme.transitions.create([\"margin\", \"width\"], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen\n })\n },\n appBarShift: {\n width: `calc(100% - ${drawerWidth}px)`,\n marginLeft: drawerWidth,\n transition: theme.transitions.create([\"margin\", \"width\"], {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen\n })\n },\n menuButton: {\n marginRight: theme.spacing(2),\n color: \"#42C6FF\"\n },\n hide: {\n display: \"none\"\n },\n drawer: {\n width: drawerWidth,\n flexShrink: 0\n },\n drawerPaper: {\n width: drawerWidth\n },\n drawerHeader: {\n display: \"flex\",\n alignItems: \"center\",\n padding: theme.spacing(0, 1),\n // necessary for content to be below app bar\n ...theme.mixins.toolbar,\n justifyContent: \"flex-end\"\n },\n content: {\n flexGrow: 1,\n padding: theme.spacing(3),\n transition: theme.transitions.create(\"margin\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen\n }),\n marginLeft: -drawerWidth\n },\n contentShift: {\n transition: theme.transitions.create(\"margin\", {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen\n }),\n marginLeft: 0,\n },\n lensName:{\n color:\"#EAFDFF\",\n fontSize: \"1.5rem\", \n },\n header:{\n fontSize: \"35px\",\n }, \n headerContent: {\n width: \"100vw\",\n display: \"flex\", \n justifyContent: \"space-between\",\n },\n close:{\n color:\"#42C6FF\",\n },\n link: {\n color: \"#42C6FF\", \n textDecoration: \"none\"\n }\n })\n);\n\ntype SideBarProps = {\n setLens: (lens: string) => void,\n curLens: string,\n curNode: Node | null\n}\n\nexport default function SideBar({setLens, curLens, curNode}: SideBarProps) {\n const classes = useStyles();\n\n const [open, setOpen] = React.useState(true);\n\n const handleDrawerOpen = () => {\n setOpen(true);\n };\n\n const handleDrawerClose = () => {\n setOpen(false);\n };\n\n return (\n
\n {/* */}\n \n \n \n {/* // Menu Icon */}\n ☰\n \n\n
\n \n GRAPL \n \n \n
\n\n
\n \n\n \n
\n \n
\n\n \n\n \n\n \n\n \n
\n

\n {/* selected lens name */}\n {curLens || \"\"} \n

\n\n \n \n
\n );\n}\n\ntype EngagementUxState = {\n curLens: string, \n curNode: Node | null \n}\n\nconst defaultEngagementUxState = (): EngagementUxState => {\n return {\n curLens: \"\",\n curNode: null,\n }\n}\n\nexport const EngagementUx = () => {\n const [state, setState] = React.useState(defaultEngagementUxState());\n \n return (\n <>\n setState({\n ...state,\n curLens: lens,\n })\n }\n curLens={state.curLens}\n curNode={state.curNode}\n />\n\n {\n setState({\n ...state,\n curNode: node,\n })\n }}\n />\n \n )\n}","import React from 'react';\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport Typography from \"@material-ui/core/Typography\";\nimport {createStyles, makeStyles, Theme} from \"@material-ui/core/styles\";\nimport Home from '@material-ui/icons/Home';\nimport {Link} from 'react-router-dom';\n\nconst useStyles = makeStyles(\n (theme: Theme) =>\n createStyles({\n root: {\n display: \"flex\",\n },\n header: {\n justifyContent: \"space-between\",\n }, \n link:{\n color:\"#42C6FF\", \n textDecoration: \"none\"\n }\n }\n )\n);\n\n\ntype GraplHeaderProps = {\n displayBtn: boolean\n}\n\nconst GraplHeader = ({displayBtn}: GraplHeaderProps) => {\n const classes = useStyles();\n return(\n <>\n \n \n \n GRAPL\n \n {\n displayBtn &&\n \n\n }\n \n \n \n ) \n}\n\nexport default GraplHeader; ","import React from 'react';\nimport Button from \"@material-ui/core/Button\";\nimport {createStyles, makeStyles, Theme} from \"@material-ui/core/styles\";\nimport GraplHeader from \"./reusableComponents/GraplHeader\";\nimport {Link} from 'react-router-dom';\n\nconst useStyles = makeStyles( (theme: Theme) =>\n createStyles({\n root: {\n display: \"flex\",\n },\n button: {\n backgroundColor: \"#42C6FF\",\n margin: \"0.25rem\",\n padding: \"0.25rem\",\n }, \n welcome: {\n width:\"70%\",\n textAlign:\"center\",\n backgroundColor: \"#373740\",\n height: \"100vh\",\n },\n nav: {\n margin: \"2rem\",\n width: \"30%\",\n display: \"flex\",\n flexDirection: \"column\",\n },\n dashboard:{\n display: \"flex\",\n flexDirection: \"row\",\n }, \n link:{\n color: \"white\",\n textDecoration: \"none\"\n }\n })\n);\n\nexport default function Dashboard() {\n const classes = useStyles();\n return (\n <> \n \n\n
\n
\n \n \n \n \n \n
\n\n
\n

Welcome, username

\n
\n
\n \n )\n}\n","import { createStyles, makeStyles, Theme } from \"@material-ui/core/styles\";\n\nexport const useStyles = makeStyles(\n (theme: Theme) =>\n createStyles({\n root: {\n display: \"flex\",\n },\n formContainer: {\n color: \"white\", \n margin: \"1rem\",\n },\n btn: {\n backgroundColor: \"#42C6FF\",\n margin: \"0.25rem\",\n padding: \"0.25rem\",\n borderRadius: \"6px\",\n },\n inputFiles: {\n border: \"none\",\n width: \"35vw\",\n },\n upload: {\n display: \"flex\",\n },\n succMsg: {\n color: \"#03dac6\",\n }, \n errMsg: {\n color: \"#CF6679\",\n }, \n pluginTable: {\n backgroundColor: \"#292929\",\n margin: \"1em\",\n width: \"50%\",\n height: \"100%\",\n boxShadow: \" 1.5px 1.5px #000000\",\n }, \n uploadFormContainer: {\n backgroundColor: \"#292929\",\n margin: \"1em\", \n width: \"50%\",\n height: \"100%\",\n boxShadow: \"1.5px 1.5px #000000\",\n display: \"flex\", \n }, \n uploadForm: {\n fontFamily: \"Arial\",\n display: \"flex\",\n fontSize: \".75rem\",\n }\n }\n )\n);","import { PluginPayload } from \"../plugins/uploadPluginTypes\";\nimport {getModelPluginEdge} from \"../../GraphViz/engagement_edge/getApiURLs\"\n\nexport const getPluginList = async () => {\n const res = await fetch(`${getModelPluginEdge()}listModelPlugins`, \n {\n method: 'post',\n headers: {\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n }\n );\n\n const body = await res.json();\n\n let pluginList: string[] = body.success.plugin_list;\n\n return pluginList\n}\n\nexport const deletePlugin = async ( pluginName: string ): Promise => {\n const res = await fetch(`${getModelPluginEdge()}deleteModelPlugin`, \n {\n method: 'post',\n headers: {\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n body: JSON.stringify({plugins_to_delete: [pluginName]})\n }\n );\n await res.json();\n return true;\n};\n\nexport const uploadFilesToDgraph = async (payload: PluginPayload ): Promise => {\n const res = await fetch(`${getModelPluginEdge()}deploy`, \n {\n method: 'post',\n headers: {\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n body: JSON.stringify(payload)\n }\n );\n const body = await res.json();\n console.log(\"body\", body)\n return body.success.Success;\n};","import React, { SyntheticEvent } from 'react';\nimport { Field, Form, Formik } from \"formik\";\nimport Button from \"@material-ui/core/Button\";\nimport CloudUploadIcon from '@material-ui/icons/CloudUpload';\nimport { Event, UploadFormState, DirectoryUpload, MessageProps} from \"./uploadPluginTypes\"\nimport { uploadFilesToDgraph } from \"./apiRequests\";\nimport { useStyles } from \"./useStyles\";\n\nconst readFile = async (file: Blob): Promise => {\n return await new Promise(\n (resolve, reject) => {\n const reader = new FileReader();\n reader.addEventListener('load', (event: ProgressEvent) => {\n if (event.target === null) {\n console.warn(\"onload event was null\");\n return;\n } else {\n const fileRes = event.target.result;\n if (fileRes === null) {\n console.warn(\"Read pluginfile was null\");\n reject(null)\n return;\n } else {\n if (typeof(fileRes) === 'string') {\n resolve(fileRes);\n } else {\n resolve(new TextDecoder().decode(fileRes));\n }\n }\n }\n });\n return reader.readAsText(file);\n }\n )\n}\n\nconst defaultUploadFormState = (): UploadFormState => {\n return {curFiles: null, success: null}\n}\n\nconst Message = ({status}: MessageProps) => {\n const classes = useStyles();\n if (status === true) {\n return(\n
Plugins Successfully Deployed!
\n )\n } else if (status === false){\n return(\n
Upload Unsuccessful
\n )\n } else {\n return (
)\n }\n \n}\n\nexport const UploadForm = () => {\n const [state, setState] = React.useState(defaultUploadFormState());\n const classes = useStyles();\n\n return(\n
\n

UPLOAD DIRECTORY WITH PLUGINS:

\n { \n const fileMap = {} as any;\n const reads: Promise[] = [];\n const {curFiles} = state;\n\n if (curFiles === null) {\n console.warn(\"Attempted to upload files without selecting any\");\n return\n }\n \n for(const f of curFiles){\n let fileRead = readFile(f).then((fileResult) => {\n // This any is because webkitRelativePath is not standard, and therefor\n // is not part of the File type\n const path = ((f as any).webkitRelativePath || (f as any).mozRelativePath);\n\n fileMap[path] = fileResult;\n });\n reads.push(fileRead);\n }\n let success = true;\n Promise.all(reads).then(() => {\n return uploadFilesToDgraph({plugins: fileMap});\n })\n .then((didSucceed) => {success = success && didSucceed;})\n .then(() => setState({...state, success}))\n }\n }\n >\n
\n {/* accept = property to restrict types, currently we accept ANY type */}\n ) => {\n setState({\n ...state,\n curFiles: event.currentTarget.files\n })\n }\n }\n /> \n \n \n \n
\n \n
\n )\n}","import React, { useEffect, useState } from 'react';\nimport Table from '@material-ui/core/Table';\nimport TableRow from '@material-ui/core/TableRow';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport TableHead from '@material-ui/core/TableHead';\nimport TablePagination from '@material-ui/core/TablePagination';\nimport Button from \"@material-ui/core/Button\";\nimport DeleteOutlinedIcon from '@material-ui/icons/DeleteOutlined';\nimport { PluginTableState } from \"../plugins/uploadPluginTypes\"\nimport { getPluginList, deletePlugin} from \"../plugins/apiRequests\";\nimport { useStyles } from \"../plugins/useStyles\";\n\nconst defaultPluginTableState = (): PluginTableState => {\n return {\n rows: [],\n toggle: true,\n }\n}\n\nexport const PluginTable = () => {\n const classes = useStyles();\n\n const [state, setState] = React.useState(defaultPluginTableState());\n const [page, setPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const handleChangePage = (event: React.MouseEvent | null, newPage:number) => {\n setPage(newPage);\n }\n const handleChangeRowsPerPage = (event: React.ChangeEvent) => {\n console.log(\"Event\", event)\n setRowsPerPage(parseInt(event.target.value, 10));\n setPage(0);\n }\n\n useEffect(() => {\n // console.log(\"fetching plugins\");\n const interval = setInterval(async () => {\n await getPluginList().then((rows) => {\n setState({\n toggle: state.toggle ,\n rows\n })\n });\n }, 1000);\n return () => clearInterval(interval);\n\n }, [state.toggle])\n\n return(\n <>\n \n \n \n \n PLUGINS\n \n \n \n {state.rows.map(\n (pluginName: string) => {\n return \n \n {pluginName} \n \n \n \n }\n )}\n \n
\n \n
\n \n )\n}","import React from 'react';\nimport GraplHeader from \"./reusableComponents/GraplHeader\";\nimport { useStyles } from \"../modules/uploads/plugins/useStyles\";\nimport { UploadForm } from \"../modules/uploads/plugins/uploadPlugins\"; \nimport { PluginTable } from \"../modules/uploads/plugins/pluginTable\";\n\nconst UploadPlugin = () => {\n const classes = useStyles();\n return(\n <>\n \n
\n
\n \n
\n
\n \n
\n
\n \n )\n}\n\nexport default UploadPlugin;","import React from 'react';\nimport './LogIn.css';\nimport {LogIn} from './Login';\nimport {EngagementUx} from \"./components/SideBar\";\nimport Dashboard from \"./components/Dashboard\";\nimport UploadPlugin from \"./components/UploadPlugin\";\nimport {HashRouter, Route, Switch} from 'react-router-dom';\n\n// Updates our react state, as well as localStorage state, to reflect the page\n// we should render\n\nexport default function App() {\n console.log(\"App loaded\");\n return (\n <>\n \n \n \n \n \n \n \n \n \n )\n}\n\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(\n process.env.PUBLIC_URL,\n window.location.href\n );\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport { createMuiTheme, ThemeProvider } from '@material-ui/core/styles'\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\nimport { HashRouter } from 'react-router-dom';\n\n\nconst darkTheme = createMuiTheme({\n palette: {\n type: 'dark',\n primary: {\n main: '#373740',\n }\n }\n})\n\nconst rootElement = document.getElementById('root')\n\nReactDOM.render(\n \n \n \n , \n \n \n ,\n rootElement\n);\n\nserviceWorker.unregister();\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["modules/GraphViz/engagement_edge/getApiURLs.tsx","Login.tsx","modules/GraphViz/calculations/node/nodeCalcs.tsx","modules/GraphViz/calculations/link/linkCalcs.tsx","modules/GraphViz/graphColoring/coloring.tsx","modules/GraphViz/graph/graph_traverse.tsx","modules/GraphViz/graphQL/expandScope.tsx","modules/GraphViz/graph/mergeGraphs.tsx","modules/GraphViz/graphQL/graphQLAdjacencyMatrix.tsx","modules/GraphViz/graph/labels.tsx","components/GraphViz.tsx","components/NodeTable.tsx","components/EngagementViewContent.tsx","components/EngagementView.tsx","components/reusableComponents/GraplHeader.tsx","components/Dashboard.tsx","modules/uploads/plugins/useStyles.tsx","modules/uploads/plugins/apiRequests.tsx","modules/uploads/plugins/uploadPlugins.tsx","modules/uploads/plugins/pluginTable.tsx","components/UploadPlugin.tsx","App.tsx","serviceWorker.ts","index.tsx"],"names":["getGraphQlEdge","window","location","hostname","getModelPluginEdge","engagement_edge","LogIn","_","className","initialValues","userName","password","onSubmit","values","a","console","log","sha256WithPepper","login","history","replaceState","warn","name","type","placeholder","sha256","message","msgBuffer","TextEncoder","encode","crypto","subtle","digest","hashBuffer","hashArray","Array","from","Uint8Array","map","b","toString","slice","join","username","hashed","i","fetch","method","body","JSON","stringify","headers","credentials","res","json","calcNodeRiskPercentile","_nodeRisk","_allRisks","nodeRisk","risk","allRisks","n","sort","undefined","length","riskIndex","Math","floor","findNode","id","nodes","node","calcLinkRiskPercentile","link","Graph","linkRisk","srcNode","source","dstNode","target","error","srcRisk","dstRisk","round","calcLinkRisk","BKDRHash","str","hash","MAX_SAFE_INTEGER","parseInt","charCodeAt","calcNodeRgb","colorHash","nodeType","rgb","percentToColor","percentile","calcLinkColor","mapGraph","f","visited","Set","mapEdgeProps","edgeName","neighbor","_mapGraph","has","uid","add","mapEdges","prop","Object","prototype","hasOwnProperty","call","maybeNeighbor","isArray","graphql_edge","builtins","unpackPluginNodes","predicates","edge_name","dgraph_type","pluginNode","keys","forEach","key","retrieveGraph","lens","query","expandScope","then","data","lens_scope","lensWithScope","scope","lensName","mergeNodes","x","y","merged","mapNodeProps","mergeGraphs","curGraph","update","links","outputGraph","updated","Map","set","newNode","get","label","newLink","newLinkSource","newLinkTarget","getNodeType","t","node_type","randomInt","min","max","random","graphQLAdjacencyMatrix","inputGraph","nodeMap","traverseNeighbors","callback","fromNode","toNode","push","traverseNodes","nodeLabel","_node","process_name","process_id","file_path","external_ip","lens_name","getNodeLabel","strippedNode","analyzer_names","risks","risk_score","analyzer_name","edge","_neighbor","vizNode","HSL2RGB","H","S","L","q","p","color","o","ColorHash","options","hsl","hueRanges","range","apply","LS","lightness","saturation","param","concat","this","hue","updateGraph","state","setState","mergeUpdate","graphData","curLensName","catch","e","GraphDisplay","setCurNode","React","useState","defaultGraphDisplayState","forceRef","useRef","useEffect","current","d3Force","d3","abs","vx","vy","interval","setInterval","clearInterval","enableNodeDrag","linkDirectionalParticles","linkDirectionalParticleWidth","linkRiskPercentile","calcLinkParticleWidth","linkDirectionalParticleColor","linkDirectionalParticleSpeed","onNodeClick","event","linkDirectionalArrowLength","linkWidth","linkDirectionalArrowRelPos","riskPercentile","calcLinkDirectionalArrowRelPos","linkCanvasObjectMode","linkCanvasObject","ctx","start","end","textPos","assign","c","relLink","maxTextLength","sqrt","pow","LABEL_NODE_MARGIN","textAngle","atan2","PI","mapLabel","font","fontSize","measureText","width","textWidth","bckgDimensions","save","translate","rotate","fillStyle","fillRect","textAlign","textBaseline","fillText","restore","nodeCanvasObject","globalScale","NODE_R","nodeSize","beginPath","arc","nodeColors","riskColor","fill","nodeRbg","ref","useStyles","makeStyles","root","nodeTable","minWidth","tableHeader","backgroundColor","nodeTableData","NodeTable","classes","hidden","displayNode","propName","includes","Date","toLocaleString","TableContainer","Table","styles","TableHead","TableRow","TableCell","align","innerTable","TableBody","entries","entry","value","button","title","icon","margin","expand","header","display","table","pagination","SelectLens","props","component","Button","onClick","setLens","lens_type","score","ToggleLensTable","toggled","lenses","first","offset","page","setPage","rowsPerPage","setRowsPerPage","getLenses","response","handleChangePage","handleChangeRowsPerPage","TablePagination","aria-label","rowsPerPageOptions","count","onChangePage","onChangeRowsPerPage","Number","pagedTable","Divider","errors","jres","NodeDetails","ToggleNodeTable","curNode","toggle","SideBarContent","theme","createStyles","padding","appBar","transition","transitions","create","easing","sharp","duration","leavingScreen","appBarShift","marginLeft","easeOut","enteringScreen","menuButton","marginRight","spacing","hide","drawer","flexShrink","drawerPaper","drawerHeader","alignItems","mixins","toolbar","justifyContent","content","flexGrow","contentShift","headerContent","close","textDecoration","SideBar","curLens","open","setOpen","AppBar","position","clsx","Toolbar","IconButton","Typography","variant","noWrap","to","Drawer","anchor","paper","paragraph","EngagementUx","GraplHeader","displayBtn","welcome","height","nav","flexDirection","dashboard","Dashboard","formContainer","btn","borderRadius","inputFiles","border","upload","succMsg","errMsg","pluginTable","boxShadow","uploadFormContainer","uploadForm","fontFamily","getPluginList","pluginList","success","plugin_list","deletePlugin","pluginName","plugins_to_delete","uploadFilesToDgraph","payload","Success","readFile","file","Promise","resolve","reject","reader","FileReader","addEventListener","fileRes","result","TextDecoder","decode","readAsText","Message","status","UploadForm","curFiles","fileMap","reads","fileRead","fileResult","path","webkitRelativePath","mozRelativePath","all","plugins","didSucceed","directory","webkitdirectory","mozdirectory","multiple","onChange","currentTarget","files","PluginTable","rows","newPage","UploadPlugin","App","exact","Boolean","match","darkTheme","createMuiTheme","palette","primary","main","rootElement","document","getElementById","ReactDOM","render","StrictMode","ThemeProvider","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.7a388ddd.chunk.js","sourcesContent":["export const getAuthEdge = () => {\n return \"http://\" + window.location.hostname + \":8900/\"\n}\n\nexport const getGraphQlEdge = () => {\n return \"http://\" + window.location.hostname + \":5000/\"\n}\n\nexport const getModelPluginEdge = () => {\n return \"http://\" + window.location.hostname + \":8123/\"\n}","import React from 'react';\nimport './LogIn.css';\nimport {Field, Form, Formik} from \"formik\";\nimport {LoginProps} from '../src/modules/GraphViz/CustomTypes';\nimport {getAuthEdge} from './modules/GraphViz/engagement_edge/getApiURLs';\n\nconst engagement_edge = getAuthEdge();\n\nexport const checkLogin = async () => {\n const res = await fetch(`${engagement_edge}checkLogin`, {\n method: 'get',\n credentials: 'include',\n });\n\n const body = await res.json();\n\n return body['success'] === 'True';\n};\n\nexport const LogIn = (_: LoginProps) => {\n return (\n
\n
Grapl
\n
\n {\n console.log(\"logging in\");\n const password = await sha256WithPepper(\n values.userName, values.password\n );\n \n const loginSuccess = await login(values.userName, password);\n \n if (loginSuccess) {\n window.history.replaceState('/login', \"\", \"/\")\n console.log(\"Logged in\");\n } else {\n console.warn(\"Login failed!\")\n }\n }}\n >\n
\n
\n
\n \n \n \n \n
\n
\n );\n}\n\nasync function sha256(message: string) {\n // encode as UTF-8\n const msgBuffer = new TextEncoder().encode(message);\n\n // hash the message\n const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);\n\n // convert ArrayBuffer to Array\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n\n // convert bytes to hex string\n return hashArray.map(b => ('00' + b.toString(16)).slice(-2)).join('');\n}\n\n\nconst sha256WithPepper = async (username: string, password: string) => {\n // The pepper only exists to prevent rainbow tables for extremely weak passwords\n // Client side hashing itself is only to prevent cases where the password is\n // exposed before it makes it into the password database\n const pepper = \"f1dafbdcab924862a198deaa5b6bae29aef7f2a442f841da975f1c515529d254\";\n let hashed = await sha256(password + pepper + username);\n\n for (let i = 0; i < 5000; i++) {\n hashed = await sha256(hashed)\n }\n return hashed\n};\n\nconst login = async (username: string, password: string) => {\n try {\n const res = await fetch(`${engagement_edge}login`, {\n method: 'post',\n body: JSON.stringify({\n 'username': username,\n 'password': password\n }),\n headers: {\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n });\n \n const body = await res.json();\n console.log(\"body\", body);\n return body['success'] === 'True';\n } catch (e) {\n console.log(e);\n return false\n }\n };\n\nexport default LogIn;\n","import {VizGraph, VizNode} from '../../CustomTypes';\n\nexport const calcNodeRiskPercentile = (_nodeRisk: number | {risk: number}, _allRisks: any) => {\n let nodeRisk = _nodeRisk;\n if (typeof _nodeRisk === 'object') {\n nodeRisk = _nodeRisk.risk;\n }\n\n const allRisks = _allRisks\n .map((n: any) => n || 0)\n .sort((a: number, b: number) => a - b);\n\n if (nodeRisk === undefined || nodeRisk === 0 || allRisks.length === 0) {\n return 0\n }\n\n let riskIndex = 0;\n for (const risk of allRisks) {\n if (nodeRisk >= risk) {\n riskIndex += 1;\n }\n }\n\n return Math.floor((riskIndex / allRisks.length) * 100)\n};\n\n\nexport const nodeSize = (node: VizNode, Graph: VizGraph) => {\n const nodes = [...Graph.nodes].map(node => node.risk);\n const riskPercentile = calcNodeRiskPercentile(node.risk, nodes);\n\n if (riskPercentile >= 75) {\n return 6\n } else if (riskPercentile >= 25) {\n return 5\n } else {\n return 4\n }\n};\n","import { calcNodeRiskPercentile } from '../node/nodeCalcs'; \nimport { LinkType, VizNode, VizGraph } from '../../CustomTypes';\n\n\nconst findNode = (id: number, nodes: VizNode[]) => {\n for (const node of (nodes || [])) {\n if (node.id === id) {\n return node\n }\n }\n return null\n};\n\nexport const calcLinkRisk = (link: LinkType, Graph: VizGraph) => {\n // console.log(\"LINK\", link)\n let srcNode = \n // findNode(link.source, Graph.nodes) || \n findNode(link.source.name, Graph.nodes);\n let dstNode = \n // findNode(link.target, Graph.nodes)||\n findNode(link.target.name, Graph.nodes);\n\n if (!srcNode || !dstNode) {\n console.error(\"Missing srcNode/dstNode\", srcNode, link, dstNode);\n return 0;\n }\n\n const srcRisk = srcNode.risk || 0;\n const dstRisk = dstNode.risk || 0;\n\n return Math.round((srcRisk + dstRisk) / 2)\n};\n\nexport const calcLinkDirectionalArrowRelPos = (link: LinkType, Graph: VizGraph) => {\n const node = \n // findNode(link.target, Graph.nodes) || \n findNode(link.target.name, Graph.nodes);\n\n if (node === null || node.risk === 0) {\n return 1.0\n }\n const nodes = [...Graph.nodes].map(node => node.risk);\n const riskPercentile = calcNodeRiskPercentile(node.risk, nodes);\n\n if (riskPercentile === 0) {\n return 1.0\n }\n\n if (riskPercentile >= 75) {\n return 0.95\n } else if (riskPercentile >= 50) {\n return 0.9\n } else if (riskPercentile >= 25) {\n return 0.85\n } else {\n return 1.0\n }\n};\n\nexport const calcLinkRiskPercentile = (link: LinkType, Graph: VizGraph) => {\n const linkRisk = calcLinkRisk(link, Graph);\n const nodes = [...Graph.nodes].map(node => node.risk);\n\n return calcNodeRiskPercentile(linkRisk, nodes);\n};\n\nexport const calcLinkParticleWidth = (link: LinkType, Graph:VizGraph) => {\n const linkRiskPercentile = calcLinkRiskPercentile(link, Graph);\n if (linkRiskPercentile >= 75) {\n return 5\n } else if (linkRiskPercentile >= 50) {\n return 4\n } else if (linkRiskPercentile >= 25) {\n return 3\n } else {\n return 2\n }\n};\n","import { calcNodeRiskPercentile } from '../calculations/node/nodeCalcs';\nimport { calcLinkRiskPercentile } from '../calculations/link/linkCalcs';\nimport { LinkType, VizGraph, VizNode } from '../CustomTypes'\nimport { ColorHash } from '../../../components/GraphViz';\n\nexport const BKDRHash = (str: string) => {\n const seed = 131;\n const seed2 = 137;\n let hash = 0 as number;\n // make hash more sensitive for short string like 'a', 'b', 'c'\n str += 'x';\n // Note: Number.MAX_SAFE_INTEGER equals 9007199254740991\n const MAX_SAFE_INTEGER = parseInt(9007199254740991 / seed2 as any) as any;\n for (let i = 0; i < str.length; i++) {\n if (hash > MAX_SAFE_INTEGER) {\n hash = parseInt(hash / seed2 as any);\n }\n hash = hash * seed + str.charCodeAt(i);\n }\n return hash;\n};\n\n//# TODO: Add custom coloring for each node\nexport const calcNodeRgb = (node: VizNode, colorHash: ColorHash) => {\n if (node.nodeType === 'Process') {\n return [31, 185, 128]\n } else if (node.nodeType === 'File') {\n return [177, 93, 255]\n } \n \n // else if (node.nodeType === 'Lens'){\n // return []\n // } else if(node.nodeType === 'IpPort'){\n // return []\n // } else if(node.nodeType === 'IpConnection'){\n // return []\n // } else if(node.nodeType === 'ProcessInboundConnection'){\n // return []\n // } else if(node.nodeType === 'ProcessOutboundConnection'){\n // return []\n // } \n \n else{\n return colorHash.rgb(node.nodeType)\n }\n}\n\n\nexport const percentToColor = (percentile: number) => {\n const hue = (100 - percentile) * 40 / 100;\n\n return `hsl(${hue}, 100%, 50%)`;\n};\n\nexport const calcLinkColor = (link: LinkType, Graph: VizGraph) => {\n const risk = calcLinkRiskPercentile(link, Graph);\n // Default link color if no risk\n if (risk === 0) {\n return 'white'\n }\n return percentToColor(risk);\n};\n\n\nexport const riskColor = (node: VizNode, Graph: VizGraph, colorHash: ColorHash) => {\n const nodes = [...Graph.nodes].map(node => node.risk);\n\n const riskPercentile = calcNodeRiskPercentile(node.risk, nodes);\n\n if (riskPercentile === 0) {\n const nodeColors = calcNodeRgb(node, colorHash);\n return `rgba(${nodeColors[0]}, ${nodeColors[1]}, ${nodeColors[2]}, 1)`;\n }\n\n return percentToColor(riskPercentile);\n};\n\n\n","import { Node } from \"../CustomTypes\";\n\nconst _mapGraph = (node: Node, visited: Set, f:(node:Node, prop:string, neighbor: Node) => void) => {\n mapEdgeProps(node, (edgeName: string, neighbor:Node) => {\n if (visited.has(node.uid + edgeName + neighbor.uid)) {\n return\n }\n\n visited.add(node.uid + edgeName + neighbor.uid);\n\n f(node, edgeName, neighbor);\n _mapGraph(neighbor, visited, f)\n })\n};\n\nexport const mapGraph = (node:Node, f:(node:Node, prop:string, neighbor: Node) => void) => {\n const visited: Set = new Set();\n mapEdgeProps(node, (edgeName:string , neighbor:Node) => {\n\n f(node, edgeName, neighbor);\n _mapGraph(neighbor, visited, f)\n })\n};\n\n// type fType = (prop:string, neighbor: Node) => void)\n// Given a node, call 'f' on any of its neighbors\nexport const mapEdges = (node: Node, f: (prop:string, neighbor: Node) => void) => {\n for (const prop in node) {\n if (Object.prototype.hasOwnProperty.call(node, prop)) {\n const maybeNeighbor = (node as any)[prop];\n if(Array.isArray(maybeNeighbor)) {\n for (const neighbor of maybeNeighbor) {\n if (neighbor.uid !== undefined) {\n f(prop, neighbor)\n }\n }\n } else {\n if (maybeNeighbor && maybeNeighbor.uid !== undefined) {\n f(prop, maybeNeighbor)\n }\n }\n }\n }\n};\n\nexport const mapEdgeProps = (node: Node, f: (prop:string, neighbor: Node) => void) => {\n for (const prop in node) {\n if (Object.prototype.hasOwnProperty.call(node, prop)) {\n const maybeNeighbor = (node as any)[prop];\n if(Array.isArray(maybeNeighbor)) {\n for (const neighbor of maybeNeighbor) {\n if (neighbor.uid !== undefined) {\n f(prop, neighbor)\n }\n }\n } else {\n if (maybeNeighbor && maybeNeighbor.uid !== undefined) {\n f(prop, maybeNeighbor)\n }\n }\n }\n }\n};\n\nexport const traverseNodes = (node: Node, callback: (node: Node) => void) => {\n callback(node);\n mapEdges(node, (_, neighbor) => {\n traverseNodes(neighbor, callback);\n })\n}\n\nexport const traverseNeighbors = (node: Node, callback: (node:Node, prop:string, neighbor: Node) => void) => {\n mapEdges(node, (edgeName: string, neighbor: Node) => {\n callback(node, edgeName, neighbor);\n\n traverseNeighbors(neighbor, callback);\n })\n}\n\n","import {BaseNode, LensScopeResponse} from '../../GraphViz/CustomTypes'\nimport {mapGraph} from \"../graph/graph_traverse\";\nimport {getGraphQlEdge} from '../engagement_edge/getApiURLs';\n\nconst graphql_edge = getGraphQlEdge();\n\nconst builtins = new Set([\n 'Process',\n 'File',\n 'IpAddress',\n 'Asset',\n 'Risk',\n 'IpConnections',\n 'ProcessInboundConnections',\n 'ProcessOutboundConnections',\n])\n\nconst unpackPluginNodes = (nodes: BaseNode[]) => {\n for (const node of nodes) {\n if (!(node as any).predicates) {\n continue\n }\n mapGraph(node, (node, edge_name, neighbor) => {\n if ((node as any).predicates) {\n if(!builtins.has((node as any).predicates.dgraph_type[0])) {\n // Using 'any' because the PluginType is temporary, and not valid outside of the initial response\n const pluginNode = {...(node as any).predicates};\n delete (node as any).predicates\n Object.keys(pluginNode).forEach(function(key) { (node as any)[key] = pluginNode[key]; });\n }\n }\n\n if ((neighbor as any).predicates) {\n if(!builtins.has((neighbor as any).predicates.dgraph_type[0])) {\n // Using 'any' because the PluginType is temporary, and not valid outside of the initial response\n const pluginNode = {...(neighbor as any).predicates};\n delete (neighbor as any).predicates\n Object.keys(pluginNode).forEach(function(key) { (neighbor as any)[key] = pluginNode[key]; });\n }\n }\n })\n\n }\n}\n\nexport const retrieveGraph = async (lens: string): Promise<(LensScopeResponse & BaseNode)> => {\n const query = expandScope(lens);\n\n const res = await fetch(`${graphql_edge}graphql`,\n {\n method: 'post',\n body: JSON.stringify({ query }),\n headers: {\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n })\n .then(res => res.json())\n .then(res => {\n console.log('retrieveGraph res', res);\n return res\n })\n .then((res) => res.data)\n .then((res) => res.lens_scope);\n\n const lensWithScope = await res;\n console.log('LensWithScope: ', lensWithScope);\n unpackPluginNodes(lensWithScope.scope);\n return lensWithScope;\n};\n\nexport const expandScope = (lensName: string) => {\n \n const query = `\n {\n lens_scope(lens_name: \"${lensName}\") {\n uid,\n node_key,\n lens_name,\n lens_type,\n dgraph_type,\n scope {\n ... on Process {\n uid,\n node_key, \n dgraph_type,\n process_name, \n process_id,\n children {\n uid, \n node_key, \n dgraph_type,\n process_name, \n process_id,\n }, \n risks { \n uid,\n dgraph_type,\n node_key, \n analyzer_name, \n risk_score\n },\n }\n \n ... on Asset {\n uid, \n node_key, \n dgraph_type,\n hostname,\n asset_ip{\n ip_address\n }, \n asset_processes{\n uid, \n node_key, \n dgraph_type,\n process_name, \n process_id,\n },\n files_on_asset{\n uid, \n node_key, \n dgraph_type,\n file_path\n }, \n risks { \n uid,\n dgraph_type,\n node_key, \n analyzer_name, \n risk_score\n },\n }\n\n ... on File {\n uid,\n node_key, \n dgraph_type,\n risks { \n uid,\n dgraph_type,\n node_key, \n analyzer_name, \n risk_score\n },\n }\n\n ... on PluginType {\n predicates,\n }\n }\n }\n }\n`;\n\n return query;\n}\n\n","import {mapNodeProps} from '../../../../src/components/GraphViz';\nimport {Node, MergeGraphType} from '../CustomTypes'; \n\n// merges y into x, returns true if update occurred\nconst mergeNodes = (x: Node, y: Node) => {\n let merged = false;\n mapNodeProps(y, (prop: string) => {\n if (!Object.prototype.hasOwnProperty.call(x, prop)) {\n merged = true;\n (x as any)[prop] = (y as any)[prop]\n }\n });\n\n return merged;\n};\n\n// #TODO: This algorithm is exponential, and doesn't have to be\nexport const mergeGraphs = (curGraph: MergeGraphType, update: MergeGraphType): MergeGraphType | null => {\n // Merges two graphs into a new graph\n // returns 'null' if there are no updates to be made\n\n if (!update.nodes && !update.links) {\n // empty update\n return null\n }\n\n const outputGraph: MergeGraphType = {nodes: [], links: []};\n\n let updated = false;\n\n const nodes = new Map();\n const links = new Map();\n\n for (const node of curGraph.nodes) {\n nodes.set(node.uid, node)\n }\n\n for (const newNode of update.nodes) {\n const node = nodes.get(newNode.uid);\n if (node) {\n if (mergeNodes(node, newNode)) {\n updated = true;\n }\n } else {\n nodes.set(newNode.uid, newNode);\n updated = true;\n }\n }\n// #TODO: console.log on link.source, check to see if it's an object or not. It should never be an object\n// this should only be a string / an int. At some point, it was getting sent as an object\n for (const link of curGraph.links) {\n if (link) {\n const source = link.source.uid || link.source;\n const target = link.target.uid || link.target;\n links.set(\n source + link.label + target,\n link,\n )\n }\n }\n\n for (const newLink of update.links) {\n const newLinkSource = newLink.source || newLink.source;\n const newLinkTarget = newLink.target || newLink.target;\n const link = links.get(newLinkSource + newLink.label + newLinkTarget);\n if (!link) {\n links.set(newLink.source + newLink.label + newLink.target, newLink);\n updated = true;\n }\n }\n\n outputGraph.nodes = Array.from(nodes.values());\n outputGraph.links = Array.from(links.values());\n if (updated) {\n return outputGraph;\n } else {\n return null;\n }\n}","import { traverseNodes, traverseNeighbors, mapEdges } from \"../graph/graph_traverse\"\nimport { getNodeLabel } from '../graph/labels';\nimport {LensScopeResponse, BaseNode} from \"../../GraphViz/CustomTypes\"\n\ninterface IVizNode {\n uid: number,\n name: number,\n id: number, \n nodeType: string,\n nodeLabel: string,\n x: number,\n y: number,\n}\n\ninterface VizProcessNode extends IVizNode {\n process_id: number,\n process_name: string,\n created_timestamp: number, \n terminate_time: number,\n image_name: string, \n arguments: string,\n}\n\nexport interface File extends IVizNode {\n file_name: string,\n file_path: string,\n file_extension: string,\n file_mime_type: string,\n file_size: number,\n file_version: string, \n file_description: string,\n file_product: string,\n file_company: string, \n file_directory: string,\n file_inode: number,\n file_hard_links: string, \n signed: boolean,\n signed_status: string, \n md5_hash: string,\n sha1_hash: string,\n sha256_hash: string,\n}\n\nexport interface IpConnections extends IVizNode {\n src_ip_addr: string,\n src_port: string,\n dst_ip_addr: string,\n dst_port: string,\n created_timestamp: number,\n terminated_timestamp: number,\n last_seen_timestamp: number,\n}\ninterface VizAssetNode extends IVizNode {\n hostname: string,\n}\n\ninterface VizLensNode extends IVizNode {\n lens_name: string,\n lens_type: string, \n}\n\ntype VizDynamicNode = IVizNode;\n\ntype VizNode = VizProcessNode | VizAssetNode | VizLensNode | VizDynamicNode;\n\ntype VizLink = {\n source: number,\n label: string,\n target: number, \n}\n\ntype AdjacencyMatrix = {\n nodes: VizNode[],\n links: VizLink[]\n}\n\n\nconst getNodeType = (node: BaseNode) => {\n const t = node.dgraph_type || node.node_type;\n\n if (t) {\n if (Array.isArray(t)) {\n return t[0]\n }\n return t\n }\n\n console.warn('Unable to find type for node ', node);\n return 'Unknown';\n};\n\nfunction randomInt(min: number, max: number) // min and max included\n{\n let randomNum: number = Math.floor(Math.random() * (max - min + 1) + min);\n return randomNum;\n}\n\n\nexport const graphQLAdjacencyMatrix = (inputGraph: (LensScopeResponse & BaseNode)): AdjacencyMatrix => {\n\n const nodes: VizNode[] = []; \n const links: VizLink[] = [];\n\n const nodeMap: Map = new Map();\n\n traverseNeighbors(inputGraph, \n (fromNode: BaseNode, edgeName: string, toNode: BaseNode) => {\n if(edgeName !== 'scope'){\n \n if(getNodeType(fromNode) === 'Unknown'){\n return;\n }\n\n if(getNodeType(toNode) === 'Unknown'){\n return;\n }\n\n if(getNodeType(fromNode) === 'Risk'){\n return;\n }\n\n if(getNodeType(toNode) === 'Risk'){\n return;\n }\n \n links.push({\n source: fromNode.uid,\n label: edgeName, \n target: toNode.uid\n })\n } \n })\n\n traverseNodes(inputGraph, (node: BaseNode) => {\n const nodeType = getNodeType(node);\n\n if(nodeType === 'Unknown'){\n return;\n }\n\n if(nodeType === 'Risk'){\n return; \n }\n\n const nodeLabel = getNodeLabel(nodeType, node);\n\n const strippedNode = {...node};\n\n strippedNode.risk = strippedNode.risk || 0;\n strippedNode.analyzer_names = strippedNode.analyzer_names || \"\";\n\n for(const risk of node.risks || []){\n strippedNode.risk += risk.risk_score || 0;\n if (strippedNode.analyzer_names && risk.analyzer_name) {\n // #TODO: Link to the analyzer details\n strippedNode.analyzer_names += \", \"\n }\n strippedNode.analyzer_names += risk.analyzer_name || \"\";\n }\n\n mapEdges(node, (edge: string, _neighbor: BaseNode) => {\n // The stripped node is being converted to another type, so we can cast\n // to any here\n (strippedNode as any)[edge] = undefined;\n })\n\n const vizNode = {\n name: node.uid,\n ...strippedNode,\n id: node.uid,\n nodeType,\n nodeLabel,\n x: 200 + randomInt(1, 50),\n y: 150 + randomInt(1, 50),\n };\n\n nodeMap.set(node.uid, vizNode);\n })\n\n for (const vizNode of (nodeMap.values() as any)) {\n nodes.push(vizNode)\n }\n\n return {\n nodes, \n links\n }\n}\n","import { Node } from '../CustomTypes'\n\nconst getNodeLabel = (nodeType: string, node: Node) => {\n console.log('nodetype', nodeType);\n\n const _node = node as any; // ignore-any\n\n switch(nodeType) {\n case \"Process\": return _node.process_name || _node.process_id || 'Process';\n case \"Asset\": return _node.hostname || 'Asset';\n case \"File\": return _node.file_path || 'File';\n case \"IpAddress\": return _node.external_ip || 'IpAddress';\n case \"Lens\": return _node.lens_name || 'Lens';\n default: return nodeType || '';\n }\n};\n\nconst mapLabel = (label: string) => {\n if (label === 'children') {\n return 'executed'\n }\n return label\n};\n\nexport { mapLabel, getNodeLabel }","// @ts-nocheck\nimport React, { useEffect, useRef } from 'react';\nimport { ForceGraph2D } from 'react-force-graph';\nimport * as d3 from \"d3\";\nimport { BKDRHash, riskColor, calcNodeRgb , calcLinkColor} from \"../modules/GraphViz/graphColoring/coloring.tsx\";\nimport { retrieveGraph } from '../modules/GraphViz/graphQL/expandScope.tsx';\nimport { mapLabel } from '../modules/GraphViz/graph/labels.tsx';\nimport { nodeSize } from '../modules/GraphViz/calculations/node/nodeCalcs.tsx'\nimport { calcLinkDirectionalArrowRelPos, calcLinkParticleWidth } from '../modules/GraphViz/calculations/link/linkCalcs.tsx'\nimport {mergeGraphs} from '../modules/GraphViz/graph/mergeGraphs.tsx'\nimport {graphQLAdjacencyMatrix} from '../modules/GraphViz/graphQL/graphQLAdjacencyMatrix.tsx'\nimport { Node, LinkType, GraphType, ColorHashOptions } from \"../modules/GraphViz/CustomTypes\"\n\ntype ColorHashOptions = {\n lightness: number,\n saturation: number,\n hue: number,\n hash: BKDRHash,\n}\n\n/**\n * Convert HSL to RGB\n *\n * @see {@link http://zh.wikipedia.org/wiki/HSL和HSV色彩空间} for further information.\n * @param {Number} H Hue ∈ [0, 360)\n * @param {Number} S Saturation ∈ [0, 1]\n * @param {Number} L Lightness ∈ [0, 1]\n * @returns {Array} R, G, B ∈ [0, 255]\n */\nconst HSL2RGB = (H: number, S: number, L: number) => {\n H /= 360;\n\n const q = L < 0.5 ? L * (1 + S) : L + S - L * S;\n const p = 2 * L - q;\n\n return [H + 1 / 3, H, H - 1 / 3].map((color) => {\n if (color < 0) {\n color++;\n }\n if (color > 1) {\n color--;\n }\n if (color < 1 / 6) {\n color = p + (q - p) * 6 * color;\n } else if (color < 0.5) {\n color = q;\n } else if (color < 2 / 3) {\n color = p + (q - p) * 6 * (2 / 3 - color);\n } else {\n color = p;\n }\n return Math.round(color * 255);\n });\n};\n\nconst isArray = (o: Object) => {\n return Object.prototype.toString.call(o) === '[object Array]';\n};\n\n/**\n * Color Hash Class\n *\n * @class\n */\n\nexport class ColorHash {\n constructor(options: ColorHashOptions | undefined) {\n options = options || {};\n\n const LS = [options.lightness, options.saturation].map((param) => {\n param = param || [0.35, 0.5, 0.65]; // note that 3 is a prime\n return isArray(param) ? param.concat() : [param];\n });\n \n this.L = LS[0];\n this.S = LS[1];\n \n if (typeof options.hue === 'number') {\n options.hue = {min: options.hue, max: options.hue};\n }\n if (typeof options.hue === 'object' && !isArray(options.hue)) {\n options.hue = [options.hue];\n }\n if (typeof options.hue === 'undefined') {\n options.hue = [];\n }\n this.hueRanges = options.hue.map(function (range: number) {\n return {\n min: typeof range.min === 'undefined' ? 0 : range.min,\n max: typeof range.max === 'undefined' ? 360 : range.max\n };\n });\n \n this.hash = options.hash || BKDRHash;\n } \n /**\n * Returns the hash in [h, s, l].\n * Note that H ∈ [0, 360); S ∈ [0, 1]; L ∈ [0, 1];\n *\n * @param {String} str string to hash\n * @returns {Array} [h, s, l]\n */\n hsl = (str: string) => {\n let H, S, L;\n let hash = this.hash(str);\n \n if (this.hueRanges.length) {\n const range = this.hueRanges[hash % this.hueRanges.length];\n const hueResolution = 727; // note that 727 is a prime\n H = ((hash / this.hueRanges.length) % hueResolution) * (range.max - range.min) / hueResolution + range.min;\n } else {\n H = hash % 359; // note that 359 is a prime\n }\n hash = parseInt(hash / 360 as any);\n S = this.S[hash % this.S.length];\n hash = parseInt(hash / this.S.length as any);\n L = this.L[hash % this.L.length];\n \n return [H, S, L];\n }\n\n /**\n * Returns the hash in [r, g, b].\n * Note that R, G, B ∈ [0, 255]\n *\n * @param {String} str string to hash\n * @returns {Array} [r, g, b]\n */\n rgb = (str: string) => {\n const hsl = this.hsl(str);\n return HSL2RGB.apply(this, hsl);\n };\n}\n\n\nexport const mapNodeProps = (node: Node, f: (string) => void) => {\n for (const prop in node) {\n if (Object.prototype.hasOwnProperty.call(node, prop)) {\n if (Array.isArray(node[prop])) {\n if (node[prop].length > 0) {\n if (node[prop][0].uid === undefined) {\n f(prop)\n }\n }\n } else {\n f(prop)\n }\n }\n }\n};\n\ntype GraphState = {\n curLensName: LensType[], \n graphData: GraphType[]\n}\n\nconst updateGraph = async (\n lensName: string, \n state: GraphState, \n setState: (state: GraphState) => void,\n) => {\n if (!lensName) {\n return;\n }\n\n await retrieveGraph(lensName)\n .then(async (scope) => {\n const update = graphQLAdjacencyMatrix(scope);\n console.log('update', update);\n const mergeUpdate = mergeGraphs(state.graphData, update);\n if (mergeUpdate !== null) {\n if (state.curLensName === lensName) {\n setState({\n ...state,\n curLensName: lensName,\n graphData: mergeUpdate,\n })\n } else {\n setState({\n ...state,\n curLensName: lensName,\n graphData: update,\n })\n }\n }\n })\n .catch((e) => console.error(\"Failed to retrieveGraph \", e))\n}\n\ntype GraphDisplayProps = {\n lensName: string | null,\n setCurNode: (string) => void,\n}\n\ntype GraphDisplayState = {\n graphData: AdjacencyMatrix,\n curLensName: string | null,\n}\n\nconst defaultGraphDisplayState = (lensName: string): GraphDisplayState => {\n return {\n graphData: {nodes: [], links: []},\n curLensName: lensName,\n }\n}\n\nconst GraphDisplay = ({lensName, setCurNode}: GraphDisplayProps) => {\n const [state, setState] = React.useState(defaultGraphDisplayState(lensName));\n const forceRef = useRef(null);\n\n useEffect(() => {\n // console.log(\"useEffect - setting forceRef state\");\n forceRef.current.d3Force(\"link\", d3.forceLink());\n forceRef.current.d3Force('collide', d3.forceCollide(22));\n forceRef.current.d3Force(\"charge\", d3.forceManyBody());\n forceRef.current.d3Force('box', () => {\n const N = 100;\n // console.log(Graph.width(), Graph.height())\n const SQUARE_HALF_SIDE = 20 * N * 0.5;\n state.graphData.nodes.forEach(node => {\n const x = node.x || 0, y = node.y || 0;\n // bounce on box walls\n if (Math.abs(x) > SQUARE_HALF_SIDE) {\n node.vx *= -1;\n }\n if (Math.abs(y) > SQUARE_HALF_SIDE) {\n node.vy *= -1;\n }\n });\n });\n }, [state])\n\n\n useEffect(() => {\n updateGraph(lensName, state, setState);\n const interval = setInterval(async () => {\n if (lensName) {\n await updateGraph(lensName, state, setState);\n }\n }, 1000);\n return () => clearInterval(interval);\n }, [lensName, state]);\n\n const graphData = state.graphData;\n\n const colorHash = new ColorHash({});\n\n // #TODO: ADD ZOOM HANDLERS FOR MAX ZOOM IN/OUT\n\n return (\n <>\n node.nodeLabel}\n enableNodeDrag={true}\n linkDirectionalParticles={1}\n linkDirectionalParticleWidth={(link) => {\n return calcLinkParticleWidth(link, graphData);\n }}\n linkDirectionalParticleColor={(link) => {\n return calcLinkColor(link, graphData)\n }}\n linkDirectionalParticleSpeed={0.005}\n onNodeClick={\n (node: Node, event: string) => {\n setCurNode(node);\n }\n }\n linkDirectionalArrowLength={8}\n linkWidth={4}\n linkDirectionalArrowRelPos={(link => {\n return calcLinkDirectionalArrowRelPos(link, graphData);\n })}\n linkCanvasObjectMode={(() => 'after')}\n linkCanvasObject={((link: LinkType, ctx: any) => {\n const MAX_FONT_SIZE = 8;\n const LABEL_NODE_MARGIN = 8 * 1.5;\n const start = link.source;\n const end = link.target;\n // ignore unbound links\n link.color = calcLinkColor(link, graphData);\n\n if (typeof start !== 'object' || typeof end !== 'object') return;\n // calculate label positioning\n const textPos = Object.assign(\n ...['x', 'y'].map((c: any) => (\n {\n [c]: start[c] + (end[c] - start[c]) / 2 // calc middle point\n }\n )) as any\n );\n\n const relLink = {x: end.x - start.x, y: end.y - start.y};\n\n const maxTextLength = Math.sqrt(Math.pow(relLink.x, 2) + Math.pow(relLink.y, 2)) - LABEL_NODE_MARGIN * 8;\n\n let textAngle = Math.atan2(relLink.y, relLink.x);\n // maintain label vertical orientation for legibility\n if (textAngle > Math.PI / 2) textAngle = -(Math.PI - textAngle);\n if (textAngle < -Math.PI / 2) textAngle = -(-Math.PI - textAngle);\n\n const label = mapLabel(link.label);\n // estimate fontSize to fit in link length\n ctx.font = '50px Arial';\n const fontSize = Math.min(MAX_FONT_SIZE, maxTextLength / ctx.measureText(label).width);\n ctx.font = `${fontSize + 5}px Arial`;\n\n let textWidth = ctx.measureText(label).width;\n\n textWidth += Math.round(textWidth * 0.25);\n\n const bckgDimensions = [textWidth, fontSize].map(n => n + fontSize * 0.2); // some padding\n // draw text label (with background rect)\n ctx.save();\n ctx.translate(textPos.x, textPos.y);\n ctx.rotate(textAngle);\n ctx.fillStyle = 'rgb(115,222,255,1)';\n ctx.fillRect(-bckgDimensions[0] / 2, -bckgDimensions[1] / 2, ...bckgDimensions);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n ctx.fillStyle = 'white';\n //content, left/right, top/bottom\n ctx.fillText(label, .75, 3);\n ctx.restore();\n })}\n nodeCanvasObject={((node: Node, ctx: any, globalScale: any) => {\n // add ring just for highlighted nodes\n\n const NODE_R = nodeSize(node, graphData);\n ctx.save();\n\n // Risk outline color\n ctx.beginPath();\n ctx.arc(node.x, node.y, NODE_R * 1.3, 0, 2 * Math.PI, false);\n ctx.fillStyle = riskColor(node, graphData, colorHash);\n ctx.fill();\n ctx.restore();\n\n ctx.save();\n\n // Node color\n ctx.beginPath();\n ctx.arc(node.x, node.y, NODE_R * 1.2, 0, 2 * Math.PI, false);\n\n const nodeRbg = calcNodeRgb(node, colorHash);\n\n ctx.fillStyle = `rgba(${nodeRbg[0]}, ${nodeRbg[1]}, ${nodeRbg[2]}, 1)`;\n ctx.fill();\n ctx.restore();\n\n const label = node.nodeLabel;\n\n const fontSize = 15 / globalScale;\n\n ctx.font = `${fontSize}px Arial`;\n\n\n const textWidth = ctx.measureText(label).width;\n\n const bckgDimensions = [textWidth, fontSize].map(n => n + fontSize * 0.2); // some padding\n // node label color\n ctx.fillStyle = 'rgba(48, 48, 48, 0.8)';\n ctx.fillRect(node.x - bckgDimensions[0] / 2, node.y - bckgDimensions[1] / 2, ...bckgDimensions);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n ctx.fillStyle = 'white';\n ctx.fillText(label, node.x, node.y);\n\n })}\n ref={forceRef}\n />\n \n )\n}\n\nexport default GraphDisplay;\n","import React from \"react\";\nimport { makeStyles } from '@material-ui/core/styles';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport TableHead from '@material-ui/core/TableHead';\nimport TableRow from '@material-ui/core/TableRow';\nimport { mapEdgeProps } from '../modules/GraphViz/graph/graph_traverse';\nimport { mapNodeProps } from './GraphViz';\nimport { Node } from \"../modules/GraphViz/CustomTypes\"\n\n\nconst useStyles = makeStyles({\n root: {\n fontSize: \".75em\"\n },\n nodeTable: {\n minWidth: 450,\n }, \n tableHeader: {\n fontSize: \".85rem\", \n backgroundColor: \"#595959\"\n }, \n nodeTableData: {\n fontSize: \".75rem\"\n },\n});\n\nfunction innerTable(node: Node, styles: any) {\n if(node) {\n return (\n \n \n \n PROPERTY \n \n \n VALUE \n \n \n \n )\n } else {\n return <>\n }\n}\n\ntype NodeTableProps = {\n node: Node\n}\n\nfunction NodeTable({node}: NodeTableProps){\n const classes = useStyles();\n const hidden = new Set(\n ['id', 'dgraph.type', 'dgraph_type', '__indexColor', 'risks','uid', 'scope', 'name', 'nodeType', 'nodeLabel', 'x', 'y', 'index', 'vy', 'vx', 'fx', 'fy']\n );\n\n mapEdgeProps(node, (edgeName: string, _neighbor: Node) => {\n hidden.add(edgeName)\n });\n\n const displayNode = {} as any;\n\n mapNodeProps(\n node, \n (propName: string) => {\n const prop = (node as any)[propName];\n\n if(!hidden.has(propName)){\n if (prop) {\n if (propName.includes('_time')) {\n displayNode[propName] = new Date(prop).toLocaleString()\n } else {\n displayNode[propName] = prop;\n }\n }\n } \n }\n )\n\n return(\n \n \n {\n innerTable(node, classes)\n }\n \n {\n Object.entries(displayNode).map((entry) => {\n const [key, value] = entry;\n \n return(\n \n {key}\n {value as any}\n \n ) \n })\n }\n \n
\n
\n ) \n \n \n}\n\n\nexport default NodeTable ","import React, {useEffect, useState} from \"react\";\nimport NodeTable from './NodeTable'\nimport Button from \"@material-ui/core/Button\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport BubbleChartIcon from '@material-ui/icons/BubbleChart';\nimport LensIcon from '@material-ui/icons/Lens';\nimport Divider from \"@material-ui/core/Divider\";\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableContainer from \"@material-ui/core/TableContainer\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport { Lens } from \"../modules/GraphViz/CustomTypes\";\nimport { getGraphQlEdge } from \"../modules/GraphViz/engagement_edge/getApiURLs\";\n\nimport TablePagination from '@material-ui/core/TablePagination';\nimport { ClassNameMap } from '@material-ui/styles/withStyles';\nimport {SelectLensProps, ToggleLensTableProps, ToggleLensTableState, SideBarContentProps, NodeDetailsProps, ToggleNodeTableProps, PaginationState} from \"../modules/GraphViz/CustomTypes\"\n\nconst useStyles = makeStyles({\n root:{\n fontSize: \"1rem\",\n },\n button: {\n width: \".005%\",\n color: \"white\",\n backgroundColor:\"#424242\",\n },\n title: {\n fontSize: \"25px\",\n color: \"#ffffff\",\n },\n icon:{\n color: \"#42C6FF\",\n margin: \"15px 0 0 10px\",\n }, \n expand:{\n color: \"#42C6FF\",\n margin: \"0px\"\n },\n header:{\n display: \"flex\"\n }, \n table: {\n minWidth: 450, \n },\n lensName: {\n fontSize: \"16px\",\n },\n pagination: {\n margin: \".5rem\",\n backgroundColor: \"#595959\",\n }\n});\n\n\nfunction SelectLens(props: SelectLensProps) {\n const classes = useStyles();\n return (\n <>\n \n \n \n \n \n \n )\n}\n\nconst defaultToggleLensTableState = (): ToggleLensTableState => {\n return {\n toggled: true,\n lenses: [],\n first: 100, // first is the page size\n offset: 0, // by default, start from page 0\n }\n}\n\n\nconst pagedTable = (\n state: PaginationState, \n page: number, \n rowsPerPage: number, \n handleChangePage: (event: React.MouseEvent | null, page: number) => void, \n handleChangeRowsPerPage: (event: React.ChangeEvent) => void, \n setLens: (lens: string) => void, \n classes: ClassNameMap\n) => {\n return (\n \n \n {\n state.lenses \n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map(\n (lens: Lens) => {\n return(\n \n \n \n \n
\n )\n }\n )\n }\n
\n )\n}\n\nfunction ToggleLensTable( {setLens}: ToggleLensTableProps ) {\n const [state, setState] = useState(defaultToggleLensTableState());\n const classes = useStyles();\n\n const [page, setPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const handleChangePage = (event: React.MouseEvent | null, page: number) => {\n setPage(page);\n }\n const handleChangeRowsPerPage = (event: React.ChangeEvent) => {\n console.log(\"Handle Row Event\", event)\n setRowsPerPage(parseInt(event.target.value, 10));\n setPage(0);\n }\n\n useEffect( () => {\n const interval = setInterval(\n () => {\n console.log(\"Fetching lenses\");\n getLenses(state.first, state.offset)\n .then((response) => {\n if (response.lenses && response.lenses !== state.lenses) {\n const lenses = state.lenses.concat(response.lenses);\n setState({\n ...state,\n offset: state.offset + response.lenses.length || 0,\n lenses,\n })\n }\n }\n )\n }, 1000);\n return () => clearInterval(interval);\n });\n\n return (\n <>\n
\n \n \n LENSES \n \n { \n setState({\n ...state,\n toggled: !state.toggled,\n }) \n }}> \n \n \n
\n \n
\n { \n state.toggled && \n pagedTable(state, page, rowsPerPage, handleChangePage, handleChangeRowsPerPage, setLens, classes)\n }\n
\n\n \n \n )\n}\n\nconst graphql_edge = getGraphQlEdge();\n\nconst getLenses = async (first: number, offset: number) => {\n // console.log('fetching graph from', graphql_edge);\n\n const query = `\n {\n lenses(first: ${first}, offset: ${offset}) {\n uid,\n node_key,\n lens_name,\n score, \n lens_type,\n }\n }\n `;\n // console.log(`connecting to: ${graphql_edge}graphql`);\n const res = await fetch(`${graphql_edge}graphql`,\n {\n method: 'post',\n body: JSON.stringify({ query: query }),\n headers: {\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n })\n .then(res => res.json())\n .then(res => {\n if (res.errors) {\n console.error(\"lenses failed\", res.errors);\n res.data = {lenses: []};\n }\n return res\n })\n .then((res) => res.data);\n\n const jres = await res;\n return jres;\n};\n\nconst NodeDetails = ({node}: NodeDetailsProps) => {\n return (\n <>\n \n \n )\n}\n\nfunction ToggleNodeTable({curNode}: ToggleNodeTableProps) {\n const [toggled, toggle] = useState(true);\n const classes = useStyles();\n return (\n <>\n
\n
\n NODE\n { toggle(toggled => !toggled) }\n }> \t\n \n \n
\n\n
\n {\n toggled && curNode && \n <>\n { }\n \n }\n
\n
\n \n )\n}\n\n\n\nexport default function SideBarContent({setLens, curNode}: SideBarContentProps) {\n return (\n <>\n \n \n \n );\n}\n\n","import GraphDisplay from \"./GraphViz\";\nimport React from \"react\";\nimport SideBarContent from './SideBarContent'\nimport clsx from \"clsx\";\nimport {createStyles, makeStyles, Theme} from \"@material-ui/core/styles\";\nimport Drawer from \"@material-ui/core/Drawer\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Divider from \"@material-ui/core/Divider\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport KeyboardArrowLeftIcon from '@material-ui/icons/KeyboardArrowLeft';\nimport Button from \"@material-ui/core/Button\";\nimport { Node } from \"../modules/GraphViz/CustomTypes\";\nimport Home from '@material-ui/icons/Home';\nimport {Link} from 'react-router-dom'\n\nconst drawerWidth = 500;\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n display: \"flex\"\n },\n button: {\n backgroundColor: \"#42C6FF\",\n margin: \"0.25rem\",\n padding: \"0.20rem\",\n }, \n appBar: {\n transition: theme.transitions.create([\"margin\", \"width\"], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen\n })\n },\n appBarShift: {\n width: `calc(100% - ${drawerWidth}px)`,\n marginLeft: drawerWidth,\n transition: theme.transitions.create([\"margin\", \"width\"], {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen\n })\n },\n menuButton: {\n marginRight: theme.spacing(2),\n color: \"#42C6FF\"\n },\n hide: {\n display: \"none\"\n },\n drawer: {\n width: drawerWidth,\n flexShrink: 0\n },\n drawerPaper: {\n width: drawerWidth\n },\n drawerHeader: {\n display: \"flex\",\n alignItems: \"center\",\n padding: theme.spacing(0, 1),\n // necessary for content to be below app bar\n ...theme.mixins.toolbar,\n justifyContent: \"flex-end\"\n },\n content: {\n flexGrow: 1,\n padding: theme.spacing(3),\n transition: theme.transitions.create(\"margin\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen\n }),\n marginLeft: -drawerWidth\n },\n contentShift: {\n transition: theme.transitions.create(\"margin\", {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen\n }),\n marginLeft: 0,\n },\n lensName:{\n color:\"#EAFDFF\",\n fontSize: \"1.5rem\", \n },\n header:{\n fontSize: \"35px\",\n }, \n headerContent: {\n width: \"100vw\",\n display: \"flex\", \n justifyContent: \"space-between\",\n },\n close:{\n color:\"#42C6FF\",\n },\n link: {\n color: \"#42C6FF\", \n textDecoration: \"none\"\n }\n })\n);\n\ntype SideBarProps = {\n setLens: (lens: string) => void,\n curLens: string,\n curNode: Node | null\n}\n\nexport default function SideBar({setLens, curLens, curNode}: SideBarProps) {\n const classes = useStyles();\n\n const [open, setOpen] = React.useState(true);\n\n const handleDrawerOpen = () => {\n setOpen(true);\n };\n\n const handleDrawerClose = () => {\n setOpen(false);\n };\n\n return (\n
\n {/* */}\n \n \n \n {/* // Menu Icon */}\n ☰\n \n\n
\n \n GRAPL \n \n \n
\n\n
\n \n\n \n
\n \n
\n\n \n\n \n\n \n\n \n
\n

\n {/* selected lens name */}\n {curLens || \"\"} \n

\n\n \n \n
\n );\n}\n\ntype EngagementUxState = {\n curLens: string, \n curNode: Node | null \n}\n\nconst defaultEngagementUxState = (): EngagementUxState => {\n return {\n curLens: \"\",\n curNode: null,\n }\n}\n\nexport const EngagementUx = () => {\n const [state, setState] = React.useState(defaultEngagementUxState());\n \n return (\n <>\n setState({\n ...state,\n curLens: lens,\n })\n }\n curLens={state.curLens}\n curNode={state.curNode}\n />\n\n {\n setState({\n ...state,\n curNode: node,\n })\n }}\n />\n \n )\n}","import React from 'react';\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport Typography from \"@material-ui/core/Typography\";\nimport {createStyles, makeStyles, Theme} from \"@material-ui/core/styles\";\nimport Home from '@material-ui/icons/Home';\nimport {Link} from 'react-router-dom';\n\nconst useStyles = makeStyles(\n (theme: Theme) =>\n createStyles({\n root: {\n display: \"flex\",\n },\n header: {\n justifyContent: \"space-between\",\n }, \n link:{\n color:\"#42C6FF\", \n textDecoration: \"none\"\n }\n }\n )\n);\n\n\ntype GraplHeaderProps = {\n displayBtn: boolean\n}\n\nconst GraplHeader = ({displayBtn}: GraplHeaderProps) => {\n const classes = useStyles();\n return(\n <>\n \n \n \n GRAPL\n \n {\n displayBtn &&\n \n\n }\n \n \n \n ) \n}\n\nexport default GraplHeader; ","import React from 'react';\nimport Button from \"@material-ui/core/Button\";\nimport {createStyles, makeStyles, Theme} from \"@material-ui/core/styles\";\nimport GraplHeader from \"./reusableComponents/GraplHeader\";\nimport {Link} from 'react-router-dom';\n\nconst useStyles = makeStyles( (theme: Theme) =>\n createStyles({\n root: {\n display: \"flex\",\n },\n button: {\n backgroundColor: \"#42C6FF\",\n margin: \"0.25rem\",\n padding: \"0.25rem\",\n }, \n welcome: {\n width:\"70%\",\n textAlign:\"center\",\n backgroundColor: \"#373740\",\n height: \"100vh\",\n },\n nav: {\n margin: \"2rem\",\n width: \"30%\",\n display: \"flex\",\n flexDirection: \"column\",\n },\n dashboard:{\n display: \"flex\",\n flexDirection: \"row\",\n }, \n link:{\n color: \"white\",\n textDecoration: \"none\"\n }\n })\n);\n\nexport default function Dashboard() {\n const classes = useStyles();\n return (\n <> \n \n\n
\n
\n \n \n \n \n \n
\n\n
\n

Welcome, username

\n
\n
\n \n )\n}\n","import { createStyles, makeStyles, Theme } from \"@material-ui/core/styles\";\n\nexport const useStyles = makeStyles(\n (theme: Theme) =>\n createStyles({\n root: {\n display: \"flex\",\n },\n formContainer: {\n color: \"white\", \n margin: \"1rem\",\n },\n btn: {\n backgroundColor: \"#42C6FF\",\n margin: \"0.25rem\",\n padding: \"0.25rem\",\n borderRadius: \"6px\",\n },\n inputFiles: {\n border: \"none\",\n width: \"35vw\",\n },\n upload: {\n display: \"flex\",\n },\n succMsg: {\n color: \"#03dac6\",\n }, \n errMsg: {\n color: \"#CF6679\",\n }, \n pluginTable: {\n backgroundColor: \"#292929\",\n margin: \"1em\",\n width: \"50%\",\n height: \"100%\",\n boxShadow: \" 1.5px 1.5px #000000\",\n }, \n uploadFormContainer: {\n backgroundColor: \"#292929\",\n margin: \"1em\", \n width: \"50%\",\n height: \"100%\",\n boxShadow: \"1.5px 1.5px #000000\",\n display: \"flex\", \n }, \n uploadForm: {\n fontFamily: \"Arial\",\n display: \"flex\",\n fontSize: \".75rem\",\n }\n }\n )\n);","import { PluginPayload } from \"../plugins/uploadPluginTypes\";\nimport {getModelPluginEdge} from \"../../GraphViz/engagement_edge/getApiURLs\"\n\nexport const getPluginList = async () => {\n const res = await fetch(`${getModelPluginEdge()}listModelPlugins`, \n {\n method: 'post',\n headers: {\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n }\n );\n\n const body = await res.json();\n\n let pluginList: string[] = body.success.plugin_list;\n\n return pluginList\n}\n\nexport const deletePlugin = async ( pluginName: string ): Promise => {\n const res = await fetch(`${getModelPluginEdge()}deleteModelPlugin`, \n {\n method: 'post',\n headers: {\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n body: JSON.stringify({plugins_to_delete: [pluginName]})\n }\n );\n await res.json();\n return true;\n};\n\nexport const uploadFilesToDgraph = async (payload: PluginPayload ): Promise => {\n const res = await fetch(`${getModelPluginEdge()}deploy`, \n {\n method: 'post',\n headers: {\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n body: JSON.stringify(payload)\n }\n );\n const body = await res.json();\n console.log(\"body\", body)\n return body.success.Success;\n};","import React, { SyntheticEvent } from 'react';\nimport { Field, Form, Formik } from \"formik\";\nimport Button from \"@material-ui/core/Button\";\nimport CloudUploadIcon from '@material-ui/icons/CloudUpload';\nimport { Event, UploadFormState, DirectoryUpload, MessageProps} from \"./uploadPluginTypes\"\nimport { uploadFilesToDgraph } from \"./apiRequests\";\nimport { useStyles } from \"./useStyles\";\n\nconst readFile = async (file: Blob): Promise => {\n return await new Promise(\n (resolve, reject) => {\n const reader = new FileReader();\n reader.addEventListener('load', (event: ProgressEvent) => {\n if (event.target === null) {\n console.warn(\"onload event was null\");\n return;\n } else {\n const fileRes = event.target.result;\n if (fileRes === null) {\n console.warn(\"Read pluginfile was null\");\n reject(null)\n return;\n } else {\n if (typeof(fileRes) === 'string') {\n resolve(fileRes);\n } else {\n resolve(new TextDecoder().decode(fileRes));\n }\n }\n }\n });\n return reader.readAsText(file);\n }\n )\n}\n\nconst defaultUploadFormState = (): UploadFormState => {\n return {curFiles: null, success: null}\n}\n\nconst Message = ({status}: MessageProps) => {\n const classes = useStyles();\n if (status === true) {\n return(\n
Plugins Successfully Deployed!
\n )\n } else if (status === false){\n return(\n
Upload Unsuccessful
\n )\n } else {\n return (
)\n }\n \n}\n\nexport const UploadForm = () => {\n const [state, setState] = React.useState(defaultUploadFormState());\n const classes = useStyles();\n\n return(\n
\n

UPLOAD DIRECTORY WITH PLUGINS:

\n { \n const fileMap = {} as any;\n const reads: Promise[] = [];\n const {curFiles} = state;\n\n if (curFiles === null) {\n console.warn(\"Attempted to upload files without selecting any\");\n return\n }\n \n for(const f of curFiles){\n let fileRead = readFile(f).then((fileResult) => {\n // This any is because webkitRelativePath is not standard, and therefor\n // is not part of the File type\n const path = ((f as any).webkitRelativePath || (f as any).mozRelativePath);\n\n fileMap[path] = fileResult;\n });\n reads.push(fileRead);\n }\n let success = true;\n Promise.all(reads).then(() => {\n return uploadFilesToDgraph({plugins: fileMap});\n })\n .then((didSucceed) => {success = success && didSucceed;})\n .then(() => setState({...state, success}))\n }\n }\n >\n
\n {/* accept = property to restrict types, currently we accept ANY type */}\n ) => {\n setState({\n ...state,\n curFiles: event.currentTarget.files\n })\n }\n }\n /> \n \n \n \n
\n \n
\n )\n}","import React, { useEffect, useState } from 'react';\nimport Table from '@material-ui/core/Table';\nimport TableRow from '@material-ui/core/TableRow';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport TableHead from '@material-ui/core/TableHead';\nimport TablePagination from '@material-ui/core/TablePagination';\nimport Button from \"@material-ui/core/Button\";\nimport DeleteOutlinedIcon from '@material-ui/icons/DeleteOutlined';\nimport { PluginTableState } from \"../plugins/uploadPluginTypes\"\nimport { getPluginList, deletePlugin} from \"../plugins/apiRequests\";\nimport { useStyles } from \"../plugins/useStyles\";\n\nconst defaultPluginTableState = (): PluginTableState => {\n return {\n rows: [],\n toggle: true,\n }\n}\n\nexport const PluginTable = () => {\n const classes = useStyles();\n\n const [state, setState] = React.useState(defaultPluginTableState());\n const [page, setPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const handleChangePage = (event: React.MouseEvent | null, newPage:number) => {\n setPage(newPage);\n }\n const handleChangeRowsPerPage = (event: React.ChangeEvent) => {\n console.log(\"Event\", event)\n setRowsPerPage(parseInt(event.target.value, 10));\n setPage(0);\n }\n\n useEffect(() => {\n // console.log(\"fetching plugins\");\n const interval = setInterval(async () => {\n await getPluginList().then((rows) => {\n setState({\n toggle: state.toggle ,\n rows\n })\n });\n }, 1000);\n return () => clearInterval(interval);\n\n }, [state.toggle])\n\n return(\n <>\n \n \n \n \n PLUGINS\n \n \n \n {state.rows.map(\n (pluginName: string) => {\n return \n \n {pluginName} \n \n \n \n }\n )}\n \n
\n \n
\n \n )\n}","import React from 'react';\nimport GraplHeader from \"./reusableComponents/GraplHeader\";\nimport { useStyles } from \"../modules/uploads/plugins/useStyles\";\nimport { UploadForm } from \"../modules/uploads/plugins/uploadPlugins\"; \nimport { PluginTable } from \"../modules/uploads/plugins/pluginTable\";\n\nconst UploadPlugin = () => {\n const classes = useStyles();\n return(\n <>\n \n
\n
\n \n
\n
\n \n
\n
\n \n )\n}\n\nexport default UploadPlugin;","import React from 'react';\nimport './LogIn.css';\nimport {LogIn} from './Login';\nimport {EngagementUx} from \"./components/EngagementView\";\nimport Dashboard from \"./components/Dashboard\";\nimport UploadPlugin from \"./components/UploadPlugin\";\nimport {HashRouter, Route, Switch} from 'react-router-dom';\n\n// Updates our react state, as well as localStorage state, to reflect the page\n// we should render\n\nexport default function App() {\n console.log(\"App loaded\");\n return (\n <>\n \n \n \n \n \n \n \n \n \n )\n}\n\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(\n process.env.PUBLIC_URL,\n window.location.href\n );\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport { createMuiTheme, ThemeProvider } from '@material-ui/core/styles'\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\nimport { HashRouter } from 'react-router-dom';\n\n\nconst darkTheme = createMuiTheme({\n palette: {\n type: 'dark',\n primary: {\n main: '#373740',\n }\n }\n})\n\nconst rootElement = document.getElementById('root')\n\nReactDOM.render(\n \n \n \n , \n \n \n ,\n rootElement\n);\n\nserviceWorker.unregister();\n"],"sourceRoot":""} \ No newline at end of file diff --git a/src/python/engagement_edge/src/engagement_edge.py b/src/python/engagement_edge/src/engagement_edge.py index 9b22bf86a1..17c771122d 100755 --- a/src/python/engagement_edge/src/engagement_edge.py +++ b/src/python/engagement_edge/src/engagement_edge.py @@ -553,13 +553,14 @@ def check_jwt(headers): encoded_jwt = cookie.split("grapl_jwt=")[1].strip() if not encoded_jwt: + LOGGER.info("encoded_jwt %s", encoded_jwt) return False try: jwt.decode(encoded_jwt, JWT_SECRET, algorithms=["HS256"]) return True except Exception as e: - LOGGER.error(e) + LOGGER.error("jwt.decode %s", e) return False @@ -569,10 +570,10 @@ def lambda_login(event): # Clear out the password from the dict, to avoid accidentally logging it body["password"] = "" if IS_LOCAL: - domain = "" + cookie = f"grapl_jwt={login_res}; HttpOnly" else: - domain = "Domain=.amazonaws.com;" - cookie = f"grapl_jwt={login_res}; {domain} secure; HttpOnly; SameSite=None" + cookie = f"grapl_jwt={login_res}; Domain=.amazonaws.com; secure; HttpOnly; SameSite=None" + if login_res: return cookie @@ -618,7 +619,7 @@ def inner_route(): try: return route_fn() except Exception as e: - LOGGER.error(e) + LOGGER.error("path %s", e) return respond("Unexpected Error") return inner_route @@ -641,7 +642,7 @@ def login_route(): @no_auth("/checkLogin") def check_login(): - LOGGER.debug("/checkLogin") + LOGGER.debug("/checkLogin %s", app.current_request) request = app.current_request if check_jwt(request.headers): return respond(None, "True") diff --git a/src/python/grapl-model-plugin-deployer/src/grapl_model_plugin_deployer.py b/src/python/grapl-model-plugin-deployer/src/grapl_model_plugin_deployer.py index 99eac5950e..dc12cae21c 100644 --- a/src/python/grapl-model-plugin-deployer/src/grapl_model_plugin_deployer.py +++ b/src/python/grapl-model-plugin-deployer/src/grapl_model_plugin_deployer.py @@ -323,10 +323,9 @@ def inner_route(): if app.current_request.method == "OPTIONS": return respond(None, {}) - if not IS_LOCAL: # For now, disable authentication locally - if not check_jwt(app.current_request.headers): - LOGGER.warning("not logged in") - return respond("Must log in") + if not check_jwt(app.current_request.headers): + LOGGER.warning("not logged in") + return respond("Must log in") try: return route_fn() except Exception as e: