From bf009e4437dd36da034c51af55290b7c6f2b2b99 Mon Sep 17 00:00:00 2001 From: ianlapham Date: Tue, 2 Mar 2021 16:09:11 -0500 Subject: [PATCH] interface fork initialize --- .DS_Store | Bin 0 -> 6148 bytes .env | 2 + .eslintrc.json | 31 + .github/ISSUE_TEMPLATE/bug-report.md | 22 + .github/ISSUE_TEMPLATE/config.yml | 8 + .github/ISSUE_TEMPLATE/feature-request.md | 19 + .github/workflows/lint.yml | 48 + .github/workflows/release.yaml | 104 + .github/workflows/tests.yaml | 64 + .gitignore | 24 +- .nvmrc | 1 + .prettierrc | 5 + .storybook/main.ts | 16 + .storybook/manager.ts | 4 + .storybook/preview.tsx | 77 + .storybook/theme.ts | 17 + .yarnrc | 1 + LICENSE | 674 + README.md | 110 +- cypress.json | 8 + cypress/integration/add-liquidity.test.ts | 50 + cypress/integration/landing.test.ts | 22 + cypress/integration/lists.test.ts | 11 + cypress/integration/migrate-v1.test.ts | 8 + cypress/integration/pool.test.ts | 12 + cypress/integration/remove-liquidity.test.ts | 39 + cypress/integration/send.test.ts | 11 + cypress/integration/swap.test.ts | 65 + cypress/support/commands.d.ts | 10 + cypress/support/commands.js | 82 + cypress/support/index.js | 9 + cypress/tsconfig.json | 10 + package-lock.json | 17330 ---------------- package.json | 149 +- public/451.html | 10 + public/images/192x192_App_Icon.png | Bin 0 -> 50878 bytes public/images/512x512_App_Icon.png | Bin 0 -> 386611 bytes public/index.html | 85 +- public/locales/de.json | 89 + public/locales/en.json | 105 + public/locales/es-AR.json | 75 + public/locales/es-US.json | 75 + public/locales/it-IT.json | 87 + public/locales/iw.json | 75 + public/locales/ro.json | 91 + public/locales/ru.json | 75 + public/locales/vi.json | 87 + public/locales/zh-CN.json | 75 + public/locales/zh-TW.json | 75 + public/manifest.json | 37 +- public/robots.txt | 3 - src/assets/images/logo.svg | 14 - src/assets/images/logo_white.svg | 14 - src/assets/svg/QR.svg | 3 + src/assets/svg/lightcircle.svg | 11 + src/assets/svg/logo.svg | 13 + src/assets/svg/logo_pink.svg | 13 + src/assets/svg/logo_white.svg | 11 + src/assets/svg/tokenlist.svg | 30 + src/assets/svg/wordmark.svg | 8 + src/assets/svg/wordmark_pink.svg | 8 + src/assets/svg/wordmark_white.svg | 8 + src/components/AccountDetails/Copy.tsx | 46 + src/components/AccountDetails/Transaction.tsx | 62 + src/components/AccountDetails/index.tsx | 410 + src/components/AddressInputPanel/index.tsx | 128 + src/components/Blocklist/index.tsx | 12 + src/components/Button/Button.stories.tsx | 153 + src/components/Button/index.tsx | 161 +- src/components/Card/index.tsx | 51 + src/components/Column/index.tsx | 23 + src/components/Confetti/index.tsx | 32 + src/components/CurrencyInputPanel/index.tsx | 248 + src/components/CurrencyLogo/index.tsx | 56 + src/components/DoubleLogo/index.tsx | 40 + .../FormattedCurrencyAmount/index.tsx | 22 + src/components/Header/Polling.tsx | 94 + src/components/Header/URLWarning.tsx | 47 + src/components/Header/UniBalanceContent.tsx | 127 + src/components/Header/index.tsx | 365 +- src/components/Identicon/index.tsx | 22 +- .../InputStepCounter/InputStepCounter.tsx | 123 + .../LineChart/LineChart.stories.tsx | 90 + src/components/LineChart/data.ts | 152 + src/components/LineChart/index.tsx | 169 + src/components/ListLogo/index.tsx | 26 + src/components/Loader/index.tsx | 46 + src/components/Logo/index.tsx | 34 + src/components/Menu/index.tsx | 137 + src/components/Modal/index.tsx | 142 + src/components/ModalViews/index.tsx | 72 + src/components/NavigationTabs/index.tsx | 107 + src/components/NumericalInput/index.tsx | 99 + src/components/Popover/index.tsx | 118 + src/components/Popups/ClaimPopup.tsx | 113 + src/components/Popups/ListUpdatePopup.tsx | 112 + src/components/Popups/PopupItem.tsx | 100 + src/components/Popups/TransactionPopup.tsx | 41 + src/components/Popups/index.tsx | 73 + src/components/PositionCard/V1.tsx | 68 + src/components/PositionCard/index.tsx | 341 + src/components/ProgressSteps/index.tsx | 80 + src/components/QuestionHelper/index.tsx | 82 + src/components/Row/index.tsx | 34 +- src/components/SearchModal/CommonBases.tsx | 73 + src/components/SearchModal/CurrencyList.tsx | 263 + src/components/SearchModal/CurrencySearch.tsx | 234 + .../SearchModal/CurrencySearchModal.tsx | 104 + src/components/SearchModal/ImportList.tsx | 163 + src/components/SearchModal/ImportRow.tsx | 108 + src/components/SearchModal/ImportToken.tsx | 164 + src/components/SearchModal/Manage.tsx | 89 + src/components/SearchModal/ManageLists.tsx | 377 + src/components/SearchModal/ManageTokens.tsx | 143 + src/components/SearchModal/SortButton.tsx | 34 + src/components/SearchModal/filtering.ts | 70 + src/components/SearchModal/sorting.ts | 50 + src/components/SearchModal/styleds.tsx | 114 + src/components/Settings/index.tsx | 247 + src/components/Slider/index.tsx | 120 + src/components/Toggle/ListToggle.tsx | 56 + src/components/Toggle/MultiToggle.stories.tsx | 35 + src/components/Toggle/MultiToggle.tsx | 52 + src/components/Toggle/index.tsx | 54 + src/components/TokenWarningModal/index.tsx | 22 + src/components/Tooltip/index.tsx | 31 + .../TransactionConfirmationModal/index.tsx | 225 + src/components/TransactionSettings/index.tsx | 252 + src/components/WalletModal/Option.tsx | 140 + src/components/WalletModal/PendingView.tsx | 130 + src/components/WalletModal/index.tsx | 368 + src/components/Web3ReactManager/index.tsx | 76 + src/components/Web3Status/index.tsx | 190 +- .../analytics/GoogleAnalyticsReporter.tsx | 16 +- src/components/claim/AddressClaimModal.tsx | 193 + src/components/claim/ClaimModal.tsx | 207 + src/components/earn/ClaimRewardModal.tsx | 109 + src/components/earn/PoolCard.tsx | 175 + src/components/earn/StakingModal.tsx | 265 + src/components/earn/UnstakingModal.tsx | 120 + src/components/earn/styled.ts | 80 + src/components/swap/AdvancedSwapDetails.tsx | 119 + .../swap/AdvancedSwapDetailsDropdown.tsx | 30 + src/components/swap/BetterTradeLink.tsx | 74 + src/components/swap/ConfirmSwapModal.tsx | 110 + src/components/swap/FormattedPriceImpact.tsx | 16 + src/components/swap/SwapHeader.tsx | 24 + src/components/swap/SwapModalFooter.tsx | 128 + src/components/swap/SwapModalHeader.tsx | 128 + src/components/swap/SwapRoute.tsx | 29 + src/components/swap/TradePrice.tsx | 44 + .../swap/UnsupportedCurrencyFooter.tsx | 105 + .../swap/confirmPriceImpactWithoutFee.ts | 26 + src/components/swap/styleds.tsx | 153 + src/components/vote/DelegateModal.tsx | 133 + src/components/vote/VoteModal.tsx | 144 + .../abis/argent-wallet-detector.json | 104 + src/constants/abis/argent-wallet-detector.ts | 5 + src/constants/abis/ens-public-resolver.json | 816 + src/constants/abis/ens-registrar.json | 422 + src/constants/abis/erc20.json | 117 + src/constants/abis/erc20.ts | 10 + src/constants/abis/erc20_bytes32.json | 30 + src/constants/abis/migrator.json | 55 + src/constants/abis/migrator.ts | 5 + src/constants/abis/staking-rewards.ts | 9 + src/constants/abis/unisocks.json | 471 + src/constants/abis/weth.json | 279 + src/constants/index.ts | 215 +- src/constants/lists.ts | 40 + src/constants/multicall/abi.json | 143 + src/constants/multicall/index.ts | 12 + src/constants/proposals/index.ts | 4 + src/constants/proposals/uniswap_grants.ts | 106 + .../uniswap-v2-unsupported.tokenlist.json | 22 + src/constants/v1/index.ts | 17 + src/constants/v1/v1_exchange.json | 971 + src/constants/v1/v1_factory.json | 67 + src/constants/wallet.ts | 77 - src/data/Allowances.ts | 17 + src/data/Reserves.ts | 62 + src/data/TotalSupply.ts | 14 + src/data/V1.ts | 157 + src/hooks/StakingRewards.json | 474 + src/hooks/Tokens.ts | 188 + src/hooks/Trades.ts | 170 + src/hooks/index.ts | 87 + src/hooks/useAddTokenToMetamask.ts | 42 + src/hooks/useApproveCallback.ts | 111 + src/hooks/useColor.ts | 90 + src/hooks/useContract.ts | 130 + src/hooks/useCopyClipboard.ts | 26 + src/hooks/useCurrentBlockTimestamp.ts | 9 + src/hooks/useDebounce.ts | 22 + src/hooks/useENS.ts | 21 + src/hooks/useENSAddress.ts | 35 + src/hooks/useENSContentHash.ts | 32 + src/hooks/useENSName.ts | 37 + src/hooks/useFetchListCallback.ts | 51 + src/hooks/useHttpLocations.ts | 17 + src/hooks/useInterval.ts | 25 + src/hooks/useIsArgentWallet.ts | 10 + src/hooks/useIsWindowVisible.ts | 28 + src/hooks/useLast.ts | 33 + src/hooks/useOnClickOutside.tsx | 26 + src/hooks/useParsedQueryString.ts | 11 + src/hooks/usePrevious.ts | 16 + src/hooks/useSocksBalance.ts | 19 + src/hooks/useSwapCallback.ts | 244 + src/hooks/useTheme.ts | 6 + src/hooks/useTimestampFromBlock.ts | 19 + src/hooks/useToggle.ts | 7 + src/hooks/useToggledVersion.ts | 15 + src/hooks/useTransactionDeadline.ts | 15 + src/hooks/useWindowSize.ts | 31 + src/hooks/useWrapCallback.ts | 75 + src/hooks/web3React.ts | 89 - src/i18n.ts | 23 + src/index.tsx | 122 +- src/pages/App.tsx | 193 +- src/pages/AppBody.tsx | 19 + src/pages/Home/index.tsx | 4 - src/pages/Pool/PoolPage.tsx | 5 - src/pages/Pool/PoolsOverview.tsx | 5 - src/pages/Protocol/index.tsx | 5 - src/pages/Token/TokenPage.tsx | 5 - src/pages/Token/TokensOverview.tsx | 5 - src/pages/Wallets/index.tsx | 5 - src/react-app-env.d.ts | 26 + src/serviceWorker.ts | 146 - src/setupTests.ts | 5 - src/state/application/actions.ts | 37 + src/state/application/hooks.ts | 89 + src/state/application/reducer.test.ts | 84 + src/state/application/reducer.ts | 48 + src/state/application/updater.ts | 57 + src/state/burn/actions.ts | 10 + src/state/burn/hooks.ts | 147 + src/state/burn/reducer.ts | 22 + src/state/claim/hooks.ts | 124 + src/state/global/actions.ts | 4 +- src/state/governance/hooks.ts | 232 + src/state/index.ts | 39 +- src/state/lists/actions.ts | 23 + src/state/lists/hooks.ts | 177 + src/state/lists/reducer.test.ts | 525 + src/state/lists/reducer.ts | 187 + src/state/lists/updater.ts | 78 + src/state/mint/actions.ts | 23 + src/state/mint/hooks.ts | 250 + src/state/mint/reducer.test.ts | 28 + src/state/mint/reducer.ts | 79 + src/state/mint/utils.ts | 18 + src/state/multicall/actions.test.ts | 57 + src/state/multicall/actions.ts | 56 + src/state/multicall/hooks.ts | 258 + src/state/multicall/reducer.test.ts | 311 + src/state/multicall/reducer.ts | 111 + src/state/multicall/updater.test.ts | 168 + src/state/multicall/updater.tsx | 207 + src/state/stake/hooks.ts | 289 + src/state/swap/actions.ts | 18 + src/state/swap/hooks.test.ts | 97 + src/state/swap/hooks.ts | 305 + src/state/swap/reducer.test.ts | 36 + src/state/swap/reducer.ts | 83 + src/state/transactions/actions.ts | 33 + src/state/transactions/hooks.tsx | 104 + src/state/transactions/reducer.test.ts | 192 + src/state/transactions/reducer.ts | 65 + src/state/transactions/updater.test.ts | 35 + src/state/transactions/updater.tsx | 93 + src/state/user/actions.ts | 36 +- src/state/user/hooks.tsx | 262 +- src/state/user/reducer.test.ts | 49 +- src/state/user/reducer.ts | 139 +- src/state/wallet/hooks.ts | 156 + src/theme/DarkModeQueryParamReader.tsx | 37 +- src/theme/components.tsx | 143 +- src/theme/index.tsx | 183 +- src/utils/chunkArray.test.ts | 32 + src/utils/chunkArray.ts | 11 + src/utils/computeUniCirculation.test.ts | 36 + src/utils/computeUniCirculation.ts | 112 + src/utils/contenthashToUri.test.skip.ts | 21 + src/utils/contenthashToUri.ts | 43 + src/utils/currencyId.ts | 7 + src/utils/getLibrary.ts | 7 + src/utils/getTokenList.ts | 69 + src/utils/index.test.ts | 102 + src/utils/index.ts | 105 +- src/utils/isZero.ts | 7 + src/utils/listSort.ts | 12 + src/utils/listVersionLabel.ts | 5 + src/utils/maxAmountSpend.ts | 18 + src/utils/parseENSAddress.test.ts | 19 + src/utils/parseENSAddress.ts | 7 + src/utils/prices.test.ts | 40 + src/utils/prices.ts | 76 + src/utils/resolveENSContentHash.ts | 67 + src/utils/retry.test.ts | 66 + src/utils/retry.ts | 69 + src/utils/trades.ts | 27 + src/utils/uriToHttp.test.ts | 28 + src/utils/uriToHttp.ts | 21 + src/utils/useDebouncedChangeHandler.tsx | 40 + src/utils/useUSDCPrice.ts | 66 + src/utils/v1SwapArgument.test.ts | 97 + src/utils/v1SwapArguments.ts | 90 + src/utils/wrappedCurrency.ts | 18 + tsconfig.json | 8 +- yarn.lock | 8604 +++++++- 312 files changed, 34555 insertions(+), 19295 deletions(-) create mode 100644 .DS_Store create mode 100644 .env create mode 100644 .eslintrc.json create mode 100644 .github/ISSUE_TEMPLATE/bug-report.md create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/feature-request.md create mode 100644 .github/workflows/lint.yml create mode 100644 .github/workflows/release.yaml create mode 100644 .github/workflows/tests.yaml create mode 100644 .nvmrc create mode 100644 .prettierrc create mode 100644 .storybook/main.ts create mode 100644 .storybook/manager.ts create mode 100644 .storybook/preview.tsx create mode 100644 .storybook/theme.ts create mode 100644 .yarnrc create mode 100644 LICENSE create mode 100644 cypress.json create mode 100644 cypress/integration/add-liquidity.test.ts create mode 100644 cypress/integration/landing.test.ts create mode 100644 cypress/integration/lists.test.ts create mode 100644 cypress/integration/migrate-v1.test.ts create mode 100644 cypress/integration/pool.test.ts create mode 100644 cypress/integration/remove-liquidity.test.ts create mode 100644 cypress/integration/send.test.ts create mode 100644 cypress/integration/swap.test.ts create mode 100644 cypress/support/commands.d.ts create mode 100644 cypress/support/commands.js create mode 100644 cypress/support/index.js create mode 100644 cypress/tsconfig.json delete mode 100644 package-lock.json create mode 100644 public/451.html create mode 100644 public/images/192x192_App_Icon.png create mode 100644 public/images/512x512_App_Icon.png create mode 100644 public/locales/de.json create mode 100644 public/locales/en.json create mode 100644 public/locales/es-AR.json create mode 100644 public/locales/es-US.json create mode 100644 public/locales/it-IT.json create mode 100644 public/locales/iw.json create mode 100644 public/locales/ro.json create mode 100644 public/locales/ru.json create mode 100644 public/locales/vi.json create mode 100644 public/locales/zh-CN.json create mode 100644 public/locales/zh-TW.json delete mode 100644 public/robots.txt delete mode 100644 src/assets/images/logo.svg delete mode 100644 src/assets/images/logo_white.svg create mode 100644 src/assets/svg/QR.svg create mode 100644 src/assets/svg/lightcircle.svg create mode 100644 src/assets/svg/logo.svg create mode 100644 src/assets/svg/logo_pink.svg create mode 100644 src/assets/svg/logo_white.svg create mode 100644 src/assets/svg/tokenlist.svg create mode 100644 src/assets/svg/wordmark.svg create mode 100644 src/assets/svg/wordmark_pink.svg create mode 100644 src/assets/svg/wordmark_white.svg create mode 100644 src/components/AccountDetails/Copy.tsx create mode 100644 src/components/AccountDetails/Transaction.tsx create mode 100644 src/components/AccountDetails/index.tsx create mode 100644 src/components/AddressInputPanel/index.tsx create mode 100644 src/components/Blocklist/index.tsx create mode 100644 src/components/Button/Button.stories.tsx create mode 100644 src/components/Card/index.tsx create mode 100644 src/components/Column/index.tsx create mode 100644 src/components/Confetti/index.tsx create mode 100644 src/components/CurrencyInputPanel/index.tsx create mode 100644 src/components/CurrencyLogo/index.tsx create mode 100644 src/components/DoubleLogo/index.tsx create mode 100644 src/components/FormattedCurrencyAmount/index.tsx create mode 100644 src/components/Header/Polling.tsx create mode 100644 src/components/Header/URLWarning.tsx create mode 100644 src/components/Header/UniBalanceContent.tsx create mode 100644 src/components/InputStepCounter/InputStepCounter.tsx create mode 100644 src/components/LineChart/LineChart.stories.tsx create mode 100644 src/components/LineChart/data.ts create mode 100644 src/components/LineChart/index.tsx create mode 100644 src/components/ListLogo/index.tsx create mode 100644 src/components/Loader/index.tsx create mode 100644 src/components/Logo/index.tsx create mode 100644 src/components/Menu/index.tsx create mode 100644 src/components/Modal/index.tsx create mode 100644 src/components/ModalViews/index.tsx create mode 100644 src/components/NavigationTabs/index.tsx create mode 100644 src/components/NumericalInput/index.tsx create mode 100644 src/components/Popover/index.tsx create mode 100644 src/components/Popups/ClaimPopup.tsx create mode 100644 src/components/Popups/ListUpdatePopup.tsx create mode 100644 src/components/Popups/PopupItem.tsx create mode 100644 src/components/Popups/TransactionPopup.tsx create mode 100644 src/components/Popups/index.tsx create mode 100644 src/components/PositionCard/V1.tsx create mode 100644 src/components/PositionCard/index.tsx create mode 100644 src/components/ProgressSteps/index.tsx create mode 100644 src/components/QuestionHelper/index.tsx create mode 100644 src/components/SearchModal/CommonBases.tsx create mode 100644 src/components/SearchModal/CurrencyList.tsx create mode 100644 src/components/SearchModal/CurrencySearch.tsx create mode 100644 src/components/SearchModal/CurrencySearchModal.tsx create mode 100644 src/components/SearchModal/ImportList.tsx create mode 100644 src/components/SearchModal/ImportRow.tsx create mode 100644 src/components/SearchModal/ImportToken.tsx create mode 100644 src/components/SearchModal/Manage.tsx create mode 100644 src/components/SearchModal/ManageLists.tsx create mode 100644 src/components/SearchModal/ManageTokens.tsx create mode 100644 src/components/SearchModal/SortButton.tsx create mode 100644 src/components/SearchModal/filtering.ts create mode 100644 src/components/SearchModal/sorting.ts create mode 100644 src/components/SearchModal/styleds.tsx create mode 100644 src/components/Settings/index.tsx create mode 100644 src/components/Slider/index.tsx create mode 100644 src/components/Toggle/ListToggle.tsx create mode 100644 src/components/Toggle/MultiToggle.stories.tsx create mode 100644 src/components/Toggle/MultiToggle.tsx create mode 100644 src/components/Toggle/index.tsx create mode 100644 src/components/TokenWarningModal/index.tsx create mode 100644 src/components/Tooltip/index.tsx create mode 100644 src/components/TransactionConfirmationModal/index.tsx create mode 100644 src/components/TransactionSettings/index.tsx create mode 100644 src/components/WalletModal/Option.tsx create mode 100644 src/components/WalletModal/PendingView.tsx create mode 100644 src/components/WalletModal/index.tsx create mode 100644 src/components/Web3ReactManager/index.tsx create mode 100644 src/components/claim/AddressClaimModal.tsx create mode 100644 src/components/claim/ClaimModal.tsx create mode 100644 src/components/earn/ClaimRewardModal.tsx create mode 100644 src/components/earn/PoolCard.tsx create mode 100644 src/components/earn/StakingModal.tsx create mode 100644 src/components/earn/UnstakingModal.tsx create mode 100644 src/components/earn/styled.ts create mode 100644 src/components/swap/AdvancedSwapDetails.tsx create mode 100644 src/components/swap/AdvancedSwapDetailsDropdown.tsx create mode 100644 src/components/swap/BetterTradeLink.tsx create mode 100644 src/components/swap/ConfirmSwapModal.tsx create mode 100644 src/components/swap/FormattedPriceImpact.tsx create mode 100644 src/components/swap/SwapHeader.tsx create mode 100644 src/components/swap/SwapModalFooter.tsx create mode 100644 src/components/swap/SwapModalHeader.tsx create mode 100644 src/components/swap/SwapRoute.tsx create mode 100644 src/components/swap/TradePrice.tsx create mode 100644 src/components/swap/UnsupportedCurrencyFooter.tsx create mode 100644 src/components/swap/confirmPriceImpactWithoutFee.ts create mode 100644 src/components/swap/styleds.tsx create mode 100644 src/components/vote/DelegateModal.tsx create mode 100644 src/components/vote/VoteModal.tsx create mode 100644 src/constants/abis/argent-wallet-detector.json create mode 100644 src/constants/abis/argent-wallet-detector.ts create mode 100644 src/constants/abis/ens-public-resolver.json create mode 100644 src/constants/abis/ens-registrar.json create mode 100644 src/constants/abis/erc20.json create mode 100644 src/constants/abis/erc20.ts create mode 100644 src/constants/abis/erc20_bytes32.json create mode 100644 src/constants/abis/migrator.json create mode 100644 src/constants/abis/migrator.ts create mode 100644 src/constants/abis/staking-rewards.ts create mode 100644 src/constants/abis/unisocks.json create mode 100644 src/constants/abis/weth.json create mode 100644 src/constants/lists.ts create mode 100644 src/constants/multicall/abi.json create mode 100644 src/constants/multicall/index.ts create mode 100644 src/constants/proposals/index.ts create mode 100644 src/constants/proposals/uniswap_grants.ts create mode 100644 src/constants/tokenLists/uniswap-v2-unsupported.tokenlist.json create mode 100644 src/constants/v1/index.ts create mode 100644 src/constants/v1/v1_exchange.json create mode 100644 src/constants/v1/v1_factory.json delete mode 100644 src/constants/wallet.ts create mode 100644 src/data/Allowances.ts create mode 100644 src/data/Reserves.ts create mode 100644 src/data/TotalSupply.ts create mode 100644 src/data/V1.ts create mode 100644 src/hooks/StakingRewards.json create mode 100644 src/hooks/Tokens.ts create mode 100644 src/hooks/Trades.ts create mode 100644 src/hooks/index.ts create mode 100644 src/hooks/useAddTokenToMetamask.ts create mode 100644 src/hooks/useApproveCallback.ts create mode 100644 src/hooks/useColor.ts create mode 100644 src/hooks/useContract.ts create mode 100644 src/hooks/useCopyClipboard.ts create mode 100644 src/hooks/useCurrentBlockTimestamp.ts create mode 100644 src/hooks/useDebounce.ts create mode 100644 src/hooks/useENS.ts create mode 100644 src/hooks/useENSAddress.ts create mode 100644 src/hooks/useENSContentHash.ts create mode 100644 src/hooks/useFetchListCallback.ts create mode 100644 src/hooks/useHttpLocations.ts create mode 100644 src/hooks/useInterval.ts create mode 100644 src/hooks/useIsArgentWallet.ts create mode 100644 src/hooks/useIsWindowVisible.ts create mode 100644 src/hooks/useLast.ts create mode 100644 src/hooks/useOnClickOutside.tsx create mode 100644 src/hooks/useParsedQueryString.ts create mode 100644 src/hooks/usePrevious.ts create mode 100644 src/hooks/useSocksBalance.ts create mode 100644 src/hooks/useSwapCallback.ts create mode 100644 src/hooks/useTheme.ts create mode 100644 src/hooks/useTimestampFromBlock.ts create mode 100644 src/hooks/useToggle.ts create mode 100644 src/hooks/useToggledVersion.ts create mode 100644 src/hooks/useTransactionDeadline.ts create mode 100644 src/hooks/useWindowSize.ts create mode 100644 src/hooks/useWrapCallback.ts delete mode 100644 src/hooks/web3React.ts create mode 100644 src/i18n.ts create mode 100644 src/pages/AppBody.tsx delete mode 100644 src/pages/Home/index.tsx delete mode 100644 src/pages/Pool/PoolPage.tsx delete mode 100644 src/pages/Pool/PoolsOverview.tsx delete mode 100644 src/pages/Protocol/index.tsx delete mode 100644 src/pages/Token/TokenPage.tsx delete mode 100644 src/pages/Token/TokensOverview.tsx delete mode 100644 src/pages/Wallets/index.tsx delete mode 100644 src/serviceWorker.ts delete mode 100644 src/setupTests.ts create mode 100644 src/state/application/actions.ts create mode 100644 src/state/application/hooks.ts create mode 100644 src/state/application/reducer.test.ts create mode 100644 src/state/application/reducer.ts create mode 100644 src/state/application/updater.ts create mode 100644 src/state/burn/actions.ts create mode 100644 src/state/burn/hooks.ts create mode 100644 src/state/burn/reducer.ts create mode 100644 src/state/claim/hooks.ts create mode 100644 src/state/governance/hooks.ts create mode 100644 src/state/lists/actions.ts create mode 100644 src/state/lists/hooks.ts create mode 100644 src/state/lists/reducer.test.ts create mode 100644 src/state/lists/reducer.ts create mode 100644 src/state/lists/updater.ts create mode 100644 src/state/mint/actions.ts create mode 100644 src/state/mint/hooks.ts create mode 100644 src/state/mint/reducer.test.ts create mode 100644 src/state/mint/reducer.ts create mode 100644 src/state/mint/utils.ts create mode 100644 src/state/multicall/actions.test.ts create mode 100644 src/state/multicall/actions.ts create mode 100644 src/state/multicall/hooks.ts create mode 100644 src/state/multicall/reducer.test.ts create mode 100644 src/state/multicall/reducer.ts create mode 100644 src/state/multicall/updater.test.ts create mode 100644 src/state/multicall/updater.tsx create mode 100644 src/state/stake/hooks.ts create mode 100644 src/state/swap/actions.ts create mode 100644 src/state/swap/hooks.test.ts create mode 100644 src/state/swap/hooks.ts create mode 100644 src/state/swap/reducer.test.ts create mode 100644 src/state/swap/reducer.ts create mode 100644 src/state/transactions/actions.ts create mode 100644 src/state/transactions/hooks.tsx create mode 100644 src/state/transactions/reducer.test.ts create mode 100644 src/state/transactions/reducer.ts create mode 100644 src/state/transactions/updater.test.ts create mode 100644 src/state/transactions/updater.tsx create mode 100644 src/state/wallet/hooks.ts create mode 100644 src/utils/chunkArray.test.ts create mode 100644 src/utils/chunkArray.ts create mode 100644 src/utils/computeUniCirculation.test.ts create mode 100644 src/utils/computeUniCirculation.ts create mode 100644 src/utils/contenthashToUri.test.skip.ts create mode 100644 src/utils/contenthashToUri.ts create mode 100644 src/utils/currencyId.ts create mode 100644 src/utils/getLibrary.ts create mode 100644 src/utils/getTokenList.ts create mode 100644 src/utils/index.test.ts create mode 100644 src/utils/isZero.ts create mode 100644 src/utils/listSort.ts create mode 100644 src/utils/listVersionLabel.ts create mode 100644 src/utils/maxAmountSpend.ts create mode 100644 src/utils/parseENSAddress.test.ts create mode 100644 src/utils/parseENSAddress.ts create mode 100644 src/utils/prices.test.ts create mode 100644 src/utils/prices.ts create mode 100644 src/utils/resolveENSContentHash.ts create mode 100644 src/utils/retry.test.ts create mode 100644 src/utils/retry.ts create mode 100644 src/utils/trades.ts create mode 100644 src/utils/uriToHttp.test.ts create mode 100644 src/utils/uriToHttp.ts create mode 100644 src/utils/useDebouncedChangeHandler.tsx create mode 100644 src/utils/useUSDCPrice.ts create mode 100644 src/utils/v1SwapArgument.test.ts create mode 100644 src/utils/v1SwapArguments.ts create mode 100644 src/utils/wrappedCurrency.ts diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..feca8613504bcd7430524202412f605a970dd548 GIT binary patch literal 6148 zcmeH~JqiLr422VS3&Cbf%V|7-HyA`u-~~i21wpZ&qx41vI)z6#m+=T zbn`f`MFtU>!%bynVPcAXCwIBY>3lz3j@RpDteEA>YT$!Ro{xoGkN^pg011!)3H%HJ zJGWu;MJOW)kN^pc1nmD%;HEXTh5D}p!AAgSkF*=sK1)E0C7?C6g(3sfXoW_r`WRw) zZ-`o{NKSp&Hs}YZb^Uy{)~Y3 z+x>QfkIJ+4?ei>u$gHg!9O~r=FP8vp>?mHs-SE8F0$NjBC^9f!1RMhc34E2n6Mwc5 Aa{vGU literal 0 HcmV?d00001 diff --git a/.env b/.env new file mode 100644 index 00000000..e188917c --- /dev/null +++ b/.env @@ -0,0 +1,2 @@ +REACT_APP_CHAIN_ID="1" +REACT_APP_NETWORK_URL="https://mainnet.infura.io/v3/4bf032f2d38a4ed6bb975b80d6340847" \ No newline at end of file diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 00000000..73d09ab2 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,31 @@ +{ + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": 2020, + "sourceType": "module", + "ecmaFeatures": { + // Allows for the parsing of JSX + "jsx": true + } + }, + "ignorePatterns": ["node_modules/**/*"], + "settings": { + "react": { + "version": "detect" + } + }, + "extends": [ + "plugin:react/recommended", + "plugin:@typescript-eslint/recommended", + "plugin:react-hooks/recommended", + "prettier/@typescript-eslint", + "plugin:prettier/recommended" + ], + "rules": { + "@typescript-eslint/explicit-function-return-type": "off", + "prettier/prettier": "error", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/ban-ts-comment": "off", + "@typescript-eslint/ban-ts-ignore": "off" + } +} diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md new file mode 100644 index 00000000..f4b5bf03 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -0,0 +1,22 @@ +--- +name: Bug Report +about: Describe an issue in the Uniswap Interface +title: '' +labels: bug +assignees: '' +--- + +**Bug Description** +A clear and concise description of the bug. + +**Steps to Reproduce** + +1. Go to ... +2. Click on ... + ... + +**Expected Behavior** +A clear and concise description of what you expected to happen. + +**Additional Context** +Add any other context about the problem here (screenshots, whether the bug only occurs only in certain mobile/desktop/browser environments, etc.) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000..3e176a10 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,8 @@ +blank_issues_enabled: false +contact_links: + - name: Support + url: https://discord.gg/FCfyBSbCU5 + about: Please ask and answer questions here + - name: List a token + url: https://github.com/Uniswap/default-token-list#adding-a-token + about: Any requests to add a token to Uniswap should go here diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md new file mode 100644 index 00000000..d6eda870 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request.md @@ -0,0 +1,19 @@ +--- +name: Feature Request +about: Suggest an idea for improving the UX of the Uniswap Interface +title: '' +labels: 'improvement' +assignees: '' +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 00000000..8da30a37 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,48 @@ +name: Lint + +on: + push: + branches: + - main + pull_request_target: + branches: + - main + +jobs: + run-linters: + name: Run linters + runs-on: ubuntu-latest + + steps: + - name: Check out Git repository + uses: actions/checkout@v2 + + - name: Set up node + uses: actions/setup-node@v1 + with: + node-version: 12 + always-auth: true + registry-url: https://registry.npmjs.org + + - name: Set output of cache + id: yarn-cache + run: echo "::set-output name=dir::$(yarn cache dir)" + + - name: Node dependency cache + uses: actions/cache@v1 + with: + path: ${{ steps.yarn-cache.outputs.dir }} + key: yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + yarn- + + - name: Install dependencies + run: yarn install --frozen-lockfile + + - name: Run linters + uses: wearerequired/lint-action@77d70b9a07ecb93bc98dc46dc27d96c4f004d035 + with: + github_token: ${{ secrets.github_token }} + eslint: true + eslint_extensions: js,jsx,ts,tsx,json + auto_fix: true diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 00000000..9db54483 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,104 @@ +name: Release +on: + # schedule: + # - cron: '0 12 * * 1-4' # every day 12:00 UTC Monday-Thursday + + # manual trigger + workflow_dispatch: + +jobs: + bump_version: + name: Bump Version + runs-on: ubuntu-latest + outputs: + new_tag: ${{ steps.github_tag_action.outputs.new_tag }} + changelog: ${{ steps.github_tag_action.outputs.changelog }} + steps: + - name: Checkout + uses: actions/checkout@v1 + + - name: Bump version and push tag + id: github_tag_action + uses: mathieudutour/github-tag-action@v4.5 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + release_branches: .* + + create_release: + name: Create Release + runs-on: ubuntu-latest + needs: bump_version + if: ${{ needs.bump_version.outputs.new_tag != null }} + steps: + - name: Checkout + uses: actions/checkout@v1 + + - uses: actions/setup-node@v1 + with: + node-version: '12' + always-auth: true + registry-url: https://registry.npmjs.org + + - name: Install dependencies + run: yarn install --frozen-lockfile + + - name: Build the IPFS bundle + run: yarn build + + - name: Pin to IPFS + id: upload + uses: anantaramdas/ipfs-pinata-deploy-action@39bbda1ce1fe24c69c6f57861b8038278d53688d + with: + pin-name: Uniswap ${{ needs.bump_version.outputs.new_tag }} + path: './build' + pinata-api-key: ${{ secrets.PINATA_API_KEY }} + pinata-secret-api-key: ${{ secrets.PINATA_API_SECRET_KEY }} + + - name: Convert CIDv0 to CIDv1 + id: convert_cidv0 + uses: uniswap/convert-cidv0-cidv1@v1.0.0 + with: + cidv0: ${{ steps.upload.outputs.hash }} + + - name: Update DNS with new IPFS hash + env: + CLOUDFLARE_TOKEN: ${{ secrets.CLOUDFLARE_TOKEN }} + RECORD_DOMAIN: 'uniswap.org' + RECORD_NAME: '_dnslink.app' + CLOUDFLARE_ZONE_ID: ${{ secrets.CLOUDFLARE_ZONE_ID }} + uses: textileio/cloudflare-update-dnslink@0fe7b7a1ffc865db3a4da9773f0f987447ad5848 + with: + cid: ${{ steps.upload.outputs.hash }} + + - name: Create GitHub Release + id: create_release + uses: actions/create-release@v1.1.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ needs.bump_version.outputs.new_tag }} + release_name: Release ${{ needs.bump_version.outputs.new_tag }} + body: | + IPFS hash of the deployment: + - CIDv0: `${{ steps.upload.outputs.hash }}` + - CIDv1: `${{ steps.convert_cidv0.outputs.cidv1 }}` + + The latest release is always accessible via our alias to the Cloudflare IPFS gateway at [app.uniswap.org](https://app.uniswap.org). + + You can also access the Uniswap Interface directly from an IPFS gateway. + The Uniswap interface uses [`localStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage) to store your settings. + **Beware** that other sites you access via the _same_ IPFS gateway can read and modify your settings on the Uniswap interface without your permission. + You can avoid this issue by using a subdomain IPFS gateway, or our alias to the latest release at [app.uniswap.org](https://app.uniswap.org). + The preferred URLs below are safe to use to access this specific release. + + Preferred URLs: + - https://${{ steps.convert_cidv0.outputs.cidv1 }}.ipfs.dweb.link/ + - https://${{ steps.convert_cidv0.outputs.cidv1 }}.ipfs.cf-ipfs.com/ + - [ipfs://${{ steps.upload.outputs.hash }}/](ipfs://${{ steps.upload.outputs.hash }}/) + + Other IPFS gateways: + - https://cloudflare-ipfs.com/ipfs/${{ steps.upload.outputs.hash }}/ + - https://ipfs.infura.io/ipfs/${{ steps.upload.outputs.hash }}/ + - https://ipfs.io/ipfs/${{ steps.upload.outputs.hash }}/ + + ${{ needs.bump_version.outputs.changelog }} diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml new file mode 100644 index 00000000..8e7cb59c --- /dev/null +++ b/.github/workflows/tests.yaml @@ -0,0 +1,64 @@ +name: Tests +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + integration-tests: + name: Integration tests + runs-on: ubuntu-16.04 + steps: + - name: Checkout + uses: actions/checkout@v1 + - uses: actions/setup-node@v1 + with: + node-version: '12' + always-auth: true + registry-url: https://registry.npmjs.org + + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" + - uses: actions/cache@v1 + id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + - run: yarn install --frozen-lockfile + - run: yarn cypress install + - run: yarn build + env: + CI: false + REACT_APP_NETWORK_URL: 'https://mainnet.infura.io/v3/4bf032f2d38a4ed6bb975b80d6340847' + - run: yarn integration-test + + unit-tests: + name: Unit tests + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v1 + - uses: actions/setup-node@v1 + with: + node-version: '12' + always-auth: true + registry-url: https://registry.npmjs.org + + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" + - uses: actions/cache@v1 + id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + - run: yarn install --frozen-lockfile + - run: yarn test diff --git a/.gitignore b/.gitignore index c0676348..3c3629e6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,23 +1 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# production -/build - -# misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* +node_modules diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 00000000..b009dfb9 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +lts/* diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..31ba22d8 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,5 @@ +{ + "semi": false, + "singleQuote": true, + "printWidth": 120 +} diff --git a/.storybook/main.ts b/.storybook/main.ts new file mode 100644 index 00000000..89de166d --- /dev/null +++ b/.storybook/main.ts @@ -0,0 +1,16 @@ +const { dirname, join, parse, resolve } = require('path') +const { existsSync } = require('fs') + +module.exports = { + stories: ['../src/**/*.stories.@(ts|tsx)'], + addons: ['@storybook/addon-links', '@storybook/addon-essentials', '@storybook/preset-create-react-app'], + typescript: { + check: true, + checkOptions: {}, + reactDocgen: 'react-docgen-typescript', + reactDocgenTypescriptOptions: { + shouldExtractLiteralValuesFromEnum: true, + propFilter: prop => (prop.parent ? !/node_modules/.test(prop.parent.fileName) : true) + } + } +} diff --git a/.storybook/manager.ts b/.storybook/manager.ts new file mode 100644 index 00000000..10d4ed11 --- /dev/null +++ b/.storybook/manager.ts @@ -0,0 +1,4 @@ +import { addons } from '@storybook/addons' +import { light } from './theme' + +addons.setConfig({ theme: light }) diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx new file mode 100644 index 00000000..ebaf8520 --- /dev/null +++ b/.storybook/preview.tsx @@ -0,0 +1,77 @@ +import { ThemeProvider as SCThemeProvider } from 'styled-components' +import { Story } from '@storybook/react/types-6-0' +import React from 'react' +import { FixedGlobalStyle, theme, ThemedGlobalStyle } from '../src/theme' +import * as storybookThemes from './theme' + +export const parameters = { + actions: { argTypesRegex: '^on[A-Z].*' }, + dependencies: { + withStoriesOnly: true, + hideEmpty: true + }, + docs: { + theme: storybookThemes.light + }, + viewport: { + viewports: { + mobile: { + name: 'iPhone X', + styles: { + width: '375px', + height: '812px' + } + }, + tablet: { + name: 'iPad', + styles: { + width: '768px', + height: '1024px' + } + }, + laptop: { + name: 'Laptop', + styles: { + width: '1024px', + height: '768px' + } + }, + desktop: { + name: 'Desktop', + styles: { + width: '1440px', + height: '1024px' + } + } + } + } +} + +export const globalTypes = { + theme: { + name: 'Theme', + description: 'Global theme for components', + defaultValue: 'light', + toolbar: { + icon: 'circlehollow', + items: ['light', 'dark'] + } + } +} + +const withProviders = (Component: Story, context: Record) => { + const THEME = theme(context.globals.theme === 'dark') + return ( + <> + + + +
+ +
+
+ + ) +} + +export const decorators = [withProviders] diff --git a/.storybook/theme.ts b/.storybook/theme.ts new file mode 100644 index 00000000..3e574320 --- /dev/null +++ b/.storybook/theme.ts @@ -0,0 +1,17 @@ +import { create } from '@storybook/theming' + +// this themes the storybook UI +const uniswapBaseTheme = { + brandTitle: 'Uniswap Design', + brandUrl: 'https://uniswap.org', + brandImage: 'https://ipfs.io/ipfs/QmNa8mQkrNKp1WEEeGjFezDmDeodkWRevGFN8JCV7b4Xir' +} +export const light = create({ + base: 'light', + ...uniswapBaseTheme +}) + +// export const dark = create({ +// base: 'dark', +// ...uniswapBaseTheme, +// }) diff --git a/.yarnrc b/.yarnrc new file mode 100644 index 00000000..5455c6c5 --- /dev/null +++ b/.yarnrc @@ -0,0 +1 @@ +ignore-scripts true diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..f288702d --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md index 51b87588..e55c2085 100644 --- a/README.md +++ b/README.md @@ -1,44 +1,66 @@ -This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app), using the [Redux](https://redux.js.org/) and [Redux Toolkit](https://redux-toolkit.js.org/) template. - -## Available Scripts - -In the project directory, you can run: - -### `yarn start` - -Runs the app in the development mode.
-Open [http://localhost:3000](http://localhost:3000) to view it in the browser. - -The page will reload if you make edits.
-You will also see any lint errors in the console. - -### `yarn test` - -Launches the test runner in the interactive watch mode.
-See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. - -### `yarn build` - -Builds the app for production to the `build` folder.
-It correctly bundles React in production mode and optimizes the build for the best performance. - -The build is minified and the filenames include the hashes.
-Your app is ready to be deployed! - -See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. - -### `yarn eject` - -**Note: this is a one-way operation. Once you `eject`, you can’t go back!** - -If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. - -Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. - -You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. - -## Learn More - -You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). - -To learn React, check out the [React documentation](https://reactjs.org/). +# Uniswap Interface + +[![Lint](https://github.com/Uniswap/uniswap-interface/workflows/Lint/badge.svg)](https://github.com/Uniswap/uniswap-interface/actions?query=workflow%3ALint) +[![Tests](https://github.com/Uniswap/uniswap-interface/workflows/Tests/badge.svg)](https://github.com/Uniswap/uniswap-interface/actions?query=workflow%3ATests) +[![Styled With Prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://prettier.io/) + +An open source interface for Uniswap -- a protocol for decentralized exchange of Ethereum tokens. + +- Website: [uniswap.org](https://uniswap.org/) +- Interface: [app.uniswap.org](https://app.uniswap.org) +- Docs: [uniswap.org/docs/](https://uniswap.org/docs/) +- Twitter: [@UniswapProtocol](https://twitter.com/UniswapProtocol) +- Reddit: [/r/Uniswap](https://www.reddit.com/r/Uniswap/) +- Email: [contact@uniswap.org](mailto:contact@uniswap.org) +- Discord: [Uniswap](https://discord.gg/FCfyBSbCU5) +- Whitepaper: [Link](https://hackmd.io/C-DvwDSfSxuh-Gd4WKE_ig) + +## Accessing the Uniswap Interface + +To access the Uniswap Interface, use an IPFS gateway link from the +[latest release](https://github.com/Uniswap/uniswap-interface/releases/latest), +or visit [app.uniswap.org](https://app.uniswap.org). + +## Listing a token + +Please see the +[@uniswap/default-token-list](https://github.com/uniswap/default-token-list) +repository. + +## Development + +### Install Dependencies + +```bash +yarn +``` + +### Run + +```bash +yarn start +``` + +### Configuring the environment (optional) + +To have the interface default to a different network when a wallet is not connected: + +1. Make a copy of `.env` named `.env.local` +2. Change `REACT_APP_NETWORK_ID` to `"{YOUR_NETWORK_ID}"` +3. Change `REACT_APP_NETWORK_URL` to e.g. `"https://{YOUR_NETWORK_ID}.infura.io/v3/{YOUR_INFURA_KEY}"` + +Note that the interface only works on testnets where both +[Uniswap V2](https://uniswap.org/docs/v2/smart-contracts/factory/) and +[multicall](https://github.com/makerdao/multicall) are deployed. +The interface will not work on other networks. + +## Contributions + +**Please open all pull requests against the `master` branch.** +CI checks will run against all PRs. + +## Accessing Uniswap Interface V1 + +The Uniswap Interface supports swapping against, and migrating or removing liquidity from Uniswap V1. However, +if you would like to use Uniswap V1, the Uniswap V1 interface for mainnet and testnets is accessible via IPFS gateways +linked from the [v1.0.0 release](https://github.com/Uniswap/uniswap-interface/releases/tag/v1.0.0). diff --git a/cypress.json b/cypress.json new file mode 100644 index 00000000..c35d015d --- /dev/null +++ b/cypress.json @@ -0,0 +1,8 @@ +{ + "baseUrl": "http://localhost:3000", + "pluginsFile": false, + "fixturesFolder": false, + "supportFile": "cypress/support/index.js", + "video": false, + "defaultCommandTimeout": 10000 +} diff --git a/cypress/integration/add-liquidity.test.ts b/cypress/integration/add-liquidity.test.ts new file mode 100644 index 00000000..9703c6c7 --- /dev/null +++ b/cypress/integration/add-liquidity.test.ts @@ -0,0 +1,50 @@ +describe('Add Liquidity', () => { + it('loads the two correct tokens', () => { + cy.visit('/add/0xF9bA5210F91D0474bd1e1DcDAeC4C58E359AaD85-0xc778417E063141139Fce010982780140Aa0cD5Ab') + cy.get('#add-liquidity-input-tokena .token-symbol-container').should('contain.text', 'MKR') + cy.get('#add-liquidity-input-tokenb .token-symbol-container').should('contain.text', 'ETH') + }) + + it('does not crash if ETH is duplicated', () => { + cy.visit('/add/0xc778417E063141139Fce010982780140Aa0cD5Ab-0xc778417E063141139Fce010982780140Aa0cD5Ab') + cy.get('#add-liquidity-input-tokena .token-symbol-container').should('contain.text', 'ETH') + cy.get('#add-liquidity-input-tokenb .token-symbol-container').should('not.contain.text', 'ETH') + }) + + it('token not in storage is loaded', () => { + cy.visit('/add/0xb290b2f9f8f108d03ff2af3ac5c8de6de31cdf6d-0xF9bA5210F91D0474bd1e1DcDAeC4C58E359AaD85') + cy.get('#add-liquidity-input-tokena .token-symbol-container').should('contain.text', 'SKL') + cy.get('#add-liquidity-input-tokenb .token-symbol-container').should('contain.text', 'MKR') + }) + + it('single token can be selected', () => { + cy.visit('/add/0xb290b2f9f8f108d03ff2af3ac5c8de6de31cdf6d') + cy.get('#add-liquidity-input-tokena .token-symbol-container').should('contain.text', 'SKL') + cy.visit('/add/0xF9bA5210F91D0474bd1e1DcDAeC4C58E359AaD85') + cy.get('#add-liquidity-input-tokena .token-symbol-container').should('contain.text', 'MKR') + }) + + it('redirects /add/token-token to add/token/token', () => { + cy.visit('/add/0xb290b2f9f8f108d03ff2af3ac5c8de6de31cdf6d-0xF9bA5210F91D0474bd1e1DcDAeC4C58E359AaD85') + cy.url().should( + 'contain', + '/add/0xb290b2f9f8f108d03ff2af3ac5c8de6de31cdf6d/0xF9bA5210F91D0474bd1e1DcDAeC4C58E359AaD85' + ) + }) + + it('redirects /add/WETH-token to /add/WETH-address/token', () => { + cy.visit('/add/0xc778417E063141139Fce010982780140Aa0cD5Ab-0xF9bA5210F91D0474bd1e1DcDAeC4C58E359AaD85') + cy.url().should( + 'contain', + '/add/0xc778417E063141139Fce010982780140Aa0cD5Ab/0xF9bA5210F91D0474bd1e1DcDAeC4C58E359AaD85' + ) + }) + + it('redirects /add/token-WETH to /add/token/WETH-address', () => { + cy.visit('/add/0xF9bA5210F91D0474bd1e1DcDAeC4C58E359AaD85-0xc778417E063141139Fce010982780140Aa0cD5Ab') + cy.url().should( + 'contain', + '/add/0xF9bA5210F91D0474bd1e1DcDAeC4C58E359AaD85/0xc778417E063141139Fce010982780140Aa0cD5Ab' + ) + }) +}) diff --git a/cypress/integration/landing.test.ts b/cypress/integration/landing.test.ts new file mode 100644 index 00000000..a8e5db22 --- /dev/null +++ b/cypress/integration/landing.test.ts @@ -0,0 +1,22 @@ +import { TEST_ADDRESS_NEVER_USE_SHORTENED } from '../support/commands' + +describe('Landing Page', () => { + beforeEach(() => cy.visit('/')) + it('loads swap page', () => { + cy.get('#swap-page') + }) + + it('redirects to url /swap', () => { + cy.url().should('include', '/swap') + }) + + it('allows navigation to pool', () => { + cy.get('#pool-nav-link').click() + cy.url().should('include', '/pool') + }) + + it('is connected', () => { + cy.get('#web3-status-connected').click() + cy.get('#web3-account-identifier-row').contains(TEST_ADDRESS_NEVER_USE_SHORTENED) + }) +}) diff --git a/cypress/integration/lists.test.ts b/cypress/integration/lists.test.ts new file mode 100644 index 00000000..5d83e2d8 --- /dev/null +++ b/cypress/integration/lists.test.ts @@ -0,0 +1,11 @@ +describe('Lists', () => { + beforeEach(() => { + cy.visit('/swap') + }) + + // @TODO check if default lists are active when we have them + it('change list', () => { + cy.get('#swap-currency-output .open-currency-select-button').click() + cy.get('.list-token-manage-button').click() + }) +}) diff --git a/cypress/integration/migrate-v1.test.ts b/cypress/integration/migrate-v1.test.ts new file mode 100644 index 00000000..36250482 --- /dev/null +++ b/cypress/integration/migrate-v1.test.ts @@ -0,0 +1,8 @@ +describe('Migrate V1 Liquidity', () => { + describe('Remove V1 liquidity', () => { + it('renders the correct page', () => { + cy.visit('/remove/v1/0x93bB63aFe1E0180d0eF100D774B473034fd60C36') + cy.get('#remove-v1-exchange').should('contain', 'MKR/ETH') + }) + }) +}) diff --git a/cypress/integration/pool.test.ts b/cypress/integration/pool.test.ts new file mode 100644 index 00000000..5969abce --- /dev/null +++ b/cypress/integration/pool.test.ts @@ -0,0 +1,12 @@ +describe('Pool', () => { + beforeEach(() => cy.visit('/pool')) + it('add liquidity links to /add/ETH', () => { + cy.get('#join-pool-button').click() + cy.url().should('contain', '/add/ETH') + }) + + it('import pool links to /import', () => { + cy.get('#import-pool-link').click() + cy.url().should('contain', '/find') + }) +}) diff --git a/cypress/integration/remove-liquidity.test.ts b/cypress/integration/remove-liquidity.test.ts new file mode 100644 index 00000000..63c8e1a3 --- /dev/null +++ b/cypress/integration/remove-liquidity.test.ts @@ -0,0 +1,39 @@ +describe('Remove Liquidity', () => { + it('redirects', () => { + cy.visit('/remove/0xc778417E063141139Fce010982780140Aa0cD5Ab-0xF9bA5210F91D0474bd1e1DcDAeC4C58E359AaD85') + cy.url().should( + 'contain', + '/remove/0xc778417E063141139Fce010982780140Aa0cD5Ab/0xF9bA5210F91D0474bd1e1DcDAeC4C58E359AaD85' + ) + }) + + it('eth remove', () => { + cy.visit('/remove/ETH/0xF9bA5210F91D0474bd1e1DcDAeC4C58E359AaD85') + cy.get('#remove-liquidity-tokena-symbol').should('contain.text', 'ETH') + cy.get('#remove-liquidity-tokenb-symbol').should('contain.text', 'MKR') + }) + + it('eth remove swap order', () => { + cy.visit('/remove/0xF9bA5210F91D0474bd1e1DcDAeC4C58E359AaD85/ETH') + cy.get('#remove-liquidity-tokena-symbol').should('contain.text', 'MKR') + cy.get('#remove-liquidity-tokenb-symbol').should('contain.text', 'ETH') + }) + + it('loads the two correct tokens', () => { + cy.visit('/remove/0xc778417E063141139Fce010982780140Aa0cD5Ab-0xF9bA5210F91D0474bd1e1DcDAeC4C58E359AaD85') + cy.get('#remove-liquidity-tokena-symbol').should('contain.text', 'WETH') + cy.get('#remove-liquidity-tokenb-symbol').should('contain.text', 'MKR') + }) + + it('does not crash if ETH is duplicated', () => { + cy.visit('/remove/0xc778417E063141139Fce010982780140Aa0cD5Ab-0xc778417E063141139Fce010982780140Aa0cD5Ab') + cy.get('#remove-liquidity-tokena-symbol').should('contain.text', 'WETH') + cy.get('#remove-liquidity-tokenb-symbol').should('contain.text', 'WETH') + }) + + it('token not in storage is loaded', () => { + cy.visit('/remove/0xb290b2f9f8f108d03ff2af3ac5c8de6de31cdf6d-0xF9bA5210F91D0474bd1e1DcDAeC4C58E359AaD85') + cy.get('#remove-liquidity-tokena-symbol').should('contain.text', 'SKL') + cy.get('#remove-liquidity-tokenb-symbol').should('contain.text', 'MKR') + }) +}) diff --git a/cypress/integration/send.test.ts b/cypress/integration/send.test.ts new file mode 100644 index 00000000..35b8dee1 --- /dev/null +++ b/cypress/integration/send.test.ts @@ -0,0 +1,11 @@ +describe('Send', () => { + it('should redirect', () => { + cy.visit('/send') + cy.url().should('include', '/swap') + }) + + it('should redirect with url params', () => { + cy.visit('/send?outputCurrency=ETH&recipient=bob.argent.xyz') + cy.url().should('contain', '/swap?outputCurrency=ETH&recipient=bob.argent.xyz') + }) +}) diff --git a/cypress/integration/swap.test.ts b/cypress/integration/swap.test.ts new file mode 100644 index 00000000..c8e2c4b9 --- /dev/null +++ b/cypress/integration/swap.test.ts @@ -0,0 +1,65 @@ +describe('Swap', () => { + beforeEach(() => { + cy.visit('/swap') + }) + it('can enter an amount into input', () => { + cy.get('#swap-currency-input .token-amount-input').type('0.001', { delay: 200 }).should('have.value', '0.001') + }) + + it('zero swap amount', () => { + cy.get('#swap-currency-input .token-amount-input').type('0.0', { delay: 200 }).should('have.value', '0.0') + }) + + it('invalid swap amount', () => { + cy.get('#swap-currency-input .token-amount-input').type('\\', { delay: 200 }).should('have.value', '') + }) + + it('can enter an amount into output', () => { + cy.get('#swap-currency-output .token-amount-input').type('0.001', { delay: 200 }).should('have.value', '0.001') + }) + + it('zero output amount', () => { + cy.get('#swap-currency-output .token-amount-input').type('0.0', { delay: 200 }).should('have.value', '0.0') + }) + + it('can swap ETH for DAI', () => { + cy.get('#swap-currency-output .open-currency-select-button').click() + cy.get('.token-item-0xc7AD46e0b8a400Bb3C915120d284AafbA8fc4735').should('be.visible') + cy.get('.token-item-0xc7AD46e0b8a400Bb3C915120d284AafbA8fc4735').click({ force: true }) + cy.get('#swap-currency-input .token-amount-input').should('be.visible') + cy.get('#swap-currency-input .token-amount-input').type('0.001', { force: true, delay: 200 }) + cy.get('#swap-currency-output .token-amount-input').should('not.equal', '') + cy.get('#swap-button').click() + cy.get('#confirm-swap-or-send').should('contain', 'Confirm Swap') + }) + + it('add a recipient does not exist unless in expert mode', () => { + cy.get('#add-recipient-button').should('not.exist') + }) + + describe('expert mode', () => { + beforeEach(() => { + cy.window().then((win) => { + cy.stub(win, 'prompt').returns('confirm') + }) + cy.get('#open-settings-dialog-button').click() + cy.get('#toggle-expert-mode-button').click() + cy.get('#confirm-expert-mode').click() + }) + + it('add a recipient is visible', () => { + cy.get('#add-recipient-button').should('be.visible') + }) + + it('add a recipient', () => { + cy.get('#add-recipient-button').click() + cy.get('#recipient').should('exist') + }) + + it('remove recipient', () => { + cy.get('#add-recipient-button').click() + cy.get('#remove-recipient-button').click() + cy.get('#recipient').should('not.exist') + }) + }) +}) diff --git a/cypress/support/commands.d.ts b/cypress/support/commands.d.ts new file mode 100644 index 00000000..e7eba62f --- /dev/null +++ b/cypress/support/commands.d.ts @@ -0,0 +1,10 @@ +export const TEST_ADDRESS_NEVER_USE: string + +export const TEST_ADDRESS_NEVER_USE_SHORTENED: string + +// declare namespace Cypress { +// // eslint-disable-next-line @typescript-eslint/class-name-casing +// interface cy { +// additionalCommands(): void +// } +// } diff --git a/cypress/support/commands.js b/cypress/support/commands.js new file mode 100644 index 00000000..8e4316a2 --- /dev/null +++ b/cypress/support/commands.js @@ -0,0 +1,82 @@ +// *********************************************** +// For more comprehensive examples of custom +// commands please read more here: +// https://on.cypress.io/custom-commands +// *********************************************** + +import { JsonRpcProvider } from '@ethersproject/providers' +import { Wallet } from '@ethersproject/wallet' +import { _Eip1193Bridge } from '@ethersproject/experimental/lib/eip1193-bridge' + +// never send real ether to this, obviously +const PRIVATE_KEY_TEST_NEVER_USE = '0xad20c82497421e9784f18460ad2fe84f73569068e98e270b3e63743268af5763' + +// address of the above key +export const TEST_ADDRESS_NEVER_USE = '0x0fF2D1eFd7A57B7562b2bf27F3f37899dB27F4a5' + +export const TEST_ADDRESS_NEVER_USE_SHORTENED = '0x0fF2...F4a5' + +class CustomizedBridge extends _Eip1193Bridge { + async sendAsync(...args) { + console.debug('sendAsync called', ...args) + return this.send(...args) + } + async send(...args) { + console.debug('send called', ...args) + const isCallbackForm = typeof args[0] === 'object' && typeof args[1] === 'function' + let callback + let method + let params + if (isCallbackForm) { + callback = args[1] + method = args[0].method + params = args[0].params + } else { + method = args[0] + params = args[1] + } + if (method === 'eth_requestAccounts' || method === 'eth_accounts') { + if (isCallbackForm) { + callback({ result: [TEST_ADDRESS_NEVER_USE] }) + } else { + return Promise.resolve([TEST_ADDRESS_NEVER_USE]) + } + } + if (method === 'eth_chainId') { + if (isCallbackForm) { + callback(null, { result: '0x4' }) + } else { + return Promise.resolve('0x4') + } + } + try { + const result = await super.send(method, params) + console.debug('result received', method, params, result) + if (isCallbackForm) { + callback(null, { result }) + } else { + return result + } + } catch (error) { + if (isCallbackForm) { + callback(error, null) + } else { + throw error + } + } + } +} + +// sets up the injected provider to be a mock ethereum provider with the given mnemonic/index +Cypress.Commands.overwrite('visit', (original, url, options) => { + return original(url.startsWith('/') && url.length > 2 && !url.startsWith('/#') ? `/#${url}` : url, { + ...options, + onBeforeLoad(win) { + options && options.onBeforeLoad && options.onBeforeLoad(win) + win.localStorage.clear() + const provider = new JsonRpcProvider('https://rinkeby.infura.io/v3/4bf032f2d38a4ed6bb975b80d6340847', 4) + const signer = new Wallet(PRIVATE_KEY_TEST_NEVER_USE, provider) + win.ethereum = new CustomizedBridge(signer, provider) + }, + }) +}) diff --git a/cypress/support/index.js b/cypress/support/index.js new file mode 100644 index 00000000..3d834ebd --- /dev/null +++ b/cypress/support/index.js @@ -0,0 +1,9 @@ +// *********************************************************** +// This file is processed and loaded automatically before your test files. +// +// You can read more here: +// https://on.cypress.io/configuration +// *********************************************************** + +// Import commands.ts using ES2015 syntax: +import './commands' diff --git a/cypress/tsconfig.json b/cypress/tsconfig.json new file mode 100644 index 00000000..0cbfffb0 --- /dev/null +++ b/cypress/tsconfig.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "strict": true, + "baseUrl": "../node_modules", + "target": "es5", + "lib": ["es5", "dom"], + "types": ["cypress"] + }, + "include": ["**/*.ts"] +} diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 287a565b..00000000 --- a/package-lock.json +++ /dev/null @@ -1,17330 +0,0 @@ -{ - "name": "v3-info", - "version": "0.1.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", - "requires": { - "@babel/highlight": "^7.12.13" - } - }, - "@babel/compat-data": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.8.tgz", - "integrity": "sha512-EaI33z19T4qN3xLXsGf48M2cDqa6ei9tPZlfLdb2HC+e/cFtREiRd8hdSqDbwdLB0/+gLwqJmCYASH0z2bUdog==" - }, - "@babel/core": { - "version": "7.12.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", - "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.1", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helpers": "^7.12.1", - "@babel/parser": "^7.12.3", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.1", - "@babel/types": "^7.12.1", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "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.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", - "requires": { - "@babel/types": "^7.13.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "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.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", - "requires": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.8.tgz", - "integrity": "sha512-pBljUGC1y3xKLn1nrx2eAhurLMA8OqBtBP/JwG4U8skN7kf8/aqwwxpV1N6T0e7r6+7uNitIa/fUxPFagSXp3A==", - "requires": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.8.tgz", - "integrity": "sha512-qioaRrKHQbn4hkRKDHbnuQ6kAxmmOF+kzKGnIfxPK4j2rckSJCpKzr/SSTlohSCiE3uAQpNDJ9FIh4baeE8W+w==", - "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "regexpu-core": "^4.7.1" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", - "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", - "requires": { - "@babel/types": "^7.13.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", - "requires": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", - "requires": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz", - "integrity": "sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ==", - "requires": { - "@babel/types": "^7.13.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-module-imports": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz", - "integrity": "sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==", - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-module-transforms": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz", - "integrity": "sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw==", - "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0", - "lodash": "^4.17.19" - }, - "dependencies": { - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==" - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-replace-supers": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz", - "integrity": "sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw==", - "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-simple-access": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz", - "integrity": "sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA==", - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", - "requires": { - "@babel/types": "^7.12.1" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==" - }, - "@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==" - }, - "@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", - "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helpers": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.0.tgz", - "integrity": "sha512-aan1MeFPxFacZeSz6Ld7YZo5aPuqnKlD7+HZY75xQsueczFccP9A7V05+oe0XpLwHK3oLorPe9eaAUljL7WEaQ==", - "requires": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/highlight": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.8.tgz", - "integrity": "sha512-4vrIhfJyfNf+lCtXC2ck1rKSzDwciqF7IWFhXXrSOUC2O5DrVp+w4c6ed4AllTxhTkUP5x2tYj41VaxdVMMRDw==", - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "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" - } - }, - "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" - } - }, - "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" - } - } - } - }, - "@babel/parser": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.9.tgz", - "integrity": "sha512-nEUfRiARCcaVo3ny3ZQjURjHQZUo/JkEw7rLlSZy/psWGnvwXFtPcr6jb7Yb41DVW5LTe6KRq9LGleRNsg1Frw==" - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-proposal-decorators": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.12.1.tgz", - "integrity": "sha512-knNIuusychgYN8fGJHONL0RbFxLGawhXOJNLBk75TniTsZZeA+wdkDuv6wp4lGwzQEKjZi6/WYtnb3udNPmQmQ==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-decorators": "^7.12.1" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", - "requires": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.8.tgz", - "integrity": "sha512-hpbBwbTgd7Cz1QryvwJZRo1U0k1q8uyBmeXOSQUjdg/A2TASkhR/rz7AyqZ/kS8kbpsNA80rOYbxySBJAqmhhQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@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-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-decorators": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz", - "integrity": "sha512-Rw6aIXGuqDLr6/LoBBYE57nKOzQpz/aDkKlMqEwH+Vp0MXbG6H/TfRjaY343LKxzAKAMXIHsQ8JzaZKuDZ9MwA==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@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-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-flow": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.13.tgz", - "integrity": "sha512-J/RYxnlSLXZLVR7wTRsozxKT8qbsx1mNKJzXEEjQ0Kjx1ZACcyHgbanNWNCFtc36IzuWhYWPpvJFFoexoOWFmA==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "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.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz", - "integrity": "sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "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.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz", - "integrity": "sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", - "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-flow-strip-types": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.12.1.tgz", - "integrity": "sha512-8hAtkmsQb36yMmEtk2JZ9JnVyDSnDOdlB+0nEGzIDLuK4yR3JcEjfuFPYkdEPSh8Id+rAMeBEn+X0iVEyho6Hg==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-flow": "^7.12.1" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", - "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", - "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", - "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", - "requires": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", - "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-react-constant-elements": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.12.13.tgz", - "integrity": "sha512-qmzKVTn46Upvtxv8LQoQ8mTCdUC83AOVQIQm57e9oekLT5cmK9GOMOfcWhe8jMNx4UJXn/UDhVZ/7lGofVNeDQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-react-display-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.13.tgz", - "integrity": "sha512-MprESJzI9O5VnJZrL7gg1MpdqmiFcUv41Jc7SahxYsNP2kDkFqClxxTZq+1Qv4AFCamm+GXMRDQINNn+qrxmiA==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-react-jsx": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.17.tgz", - "integrity": "sha512-mwaVNcXV+l6qJOuRhpdTEj8sT/Z0owAVWf9QujTZ0d2ye9X/K+MTOTSizcgKOj18PGnTc/7g1I4+cIUjsKhBcw==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/plugin-syntax-jsx": "^7.12.13", - "@babel/types": "^7.12.17" - } - }, - "@babel/plugin-transform-react-jsx-development": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.17.tgz", - "integrity": "sha512-BPjYV86SVuOaudFhsJR1zjgxxOhJDt6JHNoD48DxWEIxUCAMjV1ys6DYw4SDYZh0b1QsS2vfIA9t/ZsQGsDOUQ==", - "requires": { - "@babel/plugin-transform-react-jsx": "^7.12.17" - } - }, - "@babel/plugin-transform-react-jsx-self": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.13.tgz", - "integrity": "sha512-FXYw98TTJ125GVCCkFLZXlZ1qGcsYqNQhVBQcZjyrwf8FEUtVfKIoidnO8S0q+KBQpDYNTmiGo1gn67Vti04lQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-react-jsx-source": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.13.tgz", - "integrity": "sha512-O5JJi6fyfih0WfDgIJXksSPhGP/G0fQpfxYy87sDc+1sFmsCS6wr3aAn+whbzkhbjtq4VMqLRaSzR6IsshIC0Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-react-pure-annotations": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz", - "integrity": "sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", - "requires": { - "regenerator-transform": "^0.14.2" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz", - "integrity": "sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg==", - "requires": { - "@babel/helper-module-imports": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "resolve": "^1.8.1", - "semver": "^5.5.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-typescript": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.13.0.tgz", - "integrity": "sha512-elQEwluzaU8R8dbVuW2Q2Y8Nznf7hnjM7+DSCd14Lo5fF63C9qNLbwZYbmZrtV9/ySpSUpkRpQXvJb6xyu4hCQ==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-typescript": "^7.12.13" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/preset-env": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.9.tgz", - "integrity": "sha512-mcsHUlh2rIhViqMG823JpscLMesRt3QbMsv1+jhopXEb3W2wXvQ9QoiOlZI9ZbR3XqPtaFpZwEZKYqGJnGMZTQ==", - "requires": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.8", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.0", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", - "core-js-compat": "^3.9.0", - "semver": "^6.3.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", - "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.12.13", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.12.13.tgz", - "integrity": "sha512-TYM0V9z6Abb6dj1K7i5NrEhA13oS5ujUYQYDfqIBXYHOc2c2VkFgc+q9kyssIyUfy4/hEwqrgSlJ/Qgv8zJLsA==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/plugin-transform-react-display-name": "^7.12.13", - "@babel/plugin-transform-react-jsx": "^7.12.13", - "@babel/plugin-transform-react-jsx-development": "^7.12.12", - "@babel/plugin-transform-react-pure-annotations": "^7.12.1" - } - }, - "@babel/preset-typescript": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.12.1.tgz", - "integrity": "sha512-hNK/DhmoJPsksdHuI/RVrcEws7GN5eamhi28JkO52MqIxU8Z0QpmiSOQxZHWOHV7I3P4UjHV97ay4TcamMA6Kw==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-transform-typescript": "^7.12.1" - } - }, - "@babel/runtime": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.9.tgz", - "integrity": "sha512-aY2kU+xgJ3dJ1eU6FMB9EH8dIe8dmusF1xEku52joLvw6eAFN0AI+WxCLDnpev2LEejWBAy2sBvBOBAjI3zmvA==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/runtime-corejs3": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.13.9.tgz", - "integrity": "sha512-p6WSr71+5u/VBf1KDS/Y4dK3ZwbV+DD6wQO3X2EbUVluEOiyXUk09DzcwSaUH4WomYXrEPC+i2rqzuthhZhOJw==", - "requires": { - "core-js-pure": "^3.0.0", - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "@babel/traverse": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", - "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.0", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.0", - "@babel/types": "^7.13.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" - }, - "dependencies": { - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/types": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.17.tgz", - "integrity": "sha512-tNMDjcv/4DIcHxErTgwB9q2ZcYyN0sUfgGKUK/mm1FJK7Wz+KstoEekxrl/tBiNDgLK1HGi+sppj1An/1DR4fQ==", - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" - }, - "@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/cache": { - "version": "10.0.29", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.29.tgz", - "integrity": "sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==", - "requires": { - "@emotion/sheet": "0.9.4", - "@emotion/stylis": "0.8.5", - "@emotion/utils": "0.11.3", - "@emotion/weak-memoize": "0.2.5" - } - }, - "@emotion/core": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/@emotion/core/-/core-10.1.1.tgz", - "integrity": "sha512-ZMLG6qpXR8x031NXD8HJqugy/AZSkAuMxxqB46pmAR7ze47MhNJ56cdoX243QPZdGctrdfo+s08yZTiwaUcRKA==", - "requires": { - "@babel/runtime": "^7.5.5", - "@emotion/cache": "^10.0.27", - "@emotion/css": "^10.0.27", - "@emotion/serialize": "^0.11.15", - "@emotion/sheet": "0.9.4", - "@emotion/utils": "0.11.3" - } - }, - "@emotion/css": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/css/-/css-10.0.27.tgz", - "integrity": "sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw==", - "requires": { - "@emotion/serialize": "^0.11.15", - "@emotion/utils": "0.11.3", - "babel-plugin-emotion": "^10.0.27" - } - }, - "@emotion/hash": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", - "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" - }, - "@emotion/is-prop-valid": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", - "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", - "requires": { - "@emotion/memoize": "0.7.4" - } - }, - "@emotion/memoize": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" - }, - "@emotion/serialize": { - "version": "0.11.16", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz", - "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==", - "requires": { - "@emotion/hash": "0.8.0", - "@emotion/memoize": "0.7.4", - "@emotion/unitless": "0.7.5", - "@emotion/utils": "0.11.3", - "csstype": "^2.5.7" - }, - "dependencies": { - "csstype": { - "version": "2.6.16", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.16.tgz", - "integrity": "sha512-61FBWoDHp/gRtsoDkq/B1nWrCUG/ok1E3tUrcNbZjsE9Cxd9yzUirjS3+nAATB8U4cTtaQmAHbNndoFz5L6C9Q==" - } - } - }, - "@emotion/sheet": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz", - "integrity": "sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA==" - }, - "@emotion/styled": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", - "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", - "requires": { - "@emotion/styled-base": "^10.0.27", - "babel-plugin-emotion": "^10.0.27" - } - }, - "@emotion/styled-base": { - "version": "10.0.31", - "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.0.31.tgz", - "integrity": "sha512-wTOE1NcXmqMWlyrtwdkqg87Mu6Rj1MaukEoEmEkHirO5IoHDJ8LgCQL4MjJODgxWxXibGR3opGp1p7YvkNEdXQ==", - "requires": { - "@babel/runtime": "^7.5.5", - "@emotion/is-prop-valid": "0.8.8", - "@emotion/serialize": "^0.11.15", - "@emotion/utils": "0.11.3" - } - }, - "@emotion/stylis": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", - "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" - }, - "@emotion/unitless": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" - }, - "@emotion/utils": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", - "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==" - }, - "@emotion/weak-memoize": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", - "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" - }, - "@eslint/eslintrc": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz", - "integrity": "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==", - "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "lodash": "^4.17.20", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "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" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" - } - } - }, - "@ethersproject/abi": { - "version": "5.0.12", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.12.tgz", - "integrity": "sha512-Ujr/3bwyYYjXLDQfebeiiTuvOw9XtUKM8av6YkoBeMXyGQM9GkjrQlwJMNwGTmqjATH/ZNbRgCh98GjOLiIB1Q==", - "requires": { - "@ethersproject/address": "^5.0.9", - "@ethersproject/bignumber": "^5.0.13", - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/constants": "^5.0.8", - "@ethersproject/hash": "^5.0.10", - "@ethersproject/keccak256": "^5.0.7", - "@ethersproject/logger": "^5.0.8", - "@ethersproject/properties": "^5.0.7", - "@ethersproject/strings": "^5.0.8" - }, - "dependencies": { - "@ethersproject/address": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.0.10.tgz", - "integrity": "sha512-70vqESmW5Srua1kMDIN6uVfdneZMaMyRYH4qPvkAXGkbicrCOsA9m01vIloA4wYiiF+HLEfL1ENKdn5jb9xiAw==", - "requires": { - "@ethersproject/bignumber": "^5.0.13", - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/keccak256": "^5.0.7", - "@ethersproject/logger": "^5.0.8", - "@ethersproject/rlp": "^5.0.7" - } - } - } - }, - "@ethersproject/abstract-provider": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.0.9.tgz", - "integrity": "sha512-X9fMkqpeu9ayC3JyBkeeZhn35P4xQkpGX/l+FrxDtEW9tybf/UWXSMi8bGThpPtfJ6q6U2LDetXSpSwK4TfYQQ==", - "requires": { - "@ethersproject/bignumber": "^5.0.13", - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/logger": "^5.0.8", - "@ethersproject/networks": "^5.0.7", - "@ethersproject/properties": "^5.0.7", - "@ethersproject/transactions": "^5.0.9", - "@ethersproject/web": "^5.0.12" - } - }, - "@ethersproject/abstract-signer": { - "version": "5.0.13", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.0.13.tgz", - "integrity": "sha512-VBIZEI5OK0TURoCYyw0t3w+TEO4kdwnI9wvt4kqUwyxSn3YCRpXYVl0Xoe7XBR/e5+nYOi2MyFGJ3tsFwONecQ==", - "requires": { - "@ethersproject/abstract-provider": "^5.0.8", - "@ethersproject/bignumber": "^5.0.13", - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/logger": "^5.0.8", - "@ethersproject/properties": "^5.0.7" - } - }, - "@ethersproject/base64": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.0.8.tgz", - "integrity": "sha512-PNbpHOMgZpZ1skvQl119pV2YkCPXmZTxw+T92qX0z7zaMFPypXWTZBzim+hUceb//zx4DFjeGT4aSjZRTOYThg==", - "requires": { - "@ethersproject/bytes": "^5.0.9" - } - }, - "@ethersproject/basex": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.0.8.tgz", - "integrity": "sha512-PCVKZIShBQUqAXjJSvaCidThPvL0jaaQZcewJc0sf8Xx05BizaOS8r3jdPdpNdY+/qZtRDqwHTSKjvR/xssyLQ==", - "requires": { - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/properties": "^5.0.7" - } - }, - "@ethersproject/bignumber": { - "version": "5.0.14", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.0.14.tgz", - "integrity": "sha512-Q4TjMq9Gg3Xzj0aeJWqJgI3tdEiPiET7Y5OtNtjTAODZ2kp4y9jMNg97zVcvPedFvGROdpGDyCI77JDFodUzOw==", - "requires": { - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/logger": "^5.0.8", - "bn.js": "^4.4.0" - } - }, - "@ethersproject/bytes": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.0.10.tgz", - "integrity": "sha512-vpu0v1LZ1j1s9kERQIMnVU69MyHEzUff7nqK9XuCU4vx+AM8n9lU2gj7jtJIvGSt9HzatK/6I6bWusI5nyuaTA==", - "requires": { - "@ethersproject/logger": "^5.0.8" - } - }, - "@ethersproject/constants": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.0.9.tgz", - "integrity": "sha512-2uAKH89UcaJP/Sc+54u92BtJtZ4cPgcS1p0YbB1L3tlkavwNvth+kNCUplIB1Becqs7BOZr0B/3dMNjhJDy4Dg==", - "requires": { - "@ethersproject/bignumber": "^5.0.13" - } - }, - "@ethersproject/hash": { - "version": "5.0.11", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.0.11.tgz", - "integrity": "sha512-H3KJ9fk33XWJ2djAW03IL7fg3DsDMYjO1XijiUb1hJ85vYfhvxu0OmsU7d3tg2Uv1H1kFSo8ghr3WFQ8c+NL3g==", - "requires": { - "@ethersproject/abstract-signer": "^5.0.10", - "@ethersproject/address": "^5.0.9", - "@ethersproject/bignumber": "^5.0.13", - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/keccak256": "^5.0.7", - "@ethersproject/logger": "^5.0.8", - "@ethersproject/properties": "^5.0.7", - "@ethersproject/strings": "^5.0.8" - }, - "dependencies": { - "@ethersproject/address": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.0.10.tgz", - "integrity": "sha512-70vqESmW5Srua1kMDIN6uVfdneZMaMyRYH4qPvkAXGkbicrCOsA9m01vIloA4wYiiF+HLEfL1ENKdn5jb9xiAw==", - "requires": { - "@ethersproject/bignumber": "^5.0.13", - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/keccak256": "^5.0.7", - "@ethersproject/logger": "^5.0.8", - "@ethersproject/rlp": "^5.0.7" - } - } - } - }, - "@ethersproject/keccak256": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.0.8.tgz", - "integrity": "sha512-zoGbwXcWWs9MX4NOAZ7N0hhgIRl4Q/IO/u9c/RHRY4WqDy3Ywm0OLamEV53QDwhjwn3YiiVwU1Ve5j7yJ0a/KQ==", - "requires": { - "@ethersproject/bytes": "^5.0.9", - "js-sha3": "0.5.7" - } - }, - "@ethersproject/logger": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.0.9.tgz", - "integrity": "sha512-kV3Uamv3XOH99Xf3kpIG3ZkS7mBNYcLDM00JSDtNgNB4BihuyxpQzIZPRIDmRi+95Z/R1Bb0X2kUNHa/kJoVrw==" - }, - "@ethersproject/networks": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.0.8.tgz", - "integrity": "sha512-PYpptlO2Tu5f/JEBI5hdlMds5k1DY1QwVbh3LKPb3un9dQA2bC51vd2/gRWAgSBpF3kkmZOj4FhD7ATLX4H+DA==", - "requires": { - "@ethersproject/logger": "^5.0.8" - } - }, - "@ethersproject/properties": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.0.8.tgz", - "integrity": "sha512-zEnLMze2Eu2VDPj/05QwCwMKHh506gpT9PP9KPVd4dDB+5d6AcROUYVLoIIQgBYK7X/Gw0UJmG3oVtnxOQafAw==", - "requires": { - "@ethersproject/logger": "^5.0.8" - } - }, - "@ethersproject/random": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.0.8.tgz", - "integrity": "sha512-4rHtotmd9NjklW0eDvByicEkL+qareIyFSbG1ShC8tPJJSAC0g55oQWzw+3nfdRCgBHRuEE7S8EcPcTVPvZ9cA==", - "requires": { - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/logger": "^5.0.8" - } - }, - "@ethersproject/rlp": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.0.8.tgz", - "integrity": "sha512-E4wdFs8xRNJfzNHmnkC8w5fPeT4Wd1U2cust3YeT16/46iSkLT8nn8ilidC6KhR7hfuSZE4UqSPzyk76p7cdZg==", - "requires": { - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/logger": "^5.0.8" - } - }, - "@ethersproject/sha2": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.0.8.tgz", - "integrity": "sha512-ILP1ZgyvDj4rrdE+AXrTv9V88m7x87uga2VZ/FeULKPumOEw/4bGnJz/oQ8zDnDvVYRCJ+48VaQBS2CFLbk1ww==", - "requires": { - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/logger": "^5.0.8", - "hash.js": "1.1.3" - }, - "dependencies": { - "hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.0" - } - } - } - }, - "@ethersproject/signing-key": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.0.10.tgz", - "integrity": "sha512-w5it3GbFOvN6e0mTd5gDNj+bwSe6L9jqqYjU+uaYS8/hAEp4qYLk5p8ZjbJJkNn7u1p0iwocp8X9oH/OdK8apA==", - "requires": { - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/logger": "^5.0.8", - "@ethersproject/properties": "^5.0.7", - "elliptic": "6.5.4" - } - }, - "@ethersproject/solidity": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.0.9.tgz", - "integrity": "sha512-LIxSAYEQgLRXE3mRPCq39ou61kqP8fDrGqEeNcaNJS3aLbmAOS8MZp56uK++WsdI9hj8sNsFh78hrAa6zR9Jag==", - "requires": { - "@ethersproject/bignumber": "^5.0.13", - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/keccak256": "^5.0.7", - "@ethersproject/sha2": "^5.0.7", - "@ethersproject/strings": "^5.0.8" - } - }, - "@ethersproject/strings": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.0.9.tgz", - "integrity": "sha512-ogxBpcUpdO524CYs841MoJHgHxEPUy0bJFDS4Ezg8My+WYVMfVAOlZSLss0Rurbeeam8CpUVDzM4zUn09SU66Q==", - "requires": { - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/constants": "^5.0.8", - "@ethersproject/logger": "^5.0.8" - } - }, - "@ethersproject/transactions": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.0.10.tgz", - "integrity": "sha512-Tqpp+vKYQyQdJQQk4M73tDzO7ODf2D42/sJOcKlDAAbdSni13v6a+31hUdo02qYXhVYwIs+ZjHnO4zKv5BNk8w==", - "requires": { - "@ethersproject/address": "^5.0.9", - "@ethersproject/bignumber": "^5.0.13", - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/constants": "^5.0.8", - "@ethersproject/keccak256": "^5.0.7", - "@ethersproject/logger": "^5.0.8", - "@ethersproject/properties": "^5.0.7", - "@ethersproject/rlp": "^5.0.7", - "@ethersproject/signing-key": "^5.0.8" - }, - "dependencies": { - "@ethersproject/address": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.0.10.tgz", - "integrity": "sha512-70vqESmW5Srua1kMDIN6uVfdneZMaMyRYH4qPvkAXGkbicrCOsA9m01vIloA4wYiiF+HLEfL1ENKdn5jb9xiAw==", - "requires": { - "@ethersproject/bignumber": "^5.0.13", - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/keccak256": "^5.0.7", - "@ethersproject/logger": "^5.0.8", - "@ethersproject/rlp": "^5.0.7" - } - } - } - }, - "@ethersproject/web": { - "version": "5.0.13", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.0.13.tgz", - "integrity": "sha512-G3x/Ns7pQm21ALnWLbdBI5XkW/jrsbXXffI9hKNPHqf59mTxHYtlNiSwxdoTSwCef3Hn7uvGZpaSgTyxs7IufQ==", - "requires": { - "@ethersproject/base64": "^5.0.7", - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/logger": "^5.0.8", - "@ethersproject/properties": "^5.0.7", - "@ethersproject/strings": "^5.0.8" - } - }, - "@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" - } - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - } - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==" - }, - "@jest/console": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", - "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", - "requires": { - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^26.6.2", - "jest-util": "^26.6.2", - "slash": "^3.0.0" - }, - "dependencies": { - "@types/node": { - "version": "14.14.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", - "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==" - }, - "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" - } - } - } - }, - "@jest/core": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", - "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", - "requires": { - "@jest/console": "^26.6.2", - "@jest/reporters": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^26.6.2", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-resolve-dependencies": "^26.6.3", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "jest-watcher": "^26.6.2", - "micromatch": "^4.0.2", - "p-each-series": "^2.1.0", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "@types/node": { - "version": "14.14.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", - "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==" - }, - "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" - } - }, - "jest-resolve": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", - "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", - "requires": { - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^26.6.2", - "read-pkg-up": "^7.0.1", - "resolve": "^1.18.1", - "slash": "^3.0.0" - } - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - } - } - } - }, - "@jest/environment": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", - "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", - "requires": { - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2" - }, - "dependencies": { - "@types/node": { - "version": "14.14.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", - "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==" - } - } - }, - "@jest/fake-timers": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", - "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", - "requires": { - "@jest/types": "^26.6.2", - "@sinonjs/fake-timers": "^6.0.1", - "@types/node": "*", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2" - }, - "dependencies": { - "@types/node": { - "version": "14.14.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", - "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==" - } - } - }, - "@jest/globals": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", - "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", - "requires": { - "@jest/environment": "^26.6.2", - "@jest/types": "^26.6.2", - "expect": "^26.6.2" - } - }, - "@jest/reporters": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", - "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.4", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.3", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "node-notifier": "^8.0.0", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^7.0.0" - }, - "dependencies": { - "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" - } - }, - "jest-resolve": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", - "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", - "requires": { - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^26.6.2", - "read-pkg-up": "^7.0.1", - "resolve": "^1.18.1", - "slash": "^3.0.0" - } - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - } - } - } - }, - "@jest/source-map": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", - "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", - "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", - "source-map": "^0.6.0" - } - }, - "@jest/test-result": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", - "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", - "requires": { - "@jest/console": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/test-sequencer": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", - "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", - "requires": { - "@jest/test-result": "^26.6.2", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3" - } - }, - "@jest/transform": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", - "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^26.6.2", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-util": "^26.6.2", - "micromatch": "^4.0.2", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "dependencies": { - "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" - } - } - } - }, - "@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" - }, - "dependencies": { - "@types/istanbul-reports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", - "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "@types/node": { - "version": "14.14.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", - "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==" - }, - "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" - } - } - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", - "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", - "requires": { - "@nodelib/fs.stat": "2.0.4", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==" - }, - "@nodelib/fs.walk": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", - "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", - "requires": { - "@nodelib/fs.scandir": "2.1.4", - "fastq": "^1.6.0" - } - }, - "@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - } - } - }, - "@pmmmwh/react-refresh-webpack-plugin": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz", - "integrity": "sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ==", - "requires": { - "ansi-html": "^0.0.7", - "error-stack-parser": "^2.0.6", - "html-entities": "^1.2.1", - "native-url": "^0.2.6", - "schema-utils": "^2.6.5", - "source-map": "^0.7.3" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" - } - } - }, - "@reduxjs/toolkit": { - "version": "1.5.0", - "requires": { - "immer": "^8.0.0", - "redux": "^4.0.0", - "redux-thunk": "^2.3.0", - "reselect": "^4.0.0" - } - }, - "@rollup/plugin-node-resolve": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz", - "integrity": "sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q==", - "requires": { - "@rollup/pluginutils": "^3.0.8", - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.14.2" - } - }, - "@rollup/plugin-replace": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.1.tgz", - "integrity": "sha512-XwC1oK5rrtRJ0tn1ioLHS6OV5JTluJF7QE1J/q1hN3bquwjnVxjtMyY9iCnoyH9DQbf92CxajB3o98wZbP3oAQ==", - "requires": { - "@rollup/pluginutils": "^3.1.0", - "magic-string": "^0.25.7" - } - }, - "@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "requires": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "dependencies": { - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" - } - } - }, - "@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==" - }, - "@sinonjs/commons": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.2.tgz", - "integrity": "sha512-sruwd86RJHdsVf/AtBoijDmUqJp3B6hF/DGC23C+JaegnDHaZyewCjoVGTdg3J0uz3Zs7NnIT05OBOmML72lQw==", - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", - "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", - "requires": { - "@sinonjs/commons": "^1.7.0" - } - }, - "@styled-system/background": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/background/-/background-5.1.2.tgz", - "integrity": "sha512-jtwH2C/U6ssuGSvwTN3ri/IyjdHb8W9X/g8Y0JLcrH02G+BW3OS8kZdHphF1/YyRklnrKrBT2ngwGUK6aqqV3A==", - "requires": { - "@styled-system/core": "^5.1.2" - } - }, - "@styled-system/border": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@styled-system/border/-/border-5.1.5.tgz", - "integrity": "sha512-JvddhNrnhGigtzWRCVuAHepniyVi6hBlimxWDVAdcTuk7aRn9BYJUwfHslURtwYFsF5FoEs8Zmr1oZq2M1AP0A==", - "requires": { - "@styled-system/core": "^5.1.2" - } - }, - "@styled-system/color": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/color/-/color-5.1.2.tgz", - "integrity": "sha512-1kCkeKDZkt4GYkuFNKc7vJQMcOmTl3bJY3YBUs7fCNM6mMYJeT1pViQ2LwBSBJytj3AB0o4IdLBoepgSgGl5MA==", - "requires": { - "@styled-system/core": "^5.1.2" - } - }, - "@styled-system/core": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/core/-/core-5.1.2.tgz", - "integrity": "sha512-XclBDdNIy7OPOsN4HBsawG2eiWfCcuFt6gxKn1x4QfMIgeO6TOlA2pZZ5GWZtIhCUqEPTgIBta6JXsGyCkLBYw==", - "requires": { - "object-assign": "^4.1.1" - } - }, - "@styled-system/css": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@styled-system/css/-/css-5.1.5.tgz", - "integrity": "sha512-XkORZdS5kypzcBotAMPBoeckDs9aSZVkvrAlq5K3xP8IMAUek+x2O4NtwoSgkYkWWzVBu6DGdFZLR790QWGG+A==" - }, - "@styled-system/flexbox": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/flexbox/-/flexbox-5.1.2.tgz", - "integrity": "sha512-6hHV52+eUk654Y1J2v77B8iLeBNtc+SA3R4necsu2VVinSD7+XY5PCCEzBFaWs42dtOEDIa2lMrgL0YBC01mDQ==", - "requires": { - "@styled-system/core": "^5.1.2" - } - }, - "@styled-system/grid": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/grid/-/grid-5.1.2.tgz", - "integrity": "sha512-K3YiV1KyHHzgdNuNlaw8oW2ktMuGga99o1e/NAfTEi5Zsa7JXxzwEnVSDSBdJC+z6R8WYTCYRQC6bkVFcvdTeg==", - "requires": { - "@styled-system/core": "^5.1.2" - } - }, - "@styled-system/layout": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/layout/-/layout-5.1.2.tgz", - "integrity": "sha512-wUhkMBqSeacPFhoE9S6UF3fsMEKFv91gF4AdDWp0Aym1yeMPpqz9l9qS/6vjSsDPF7zOb5cOKC3tcKKOMuDCPw==", - "requires": { - "@styled-system/core": "^5.1.2" - } - }, - "@styled-system/position": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/position/-/position-5.1.2.tgz", - "integrity": "sha512-60IZfMXEOOZe3l1mCu6sj/2NAyUmES2kR9Kzp7s2D3P4qKsZWxD1Se1+wJvevb+1TP+ZMkGPEYYXRyU8M1aF5A==", - "requires": { - "@styled-system/core": "^5.1.2" - } - }, - "@styled-system/shadow": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/shadow/-/shadow-5.1.2.tgz", - "integrity": "sha512-wqniqYb7XuZM7K7C0d1Euxc4eGtqEe/lvM0WjuAFsQVImiq6KGT7s7is+0bNI8O4Dwg27jyu4Lfqo/oIQXNzAg==", - "requires": { - "@styled-system/core": "^5.1.2" - } - }, - "@styled-system/should-forward-prop": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@styled-system/should-forward-prop/-/should-forward-prop-5.1.5.tgz", - "integrity": "sha512-+rPRomgCGYnUIaFabDoOgpSDc4UUJ1KsmlnzcEp0tu5lFrBQKgZclSo18Z1URhaZm7a6agGtS5Xif7tuC2s52Q==", - "requires": { - "@emotion/is-prop-valid": "^0.8.1", - "@emotion/memoize": "^0.7.1", - "styled-system": "^5.1.5" - } - }, - "@styled-system/space": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/space/-/space-5.1.2.tgz", - "integrity": "sha512-+zzYpR8uvfhcAbaPXhH8QgDAV//flxqxSjHiS9cDFQQUSznXMQmxJegbhcdEF7/eNnJgHeIXv1jmny78kipgBA==", - "requires": { - "@styled-system/core": "^5.1.2" - } - }, - "@styled-system/typography": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/typography/-/typography-5.1.2.tgz", - "integrity": "sha512-BxbVUnN8N7hJ4aaPOd7wEsudeT7CxarR+2hns8XCX1zp0DFfbWw4xYa/olA0oQaqx7F1hzDg+eRaGzAJbF+jOg==", - "requires": { - "@styled-system/core": "^5.1.2" - } - }, - "@styled-system/variant": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@styled-system/variant/-/variant-5.1.5.tgz", - "integrity": "sha512-Yn8hXAFoWIro8+Q5J8YJd/mP85Teiut3fsGVR9CAxwgNfIAiqlYxsk5iHU7VHJks/0KjL4ATSjmbtCDC/4l1qw==", - "requires": { - "@styled-system/core": "^5.1.2", - "@styled-system/css": "^5.1.5" - } - }, - "@surma/rollup-plugin-off-main-thread": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz", - "integrity": "sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A==", - "requires": { - "ejs": "^2.6.1", - "magic-string": "^0.25.0" - } - }, - "@svgr/babel-plugin-add-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==" - }, - "@svgr/babel-plugin-remove-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==" - }, - "@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", - "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==" - }, - "@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", - "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==" - }, - "@svgr/babel-plugin-svg-dynamic-title": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", - "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==" - }, - "@svgr/babel-plugin-svg-em-dimensions": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", - "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==" - }, - "@svgr/babel-plugin-transform-react-native-svg": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", - "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==" - }, - "@svgr/babel-plugin-transform-svg-component": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", - "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==" - }, - "@svgr/babel-preset": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", - "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", - "requires": { - "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", - "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", - "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", - "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", - "@svgr/babel-plugin-transform-svg-component": "^5.5.0" - } - }, - "@svgr/core": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", - "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", - "requires": { - "@svgr/plugin-jsx": "^5.5.0", - "camelcase": "^6.2.0", - "cosmiconfig": "^7.0.0" - } - }, - "@svgr/hast-util-to-babel-ast": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", - "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", - "requires": { - "@babel/types": "^7.12.6" - } - }, - "@svgr/plugin-jsx": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", - "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", - "requires": { - "@babel/core": "^7.12.3", - "@svgr/babel-preset": "^5.5.0", - "@svgr/hast-util-to-babel-ast": "^5.5.0", - "svg-parser": "^2.0.2" - } - }, - "@svgr/plugin-svgo": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", - "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", - "requires": { - "cosmiconfig": "^7.0.0", - "deepmerge": "^4.2.2", - "svgo": "^1.2.2" - } - }, - "@svgr/webpack": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", - "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", - "requires": { - "@babel/core": "^7.12.3", - "@babel/plugin-transform-react-constant-elements": "^7.12.1", - "@babel/preset-env": "^7.12.1", - "@babel/preset-react": "^7.12.5", - "@svgr/core": "^5.5.0", - "@svgr/plugin-jsx": "^5.5.0", - "@svgr/plugin-svgo": "^5.5.0", - "loader-utils": "^2.0.0" - } - }, - "@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" - } - }, - "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" - } - }, - "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" - } - } - } - }, - "@testing-library/jest-dom": { - "version": "4.2.4", - "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" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.13.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.7.tgz", - "integrity": "sha512-h+ilqoX998mRVM5FtB5ijRuHUDVt5l3yfoOi2uh18Z/O3hvyaHQ39NpxVkCIG5yFs+mLq/ewFp8Bss6zmWv6ZA==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@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" - }, - "dependencies": { - "@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/yargs": { - "version": "13.0.11", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz", - "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==", - "requires": { - "@types/yargs-parser": "*" - } - }, - "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" - } - }, - "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" - } - }, - "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-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-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" - } - }, - "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" - }, - "dependencies": { - "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==" - } - } - }, - "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" - } - } - } - }, - "@testing-library/react": { - "version": "9.5.0", - "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" - }, - "@types/anymatch": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz", - "integrity": "sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==" - }, - "@types/babel__core": { - "version": "7.1.12", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.12.tgz", - "integrity": "sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ==", - "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.2", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz", - "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==", - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz", - "integrity": "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==", - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.0.tgz", - "integrity": "sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg==", - "requires": { - "@babel/types": "^7.3.0" - } - }, - "@types/eslint": { - "version": "7.2.6", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.6.tgz", - "integrity": "sha512-I+1sYH+NPQ3/tVqCeUSBwTE/0heyvtXqpIopUUArlBm0Kpocb8FbMa3AZ/ASKIFpN3rnEx932TTXDbt9OXsNDw==", - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/estree": { - "version": "0.0.46", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz", - "integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==" - }, - "@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": "*" - }, - "dependencies": { - "@types/node": { - "version": "14.14.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", - "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==" - } - } - }, - "@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", - "requires": { - "@types/node": "*" - }, - "dependencies": { - "@types/node": { - "version": "14.14.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", - "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==" - } - } - }, - "@types/history": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.8.tgz", - "integrity": "sha512-S78QIYirQcUoo6UJZx9CSP0O2ix9IaeAXwQi26Rhr/+mg7qqPy8TzaxHSUut7eGjL8WmLccT7/MXf304WjqHcA==" - }, - "@types/hoist-non-react-statics": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", - "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", - "requires": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" - }, - "dependencies": { - "@types/react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.2.tgz", - "integrity": "sha512-Xt40xQsrkdvjn1EyWe1Bc0dJLcil/9x2vAuW7ya+PuQip4UYUaXyhzWmAbwRsdMgwOFHpfp7/FFZebDU6Y8VHA==", - "requires": { - "@types/prop-types": "*", - "csstype": "^3.0.2" - } - } - } - }, - "@types/html-minifier-terser": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", - "integrity": "sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA==" - }, - "@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", - "requires": { - "jest-diff": "^24.3.0" - } - }, - "@types/json-schema": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", - "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==" - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=" - }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" - }, - "@types/normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==" - }, - "@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/prettier": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.2.2.tgz", - "integrity": "sha512-i99hy7Ki19EqVOl77WplDrvgNugHnsSjECVR/wUrzw2TJXz1zlUfT2ngGckR6xN7yFYaijsMAqPkOLx9HgUqHg==" - }, - "@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/qs": { - "version": "6.9.5" - }, - "@types/react-redux": { - "version": "7.1.16", - "requires": { - "@types/hoist-non-react-statics": "^3.3.0", - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0", - "redux": "^4.0.0" - }, - "dependencies": { - "@types/react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.2.tgz", - "integrity": "sha512-Xt40xQsrkdvjn1EyWe1Bc0dJLcil/9x2vAuW7ya+PuQip4UYUaXyhzWmAbwRsdMgwOFHpfp7/FFZebDU6Y8VHA==", - "requires": { - "@types/prop-types": "*", - "csstype": "^3.0.2" - } - } - } - }, - "@types/react-router-dom": { - "version": "5.1.7", - "requires": { - "@types/history": "*", - "@types/react": "*", - "@types/react-router": "*" - }, - "dependencies": { - "@types/react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.2.tgz", - "integrity": "sha512-Xt40xQsrkdvjn1EyWe1Bc0dJLcil/9x2vAuW7ya+PuQip4UYUaXyhzWmAbwRsdMgwOFHpfp7/FFZebDU6Y8VHA==", - "requires": { - "@types/prop-types": "*", - "csstype": "^3.0.2" - } - }, - "@types/react-router": { - "version": "5.1.11", - "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.11.tgz", - "integrity": "sha512-ofHbZMlp0Y2baOHgsWBQ4K3AttxY61bDMkwTiBOkPg7U6C/3UwwB5WaIx28JmSVi/eX3uFEMRo61BV22fDQIvg==", - "requires": { - "@types/history": "*", - "@types/react": "*" - } - } - } - }, - "@types/rebass": { - "version": "4.0.8", - "requires": { - "@types/react": "*", - "@types/styled-components": "*", - "@types/styled-system": "*", - "@types/styled-system__css": "*" - }, - "dependencies": { - "@types/react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.2.tgz", - "integrity": "sha512-Xt40xQsrkdvjn1EyWe1Bc0dJLcil/9x2vAuW7ya+PuQip4UYUaXyhzWmAbwRsdMgwOFHpfp7/FFZebDU6Y8VHA==", - "requires": { - "@types/prop-types": "*", - "csstype": "^3.0.2" - } - }, - "@types/styled-components": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.7.tgz", - "integrity": "sha512-BJzPhFygYspyefAGFZTZ/8lCEY4Tk+Iqktvnko3xmJf9LrLqs3+grxPeU3O0zLl6yjbYBopD0/VikbHgXDbJtA==", - "requires": { - "@types/hoist-non-react-statics": "*", - "@types/react": "*", - "csstype": "^3.0.2" - } - } - } - }, - "@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "requires": { - "@types/node": "*" - }, - "dependencies": { - "@types/node": { - "version": "14.14.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", - "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==" - } - } - }, - "@types/source-list-map": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", - "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==" - }, - "@types/stack-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz", - "integrity": "sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==" - }, - "@types/styled-system": { - "version": "5.1.10", - "resolved": "https://registry.npmjs.org/@types/styled-system/-/styled-system-5.1.10.tgz", - "integrity": "sha512-OmVjC9OzyUckAgdavJBc+t5oCJrNXTlzWl9vo2x47leqpX1REq2qJC49SEtzbu1OnWSzcD68Uq3Aj8TeX+Kvtg==", - "requires": { - "csstype": "^3.0.2" - } - }, - "@types/styled-system__css": { - "version": "5.0.14", - "resolved": "https://registry.npmjs.org/@types/styled-system__css/-/styled-system__css-5.0.14.tgz", - "integrity": "sha512-dvhSQ5upz6TqiQmWLNF0sqdoL5nTomza58vtTSklpE9lDS+5w/ew8PQ+HPSRaXMGrmPGUiL7F0vwryVdxHWfpA==", - "requires": { - "csstype": "^3.0.2" - } - }, - "@types/tapable": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.6.tgz", - "integrity": "sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==" - }, - "@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" - }, - "dependencies": { - "@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" - } - }, - "@types/yargs": { - "version": "13.0.11", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz", - "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==", - "requires": { - "@types/yargs-parser": "*" - } - }, - "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" - } - }, - "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" - } - } - } - }, - "@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/react": { - "version": "16.14.4", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.4.tgz", - "integrity": "sha512-ETj7GbkPGjca/A4trkVeGvoIakmLV6ZtX3J8dcmOpzKzWVybbrOxanwaIPG71GZwImoMDY6Fq4wIe34lEqZ0FQ==", - "requires": { - "@types/prop-types": "*", - "csstype": "^3.0.2" - } - }, - "@types/react-dom": { - "version": "16.9.11", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.11.tgz", - "integrity": "sha512-3UuR4MoWf5spNgrG6cwsmT9DdRghcR4IDFOzNZ6+wcmacxkFykcb5ji0nNVm9ckBT4BCxvCrJJbM4+EYsEEVIg==", - "requires": { - "@types/react": "^16" - } - }, - "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" - } - }, - "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" - } - } - } - }, - "@types/uglify-js": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.12.0.tgz", - "integrity": "sha512-sYAF+CF9XZ5cvEBkI7RtrG9g2GtMBkviTnBxYYyq+8BWvO4QtXfwwR6a2LFwCi4evMKZfpv6U43ViYvv17Wz3Q==", - "requires": { - "source-map": "^0.6.1" - } - }, - "@types/webpack": { - "version": "4.41.26", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.26.tgz", - "integrity": "sha512-7ZyTfxjCRwexh+EJFwRUM+CDB2XvgHl4vfuqf1ZKrgGvcS5BrNvPQqJh3tsZ0P6h6Aa1qClVHaJZszLPzpqHeA==", - "requires": { - "@types/anymatch": "*", - "@types/node": "*", - "@types/tapable": "*", - "@types/uglify-js": "*", - "@types/webpack-sources": "*", - "source-map": "^0.6.0" - }, - "dependencies": { - "@types/node": { - "version": "14.14.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", - "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==" - } - } - }, - "@types/webpack-sources": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-2.1.0.tgz", - "integrity": "sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg==", - "requires": { - "@types/node": "*", - "@types/source-list-map": "*", - "source-map": "^0.7.3" - }, - "dependencies": { - "@types/node": { - "version": "14.14.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", - "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==" - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" - } - } - }, - "@types/yargs": { - "version": "15.0.13", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", - "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "20.2.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz", - "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==" - }, - "@typescript-eslint/eslint-plugin": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.15.2.tgz", - "integrity": "sha512-uiQQeu9tWl3f1+oK0yoAv9lt/KXO24iafxgQTkIYO/kitruILGx3uH+QtIAHqxFV+yIsdnJH+alel9KuE3J15Q==", - "requires": { - "@typescript-eslint/experimental-utils": "4.15.2", - "@typescript-eslint/scope-manager": "4.15.2", - "debug": "^4.1.1", - "functional-red-black-tree": "^1.0.1", - "lodash": "^4.17.15", - "regexpp": "^3.0.0", - "semver": "^7.3.2", - "tsutils": "^3.17.1" - } - }, - "@typescript-eslint/experimental-utils": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.15.2.tgz", - "integrity": "sha512-Fxoshw8+R5X3/Vmqwsjc8nRO/7iTysRtDqx6rlfLZ7HbT8TZhPeQqbPjTyk2RheH3L8afumecTQnUc9EeXxohQ==", - "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.15.2", - "@typescript-eslint/types": "4.15.2", - "@typescript-eslint/typescript-estree": "4.15.2", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" - } - }, - "@typescript-eslint/parser": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.15.2.tgz", - "integrity": "sha512-SHeF8xbsC6z2FKXsaTb1tBCf0QZsjJ94H6Bo51Y1aVEZ4XAefaw5ZAilMoDPlGghe+qtq7XdTiDlGfVTOmvA+Q==", - "requires": { - "@typescript-eslint/scope-manager": "4.15.2", - "@typescript-eslint/types": "4.15.2", - "@typescript-eslint/typescript-estree": "4.15.2", - "debug": "^4.1.1" - } - }, - "@typescript-eslint/scope-manager": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.15.2.tgz", - "integrity": "sha512-Zm0tf/MSKuX6aeJmuXexgdVyxT9/oJJhaCkijv0DvJVT3ui4zY6XYd6iwIo/8GEZGy43cd7w1rFMiCLHbRzAPQ==", - "requires": { - "@typescript-eslint/types": "4.15.2", - "@typescript-eslint/visitor-keys": "4.15.2" - } - }, - "@typescript-eslint/types": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.15.2.tgz", - "integrity": "sha512-r7lW7HFkAarfUylJ2tKndyO9njwSyoy6cpfDKWPX6/ctZA+QyaYscAHXVAfJqtnY6aaTwDYrOhp+ginlbc7HfQ==" - }, - "@typescript-eslint/typescript-estree": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.15.2.tgz", - "integrity": "sha512-cGR8C2g5SPtHTQvAymEODeqx90pJHadWsgTtx6GbnTWKqsg7yp6Eaya9nFzUd4KrKhxdYTTFBiYeTPQaz/l8bw==", - "requires": { - "@typescript-eslint/types": "4.15.2", - "@typescript-eslint/visitor-keys": "4.15.2", - "debug": "^4.1.1", - "globby": "^11.0.1", - "is-glob": "^4.0.1", - "semver": "^7.3.2", - "tsutils": "^3.17.1" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.15.2.tgz", - "integrity": "sha512-TME1VgSb7wTwgENN5KVj4Nqg25hP8DisXxNBojM4Nn31rYaNDIocNm5cmjOFfh42n7NVERxWrDFoETO/76ePyg==", - "requires": { - "@typescript-eslint/types": "4.15.2", - "eslint-visitor-keys": "^2.0.0" - } - }, - "@uniswap/sdk": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@uniswap/sdk/-/sdk-3.0.2.tgz", - "integrity": "sha512-x6dYbxs3xUi1BOeGj3UqunFaWaJffzqAdSABZSPqyG3hhLpLa2AR4ehH9ZgtTVGF4Rq4MF7UDOHeXMA8AqwyaA==", - "requires": { - "@ethersproject/address": "^5.0.1", - "@ethersproject/contracts": "^5.0.1", - "@ethersproject/networks": "^5.0.1", - "@ethersproject/providers": "^5.0.4", - "@ethersproject/solidity": "^5.0.1", - "@uniswap/v2-core": "^1.0.0", - "big.js": "^5.2.2", - "decimal.js-light": "^2.5.0", - "jsbi": "^3.1.1", - "tiny-invariant": "^1.1.0", - "tiny-warning": "^1.0.3", - "toformat": "^2.0.0" - }, - "dependencies": { - "@ethersproject/address": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.0.10.tgz", - "integrity": "sha512-70vqESmW5Srua1kMDIN6uVfdneZMaMyRYH4qPvkAXGkbicrCOsA9m01vIloA4wYiiF+HLEfL1ENKdn5jb9xiAw==", - "requires": { - "@ethersproject/bignumber": "^5.0.13", - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/keccak256": "^5.0.7", - "@ethersproject/logger": "^5.0.8", - "@ethersproject/rlp": "^5.0.7" - } - }, - "@ethersproject/contracts": { - "version": "5.0.11", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.0.11.tgz", - "integrity": "sha512-FTUUd/6x00dYL2VufE2VowZ7h3mAyBfCQMGwI3tKDIWka+C0CunllFiKrlYCdiHFuVeMotR65dIcnzbLn72MCw==", - "requires": { - "@ethersproject/abi": "^5.0.10", - "@ethersproject/abstract-provider": "^5.0.8", - "@ethersproject/abstract-signer": "^5.0.10", - "@ethersproject/address": "^5.0.9", - "@ethersproject/bignumber": "^5.0.13", - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/constants": "^5.0.8", - "@ethersproject/logger": "^5.0.8", - "@ethersproject/properties": "^5.0.7" - } - }, - "@ethersproject/providers": { - "version": "5.0.23", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.0.23.tgz", - "integrity": "sha512-eJ94z2tgPaUgUmxwd3BVkIzkgkbNIkY6wRPVas04LVaBTycObQbgj794aaUu2bfk7+Bn2B/gjUZtJW1ybxh9/A==", - "requires": { - "@ethersproject/abstract-provider": "^5.0.8", - "@ethersproject/abstract-signer": "^5.0.10", - "@ethersproject/address": "^5.0.9", - "@ethersproject/basex": "^5.0.7", - "@ethersproject/bignumber": "^5.0.13", - "@ethersproject/bytes": "^5.0.9", - "@ethersproject/constants": "^5.0.8", - "@ethersproject/hash": "^5.0.10", - "@ethersproject/logger": "^5.0.8", - "@ethersproject/networks": "^5.0.7", - "@ethersproject/properties": "^5.0.7", - "@ethersproject/random": "^5.0.7", - "@ethersproject/rlp": "^5.0.7", - "@ethersproject/sha2": "^5.0.7", - "@ethersproject/strings": "^5.0.8", - "@ethersproject/transactions": "^5.0.9", - "@ethersproject/web": "^5.0.12", - "bech32": "1.1.4", - "ws": "7.2.3" - } - } - } - }, - "@uniswap/v2-core": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@uniswap/v2-core/-/v2-core-1.0.1.tgz", - "integrity": "sha512-MtybtkUPSyysqLY2U210NBDeCHX+ltHt3oADGdjqoThZaFRDKwM6k1Nb3F0A3hk5hwuQvytFWhrWHOEq6nVJ8Q==" - }, - "@web3-react/abstract-connector": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/@web3-react/abstract-connector/-/abstract-connector-6.0.7.tgz", - "integrity": "sha512-RhQasA4Ox8CxUC0OENc1AJJm8UTybu/oOCM61Zjg6y0iF7Z0sqv1Ai1VdhC33hrQpA8qSBgoXN9PaP8jKmtdqg==", - "requires": { - "@web3-react/types": "^6.0.7" - } - }, - "@web3-react/core": { - "version": "6.1.9", - "requires": { - "@ethersproject/keccak256": "^5.0.0-beta.130", - "@web3-react/abstract-connector": "^6.0.7", - "@web3-react/types": "^6.0.7", - "tiny-invariant": "^1.0.6", - "tiny-warning": "^1.0.3" - } - }, - "@web3-react/types": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/@web3-react/types/-/types-6.0.7.tgz", - "integrity": "sha512-ofGmfDhxmNT1/P/MgVa8IKSkCStFiyvXe+U5tyZurKdrtTDFU+wJ/LxClPDtFerWpczNFPUSrKcuhfPX1sI6+A==" - }, - "@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", - "requires": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", - "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==" - }, - "@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==" - }, - "@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", - "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==" - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", - "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", - "requires": { - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", - "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==" - }, - "@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", - "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", - "requires": { - "@webassemblyjs/ast": "1.9.0" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==" - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", - "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", - "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", - "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", - "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==" - }, - "@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", - "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", - "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", - "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", - "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "@webassemblyjs/wast-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", - "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", - "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@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.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" - }, - "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" - } - }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - }, - "acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, - "acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==" - }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" - }, - "address": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", - "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==" - }, - "adjust-sourcemap-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz", - "integrity": "sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw==", - "requires": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - } - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "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=" - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" - }, - "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-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": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - }, - "dependencies": { - "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" - } - } - } - }, - "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" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "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-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-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" - }, - "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.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", - "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.5" - } - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" - }, - "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.4", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", - "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" - } - }, - "array.prototype.flatmap": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz", - "integrity": "sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "function-bind": "^1.1.1" - } - }, - "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" - }, - "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": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" - }, - "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" - } - } - } - }, - "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": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" - }, - "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-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==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" - }, - "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.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - }, - "axe-core": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.2.tgz", - "integrity": "sha512-V+Nq70NxKhYt89ArVcaNL9FDryB3vQOd+BFXZIfO3RP6rwtj+2yqqqdHEkacutglPaZLkJeuXKCjCJDMGPtPqg==" - }, - "axobject-query": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==" - }, - "babel-eslint": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", - "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - }, - "dependencies": { - "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==" - } - } - }, - "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": "26.6.3", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", - "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", - "requires": { - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/babel__core": "^7.1.7", - "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^26.6.2", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "slash": "^3.0.0" - }, - "dependencies": { - "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" - } - } - } - }, - "babel-loader": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", - "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", - "requires": { - "find-cache-dir": "^2.1.0", - "loader-utils": "^1.4.0", - "mkdirp": "^0.5.3", - "pify": "^4.0.1", - "schema-utils": "^2.6.5" - }, - "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" - } - }, - "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" - } - } - } - }, - "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-emotion": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.2.2.tgz", - "integrity": "sha512-SMSkGoqTbTyUTDeuVuPIWifPdUGkTk1Kf9BWRiXIOIcuyMfsdp2EjeiiFvOzX8NOBvEh/ypKYvUh2rkgAJMCLA==", - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@emotion/hash": "0.8.0", - "@emotion/memoize": "0.7.4", - "@emotion/serialize": "^0.11.16", - "babel-plugin-macros": "^2.0.0", - "babel-plugin-syntax-jsx": "^6.18.0", - "convert-source-map": "^1.5.0", - "escape-string-regexp": "^1.0.5", - "find-root": "^1.1.0", - "source-map": "^0.5.7" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - } - } - }, - "babel-plugin-istanbul": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", - "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^4.0.0", - "test-exclude": "^6.0.0" - } - }, - "babel-plugin-jest-hoist": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", - "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@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" - } - } - } - }, - "babel-plugin-named-asset-import": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.7.tgz", - "integrity": "sha512-squySRkf+6JGnvjoUtDEjSREJEBirnXi9NqP6rjSYsylxQxqBTz+pkmf395i9E2zsvmYUaI40BHo6SqZUdydlw==" - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", - "requires": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", - "semver": "^6.1.1" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", - "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", - "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5" - } - }, - "babel-plugin-styled-components": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-1.12.0.tgz", - "integrity": "sha512-FEiD7l5ZABdJPpLssKXjBUJMYqzbcNzBowfXDCdJhOpbhWiewapUaY+LZGT8R4Jg2TwOjGjG4RKeyrO5p9sBkA==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-module-imports": "^7.0.0", - "babel-plugin-syntax-jsx": "^6.18.0", - "lodash": "^4.17.11" - } - }, - "babel-plugin-syntax-jsx": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", - "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" - }, - "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-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "requires": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - } - }, - "babel-preset-jest": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", - "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", - "requires": { - "babel-plugin-jest-hoist": "^26.6.2", - "babel-preset-current-node-syntax": "^1.0.0" - } - }, - "babel-preset-react-app": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.0.tgz", - "integrity": "sha512-itL2z8v16khpuKutx5IH8UdCdSTuzrOhRFTEdIhveZ2i1iBKDrVE0ATa4sFVy+02GLucZNVBWtoarXBy0Msdpg==", - "requires": { - "@babel/core": "7.12.3", - "@babel/plugin-proposal-class-properties": "7.12.1", - "@babel/plugin-proposal-decorators": "7.12.1", - "@babel/plugin-proposal-nullish-coalescing-operator": "7.12.1", - "@babel/plugin-proposal-numeric-separator": "7.12.1", - "@babel/plugin-proposal-optional-chaining": "7.12.1", - "@babel/plugin-transform-flow-strip-types": "7.12.1", - "@babel/plugin-transform-react-display-name": "7.12.1", - "@babel/plugin-transform-runtime": "7.12.1", - "@babel/preset-env": "7.12.1", - "@babel/preset-react": "7.12.1", - "@babel/preset-typescript": "7.12.1", - "@babel/runtime": "7.12.1", - "babel-plugin-macros": "2.8.0", - "babel-plugin-transform-react-remove-prop-types": "0.4.24" - }, - "dependencies": { - "@babel/plugin-proposal-class-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", - "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", - "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.1.tgz", - "integrity": "sha512-MR7Ok+Af3OhNTCxYVjJZHS0t97ydnJZt/DbR4WISO39iDnhiD8XHrY12xuSJ90FFEGjir0Fzyyn7g/zY6hxbxA==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", - "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" - } - }, - "@babel/plugin-transform-react-display-name": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz", - "integrity": "sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/preset-env": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", - "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", - "requires": { - "@babel/compat-data": "^7.12.1", - "@babel/helper-compilation-targets": "^7.12.1", - "@babel/helper-module-imports": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-validator-option": "^7.12.1", - "@babel/plugin-proposal-async-generator-functions": "^7.12.1", - "@babel/plugin-proposal-class-properties": "^7.12.1", - "@babel/plugin-proposal-dynamic-import": "^7.12.1", - "@babel/plugin-proposal-export-namespace-from": "^7.12.1", - "@babel/plugin-proposal-json-strings": "^7.12.1", - "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", - "@babel/plugin-proposal-numeric-separator": "^7.12.1", - "@babel/plugin-proposal-object-rest-spread": "^7.12.1", - "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.12.1", - "@babel/plugin-proposal-private-methods": "^7.12.1", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.12.1", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@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.12.1", - "@babel/plugin-transform-arrow-functions": "^7.12.1", - "@babel/plugin-transform-async-to-generator": "^7.12.1", - "@babel/plugin-transform-block-scoped-functions": "^7.12.1", - "@babel/plugin-transform-block-scoping": "^7.12.1", - "@babel/plugin-transform-classes": "^7.12.1", - "@babel/plugin-transform-computed-properties": "^7.12.1", - "@babel/plugin-transform-destructuring": "^7.12.1", - "@babel/plugin-transform-dotall-regex": "^7.12.1", - "@babel/plugin-transform-duplicate-keys": "^7.12.1", - "@babel/plugin-transform-exponentiation-operator": "^7.12.1", - "@babel/plugin-transform-for-of": "^7.12.1", - "@babel/plugin-transform-function-name": "^7.12.1", - "@babel/plugin-transform-literals": "^7.12.1", - "@babel/plugin-transform-member-expression-literals": "^7.12.1", - "@babel/plugin-transform-modules-amd": "^7.12.1", - "@babel/plugin-transform-modules-commonjs": "^7.12.1", - "@babel/plugin-transform-modules-systemjs": "^7.12.1", - "@babel/plugin-transform-modules-umd": "^7.12.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", - "@babel/plugin-transform-new-target": "^7.12.1", - "@babel/plugin-transform-object-super": "^7.12.1", - "@babel/plugin-transform-parameters": "^7.12.1", - "@babel/plugin-transform-property-literals": "^7.12.1", - "@babel/plugin-transform-regenerator": "^7.12.1", - "@babel/plugin-transform-reserved-words": "^7.12.1", - "@babel/plugin-transform-shorthand-properties": "^7.12.1", - "@babel/plugin-transform-spread": "^7.12.1", - "@babel/plugin-transform-sticky-regex": "^7.12.1", - "@babel/plugin-transform-template-literals": "^7.12.1", - "@babel/plugin-transform-typeof-symbol": "^7.12.1", - "@babel/plugin-transform-unicode-escapes": "^7.12.1", - "@babel/plugin-transform-unicode-regex": "^7.12.1", - "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.12.1", - "core-js-compat": "^3.6.2", - "semver": "^5.5.0" - } - }, - "@babel/preset-react": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.12.1.tgz", - "integrity": "sha512-euCExymHCi0qB9u5fKw7rvlw7AZSjw/NaB9h7EkdTt5+yHRrXdiRTh7fkG3uBPpJg82CqLfp1LHLqWGSCrab+g==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-transform-react-display-name": "^7.12.1", - "@babel/plugin-transform-react-jsx": "^7.12.1", - "@babel/plugin-transform-react-jsx-development": "^7.12.1", - "@babel/plugin-transform-react-jsx-self": "^7.12.1", - "@babel/plugin-transform-react-jsx-source": "^7.12.1", - "@babel/plugin-transform-react-pure-annotations": "^7.12.1" - } - }, - "@babel/runtime": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz", - "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "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.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" - }, - "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==" - }, - "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.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "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" - } - }, - "bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" - }, - "bfj": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.0.2.tgz", - "integrity": "sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw==", - "requires": { - "bluebird": "^3.5.5", - "check-types": "^11.1.1", - "hoopy": "^0.1.4", - "tryer": "^1.0.1" - } - }, - "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": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "optional": true - }, - "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": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" - }, - "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==" - }, - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "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": "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" - } - }, - "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==" - }, - "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.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - }, - "dependencies": { - "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" - } - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" - } - } - }, - "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.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", - "requires": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", - "escalade": "^3.1.1", - "node-releases": "^1.1.70" - } - }, - "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-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-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" - }, - "builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==" - }, - "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": "15.0.5", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz", - "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==", - "requires": { - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.0", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, - "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - } - } - }, - "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-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "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" - }, - "dependencies": { - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" - } - } - }, - "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": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - }, - "camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "requires": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - } - } - }, - "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==" - }, - "camelize": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", - "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" - }, - "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.30001194", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001194.tgz", - "integrity": "sha512-iDUOH+oFeBYk5XawYsPtsx/8fFpndAPUQJC7gBTfxHM8xw5nOZv7ceAD4frS1MKCLUac7QL5wdAJiFQlDRjXlA==" - }, - "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" - } - }, - "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=" - }, - "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" - }, - "dependencies": { - "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" - } - }, - "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" - } - } - } - }, - "char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==" - }, - "check-types": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.1.2.tgz", - "integrity": "sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ==" - }, - "chokidar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", - "optional": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.3.1", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" - } - }, - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" - }, - "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" - } - }, - "cjs-module-lexer": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", - "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==" - }, - "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" - } - } - } - }, - "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==" - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" - }, - "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" - } - }, - "collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==" - }, - "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": "0.11.4", - "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", - "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", - "requires": { - "clone": "^1.0.2", - "color-convert": "^1.3.0", - "color-string": "^0.3.0" - } - }, - "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" - }, - "dependencies": { - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - } - } - }, - "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==" - }, - "color-string": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", - "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", - "requires": { - "color-name": "^1.0.0" - } - }, - "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==" - }, - "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": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" - }, - "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" - }, - "dependencies": { - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "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==" - } - } - }, - "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" - }, - "dependencies": { - "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" - } - }, - "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==" - }, - "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" - } - } - } - }, - "confusing-browser-globals": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz", - "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==" - }, - "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" - }, - "dependencies": { - "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==" - } - } - }, - "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" - }, - "dependencies": { - "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==" - } - } - }, - "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" - }, - "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" - } - } - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" - }, - "core-js": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.9.1.tgz", - "integrity": "sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg==" - }, - "core-js-compat": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.9.1.tgz", - "integrity": "sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA==", - "requires": { - "browserslist": "^4.16.3", - "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.9.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.9.1.tgz", - "integrity": "sha512-laz3Zx0avrw9a4QEIdmIblnVuJz8W51leY9iLThatCsFawWxC3sE4guASC78JbCin+DkwMpCdp1AVAuzL/GN7A==" - }, - "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": "7.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", - "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "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" - } - }, - "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" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "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" - } - }, - "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" - }, - "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-keywords": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", - "integrity": "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=" - }, - "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": "4.3.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-4.3.0.tgz", - "integrity": "sha512-rdezjCjScIrsL8BSYszgT4s476IcNKt6yX69t0pHjJVnPUTDpn4WfIpDQTN3wCJvUvfsz/mFjuGOekf3PY3NUg==", - "requires": { - "camelcase": "^6.0.0", - "cssesc": "^3.0.0", - "icss-utils": "^4.1.1", - "loader-utils": "^2.0.0", - "postcss": "^7.0.32", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^3.0.3", - "postcss-modules-scope": "^2.2.0", - "postcss-modules-values": "^3.0.0", - "postcss-value-parser": "^4.1.0", - "schema-utils": "^2.7.1", - "semver": "^7.3.2" - } - }, - "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-to-react-native": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz", - "integrity": "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==", - "requires": { - "camelize": "^1.0.0", - "css-color-keywords": "^1.0.0", - "postcss-value-parser": "^4.0.2" - } - }, - "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-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" - }, - "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" - }, - "dependencies": { - "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" - } - }, - "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" - } - }, - "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" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" - } - } - }, - "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.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "requires": { - "css-tree": "^1.1.2" - }, - "dependencies": { - "css-tree": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz", - "integrity": "sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==", - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" - } - } - }, - "cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" - }, - "cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "requires": { - "cssom": "~0.3.6" - }, - "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" - } - } - }, - "csstype": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz", - "integrity": "sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g==" - }, - "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" - } - }, - "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-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "requires": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - } - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "decimal.js": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", - "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==" - }, - "decimal.js-light": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", - "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==" - }, - "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=" - }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=" - }, - "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": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" - }, - "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" - } - }, - "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": { - "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" - } - }, - "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==" - }, - "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" - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "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-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==" - }, - "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" - }, - "dependencies": { - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "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" - } - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "requires": { - "path-type": "^4.0.0" - } - }, - "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-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.1.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", - "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==" - } - } - }, - "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": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "requires": { - "webidl-conversions": "^5.0.0" - }, - "dependencies": { - "webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==" - } - } - }, - "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.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - } - } - }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "requires": { - "is-obj": "^2.0.0" - } - }, - "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==" - }, - "duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" - }, - "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" - }, - "dependencies": { - "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" - } - }, - "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==" - }, - "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" - } - } - } - }, - "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=" - }, - "ejs": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", - "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==" - }, - "electron-to-chromium": { - "version": "1.3.678", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.678.tgz", - "integrity": "sha512-E5ha1pE9+aWWrT2fUD5wdPBWUnYtKnEnloewbtVyrkAs79HvodOiNO4rMR94+hKbxgMFQG4fnPQACOc1cfMfBg==" - }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "emittery": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", - "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==" - }, - "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.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "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" - } - }, - "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" - } - }, - "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==" - }, - "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" - } - } - } - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "requires": { - "ansi-colors": "^4.1.1" - } - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - }, - "errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "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" - } - }, - "error-stack-parser": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz", - "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==", - "requires": { - "stackframe": "^1.1.1" - } - }, - "es-abstract": { - "version": "1.18.0-next.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.3.tgz", - "integrity": "sha512-VMzHx/Bczjg59E6jZOQjHeN3DEoptdhejpARgflAViidlqSpjdq9zA6lKwlhRRs/lOw1gHJv2xkkSFRgvEwbQg==", - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" - } - }, - "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" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "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" - }, - "dependencies": { - "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" - } - }, - "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" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" - }, - "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" - } - } - } - }, - "eslint": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.20.0.tgz", - "integrity": "sha512-qGi0CTcOGP2OtCQBgWZlQjcTuP0XkIpYFj25XtRTQSHC+umNnp7UMshr2G8SLsRFYDdAPFeHOsiteadmMH02Yw==", - "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.3.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "file-entry-cache": "^6.0.0", - "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", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash": "^4.17.20", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.4", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "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" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.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" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" - }, - "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==" - }, - "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" - } - } - } - }, - "eslint-config-react-app": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-6.0.0.tgz", - "integrity": "sha512-bpoAAC+YRfzq0dsTk+6v9aHm/uqnDwayNAXleMypGl6CpxI9oXXscVHo4fk3eJPIn+rsbtNetB4r/ZIidFIE8A==", - "requires": { - "confusing-browser-globals": "^1.0.10" - } - }, - "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" - }, - "dependencies": { - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "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": { - "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" - } - }, - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "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": "5.2.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.2.2.tgz", - "integrity": "sha512-C4PlPYpszr9h1cBfUbTNRI1IdxUCF0qrXAHkXS2+bESp7WUUCnvb3UBBnYlaQLvJYJ2lRz+2SPQQ/WyV7p/Tow==", - "requires": { - "lodash": "^4.17.15", - "string-natural-compare": "^3.0.1" - } - }, - "eslint-plugin-import": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", - "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", - "requires": { - "array-includes": "^3.1.1", - "array.prototype.flat": "^1.2.3", - "contains-path": "^0.1.0", - "debug": "^2.6.9", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.4", - "eslint-module-utils": "^2.6.0", - "has": "^1.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.1", - "read-pkg-up": "^2.0.0", - "resolve": "^1.17.0", - "tsconfig-paths": "^3.9.0" - }, - "dependencies": { - "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" - } - }, - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "eslint-plugin-jest": { - "version": "24.1.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.1.5.tgz", - "integrity": "sha512-FIP3lwC8EzEG+rOs1y96cOJmMVpdFNreoDJv29B5vIupVssRi8zrSY3QadogT0K3h1Y8TMxJ6ZSAzYUmFCp2hg==", - "requires": { - "@typescript-eslint/experimental-utils": "^4.0.1" - } - }, - "eslint-plugin-jsx-a11y": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz", - "integrity": "sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg==", - "requires": { - "@babel/runtime": "^7.11.2", - "aria-query": "^4.2.2", - "array-includes": "^3.1.1", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.0.2", - "axobject-query": "^2.2.0", - "damerau-levenshtein": "^1.0.6", - "emoji-regex": "^9.0.0", - "has": "^1.0.3", - "jsx-ast-utils": "^3.1.0", - "language-tags": "^1.0.5" - }, - "dependencies": { - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - } - } - }, - "eslint-plugin-react": { - "version": "7.22.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.22.0.tgz", - "integrity": "sha512-p30tuX3VS+NWv9nQot9xIGAHBXR0+xJVaZriEsHoJrASGCJZDJ8JLNM0YqKqI0AKm6Uxaa1VUHoNEibxRCMQHA==", - "requires": { - "array-includes": "^3.1.1", - "array.prototype.flatmap": "^1.2.3", - "doctrine": "^2.1.0", - "has": "^1.0.3", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "object.entries": "^1.1.2", - "object.fromentries": "^2.0.2", - "object.values": "^1.1.1", - "prop-types": "^15.7.2", - "resolve": "^1.18.1", - "string.prototype.matchall": "^4.0.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": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz", - "integrity": "sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ==" - }, - "eslint-plugin-testing-library": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-3.10.1.tgz", - "integrity": "sha512-nQIFe2muIFv2oR2zIuXE4vTbcFNx8hZKRzgHZqJg8rfopIWwoTwtlbCCNELT/jXzVe1uZF68ALGYoDXjLczKiQ==", - "requires": { - "@typescript-eslint/experimental-utils": "^3.10.1" - }, - "dependencies": { - "@typescript-eslint/experimental-utils": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz", - "integrity": "sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw==", - "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/types": "3.10.1", - "@typescript-eslint/typescript-estree": "3.10.1", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" - } - }, - "@typescript-eslint/types": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz", - "integrity": "sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==" - }, - "@typescript-eslint/typescript-estree": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz", - "integrity": "sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w==", - "requires": { - "@typescript-eslint/types": "3.10.1", - "@typescript-eslint/visitor-keys": "3.10.1", - "debug": "^4.1.1", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz", - "integrity": "sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==", - "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==" - } - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "requires": { - "esrecurse": "^4.3.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" - }, - "dependencies": { - "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==" - } - } - }, - "eslint-visitor-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", - "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==" - }, - "eslint-webpack-plugin": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-2.5.2.tgz", - "integrity": "sha512-ndD9chZ/kaGnjjx7taRg7c6FK/YKb29SSYzaLtPBIYLYJQmZtuKqtQbAvTS2ymiMQT6X0VW9vZIHK0KLstv93Q==", - "requires": { - "@types/eslint": "^7.2.6", - "arrify": "^2.0.1", - "jest-worker": "^26.6.2", - "micromatch": "^4.0.2", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "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==" - } - } - }, - "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.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - }, - "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" - }, - "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=" - }, - "eve-raphael": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/eve-raphael/-/eve-raphael-0.5.0.tgz", - "integrity": "sha1-F8dUt5K+7z+maE15z1pHxjxM2jA=" - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - }, - "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" - } - }, - "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": { - "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" - } - }, - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "expect": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", - "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", - "requires": { - "@jest/types": "^26.6.2", - "ansi-styles": "^4.0.0", - "jest-get-type": "^26.3.0", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.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=" - }, - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "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==" - }, - "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==" - } - } - }, - "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.3.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.3.0.tgz", - "integrity": "sha512-rgPIqOdfK/4J9FhiVrZ3cveAjRRo5rsQBAIhnylX874y1DX/kEKSVdLsnuHB6l1KTjHyU01VjiMBHgU2adejyg==" - } - } - }, - "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" - } - } - } - }, - "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=" - }, - "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": "3.2.5", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", - "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", - "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" - } - }, - "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=" - }, - "fastq": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", - "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", - "requires": { - "reusify": "^1.0.4" - } - }, - "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" - } - }, - "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==" - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "requires": { - "flat-cache": "^3.0.4" - } - }, - "file-loader": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.1.1.tgz", - "integrity": "sha512-Klt8C4BjWSXYQAfhpYYkG4qHNTna4toMHEbWrI5IuVoxbU6uiDKeKAP99R8mmbJi3lvewn/jQBOgU4+NS3tDQw==", - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "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.1.0", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.1.0.tgz", - "integrity": "sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg==" - }, - "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" - } - }, - "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" - }, - "dependencies": { - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "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-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" - }, - "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" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", - "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==" - }, - "flatten": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", - "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==" - }, - "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" - }, - "dependencies": { - "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" - } - }, - "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==" - }, - "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" - } - } - } - }, - "follow-redirects": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", - "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==" - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" - }, - "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": "4.1.6", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz", - "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==", - "requires": { - "@babel/code-frame": "^7.5.5", - "chalk": "^2.4.1", - "micromatch": "^3.1.10", - "minimatch": "^3.0.4", - "semver": "^5.6.0", - "tapable": "^1.0.0", - "worker-rpc": "^0.1.0" - }, - "dependencies": { - "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" - } - } - } - }, - "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" - } - } - } - }, - "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" - } - } - } - }, - "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" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "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" - } - } - } - }, - "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" - } - }, - "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" - }, - "dependencies": { - "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" - } - }, - "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==" - }, - "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" - } - } - } - }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.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-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" - }, - "dependencies": { - "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" - } - }, - "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==" - }, - "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" - } - } - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, - "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.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" - }, - "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==" - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "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-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" - }, - "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" - } - }, - "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" - } - }, - "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": "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" - } - }, - "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" - } - }, - "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": "11.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", - "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" - }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", - "optional": true - }, - "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" - } - }, - "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-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" - }, - "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.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" - }, - "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": { - "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" - } - } - } - }, - "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" - } - }, - "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": "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" - } - }, - "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" - } - }, - "hoopy": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", - "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==" - }, - "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" - }, - "dependencies": { - "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" - } - }, - "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==" - }, - "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" - } - } - } - }, - "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": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "requires": { - "whatwg-encoding": "^1.0.5" - } - }, - "html-entities": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", - "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==" - }, - "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" - } - }, - "html-parse-stringify2": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-parse-stringify2/-/html-parse-stringify2-2.0.1.tgz", - "integrity": "sha1-3FZwtyksoVi3vJFsmmc1rIhyg0o=", - "requires": { - "void-elements": "^2.0.1" - } - }, - "html-webpack-plugin": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.0.tgz", - "integrity": "sha512-MouoXEYSjTzCrjIxWwg8gxL5fE2X2WZJLmBYXlaJhQUH5K/b5OrqmV7T4dB7iu0xkmJ6JlUuV6fFVtnqbPopZw==", - "requires": { - "@types/html-minifier-terser": "^5.0.0", - "@types/tapable": "^1.0.5", - "@types/webpack": "^4.41.8", - "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": { - "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.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" - } - }, - "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==" - } - } - }, - "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.3", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", - "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==" - }, - "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" - }, - "dependencies": { - "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" - } - } - } - }, - "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" - } - } - } - }, - "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" - } - } - } - }, - "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" - } - }, - "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" - } - } - } - }, - "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=" - }, - "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" - }, - "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.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" - }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" - }, - "immer": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/immer/-/immer-8.0.1.tgz", - "integrity": "sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA==" - }, - "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": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "dependencies": { - "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==" - } - } - }, - "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" - }, - "dependencies": { - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" - } - } - }, - "import-local": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", - "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "dependencies": { - "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" - } - } - } - }, - "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==" - }, - "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.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "inter-ui": { - "version": "3.15.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" - } - }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "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-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.1.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", - "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", - "requires": { - "call-bind": "^1.0.0" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-bigint": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", - "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==" - }, - "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-boolean-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", - "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", - "requires": { - "call-bind": "^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.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==" - }, - "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-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", - "requires": { - "has": "^1.0.3" - } - }, - "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.1.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", - "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==" - }, - "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": "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==" - }, - "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-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=" - }, - "is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-number-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", - "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==" - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" - }, - "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-potential-custom-element-name": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz", - "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c=" - }, - "is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", - "requires": { - "call-bind": "^1.0.2", - "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-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-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": "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" - } - }, - "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": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", - "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==" - }, - "istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", - "requires": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.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": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "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" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - } - }, - "istanbul-reports": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", - "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jazzicon": { - "version": "1.5.0", - "requires": { - "color": "^0.11.1", - "mersenne-twister": "^1.0.1", - "raphael": "^2.2.0" - } - }, - "jest": { - "version": "26.6.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.0.tgz", - "integrity": "sha512-jxTmrvuecVISvKFFhOkjsWRZV7sFqdSUAd1ajOKY+/QE/aLBVstsJ/dX8GczLzwiT6ZEwwmZqtCUHLHHQVzcfA==", - "requires": { - "@jest/core": "^26.6.0", - "import-local": "^3.0.2", - "jest-cli": "^26.6.0" - }, - "dependencies": { - "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" - } - }, - "jest-cli": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", - "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", - "requires": { - "@jest/core": "^26.6.3", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "import-local": "^3.0.2", - "is-ci": "^2.0.0", - "jest-config": "^26.6.3", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "prompts": "^2.0.1", - "yargs": "^15.4.1" - } - } - } - }, - "jest-changed-files": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", - "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", - "requires": { - "@jest/types": "^26.6.2", - "execa": "^4.0.0", - "throat": "^5.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "requires": { - "pump": "^3.0.0" - } - }, - "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "requires": { - "path-key": "^3.0.0" - } - }, - "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==" - }, - "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" - } - } - } - }, - "jest-circus": { - "version": "26.6.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-26.6.0.tgz", - "integrity": "sha512-L2/Y9szN6FJPWFK8kzWXwfp+FOR7xq0cUL4lIsdbIdwz3Vh6P1nrpcqOleSzr28zOtSHQNV9Z7Tl+KkuK7t5Ng==", - "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^26.6.0", - "@jest/test-result": "^26.6.0", - "@jest/types": "^26.6.0", - "@types/babel__traverse": "^7.0.4", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^26.6.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^26.6.0", - "jest-matcher-utils": "^26.6.0", - "jest-message-util": "^26.6.0", - "jest-runner": "^26.6.0", - "jest-runtime": "^26.6.0", - "jest-snapshot": "^26.6.0", - "jest-util": "^26.6.0", - "pretty-format": "^26.6.0", - "stack-utils": "^2.0.2", - "throat": "^5.0.0" - }, - "dependencies": { - "@types/node": { - "version": "14.14.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", - "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==" - }, - "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" - } - } - } - }, - "jest-config": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", - "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", - "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^26.6.3", - "@jest/types": "^26.6.2", - "babel-jest": "^26.6.3", - "chalk": "^4.0.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "jest-environment-jsdom": "^26.6.2", - "jest-environment-node": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-jasmine2": "^26.6.3", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2" - }, - "dependencies": { - "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" - } - }, - "jest-resolve": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", - "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", - "requires": { - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^26.6.2", - "read-pkg-up": "^7.0.1", - "resolve": "^1.18.1", - "slash": "^3.0.0" - } - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - } - } - } - }, - "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" - }, - "dependencies": { - "@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" - } - }, - "@types/yargs": { - "version": "13.0.11", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz", - "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==", - "requires": { - "@types/yargs-parser": "*" - } - }, - "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" - } - }, - "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" - } - }, - "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==" - }, - "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" - } - }, - "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" - } - } - } - }, - "jest-docblock": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", - "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", - "requires": { - "detect-newline": "^3.0.0" - } - }, - "jest-each": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", - "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", - "requires": { - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2" - }, - "dependencies": { - "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" - } - } - } - }, - "jest-environment-jsdom": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", - "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", - "requires": { - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2", - "jsdom": "^16.4.0" - }, - "dependencies": { - "@types/node": { - "version": "14.14.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", - "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==" - } - } - }, - "jest-environment-node": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", - "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", - "requires": { - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2" - }, - "dependencies": { - "@types/node": { - "version": "14.14.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", - "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==" - } - } - }, - "jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==" - }, - "jest-haste-map": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", - "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", - "requires": { - "@jest/types": "^26.6.2", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.1.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^26.0.0", - "jest-serializer": "^26.6.2", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "micromatch": "^4.0.2", - "sane": "^4.0.3", - "walker": "^1.0.7" - }, - "dependencies": { - "@types/node": { - "version": "14.14.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", - "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==" - } - } - }, - "jest-jasmine2": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", - "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", - "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^26.6.2", - "is-generator-fn": "^2.0.0", - "jest-each": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2", - "throat": "^5.0.0" - }, - "dependencies": { - "@types/node": { - "version": "14.14.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", - "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==" - }, - "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" - } - } - } - }, - "jest-leak-detector": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", - "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", - "requires": { - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - } - }, - "jest-matcher-utils": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", - "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - }, - "dependencies": { - "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" - } - }, - "diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==" - }, - "jest-diff": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - } - } - } - }, - "jest-message-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", - "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2", - "slash": "^3.0.0", - "stack-utils": "^2.0.2" - }, - "dependencies": { - "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" - } - } - } - }, - "jest-mock": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", - "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", - "requires": { - "@jest/types": "^26.6.2", - "@types/node": "*" - }, - "dependencies": { - "@types/node": { - "version": "14.14.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", - "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==" - } - } - }, - "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": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", - "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==" - }, - "jest-resolve": { - "version": "26.6.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.0.tgz", - "integrity": "sha512-tRAz2bwraHufNp+CCmAD8ciyCpXCs1NQxB5EJAmtCFy6BN81loFEGWKzYu26Y62lAJJe4X4jg36Kf+NsQyiStQ==", - "requires": { - "@jest/types": "^26.6.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^26.6.0", - "read-pkg-up": "^7.0.1", - "resolve": "^1.17.0", - "slash": "^3.0.0" - }, - "dependencies": { - "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" - } - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - } - } - } - }, - "jest-resolve-dependencies": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", - "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", - "requires": { - "@jest/types": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-snapshot": "^26.6.2" - } - }, - "jest-runner": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", - "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", - "requires": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.7.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-docblock": "^26.0.0", - "jest-haste-map": "^26.6.2", - "jest-leak-detector": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "source-map-support": "^0.5.6", - "throat": "^5.0.0" - }, - "dependencies": { - "@types/node": { - "version": "14.14.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", - "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==" - }, - "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" - } - }, - "jest-resolve": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", - "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", - "requires": { - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^26.6.2", - "read-pkg-up": "^7.0.1", - "resolve": "^1.18.1", - "slash": "^3.0.0" - } - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - } - } - } - }, - "jest-runtime": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", - "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", - "requires": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/globals": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0", - "cjs-module-lexer": "^0.6.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "slash": "^3.0.0", - "strip-bom": "^4.0.0", - "yargs": "^15.4.1" - }, - "dependencies": { - "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" - } - }, - "jest-resolve": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", - "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", - "requires": { - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^26.6.2", - "read-pkg-up": "^7.0.1", - "resolve": "^1.18.1", - "slash": "^3.0.0" - } - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - } - }, - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" - } - } - }, - "jest-serializer": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", - "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - }, - "dependencies": { - "@types/node": { - "version": "14.14.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", - "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==" - } - } - }, - "jest-snapshot": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", - "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", - "requires": { - "@babel/types": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.0.0", - "chalk": "^4.0.0", - "expect": "^26.6.2", - "graceful-fs": "^4.2.4", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-haste-map": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", - "natural-compare": "^1.4.0", - "pretty-format": "^26.6.2", - "semver": "^7.3.2" - }, - "dependencies": { - "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" - } - }, - "diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==" - }, - "jest-diff": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - } - }, - "jest-resolve": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", - "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", - "requires": { - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^26.6.2", - "read-pkg-up": "^7.0.1", - "resolve": "^1.18.1", - "slash": "^3.0.0" - } - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - } - } - } - }, - "jest-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", - "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", - "requires": { - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^2.0.0", - "micromatch": "^4.0.2" - }, - "dependencies": { - "@types/node": { - "version": "14.14.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", - "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==" - }, - "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" - } - } - } - }, - "jest-validate": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", - "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", - "requires": { - "@jest/types": "^26.6.2", - "camelcase": "^6.0.0", - "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", - "leven": "^3.1.0", - "pretty-format": "^26.6.2" - }, - "dependencies": { - "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" - } - } - } - }, - "jest-watch-typeahead": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-0.6.1.tgz", - "integrity": "sha512-ITVnHhj3Jd/QkqQcTqZfRgjfyRhDFM/auzgVo2RKvSwi18YMvh0WvXDJFoFED6c7jd/5jxtu4kSOb9PTu2cPVg==", - "requires": { - "ansi-escapes": "^4.3.1", - "chalk": "^4.0.0", - "jest-regex-util": "^26.0.0", - "jest-watcher": "^26.3.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "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" - } - } - } - }, - "jest-watcher": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", - "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", - "requires": { - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^26.6.2", - "string-length": "^4.0.1" - }, - "dependencies": { - "@types/node": { - "version": "14.14.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", - "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==" - }, - "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" - } - } - } - }, - "jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "dependencies": { - "@types/node": { - "version": "14.14.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", - "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==" - } - } - }, - "js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" - }, - "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.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbi": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/jsbi/-/jsbi-3.1.4.tgz", - "integrity": "sha512-52QRRFSsi9impURE8ZUbzAMCLjPm4THO7H2fcuIvaaeFTbSysvkodbQQXIVsNgq/ypDbq6dJiuGKL0vZ/i9hUg==" - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "jsdom": { - "version": "16.4.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.4.0.tgz", - "integrity": "sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w==", - "requires": { - "abab": "^2.0.3", - "acorn": "^7.1.1", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.2.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.0", - "domexception": "^2.0.1", - "escodegen": "^1.14.1", - "html-encoding-sniffer": "^2.0.1", - "is-potential-custom-element-name": "^1.0.0", - "nwsapi": "^2.2.0", - "parse5": "5.1.1", - "request": "^2.88.2", - "request-promise-native": "^1.0.8", - "saxes": "^5.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^3.0.1", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0", - "ws": "^7.2.3", - "xml-name-validator": "^3.0.0" - } - }, - "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-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "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-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.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "requires": { - "minimist": "^1.2.5" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "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" - } - }, - "jsx-ast-utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz", - "integrity": "sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q==", - "requires": { - "array-includes": "^3.1.2", - "object.assign": "^4.1.2" - } - }, - "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==" - }, - "klona": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", - "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==" - }, - "language-subtag-registry": { - "version": "0.3.21", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", - "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==" - }, - "language-tags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=", - "requires": { - "language-subtag-registry": "~0.3.2" - } - }, - "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" - } - }, - "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==" - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "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-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" - }, - "dependencies": { - "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" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - } - } - }, - "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": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" - }, - "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.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" - }, - "loglevel": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", - "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==" - }, - "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.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "requires": { - "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - } - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, - "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": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", - "requires": { - "tmpl": "1.0.x" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" - }, - "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" - } - }, - "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=" - }, - "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" - }, - "dependencies": { - "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" - } - }, - "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==" - }, - "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" - } - } - } - }, - "merge": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.0.tgz", - "integrity": "sha512-TcuhVDV+e6X457MQAm7xIb19rWhZuEDEho7RrwxMpQ/3GhD5sDlnP188gjQQuweXHy9igdke5oUtVOXX1X8Sxg==" - }, - "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==" - }, - "mersenne-twister": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mersenne-twister/-/mersenne-twister-1.1.0.tgz", - "integrity": "sha1-+RZhjuQ9cXnvz2Qb7EUx65Zwl4o=" - }, - "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": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - } - }, - "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.46.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", - "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==" - }, - "mime-types": { - "version": "2.1.29", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", - "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", - "requires": { - "mime-db": "1.46.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, - "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.1", - "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz", - "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==", - "requires": { - "@babel/runtime": "^7.12.1", - "tiny-warning": "^1.0.3" - } - }, - "mini-css-extract-plugin": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz", - "integrity": "sha512-n9BA8LonkOkW1/zn+IbLPQmovsL0wMb9yx75fMJQZf2X1Zoec9yTZtyMePcyu19wPkmFbzZZA6fLTotpFhQsOA==", - "requires": { - "loader-utils": "^1.1.0", - "normalize-url": "1.9.1", - "schema-utils": "^1.0.0", - "webpack-sources": "^1.1.0" - }, - "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" - } - }, - "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" - } - }, - "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" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.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" - } - }, - "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" - } - } - } - }, - "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" - }, - "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" - } - } - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "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=" - }, - "nan": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", - "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", - "optional": true - }, - "nanoid": { - "version": "3.1.20", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", - "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==" - }, - "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" - } - }, - "native-url": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/native-url/-/native-url-0.2.6.tgz", - "integrity": "sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA==", - "requires": { - "querystring": "^0.2.0" - } - }, - "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==" - }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" - }, - "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.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - } - } - }, - "node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" - }, - "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": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "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" - }, - "dependencies": { - "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" - } - } - } - }, - "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==" - } - } - }, - "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": "8.0.1", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.1.tgz", - "integrity": "sha512-BvEXF+UmsnAfYfoapKM9nGxnP+Wn7P91YfXmrKnfcYCx6VBeoN5Ez5Ogck6I8Bi5k4RlpqRYaw75pAwzX9OphA==", - "optional": true, - "requires": { - "growly": "^1.3.0", - "is-wsl": "^2.2.0", - "semver": "^7.3.2", - "shellwords": "^0.1.1", - "uuid": "^8.3.0", - "which": "^2.0.2" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "optional": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==" - }, - "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" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "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" - } - }, - "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=" - }, - "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-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==" - }, - "object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "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-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.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "object.entries": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz", - "integrity": "sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "has": "^1.0.3" - } - }, - "object.fromentries": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.4.tgz", - "integrity": "sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "has": "^1.0.3" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", - "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" - } - }, - "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.values": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", - "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "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.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "requires": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - } - }, - "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" - }, - "dependencies": { - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" - } - } - }, - "optimize-css-assets-webpack-plugin": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz", - "integrity": "sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A==", - "requires": { - "cssnano": "^4.1.10", - "last-call-webpack-plugin": "^3.0.0" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "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=" - }, - "p-each-series": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", - "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==" - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - }, - "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": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "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" - }, - "dependencies": { - "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" - } - }, - "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==" - }, - "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" - } - } - } - }, - "param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - } - } - }, - "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" - } - }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" - }, - "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.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - } - } - }, - "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": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - }, - "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-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": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - }, - "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=" - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - }, - "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" - } - }, - "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" - } - }, - "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" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - } - } - }, - "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" - } - }, - "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" - } - }, - "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" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - } - } - }, - "pnp-webpack-plugin": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", - "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", - "requires": { - "ts-pnp": "^1.1.6" - } - }, - "polished": { - "version": "4.1.1", - "requires": { - "@babel/runtime": "^7.12.5" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.13.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.7.tgz", - "integrity": "sha512-h+ilqoX998mRVM5FtB5ijRuHUDVt5l3yfoOi2uh18Z/O3hvyaHQ39NpxVkCIG5yFs+mLq/ewFp8Bss6zmWv6ZA==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - } - } - }, - "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.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "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.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "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.5", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", - "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", - "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": { - "color": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", - "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", - "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.4" - } - }, - "color-string": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz", - "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==", - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "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.2.1", - "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz", - "integrity": "sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ==", - "requires": { - "postcss": "^7.0.26" - } - }, - "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.1", - "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz", - "integrity": "sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA==", - "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.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", - "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", - "requires": { - "cosmiconfig": "^5.0.0", - "import-cwd": "^2.0.0" - }, - "dependencies": { - "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" - } - }, - "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" - } - }, - "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" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" - } - } - }, - "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": { - "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.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" - } - }, - "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": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-5.0.2.tgz", - "integrity": "sha512-jDUfCPJbKOABhwpUKcqCVbbXiloe/QXMcbJ6Iipf3sDIihEzTqRCeMBfRaOHxhBuTYqtASrI1KJWxzztZU4qUQ==", - "requires": { - "postcss": "^8.1.0" - }, - "dependencies": { - "postcss": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.6.tgz", - "integrity": "sha512-xpB8qYxgPuly166AGlpRjUdEYtmOWx2iCwGmrv4vqZL9YPVviDVPZPRXxnXr6xPZOdxQ9lp3ZBFCRgWJ7LE3Sg==", - "requires": { - "colorette": "^1.2.1", - "nanoid": "^3.1.20", - "source-map": "^0.6.1" - } - } - } - }, - "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.1", - "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz", - "integrity": "sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ==", - "requires": { - "balanced-match": "^1.0.0", - "postcss": "^7.0.2" - } - }, - "postcss-selector-parser": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", - "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", - "requires": { - "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1", - "util-deprecate": "^1.0.2" - } - }, - "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.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" - }, - "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==" - }, - "pretty-error": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", - "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", - "requires": { - "lodash": "^4.17.20", - "renderkid": "^2.0.4" - } - }, - "pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "requires": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" - }, - "dependencies": { - "react-is": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.1.tgz", - "integrity": "sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA==" - } - } - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" - }, - "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=" - }, - "prompts": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz", - "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==", - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "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" - } - }, - "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" - } - }, - "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" - } - }, - "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" - }, - "dependencies": { - "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" - } - } - } - }, - "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.9.6" - }, - "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" - } - }, - "querystring": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", - "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==" - }, - "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.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" - }, - "queue-microtask": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.2.tgz", - "integrity": "sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg==" - }, - "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==" - }, - "raphael": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/raphael/-/raphael-2.3.0.tgz", - "integrity": "sha512-w2yIenZAQnp257XUWGni4bLMVxpUpcIl7qgxEgDIXtmSypYtlNxfXWpOBxs7LBTps5sDwhRnrToJrMUrivqNTQ==", - "requires": { - "eve-raphael": "0.5.0" - } - }, - "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": "17.0.1", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "react-app-polyfill": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-2.0.0.tgz", - "integrity": "sha512-0sF4ny9v/B7s6aoehwze9vJNWcmCemAUYBVasscVr92+UYiEqDXOxfKjXN685mDaMRNF3WdhHQs76oTODMocFA==", - "requires": { - "core-js": "^3.6.5", - "object-assign": "^4.1.1", - "promise": "^8.1.0", - "raf": "^3.4.1", - "regenerator-runtime": "^0.13.7", - "whatwg-fetch": "^3.4.1" - } - }, - "react-dev-utils": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.3.tgz", - "integrity": "sha512-4lEA5gF4OHrcJLMUV1t+4XbNDiJbsAWCH5Z2uqlTqW6dD7Cf5nEASkeXrCI/Mz83sI2o527oBIFKVMXtRf1Vtg==", - "requires": { - "@babel/code-frame": "7.10.4", - "address": "1.1.2", - "browserslist": "4.14.2", - "chalk": "2.4.2", - "cross-spawn": "7.0.3", - "detect-port-alt": "1.1.6", - "escape-string-regexp": "2.0.0", - "filesize": "6.1.0", - "find-up": "4.1.0", - "fork-ts-checker-webpack-plugin": "4.1.6", - "global-modules": "2.0.0", - "globby": "11.0.1", - "gzip-size": "5.1.1", - "immer": "8.0.1", - "is-root": "2.1.0", - "loader-utils": "2.0.0", - "open": "^7.0.2", - "pkg-up": "3.1.0", - "prompts": "2.4.0", - "react-error-overlay": "^6.0.9", - "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.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" - } - }, - "browserslist": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.2.tgz", - "integrity": "sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==", - "requires": { - "caniuse-lite": "^1.0.30001125", - "electron-to-chromium": "^1.3.564", - "escalade": "^3.0.2", - "node-releases": "^1.1.61" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "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==" - }, - "globby": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", - "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - } - }, - "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==" - }, - "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-device-detect": { - "version": "1.15.0", - "requires": { - "ua-parser-js": "^0.7.23" - } - }, - "react-dom": { - "version": "17.0.1", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.1" - } - }, - "react-error-overlay": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz", - "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==" - }, - "react-feather": { - "version": "2.0.9", - "requires": { - "prop-types": "^15.7.2" - } - }, - "react-ga": { - "version": "3.3.0" - }, - "react-i18next": { - "version": "11.8.8", - "requires": { - "@babel/runtime": "^7.13.6", - "html-parse-stringify2": "^2.0.1" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.13.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.7.tgz", - "integrity": "sha512-h+ilqoX998mRVM5FtB5ijRuHUDVt5l3yfoOi2uh18Z/O3hvyaHQ39NpxVkCIG5yFs+mLq/ewFp8Bss6zmWv6ZA==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - } - } - }, - "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-redux": { - "version": "7.2.2", - "requires": { - "@babel/runtime": "^7.12.1", - "hoist-non-react-statics": "^3.3.2", - "loose-envify": "^1.4.0", - "prop-types": "^15.7.2", - "react-is": "^16.13.1" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.13.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.7.tgz", - "integrity": "sha512-h+ilqoX998mRVM5FtB5ijRuHUDVt5l3yfoOi2uh18Z/O3hvyaHQ39NpxVkCIG5yFs+mLq/ewFp8Bss6zmWv6ZA==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - } - } - }, - "react-refresh": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz", - "integrity": "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==" - }, - "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" - } - }, - "react-router-dom": { - "version": "5.2.0", - "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": { - "@babel/runtime": { - "version": "7.13.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.7.tgz", - "integrity": "sha512-h+ilqoX998mRVM5FtB5ijRuHUDVt5l3yfoOi2uh18Z/O3hvyaHQ39NpxVkCIG5yFs+mLq/ewFp8Bss6zmWv6ZA==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - } - } - }, - "react-scripts": { - "version": "4.0.3", - "requires": { - "@babel/core": "7.12.3", - "@pmmmwh/react-refresh-webpack-plugin": "0.4.3", - "@svgr/webpack": "5.5.0", - "@typescript-eslint/eslint-plugin": "^4.5.0", - "@typescript-eslint/parser": "^4.5.0", - "babel-eslint": "^10.1.0", - "babel-jest": "^26.6.0", - "babel-loader": "8.1.0", - "babel-plugin-named-asset-import": "^0.3.7", - "babel-preset-react-app": "^10.0.0", - "bfj": "^7.0.2", - "camelcase": "^6.1.0", - "case-sensitive-paths-webpack-plugin": "2.3.0", - "css-loader": "4.3.0", - "dotenv": "8.2.0", - "dotenv-expand": "5.1.0", - "eslint": "^7.11.0", - "eslint-config-react-app": "^6.0.0", - "eslint-plugin-flowtype": "^5.2.0", - "eslint-plugin-import": "^2.22.1", - "eslint-plugin-jest": "^24.1.0", - "eslint-plugin-jsx-a11y": "^6.3.1", - "eslint-plugin-react": "^7.21.5", - "eslint-plugin-react-hooks": "^4.2.0", - "eslint-plugin-testing-library": "^3.9.2", - "eslint-webpack-plugin": "^2.5.2", - "file-loader": "6.1.1", - "fs-extra": "^9.0.1", - "fsevents": "^2.1.3", - "html-webpack-plugin": "4.5.0", - "identity-obj-proxy": "3.0.0", - "jest": "26.6.0", - "jest-circus": "26.6.0", - "jest-resolve": "26.6.0", - "jest-watch-typeahead": "0.6.1", - "mini-css-extract-plugin": "0.11.3", - "optimize-css-assets-webpack-plugin": "5.0.4", - "pnp-webpack-plugin": "1.6.4", - "postcss-flexbugs-fixes": "4.2.1", - "postcss-loader": "3.0.0", - "postcss-normalize": "8.0.1", - "postcss-preset-env": "6.7.0", - "postcss-safe-parser": "5.0.2", - "prompts": "2.4.0", - "react-app-polyfill": "^2.0.0", - "react-dev-utils": "^11.0.3", - "react-refresh": "^0.8.3", - "resolve": "1.18.1", - "resolve-url-loader": "^3.1.2", - "sass-loader": "^10.0.5", - "semver": "7.3.2", - "style-loader": "1.3.0", - "terser-webpack-plugin": "4.2.3", - "ts-pnp": "1.2.0", - "url-loader": "4.1.1", - "webpack": "4.44.2", - "webpack-dev-server": "3.11.1", - "webpack-manifest-plugin": "2.2.0", - "workbox-webpack-plugin": "5.1.4" - }, - "dependencies": { - "resolve": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.18.1.tgz", - "integrity": "sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==", - "requires": { - "is-core-module": "^2.0.0", - "path-parse": "^1.0.6" - } - } - } - }, - "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" - }, - "dependencies": { - "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" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - } - } - }, - "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" - }, - "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=" - } - } - }, - "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" - } - }, - "readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", - "optional": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "rebass": { - "version": "4.0.7", - "requires": { - "reflexbox": "^4.0.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" - } - }, - "redux": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.5.tgz", - "integrity": "sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w==", - "requires": { - "loose-envify": "^1.4.0", - "symbol-observable": "^1.2.0" - } - }, - "redux-localstorage-simple": { - "version": "2.4.0", - "requires": { - "merge": "2.1.0" - } - }, - "redux-thunk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.3.0.tgz", - "integrity": "sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw==" - }, - "reflexbox": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/reflexbox/-/reflexbox-4.0.6.tgz", - "integrity": "sha512-UNUL4YoJEXAPjRKHuty1tuOk+LV1nDJ2KYViDcH7lYm5yU3AQ+EKNXxPU3E14bQNK/pE09b1hYl+ZKdA94tWLQ==", - "requires": { - "@emotion/core": "^10.0.0", - "@emotion/styled": "^10.0.0", - "@styled-system/css": "^5.0.0", - "@styled-system/should-forward-prop": "^5.0.0", - "styled-system": "^5.0.0" - } - }, - "regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" - }, - "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.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==" - }, - "regexp.prototype.flags": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", - "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "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.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", - "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.7", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.7.tgz", - "integrity": "sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ==", - "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-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.5", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.5.tgz", - "integrity": "sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ==", - "requires": { - "css-select": "^2.0.2", - "dom-converter": "^0.2", - "htmlparser2": "^3.10.1", - "lodash": "^4.17.20", - "strip-ansi": "^3.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-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" - } - } - } - }, - "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=" - }, - "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" - }, - "dependencies": { - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, - "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" - } - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - } - } - }, - "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" - }, - "dependencies": { - "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" - } - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" - }, - "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==" - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" - }, - "reselect": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.0.0.tgz", - "integrity": "sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA==" - }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "requires": { - "resolve-from": "^5.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" - }, - "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.2", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz", - "integrity": "sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ==", - "requires": { - "adjust-sourcemap-loader": "3.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" - } - } - } - }, - "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=" - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - }, - "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": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "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" - } - }, - "rollup": { - "version": "1.32.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.32.1.tgz", - "integrity": "sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==", - "requires": { - "@types/estree": "*", - "@types/node": "*", - "acorn": "^7.1.0" - }, - "dependencies": { - "@types/node": { - "version": "14.14.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", - "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==" - } - } - }, - "rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "rollup-plugin-terser": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz", - "integrity": "sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w==", - "requires": { - "@babel/code-frame": "^7.5.5", - "jest-worker": "^24.9.0", - "rollup-pluginutils": "^2.8.2", - "serialize-javascript": "^4.0.0", - "terser": "^4.6.2" - }, - "dependencies": { - "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" - } - }, - "serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "requires": { - "randombytes": "^2.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" - } - } - } - }, - "rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "requires": { - "estree-walker": "^0.6.1" - }, - "dependencies": { - "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==" - } - } - }, - "rsvp": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", - "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==" - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "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" - } - }, - "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==" - }, - "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" - }, - "dependencies": { - "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" - } - }, - "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" - } - } - } - }, - "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" - } - } - } - }, - "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" - } - } - } - }, - "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" - } - }, - "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" - } - }, - "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" - } - } - } - }, - "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": "10.1.1", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.1.1.tgz", - "integrity": "sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw==", - "requires": { - "klona": "^2.0.4", - "loader-utils": "^2.0.0", - "neo-async": "^2.6.2", - "schema-utils": "^3.0.0", - "semver": "^7.3.2" - }, - "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "requires": { - "xmlchars": "^2.2.0" - } - }, - "scheduler": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.1.tgz", - "integrity": "sha512-LKTe+2xNJBNxu/QhHvDR14wUXHRQbVY5ZOYpOGWRzhydZUqrLb2JBvLPY7cAqFmqrWuDED0Mjk7013SZiOz6Bw==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - } - }, - "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.8", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", - "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", - "requires": { - "node-forge": "^0.10.0" - } - }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" - }, - "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": { - "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" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "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": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", - "requires": { - "randombytes": "^2.1.0" - } - }, - "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": { - "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" - } - }, - "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=" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "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" - } - }, - "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==", - "optional": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" - }, - "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": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, - "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": { - "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" - } - }, - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "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.21", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", - "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", - "requires": { - "faye-websocket": "^0.11.3", - "uuid": "^3.4.0", - "websocket-driver": "^0.7.4" - }, - "dependencies": { - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - } - } - }, - "sockjs-client": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.0.tgz", - "integrity": "sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q==", - "requires": { - "debug": "^3.2.6", - "eventsource": "^1.0.7", - "faye-websocket": "^0.11.3", - "inherits": "^2.0.4", - "json3": "^3.3.3", - "url-parse": "^1.4.7" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "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.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==" - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - }, - "spdx-correct": { - "version": "3.1.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.7", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", - "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==" - }, - "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" - } - }, - "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" - } - }, - "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": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "requires": { - "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-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==", - "requires": { - "escape-string-regexp": "^2.0.0" - }, - "dependencies": { - "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==" - } - } - }, - "stackframe": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz", - "integrity": "sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==" - }, - "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" - }, - "dependencies": { - "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" - } - }, - "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==" - }, - "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" - } - } - } - }, - "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-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" - }, - "dependencies": { - "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" - } - }, - "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==" - }, - "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" - } - } - } - }, - "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": "4.0.1", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.1.tgz", - "integrity": "sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw==", - "requires": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - } - }, - "string-natural-compare": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", - "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==" - }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "string.prototype.matchall": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.4.tgz", - "integrity": "sha512-pknFIWVachNcyqRfaQSeu/FUfpvJTe4uskUSZ9Wc1RijsPuzbZ8TyYT8WCNnntCjUEqQ3vUHMAfVj2+wLAisPQ==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "has-symbols": "^1.0.1", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.3.1", - "side-channel": "^1.0.4" - } - }, - "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.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" - }, - "dependencies": { - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" - } - } - }, - "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" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" - }, - "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-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" - }, - "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": "1.3.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.3.0.tgz", - "integrity": "sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==", - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^2.7.0" - } - }, - "styled-components": { - "version": "5.2.1", - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/traverse": "^7.4.5", - "@emotion/is-prop-valid": "^0.8.8", - "@emotion/stylis": "^0.8.4", - "@emotion/unitless": "^0.7.4", - "babel-plugin-styled-components": ">= 1", - "css-to-react-native": "^3.0.0", - "hoist-non-react-statics": "^3.0.0", - "shallowequal": "^1.1.0", - "supports-color": "^5.5.0" - }, - "dependencies": { - "@babel/traverse": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", - "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.0", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.0", - "@babel/types": "^7.13.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" - } - }, - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "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" - } - } - } - }, - "styled-system": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/styled-system/-/styled-system-5.1.5.tgz", - "integrity": "sha512-7VoD0o2R3RKzOzPK0jYrVnS8iJdfkKsQJNiLRDjikOpQVqQHns/DXWaPZOH4tIKkhAT7I6wIsy9FWTWh2X3q+A==", - "requires": { - "@styled-system/background": "^5.1.2", - "@styled-system/border": "^5.1.5", - "@styled-system/color": "^5.1.2", - "@styled-system/core": "^5.1.2", - "@styled-system/flexbox": "^5.1.2", - "@styled-system/grid": "^5.1.2", - "@styled-system/layout": "^5.1.2", - "@styled-system/position": "^5.1.2", - "@styled-system/shadow": "^5.1.2", - "@styled-system/space": "^5.1.2", - "@styled-system/typography": "^5.1.2", - "@styled-system/variant": "^5.1.5", - "object-assign": "^4.1.1" - } - }, - "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" - } - } - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - } - } - }, - "supports-hyperlinks": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz", - "integrity": "sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA==", - "requires": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - } - } - }, - "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-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" - }, - "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==" - }, - "table": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", - "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", - "requires": { - "ajv": "^7.0.2", - "lodash": "^4.17.20", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0" - }, - "dependencies": { - "ajv": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.1.1.tgz", - "integrity": "sha512-ga/aqDYnUy/o7vbsRTFhhTsNeXiYb5JWDIcRIeZfwRNCefwjNTVYCGdGSUrEmiu3yDK3vFvNbgJxvrQW4JXrYQ==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - } - } - }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" - }, - "tar": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", - "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - } - } - }, - "temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=" - }, - "tempy": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz", - "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==", - "requires": { - "temp-dir": "^1.0.0", - "type-fest": "^0.3.1", - "unique-string": "^1.0.0" - }, - "dependencies": { - "type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==" - } - } - }, - "terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "requires": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - } - }, - "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" - }, - "dependencies": { - "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==" - } - } - }, - "terser-webpack-plugin": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz", - "integrity": "sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==", - "requires": { - "cacache": "^15.0.5", - "find-cache-dir": "^3.3.1", - "jest-worker": "^26.5.0", - "p-limit": "^3.0.2", - "schema-utils": "^3.0.0", - "serialize-javascript": "^5.0.1", - "source-map": "^0.6.1", - "terser": "^5.3.4", - "webpack-sources": "^1.4.3" - }, - "dependencies": { - "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==" - }, - "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" - } - }, - "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-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "requires": { - "find-up": "^4.0.0" - } - }, - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - }, - "terser": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.0.tgz", - "integrity": "sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA==", - "requires": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.19" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" - } - } - } - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" - }, - "throat": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", - "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==" - }, - "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" - }, - "dependencies": { - "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" - } - }, - "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==" - }, - "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" - } - } - } - }, - "thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" - }, - "timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "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-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==" - }, - "tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=" - }, - "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": "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" - } - }, - "toformat": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/toformat/-/toformat-2.0.0.tgz", - "integrity": "sha512-03SWBVop6nU8bpyZCx7SodpYznbZF5R4ljwNLBcTQzKOD9xuihRo/psX58llS1BMFhhAI08H3luot5GoXJz2pQ==" - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - }, - "tough-cookie": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", - "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", - "requires": { - "ip-regex": "^2.1.0", - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", - "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", - "requires": { - "punycode": "^2.1.1" - } - }, - "tryer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", - "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==" - }, - "ts-pnp": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", - "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==" - }, - "tsconfig-paths": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", - "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.0", - "strip-bom": "^3.0.0" - }, - "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" - } - } - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "tsutils": { - "version": "3.20.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.20.0.tgz", - "integrity": "sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg==", - "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.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" - }, - "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" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "typescript": { - "version": "3.8.3" - }, - "ua-parser-js": { - "version": "0.7.24", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.24.tgz", - "integrity": "sha512-yo+miGzQx5gakzVK3QFfN0/L9uVhosXBBO7qmnk7c2iw1IhL212wfA3zbnI54B0obGwC/5NWub/iT9sReMx+Fw==" - }, - "unbox-primitive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz", - "integrity": "sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA==", - "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.0", - "has-symbols": "^1.0.0", - "which-boxed-primitive": "^1.0.1" - } - }, - "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-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", - "requires": { - "crypto-random-string": "^1.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - }, - "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.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "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=" - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" - } - } - }, - "url-loader": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", - "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", - "requires": { - "loader-utils": "^2.0.0", - "mime-types": "^2.1.27", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "url-parse": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", - "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "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.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" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - } - } - }, - "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" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "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.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } - } - }, - "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": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "optional": true - }, - "v8-compile-cache": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", - "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==" - }, - "v8-to-istanbul": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.0.tgz", - "integrity": "sha512-uXUVqNUCLa0AH1vuVxzi+MI4RfxEOKt9pBgKwHbgH7st8Kv2P1m+jvWNnektzBh5QShF3ODgKmUFCf38LnVz1g==", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" - } - } - }, - "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==" - }, - "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" - } - }, - "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==" - }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=" - }, - "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": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "requires": { - "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" - } - }, - "watchpack": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", - "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", - "requires": { - "chokidar": "^3.4.1", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.1" - } - }, - "watchpack-chokidar2": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", - "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", - "optional": true, - "requires": { - "chokidar": "^2.1.8" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "optional": true, - "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=", - "optional": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "optional": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "optional": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "optional": true, - "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" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "optional": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "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" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "optional": true, - "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=", - "optional": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "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=", - "optional": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "optional": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "optional": true, - "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" - } - }, - "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==", - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "optional": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "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==", - "optional": true - }, - "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==", - "optional": true, - "requires": { - "safe-buffer": "~5.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=", - "optional": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "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": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==" - }, - "webpack": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz", - "integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==", - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.3.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.3", - "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.7.4", - "webpack-sources": "^1.4.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" - }, - "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" - } - } - } - }, - "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" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "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" - } - }, - "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" - } - } - } - }, - "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-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" - }, - "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.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" - } - }, - "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" - } - }, - "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" - } - }, - "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" - } - }, - "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": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "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.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", - "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", - "requires": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.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" - } - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - } - } - }, - "webpack-dev-middleware": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", - "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", - "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.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==" - } - } - }, - "webpack-dev-server": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.1.tgz", - "integrity": "sha512-u4R3mRzZkbxQVa+MBWi2uVpB5W59H3ekZAJsQlKUTdl7Elcah2EhygTPLmeFXybQkf9i2+L0kn7ik9SnXa6ihQ==", - "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.3.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.8", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.26", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.8", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "sockjs-client": "^1.5.0", - "spdy": "^4.0.2", - "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": "^13.3.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "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" - } - }, - "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" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" - }, - "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" - } - } - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - }, - "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" - } - }, - "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" - }, - "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" - } - } - } - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "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" - } - } - } - }, - "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" - } - }, - "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" - } - }, - "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" - } - } - } - }, - "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" - } - }, - "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-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-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=" - }, - "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" - } - } - } - }, - "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" - } - }, - "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" - } - }, - "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" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - }, - "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" - } - }, - "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-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" - }, - "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==" - }, - "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": "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" - }, - "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" - } - } - } - }, - "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" - } - }, - "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" - } - }, - "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" - } - }, - "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" - } - }, - "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" - }, - "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" - } - } - } - }, - "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": "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" - } - } - } - }, - "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==" - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - } - } - }, - "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" - } - }, - "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" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - } - } - }, - "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==" - }, - "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.6.2", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", - "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==" - }, - "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": "8.4.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.4.0.tgz", - "integrity": "sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw==", - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^2.0.2", - "webidl-conversions": "^6.1.0" - } - }, - "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-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" - }, - "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==" - }, - "workbox-background-sync": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-5.1.4.tgz", - "integrity": "sha512-AH6x5pYq4vwQvfRDWH+vfOePfPIYQ00nCEB7dJRU1e0n9+9HMRyvI63FlDvtFT2AvXVRsXvUt7DNMEToyJLpSA==", - "requires": { - "workbox-core": "^5.1.4" - } - }, - "workbox-broadcast-update": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-5.1.4.tgz", - "integrity": "sha512-HTyTWkqXvHRuqY73XrwvXPud/FN6x3ROzkfFPsRjtw/kGZuZkPzfeH531qdUGfhtwjmtO/ZzXcWErqVzJNdXaA==", - "requires": { - "workbox-core": "^5.1.4" - } - }, - "workbox-build": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-5.1.4.tgz", - "integrity": "sha512-xUcZn6SYU8usjOlfLb9Y2/f86Gdo+fy1fXgH8tJHjxgpo53VVsqRX0lUDw8/JuyzNmXuo8vXX14pXX2oIm9Bow==", - "requires": { - "@babel/core": "^7.8.4", - "@babel/preset-env": "^7.8.4", - "@babel/runtime": "^7.8.4", - "@hapi/joi": "^15.1.0", - "@rollup/plugin-node-resolve": "^7.1.1", - "@rollup/plugin-replace": "^2.3.1", - "@surma/rollup-plugin-off-main-thread": "^1.1.1", - "common-tags": "^1.8.0", - "fast-json-stable-stringify": "^2.1.0", - "fs-extra": "^8.1.0", - "glob": "^7.1.6", - "lodash.template": "^4.5.0", - "pretty-bytes": "^5.3.0", - "rollup": "^1.31.1", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-terser": "^5.3.1", - "source-map": "^0.7.3", - "source-map-url": "^0.4.0", - "stringify-object": "^3.3.0", - "strip-comments": "^1.0.2", - "tempy": "^0.3.0", - "upath": "^1.2.0", - "workbox-background-sync": "^5.1.4", - "workbox-broadcast-update": "^5.1.4", - "workbox-cacheable-response": "^5.1.4", - "workbox-core": "^5.1.4", - "workbox-expiration": "^5.1.4", - "workbox-google-analytics": "^5.1.4", - "workbox-navigation-preload": "^5.1.4", - "workbox-precaching": "^5.1.4", - "workbox-range-requests": "^5.1.4", - "workbox-routing": "^5.1.4", - "workbox-strategies": "^5.1.4", - "workbox-streams": "^5.1.4", - "workbox-sw": "^5.1.4", - "workbox-window": "^5.1.4" - }, - "dependencies": { - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "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" - } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - } - } - }, - "workbox-cacheable-response": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-5.1.4.tgz", - "integrity": "sha512-0bfvMZs0Of1S5cdswfQK0BXt6ulU5kVD4lwer2CeI+03czHprXR3V4Y8lPTooamn7eHP8Iywi5QjyAMjw0qauA==", - "requires": { - "workbox-core": "^5.1.4" - } - }, - "workbox-core": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-5.1.4.tgz", - "integrity": "sha512-+4iRQan/1D8I81nR2L5vcbaaFskZC2CL17TLbvWVzQ4qiF/ytOGF6XeV54pVxAvKUtkLANhk8TyIUMtiMw2oDg==" - }, - "workbox-expiration": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-5.1.4.tgz", - "integrity": "sha512-oDO/5iC65h2Eq7jctAv858W2+CeRW5e0jZBMNRXpzp0ZPvuT6GblUiHnAsC5W5lANs1QS9atVOm4ifrBiYY7AQ==", - "requires": { - "workbox-core": "^5.1.4" - } - }, - "workbox-google-analytics": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-5.1.4.tgz", - "integrity": "sha512-0IFhKoEVrreHpKgcOoddV+oIaVXBFKXUzJVBI+nb0bxmcwYuZMdteBTp8AEDJacENtc9xbR0wa9RDCnYsCDLjA==", - "requires": { - "workbox-background-sync": "^5.1.4", - "workbox-core": "^5.1.4", - "workbox-routing": "^5.1.4", - "workbox-strategies": "^5.1.4" - } - }, - "workbox-navigation-preload": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-5.1.4.tgz", - "integrity": "sha512-Wf03osvK0wTflAfKXba//QmWC5BIaIZARU03JIhAEO2wSB2BDROWI8Q/zmianf54kdV7e1eLaIEZhth4K4MyfQ==", - "requires": { - "workbox-core": "^5.1.4" - } - }, - "workbox-precaching": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-5.1.4.tgz", - "integrity": "sha512-gCIFrBXmVQLFwvAzuGLCmkUYGVhBb7D1k/IL7pUJUO5xacjLcFUaLnnsoVepBGAiKw34HU1y/YuqvTKim9qAZA==", - "requires": { - "workbox-core": "^5.1.4" - } - }, - "workbox-range-requests": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-5.1.4.tgz", - "integrity": "sha512-1HSujLjgTeoxHrMR2muDW2dKdxqCGMc1KbeyGcmjZZAizJTFwu7CWLDmLv6O1ceWYrhfuLFJO+umYMddk2XMhw==", - "requires": { - "workbox-core": "^5.1.4" - } - }, - "workbox-routing": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-5.1.4.tgz", - "integrity": "sha512-8ljknRfqE1vEQtnMtzfksL+UXO822jJlHTIR7+BtJuxQ17+WPZfsHqvk1ynR/v0EHik4x2+826Hkwpgh4GKDCw==", - "requires": { - "workbox-core": "^5.1.4" - } - }, - "workbox-strategies": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-5.1.4.tgz", - "integrity": "sha512-VVS57LpaJTdjW3RgZvPwX0NlhNmscR7OQ9bP+N/34cYMDzXLyA6kqWffP6QKXSkca1OFo/v6v7hW7zrrguo6EA==", - "requires": { - "workbox-core": "^5.1.4", - "workbox-routing": "^5.1.4" - } - }, - "workbox-streams": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-5.1.4.tgz", - "integrity": "sha512-xU8yuF1hI/XcVhJUAfbQLa1guQUhdLMPQJkdT0kn6HP5CwiPOGiXnSFq80rAG4b1kJUChQQIGPrq439FQUNVrw==", - "requires": { - "workbox-core": "^5.1.4", - "workbox-routing": "^5.1.4" - } - }, - "workbox-sw": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-5.1.4.tgz", - "integrity": "sha512-9xKnKw95aXwSNc8kk8gki4HU0g0W6KXu+xks7wFuC7h0sembFnTrKtckqZxbSod41TDaGh+gWUA5IRXrL0ECRA==" - }, - "workbox-webpack-plugin": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-5.1.4.tgz", - "integrity": "sha512-PZafF4HpugZndqISi3rZ4ZK4A4DxO8rAqt2FwRptgsDx7NF8TVKP86/huHquUsRjMGQllsNdn4FNl8CD/UvKmQ==", - "requires": { - "@babel/runtime": "^7.5.5", - "fast-json-stable-stringify": "^2.0.0", - "source-map-url": "^0.4.0", - "upath": "^1.1.2", - "webpack-sources": "^1.3.0", - "workbox-build": "^5.1.4" - } - }, - "workbox-window": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-5.1.4.tgz", - "integrity": "sha512-vXQtgTeMCUq/4pBWMfQX8Ee7N2wVC4Q7XYFqLnfbXJ2hqew/cU1uMTD2KqGEgEpE4/30luxIxgE+LkIa8glBYw==", - "requires": { - "workbox-core": "^5.1.4" - } - }, - "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": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "ws": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.3.tgz", - "integrity": "sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ==" - }, - "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==" - }, - "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": "4.0.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", - "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==" - }, - "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": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.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": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - } - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - } - } - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" - } - } -} diff --git a/package.json b/package.json index 1ef33089..dd18e3e3 100644 --- a/package.json +++ b/package.json @@ -1,53 +1,122 @@ { - "name": "v3-info", - "version": "0.1.0", + "name": "@uniswap/interface", + "description": "Uniswap Interface", + "homepage": ".", "private": true, - "dependencies": { - "@ethersproject/address": "^5.0.10", - "@ethersproject/contracts": "^5.0.11", - "@ethersproject/providers": "^5.0.23", - "@metamask/jazzicon": "^2.0.0", - "@reduxjs/toolkit": "^1.2.5", - "@testing-library/jest-dom": "^4.2.4", - "@testing-library/react": "^9.3.2", - "@testing-library/user-event": "^7.1.2", - "@types/jest": "^24.0.0", + "devDependencies": { + "@emotion/core": "^11.0.0", + "@ethersproject/experimental": "^5.0.1", + "@popperjs/core": "^2.4.4", + "@reach/dialog": "^0.10.3", + "@reach/portal": "^0.10.3", + "@reduxjs/toolkit": "^1.3.5", + "@storybook/addon-actions": "^6.1.17", + "@storybook/addon-essentials": "^6.1.17", + "@storybook/addon-links": "^6.1.17", + "@storybook/addons": "^6.1.17", + "@storybook/components": "^6.1.17", + "@storybook/preset-create-react-app": "^3.1.5", + "@storybook/preset-typescript": "^3.0.0", + "@storybook/react": "^6.1.17", + "@storybook/theming": "^6.1.17", + "@styled-system/css": "^5.1.5", + "@types/jest": "^25.2.1", + "@types/lodash.flatmap": "^4.5.6", + "@types/luxon": "^1.24.4", + "@types/multicodec": "^1.0.0", + "@types/node": "^13.13.5", "@types/qs": "^6.9.2", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", - "@types/react-redux": "^7.1.7", - "@types/react-router": "^5.1.11", - "@types/react-router-dom": "^5.1.7", - "@types/rebass": "^4.0.8", - "@types/styled-components": "^5.1.7", - "@uniswap/sdk": "^3.0.2", - "@web3-react/core": "^6.1.9", - "inter-ui": "^3.15.0", + "@types/react": "^17.0.2", + "@types/react-dom": "^17.0.1", + "@types/react-redux": "^7.1.16", + "@types/react-router-dom": "^5.0.0", + "@types/react-virtualized-auto-sizer": "^1.0.0", + "@types/react-window": "^1.8.2", + "@types/rebass": "^4.0.7", + "@types/styled-components": "^5.1.0", + "@types/testing-library__cypress": "^5.0.5", + "@types/wcag-contrast": "^3.0.0", + "@typescript-eslint/eslint-plugin": "^2.31.0", + "@typescript-eslint/parser": "^2.31.0", + "@uniswap/governance": "^1.0.2", + "@uniswap/liquidity-staker": "^1.0.2", + "@uniswap/merkle-distributor": "1.0.1", + "@uniswap/sdk": "3.0.3", + "@uniswap/token-lists": "^1.0.0-beta.19", + "@uniswap/v2-core": "1.0.0", + "@uniswap/v2-periphery": "^1.1.0-beta.0", + "@web3-react/core": "^6.0.9", + "@web3-react/fortmatic-connector": "^6.0.9", + "@web3-react/injected-connector": "^6.0.7", + "@web3-react/portis-connector": "^6.0.9", + "@web3-react/walletconnect-connector": "^6.1.1", + "@web3-react/walletlink-connector": "^6.0.9", + "ajv": "^6.12.3", + "cids": "^1.0.0", + "copy-to-clipboard": "^3.2.0", + "cross-env": "^7.0.2", + "cypress": "^4.11.0", + "eslint": "^7.11.0", + "eslint-config-prettier": "^6.11.0", + "eslint-plugin-prettier": "^3.1.3", + "eslint-plugin-react": "^7.19.0", + "eslint-plugin-react-hooks": "^4.0.0", + "ethers": "^5.0.7", + "i18next": "^15.0.9", + "i18next-browser-languagedetector": "^3.0.1", + "i18next-xhr-backend": "^2.0.1", + "inter-ui": "^3.13.1", "jazzicon": "^1.5.0", - "polished": "^4.1.1", - "qs": "^6.9.6", + "lodash.flatmap": "^4.5.0", + "luxon": "^1.25.0", + "multicodec": "^2.0.0", + "multihashes": "^3.0.1", + "node-vibrant": "^3.1.5", + "polished": "^3.3.2", + "prettier": "^2.2.1", + "qs": "^6.9.4", "react": "^17.0.1", - "react-device-detect": "^1.15.0", + "react-confetti": "^6.0.0", + "react-device-detect": "^1.6.2", "react-dom": "^17.0.1", - "react-feather": "^2.0.9", - "react-ga": "^3.3.0", - "react-i18next": "^11.8.8", - "react-redux": "^7.2.0", - "react-router-dom": "^5.2.0", - "react-scripts": "4.0.3", + "react-feather": "^2.0.8", + "react-ga": "^2.5.7", + "react-i18next": "^10.7.0", + "react-markdown": "^4.3.1", + "react-popper": "^2.2.3", + "react-redux": "^7.2.2", + "react-router-dom": "^5.0.0", + "react-scripts": "^4.0.2", + "react-spring": "^8.0.27", + "react-use-gesture": "^6.0.14", + "react-virtualized-auto-sizer": "^1.0.2", + "react-window": "^1.8.5", "rebass": "^4.0.7", - "redux-localstorage-simple": "^2.4.0", - "styled-components": "^5.2.1", - "typescript": "~3.8.2" + "redux-localstorage-simple": "^2.3.1", + "serve": "^11.3.0", + "start-server-and-test": "^1.11.0", + "styled-components": "^4.2.0", + "styled-system": "^5.1.5", + "typescript": "^3.8.3", + "use-count-up": "^2.2.5", + "wcag-contrast": "^3.0.0" + }, + "resolutions": { + "@walletconnect/web3-provider": "1.1.1-alpha.0" }, "scripts": { "start": "react-scripts start", "build": "react-scripts build", - "test": "react-scripts test", - "eject": "react-scripts eject" + "eject": "react-scripts eject", + "integration-test": "start-server-and-test 'serve build -l 3000' http://localhost:3000 'cypress run'", + "storybook": "start-storybook -p 6006", + "test": "react-scripts test --env=jsdom" }, "eslintConfig": { - "extends": "react-app" + "extends": "react-app", + "ignorePatterns": [ + "node_modules" + ] }, "browserslist": { "production": [ @@ -61,7 +130,9 @@ "last 1 safari version" ] }, - "devDependencies": { - "@types/node": "^12.20.4" + "license": "GPL-3.0-or-later", + "dependencies": { + "@uniswap/default-token-list": "^2.0.0", + "lightweight-charts": "^3.3.0" } } diff --git a/public/451.html b/public/451.html new file mode 100644 index 00000000..19918c3e --- /dev/null +++ b/public/451.html @@ -0,0 +1,10 @@ + + + + + Unavailable For Legal Reasons + + +

Unavailable For Legal Reasons

+ + diff --git a/public/images/192x192_App_Icon.png b/public/images/192x192_App_Icon.png new file mode 100644 index 0000000000000000000000000000000000000000..75eaaf8cb41b010f4fbccfe1837756aee708ea9c GIT binary patch literal 50878 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 literal 0 HcmV?d00001 diff --git a/public/images/512x512_App_Icon.png b/public/images/512x512_App_Icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f24aada72a180c2d4e6dd9cbd7519519626de5c0 GIT binary patch literal 386611 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ℜSF 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%0D6*Ptz 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 z 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

#7MxBFu zW8#rc4Xt?+kP9PvZ6x8= zy`K~S5A6@Y(~S2ZP7vu(9al&J!p z;-h8f#V(oYcmIX%w``PS&kuD*0F0X3pEUzx6|b`9alQsjUYq6Qp0HT>77txcu!z6v zIDWchj?$imcBBm+fu2LNdkP~2HAOdD55~oP!t(x1yXDwd2;?Iyn}Jv^Z!8^u zEJlpxU8uAFe!Ss+PDDT7Km{~8O}IVRVbJ`oSl@$dxPMr&S|94*(l%MV=EP^!sw(f! z>BN~rThnZ>u}F#NGjZLZtX*;twuka$=qS6doivN3YFeZjkMG1MJZK%s65?01&*y9z z(4P8Fu=PAy>2v2#@!d>i>PtA$8Q9nW6&6z{wH5o8uk*9U^Ozsu4tTw1?)BvsP%yr; zhF_LA+G>%|e>n?vq$$|}W>`aFVzPXoG}AZ^gL^ekuI)*2bu<4#AAgz)!4bJ(r}1rv z7cjpa7fP&EgEYq7;jb4H>@%Ot*NH6&&*o`ky3D*jAXB4EYtwNq6L$P0C+kBmH}0XZ{m4V(p|Gx+{L? z8=ID#Qq9*u-D%H)fM2A*5Qm=zDNM1NZy`DWLw|8#ukYPI7LI?&2TMPO!Iwe>o6DHI zXGa*=k-H2!kj;a|InYqveTm7wLb!{qf>n)T8?7y7FyoFE>2BP?(A4YV5Z~amk5~tU zd3|ES7|G3>E%oC-bxt^h#+f9;&S}hfk>Ua^^=MZKh>&rgnna8TG{2h2^_vyc#)s)G z(Z1Jz*ZpL;`X3cdNIK(hQ!yhaWV;hW%BrLCE93qQzZ>fukOgr7?xopm!L9D6a`q6- zam&Z?FYU<(x+CF%gqPYM?A7)mqv4)Y)fm;kWZu{)s)91~Lb^D2ZxgOVDjdo@%%TOk z9~zk4)Ou58_sedI@NWQH>$h{?%DT#7%qhb@jQjEq7i*O&6e2yFZ}R?^j?m6suBiA_ zYFA5aJ!z0Sa9h%#kYk1&xygdrS9>G)ojSEOrK&&+F?F~K^Jg8!?Y>3b_s~?6+dr?r zx%&R4*oH<3Dq-~Io6Ge2MLtC zyVG)H?4dH~sy97(Gxu{lEauZ>q*S{HoI_o62^K?ZUpe0Kj@u+J~l4 zjq^mVW4y!!G1i+p^`yUS`A8%s>ITyF&U=rjoiS_}!8OfP%Va7qo=4DU0zU^;nSq zV(#g^VtlW$;d}>}m%P1pseCz!xGeg3*(Q|m!n>f7a&8+_veK5KR5Z|zARTcT0`sn{ zwgPF=ojdStkO+M)IH)($C~CT8b1=Yf(wH?Fph)c&(F7EY@6tN#tIl1G8vp^Pq(AE2 z&Ak-dw^LJZkKw73_0;u7dO{YdGjU&>iYBR?ktef}1ZlVh9v%%^!@Q@DW8#{kR@jx# zeGc8d3X&4!<0>BbsL@6ZB0RZ+Z$lI*x%*!`p1e`Cw#ow)EZ5a6)^VL{{)(&h;=np%%?dN)+^ma(cax@3E__%|1Uf$>s%%793cdljU{tVa6DLchIJ#D2)g zmm4K&K_S0=DOjhzry`aXioXKVl2Qv)PT%v(JbC+Zp5zie5hZ$Jx3;z>CiZ^8e@!X% z@8WCwPTApfr1*{d|47f@GLs)6lD*zJrAh0^Ad}ycTUL|no(l2-K1&YoCdUKM}Yhb3Q)NjC`YS}Dh zH#mRBz3Y zBt7R3NVOmFznR(5Wq^TLB$)obZW@#(6Z=gxEtg-{E-Q6hPb3;gHn_$d)5=a(;UXQW|`8pEVa_3#G5usQ+?!wB1@@ z3ewqqdRucR%yEPa;Ej;SlAVu$ZCb@`N3{!f7XG)*+FFvnx_3*fMeh!5jlas@k9%DV zc~f_d$4N631O?W+!FmC~E6KgG<1^iEgKqY~d%*-f0CAd{uN^$IzMHHU4mi@iab)xc zJq=35_tsw7i*oGuI2?;)I&@RS=ki#ztvt&eBz+u5KPDxest*Q1wa-zZCytS)naUzg zJQD@G8IGJ+fxC?A;6XAO4~;sj*i?wXwAizGbS%wr6X)|36Hyn zBLKI9l8bF8j|?IJ>mi8|5nYktCl+K==!jlAXeEer)G#DD22 z&R&fG<@ls{TaxO43>DRESZQrR_EZmV{d(nkc*Z(J1wmX+O9{+w>pooRIk>C)SV}PI zX~|(JHFcE4$p~kauwC75w$ec6Mqatf#sp${{83})4c1MoS#?s@ zmh0ZA%ioFZ>%LJ*g2ymYQ_8R{z8!m3EC&{^E)g1rNY?nR?CDqG1I3GD&*y}G?XgUfQzH*-3SG}*Wd|T zKf9%ax$8>H(-=bHuzM-P+jJM$7$Ai7YvCbi! z6z?A5I>qx#cGVx2^@tSP2o$vcgzTQhYv5}0o2%Ve6W?2zmR76I3cXRpRjOTZf+{xk z5j3T)X*l8Jz0NZs*yyOSIy7J57ydshK57a2O%ruH{1C-aR`UTRsQqqRAmQ^S_N#9oPfKP{9@;n`qln zO(4C;X?VoAQnETMzgqGS@3>Lj>!kn=_>pW697GF%x-69bS(S>ysLN+g-h}`{f{Y(t zY^uf{OmTmsl;%iUD|-Q5Cv%IJ>R?&k#{Dz(%5de-X3sG26vR8GK9@hVMgs?GZ_HsL z9ioaI+ezJN!fHKi2K%6w$bc1)@0B@c(|DPu6i~UHq?K|BaQWVt>6l?i4EM25%1KPLX#6xUP z$G(XU^wpP_m)P!IH(=1gHs++{f5^fzTIbL7sP?H=md#i9rp$3~WhANTrg$VvH+rk= zSLD*Q%|@<40|lGEMvd_pk$A^W?q%q9*|%^t$}-C5sj`>RH`%AZCMli@T63 z6X_e8EA5u8&&ZL5*)se^_cndsnqS|;g!G?0%4cZ3`h@JZhu~B#{U@mQE_B$`NU#&q zQ4}~bty5m8*u%pS-s_GM*jmS2!FF#ocQc-#$r=62Uj5>ur5=V!wm`RdU%^gGstT}I*`y@QQ8J_BTS5-KE# z-yeTWyo(-5Bg03DuF*qwxz2xU*sWUN`JRvT`cf;W)wuDn&*s2RK^biUz9eNSt&0f4 z_)%Y}_A*?Ve&2?QPS9E$t!D@8W0G+H3p=dKYiu9!|etwWDyi<~6i zTl>*&*s))(Xm_5~yIHD9@PaTm?@e$}>ALR$nQOL^{i=%fCXa=c_O+9Tp)GYFzrZGe z%4eC0^fkqr&sMu%^Y2~?P?F5Gjz50+lUIUP{W?eL$1uvg0%pS)V(YBtVDtMVwFy)^ zc*Fa>4ttbRQdH{s9TnHZbW=}EO>Ah7j`1fme+UJ#LnK8|^4Ycu2Fa-y+iC(YJSx_%~t%>7;t+Lz5tn)z*xH)}=OI$#jd) zS#o3X-H?n<{G^)+8S~m^3~S-}uP1Y?War7qOiDHvIzun=bNpM#edCz`!VLL-TxXkv zqVitCudJD}pOjMn^FAF#5yON!<%f;VNPD9t4^lNnj=|*2K88t^vJDCrYgL)k(lQ51 z^XUrEx)oZap4L*B4V|h<`Jt0C71KUaP;`a$v+a2u>bpd#U>8pr_8@wHSx=*5PB!{% zB>3bGu(7~At;!UU&5x7zT@hZpb|Nb}bzN&-a{uQt9`imT==RDl{%R5Fq(VwY73m)& z3Vl4_gZt8Zu;>KMPkIJ}8o}tYhlV{tJ}9kFaEqgp?S8al>Pd-|%7B!%#g0K1z*q2k ze$b~k+rz|ROKe_2aWd*sJQHJtRd}hEGOWr|-AjQ@%*1;3XG8VR=63?K3O)@*A_|)G zd%RBh_)U>ir-}U>a}`Vo^+Jq(a!PTcV-gnxF@I*<>Ho7P6iKdB5$2RCg>KYtIR07q z68Z?gPbH1?6`z7djpilM5ZV09Q57|{hacA8{ng;B*nVPR{8!1)dp>`rbCOZu;kfcH zo3Isimxq$F`rfj~nLeW^w|Gn6ZZ7`BVTNDW8FKO;!X@wd#;NqFN%mmOR;O02@k}qn zGbv#$*PdY$s(fHt=}uB`pz&u8V!q;%7(}W#K)0S;m3SM&$A6mzGM(kH+g(O267jDF z`F*yMlkNSWiZq%VwcW$_!XIF>tJ37T3-Cxq&`@Dpiu~FL_)>bj(~@h~Z{7UaT-8&_B8Sz%~D_6h=>dy(^F9~&uGN-LQM!wc3~d>)AXHL)xtm= zW-}&*mtPCTo0&Ket0(^?VHuPY35j*Dol3U;Z?wI~$8&Sg$1)XZWON8$5M?x7v94!T zKM6kpIYDj`I~9DVBCw@v;AZYdd#^^jibMhdKcgBvkru#!x<^KTW=iH zBLgH{;~TX&-5fwxA9Z$8+*E|-@zz%xQcUf<<2(8qH}qPt1)|#EyF`t=wKKy zUO!GA-OWZ8{`*QZY@*YCv4+FHUQY#bo?h){0o+#|a0B{UEB6xVIU zhyFIWh^$2!npb(zRgoJzZ=$ePIVgh9!#Wlecr>0pC%aV0wdl!i8jq|h+Lr(%v32ZNQWz}@}a4N?-PkzQf=$=##uV|9r& z$Q~Iz{a|@-47*WkPY;S~V8mwfr zjkFUNJqb`xEZaap6voT5R3H*?gv7;d7hxvCr<^$x=Ac#zB{k} zi}rUGi{6NtT}eMRg0D4X`wY_NC6*n9=(PF)B;`wXWm4&vZ@Rh;S<4eTn8mXu=o_c{ zN!;t-&O;Y9rBDr0KU*P zWUF^@#LyN|uA}L*4YgZo0Od2$zoyy67C)KKEh>tfuOslA)8hzNTOo^gGbNcc^m7u8^S(Y~PxDFHOc^hzuPl?IS(e+mhK8(uX9sExarT0o| zT1P&VHh0=cNS%Ry;k+4gCbd`>ZTEymd=3Rb=p0o8A570i+Ms-nRfPz0xwv=AO^-%O z-N8q!_fw_wMN5PeoBYT1yo!)Gi#cls-S3y-K*jsgEIP3Ble?~E-=heR-+CS=K zxaM$t@3itt^5&Bp!2JWHsFAZyab`sOFg?V1 ztz6yP%lzkfGLjurBBXyZp*<_i8O3@XdrIw#kA6tOpqL^#3zGAk6w4mv(rM+1*=b8X zJRt}lcWhv^o^G6#^IsZPR{|37B2qebQA?=~- z4$4*`WC;}W5D##&_HU@pv@E~r;oVs9Kd*UWxiSl z)v4c#M4;o^WjMU!>u!0}?GU%yn%=S7lVw(g9-(y*i+*InTX^%Nw%Ge$P?>D+;NXo+ zFG2o-&2cySkEDhJML?o;jWNv6Xw9eI2!UJj3Jw0GN1vuMCf_UahQiG)D2xDelQUwc zf1!d(m?)mVwQC72e3@G4&o2!)5y8QCVuQXK@Jgwca6k<9cj2Zpt}idmOcDq~D?d$# z47CX>$ML8kPtTKtD_Q_v>6hl|i~t?rm;X}dq~G|zB%9@?oSn9b>N#Ds5nf5jQrsQ? z^=Fq4zI0k1g~P92L3AJAG?ybh_iRB4C<^(pKu5>mmzujqXGTq9`0X(2kf7D6yhm}N zuy{7e-0e>$bIYn{2=!yPGG*Ac=hW@cRd2KC;u~gij4XckkjpKVtMRbzQiy&0+LL>O z;>!oEyAmlYm!S#wU_B%Lp+g@v;w3VNzif?&icDcUMx}CY2-(t_MbkFq139eWjfgb) zE24H^iizI!81-H~-Xi8Q`Xe5;)3|sUA*{k-4w(Z8ac9hJW*-S@heRw-02Jj{Oh0K| z-&=d}ER324Df9@ZJ$zRGlRY^u6PUq0MP2NvrQS#1DH2IA-&qx<^E0d=9yu_A!3m4a z&KBSwl1xccFQ<1964KTk;{+9J0OWk@tqQJo@VyC zz%n{@;ii6a=*fU;!Ew_sD4DQV$l(UvJoK}ig~wJk^QWbVm6N`9W5h` zILsV_Wh8Iaxx7=7g@?rt@KA zW+C3H1C853;{>z3v~5V$>JUdvgrev3oG&ri+B5Pg^tNw&A2I7b%A)lOI*En!^XxNH zCn8r+ZzSeh&Z-prh8SGeiEvTs19pS+sFj zi>%R6Ve56E=6EWMty14(-6Zw-%wg~4xV5d#Quf4;8;K1y7sUXj0*4a86A6hTh92{& z5q@JKW}Bw6!r}JqP=|DNzjddrd9ffeSS9>k2dg6#_7+yo=U-HcmPF&&vOP%3b~N|4 z{-3_;0<=x(#Z~9exuQwze(|jhL95@$p&m)5w1$Si$j9_D=!MIt>~eboqelvl%;pXx zhf8;oOYheg7x)vH-Vw9ZeICM3oDFN~`{rhxR@xt#H|bc*7OkEB0-~$5;}9i8QQV8T)`y z=Qit5c0axWbMNr%n@Ru2p=uTF@O9wjr#EvJrw^XqPoHG~@ejv?LL6Q@926gU(wTYl zFvcs4ql{Jh{c8y~@PSldXKrGHRO$soRa@Q*!n0S-R<9LvFv6z6=P^^0%e33OI7edU zor3*(C7WAFYC`puzN2e?aY)m(kzZ{Oat2I(gS{ryX9K;ie2YonD2ABerzq!z01y1v zg#nQww)sO!!DT3{^zR1G{fa`}33b|Y6@GzM%C|i*qF7H73Vb?=T)ytgKQ`Q%>a0@g z%qLp>D&O_|+64h~h*bH(yVw*foMHUSW3t+JHzAg1lb;kcxsaBgOiT9NIrojqPy)h` zPdiU+PWNU3dI~wMB(@LsFj)VBpzzU$if*9A9=`vh&E+e4_ zxE5DbWSei`6i_eX3O7h{X6MiKoc$Vd2)KNi*1NhQVY^g1rSGsrnO}G3kujPc>wM=1 z4yaBZe!O3g(jo4&B;5guH`kighzBK)s^@~qj=$s1Pt$}ug?G|6y6Ti+cN7CSkK9t$ z)x|m0j=1a^tj=V6-GkSNc*Ds!HT>ikisJG3_PIsEzzY9e> zN`c+gZm;jwS_YJ=4hLj5FD zc;`c;iuP^4W)@hpwDhyuzfPy30J*^ivcoPUG{sdd&#feNhgxd-xeJ(=|9EffuZ*a0 z59)r?3N2H3m-vS!EMJr#Sr3<}>C7#V6fR28Y|H5_a)8CfdgEeJpw4ev5!8@Je?wlG zWwxo1gJAAJ2O+TK+7tU{>~Pah&Hx4~&Uj}1`C?3rL17hs9*o?do=_TMhYH2Az@na1@B%Ut?+XA<`4Z1TCy3?*1jI?Dz?P5Lcco(t1>R>cqgWahu#yi=w>LEi{Mgto{ zl~JyWucWJBWZGdY(`C@gC<}&f=S{!i>tN0o;Pelir81Tq$7fv7C0j1qYq`;Z9<-g@ zPq=C_4($`bX-#^=nt_9G3X$qGX9@!N7ep2P2|tD?oVv-ck!1~A##8RY8kag5wJ&`L zi~jc%88|v6o@TznC0T8|>GKY}m*gg@hpS@P##oJvKdYR7Tc9KMuKcm5MK*FyJ@3I8 zr8gmX&qtWeUd1p=XM#oVv-wwg8EO64L3}fKKT_99Ds8H4!dweTTXOk>8Y0_Mh@Ldy zhp7#?`DImc%IYHlTXTGFZ)tHkZ^?$;u+34vM=xh3OW=L}j~+3b(P<;vcP7Vq)z~`( zC5b>G-dms7+!6n7f%t|do@ zO{MBp%99s!`7u6f1J`Ua>WGUI>S6EYyY$+6h|U*+l0shY)5%Yh4*GV)x_EQqKgS0A z^Z4yU)8Njpf0t940t(3&(K>OS<@o$g-z(v9=FFrWxG`k3H7U0JK4Yf#zu+dgU5I^V zNXxkT$PyNio-`}1t{2$U-qqO%$m9O4;pq^d@nSGRY71nduFHqN`A{#R(5&V~rhOR) zN=f}a2jlP>(~k+*rMi?aTLZ(~tUK}ArDfun3L+_tu8e(`gP+e!D%UtGF6 zAGrFthZ$<}fO<}-woF=2W7kvF69{e zx{C-|mQY5)(tekfnabdm&JCViZUVS&FtJz?E9_`#a#p8pO~Pabq%Z5c^-IMX{x9*w z*<2K6&VuzD#@L?PbGIq%q;48?w~~0jqae>df2}LYpM+m|Qv^ENLwz$()|5_bPs}0m zGWcD_t?b6{;1d1{wfr{YJsy6~rwry!fo~aSwu{DrR#RjT ziK-}1l}_%4A2@mSQm?&l!nh~uk(AB-w_wo;p8b*w0#gHH8JYv)@StzD=% zF}k;XzFsHhed(NINoNmBHZK`s8dvk)2pNR&4?1H@*CyB)KUJBpyW`JFL1kA- zi3@6mRY6pKhxcv_qFi?{7j=DXrjFP)v@nA!F9CBa<>o3`k%Z?>;(v=O#cy}+Som$2 zY~Oj?0`zAJz{3i{gz+oeLMjs;F~3;L)n)Xc&+={IdfN%MgFG%7lJ z!E<1j6`#OhK?VnH4}lrC*V-m@YGDs#^-Lp|^>XQ7yyAJ4q0o%N&D$*B1{VVSBIrHK zhoGi|&J8TFQZ4u_6%QE6qP-M$cua`c-iDrlKW$EHAcLy?-q(oCvGzGEs4ju`WTf-B zV7tIJQ&vO4|2UG&5SPu1E+k6%r<&0^UBGL>|MfNw!UX_U;2RFnVA^ zZfZ@#>L-ts!EeBcObG>%+Jk&SbB3{Y!_n7D>ax3WF_4YFwBcU|MYc*gPPLkQD~J_` z0LSdpJo7W+W5Jp*%;=O9v28ZPqL?~Fb~D?rIB`5#<I{Dg zeV=TJ6<0TImmdGa>oDwU`;{IrL1jMjdyA5|ym``&dL`fL1S^Si+|aue0iMY@ckh{Q zd)ZDyLTKQ`bA$(Z#Fw@8Y7W=gY|eA@xzXdW(za*Fg9k|g+Zs0z`;MCQw#lltw6*0g zHwf;xpeh@**|c~mc|L!QD(@Q+jU8W5k|GQC8mL;>dBTIeuiD|e8NM;|$2)t)#(GXt zQ2nITwk&lnQBN(n|24C1_;8?;R7tQ4Q&^H=I~+&UgA%MFf<5x0DPEhydQkVQzY4r^ zjBAbO0*8m)7%I0wAuS}rn)Fd!R8PI=8t7l~uIc!T!m?X#rSjsI?$}r4-t!E;Nq4?I zkMAWfXXb*jFu5hY6O(a1CqxL~m(zoYY2hb!(f+efYB7#I0o{rV#*Y&@Ftd9X@;Sm64gcUnq*@}uWU!FL*HsFUygb!u6kN~-xCeZTnt?p*pmQ1!tEmuQ zK-aCPDCq6Y&egj?CW2CVkh+b0Jq=OA!*XN_>lR7Z`i>OrAio1UOW$l_u0SD?RxSdVeso6v9>V63kUM9`Jm zSeBc;6O3%Jz5x={1KV7gn-l7nsyO4LNxjqNS%L9a<_z{0Q1K zsI}bmLJ81nrG?ekfWM9vuLb zBwqi`ycr5VrF%H|&ksg#C+qHS+W?b<0fHB8maXfZV?$3w^sh6yH#Sl#erh|wmRXHi zPMWP*hto;4qNp`sNNV-*B&b3zlcby5J8VFrg72{q(%lsTj^xP>n z8AnZ(IKkLe!zrQvaOrjkOTR;Y3iLnK(+<_P?iEk47lozh)B&5DZJ_-meCA+$CU@g! zutdcb!CKSDm-0-MS$V8y8xk#Q|1m{4V?a&;-Q#c3VcHk$h#*dKpH7ZNZCCCF;uusQ z(gxA19WNSir*%`;P=BvmHl3oILM0LSPr1o}vKm^o{;mCiRKT5pDb!2aep#T*@tnYD zuF|AojLzd@a8kB5d3TlG=N_7hSC7~^TEwy41L9huaA-0qZR6BNFyoapYXkLJePupPH^E3svP)R2d`e`D$gWmR5Gq%kLz zccQP*r|Pa#I@KGAc>+ipCx zMSJ04LzprCniF8O}mm*xiAr!18KpnIIJZUX@SND?{)01Yj2ksQTpct3qcX#I=tC)L_x9?GJAXU46 z-)@0A8U4X4DbIf5X#01|$Q@09Y(2RAh4Hz~r@h(lF9?luAE8NbU|_yHvLcr&h@g1c zu63jW27l5w?!|*beQa-m|Nf(hQ{Mz$U=eD?LyTemy}z6UMD@~oj&o?jLa8x5N_i_TEv?#a(-4(`0XKRm380+m zX@09$#2Dcm6Ij=r83Uw?p0OcUS02u^Qx;e)G0JPP7WvJ#)@cwXWW#UP@PlCKyrd!Yw)d)xQolm8wTY)>jCnU8 zkFyAF+SBe4S7zy}QQK)YCkqWpH#zgmh@9>A>y#N^TemPUUrL@yO8V46$+cGI5 zV?RD7j9u)<3IB=J1ueDJj*p#JuFfA654bK#J4XTo3OMH_bncA@hdla0%?x8L6=fYq ziyV!Gz9ED_6g4Fx$TnHk>6&{;!+2?${bHK1_r1zwuEM^)&cXES2gGYLRbPUDW|Rh# z4a$e)03%~`+4re$hsG46WH*^~9vFY$8g2zomS z+9zOd$mos+>sEN+hd~OQt~x(SRxMt7RukV|Qt65D3%^8b``q?-nXY7FIsocebspR& zb`9D&(xwJ&V_DrP@%}&Pn_34_W7NAqo*rTk)j>L4acMSfWoO+22_z^yj+S65hH2r& zyFn5%=F4LyEBVEn))AyAuNd$JvGUotgt_A%fY1|2|Dm>dV5+oSim;}$RUpA-!+p12 z8K*{eU@ZGezB|Pbqg%JsMMgK}Hhl*(C1i^=c61jfEpZldddUiRP~j+#fNU)o6Cf?i zdGc}+hhrROG=6;jwTJ;WHBD5({%kb_Q0ZJ{^w&q0<~|xD3Lr%yf-d|P2h2r%t?7R5 z3!Iw^3Q_JeSH2J6Cz9x-Ru6Ljrb`i(>%#E53{v8 z&8c$XK2IumS8#9PZp(0vHS6CjdJwDarrQ0Z%7LwX6Y}qhhQL8S1$NcmA9norJDk4gEXJXbsTPBku-7yeIX4=>p`9@rF58T=nb;*&K=)Yde@7P zy}M)015LbX-Ra*~*_4R<1OUc0xT?oJE!#yE=wk_t# z*HNWXZgb@yOC|HaIu>t~luqEp#6qXugOhx>eeS=gnn%VCTg$&uhB`?LOP8O?1Xq#h zr&~=9791qcxBgaw(g5L^`^naOkLRx7_=O>zA2(WoISq7?sL#krY#{jJ@L;f;h_p5L zYl|R=xsJP(5qoh#dq9@^D|RNUra2wB6y_#DI;7s@;jLjcBbtZT%BBy$OX(L*^#@Bk zUWJd@jE+K%cZbn9{-F9&V^$q19-WXX?mZaz|11Cn%&*WWC#Ws}|0zK-Kb6CUGmP1F zGLYH`(h7O#Am|i9HM$rM>tkWD5pYfu?cxmG4k7L#dy1R|zL09)!+i+&d%D4&;1MnY zbuety4qBxkzYL;;+os8m={oBA-((BsbM>**zK|o+Lfiet`NUHJHEv4^_{ZnlVZP~W z)W?au(!o--Feu6$0q`n#u?LoWkt4X1vLlwE*aQj+ZZjfw%V{6J zITt&ut&2Ey@SVE4x+=wOfCv(>HiW!5AfHTQE6XX42>bDQ5P1ZS@#$zM($G6oYelo8 z3%WtI|{j;FQ=s7NeNmB4Z)PFS-zqj@s>95SH zQin@Ci90HRj%;K#E2V`vh^Zi)=dJ?0lMGhd%e2r$|+!V-J0x_g?- zd=9MKAo~VJB`~GTU;9vXA&kr%=BF;kEB7ei*i5vA$S0H8?{l(#Ke_A8J!6=y(W{eE zaNX-6>%t`tMM1(7PiNT!d(Ty~P$-{?@w3`Eo^OA`R<1PO7m6^p+2wTF_ZByEGgfr5 zI0v1KS4Qr3Puaufa)9}L0r5u9zIc~^`|o^r(2|r5lVEnoiJe-6F*nZ95ls>?8M!mU zX_y(sxN}vK4@eDG&)?igyPH?#CM!lBS6}y!uM1+m!ZL6KE<(|Xs`Q!zkyc7IaWoB> zP97}agU1QEPZlqDjADcKgPAWUak?$uCRS)UKs*t-;0LP)q=fs zSW}EP6T3H8_QRzBRCTJ#W zM;O>Y-RC`?+|W~m0n1O5Gc@~mS3|&)ltLw74NC=I*d!I(T3U<`FCVlA%4yk%HH;4h zY2?|≫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 f`n@sor-1)IxCkst#{4~g00000NkvXXu0mjf*35 - - - - - - - - - - - Uniswap Info - - - -
- - - + + + + + + + + + + + + + + + + Uniswap Interface + + + +
+ + + diff --git a/public/locales/de.json b/public/locales/de.json new file mode 100644 index 00000000..d252e5ad --- /dev/null +++ b/public/locales/de.json @@ -0,0 +1,89 @@ +{ + "noWallet": "Keine Ethereum-Wallet gefunden", + "wrongNetwork": "Du bist auf dem falschen Netzwerk.", + "switchNetwork": "Bitte wechsle zum {{ correctNetwork }}", + "installWeb3MobileBrowser": "Bitte besuche uns mit einem web3-fähigen mobilen Browser wie z.B. Trust Wallet oder Coinbase Wallet.", + "installMetamask": "Bitte besuch uns erneut, nachdem du Metamask oder Brave installiert hast.", + "disconnected": "Nicht verbunden", + "swap": "Tauschen", + "swapAnyway": "Trotzdem tauschen", + "send": "Senden", + "sendAnyway": "Trotzdem senden", + "pool": "Pool", + "betaWarning": "Dieses Projekt ist in beta. Nutzung auf eigenes Risiko.", + "input": "Input", + "output": "Output", + "estimated": "geschätzt", + "balance": "Guthaben: {{ balanceInput }}", + "unlock": "Freischalten", + "pending": "hängige", + "selectToken": "Token auswählen", + "searchOrPaste": "Token Name, Symbol oder Adresse suchen", + "searchOrPasteMobile": "Name, Symbol oder Adresse", + "noExchange": "Exchange nicht gefunden", + "exchangeRate": "Wechselkurs", + "invertedRate": "Invertierter Wechselkurs", + "unknownError": "Oops! Ein unbekannter Fehler ist aufgetreten. Bitte Seite neu laden oder uns von einem anderen Browser oder Gerät erneut besuchen.", + "enterValueCont": "Wert {{ missingCurrencyValue }} eingeben um fortzufahren.", + "selectTokenCont": "Token auswählen um fortzufahren.", + "noLiquidity": "Keine Liquidität.", + "insufficientLiquidity": "Liquidität ungenügend.", + "unlockTokenCont": "Token freischalten um fortzufahren.", + "transactionDetails": "Details der Transaktion", + "hideDetails": "Details ausblenden", + "slippageWarning": "Wechselkursrutsch", + "highSlippageWarning": "Hoher Wechselkursrutsch", + "youAreSelling": "Du verkaufst", + "orTransFail": "oder die Transaktion wird fehlschlagen.", + "youWillReceive": "Du erhältst mindestens", + "youAreBuying": "Du kaufst", + "itWillCost": "Es kostet höchstens", + "forAtMost": "für maximal", + "insufficientBalance": "Guthaben ungenügend", + "inputNotValid": "Eingabewert ungültig", + "differentToken": "Es müssen unterschiedliche Token sein.", + "noRecipient": "Empfängeradresse angeben.", + "invalidRecipient": "Bitte gib eine gültige Empfängeradresse an.", + "recipientAddress": "Adresse des Empfängers", + "youAreSending": "Du schickst", + "willReceive": "erhält mindestens", + "to": "zu", + "addLiquidity": "Liquidität hinzufügen", + "deposit": "Depot", + "currentPoolSize": "Aktuelle Größe des Pools", + "yourPoolShare": "Dein Anteil am Pool", + "noZero": "Wert darf nicht Null sein.", + "mustBeETH": "Einer der Inputs muß ETH sein.", + "enterCurrencyOrLabelCont": "{{ inputCurrency }} oder {{ label }} Wert eingeben um fortzufahren.", + "youAreAdding": "Du fügst zwischen", + "and": "und", + "intoPool": "in den Liquiditätspool.", + "outPool": "vom Liquiditätspool.", + "youWillMint": "Du prägst", + "liquidityTokens": "Liquiditätstokens.", + "totalSupplyIs": "Die gesamte Anzahl Liquiditätstokens ist aktuell", + "youAreSettingExRate": "Du setzt den anfänglichen Wechselkurs auf", + "totalSupplyIs0": "Die gesamte Anzahl Liquiditätstokens ist aktuell 0.", + "tokenWorth": "Zum gegenwärtigen Wechselkurs ist jeder Pool Token so viel Wert", + "firstLiquidity": "Du bist die erste Person die Liquidität bereitstellt!", + "initialExchangeRate": "Der initiale Wechselkurs wird auf deiner Überweisung basieren. Stelle sicher, dass deine ETH und {{ label }} denselben Fiatwert haben.", + "removeLiquidity": "Liquidität entfernen", + "poolTokens": "Pool Tokens", + "enterLabelCont": "{{ label }} Wert eingeben um fortzufahren.", + "youAreRemoving": "Du entfernst zwischen", + "youWillRemove": "Du entfernst", + "createExchange": "Exchange erstellen", + "invalidTokenAddress": "Ungültige Tokenadresse", + "exchangeExists": "{{ label }} Exchange existiert bereits!", + "invalidSymbol": "Symbol ungültig", + "invalidDecimals": "Dezimalstellen ungültig", + "tokenAddress": "Tokenadresse", + "label": "Label", + "name": "Name", + "symbol": "Symbol", + "decimals": "Dezimalstellen", + "enterTokenCont": "Tokenadresse eingeben um fortzufahren", + "priceChange": "Geschätzter Wechselkursrutsch", + "forAtLeast": "für mindestens ", + "brokenToken": "Der ausgewählte Token ist nicht kompatibel mit Uniswap V1. Liquidität hinzufügen wird zu nicht mehr zugänglichen Token führen!" +} diff --git a/public/locales/en.json b/public/locales/en.json new file mode 100644 index 00000000..87029792 --- /dev/null +++ b/public/locales/en.json @@ -0,0 +1,105 @@ +{ + "noWallet": "No Ethereum wallet found", + "wrongNetwork": "You are on the wrong network", + "switchNetwork": "Please switch to {{ correctNetwork }}", + "installWeb3MobileBrowser": "Please visit us from a web3-enabled mobile browser such as Trust Wallet or Coinbase Wallet.", + "installMetamask": "Please visit us after installing Metamask on Chrome or Brave.", + "disconnected": "Disconnected", + "swap": "Swap", + "swapAnyway": "Swap Anyway", + "send": "Send", + "sendAnyway": "Send Anyway", + "pool": "Pool", + "betaWarning": "This project is in beta. Use at your own risk.", + "input": "Input", + "output": "Output", + "estimated": "estimated", + "balance": "Balance: {{ balanceInput }}", + "unlock": "Unlock", + "pending": "Pending", + "selectToken": "Select a token", + "searchOrPaste": "Search Token Name, Symbol, or Address", + "searchOrPasteMobile": "Name, Symbol, or Address", + "noExchange": "No Exchange Found", + "noToken": "No Token Found", + "exchangeRate": "Exchange Rate", + "unknownError": "Oops! An unknown error occurred. Please refresh the page, or visit from another browser or device.", + "enterValueCont": "Enter a {{ missingCurrencyValue }} value to continue.", + "selectTokenCont": "Select a token to continue.", + "noLiquidity": "No liquidity.", + "insufficientLiquidity": "Insufficient liquidity.", + "unlockTokenCont": "Please unlock token to continue.", + "transactionDetails": "Advanced Details", + "hideDetails": "Hide Details", + "slippageWarning": "Slippage Warning", + "highSlippageWarning": "High Slippage Warning", + "youAreSelling": "You are selling", + "orTransFail": "or the transaction will fail.", + "youWillReceive": "You will receive at least", + "youAreBuying": "You are buying", + "itWillCost": "It will cost at most", + "forAtMost": "for at most", + "insufficientBalance": "Insufficient Balance", + "inputNotValid": "Not a valid input value", + "differentToken": "Must be different token.", + "noRecipient": "Enter a wallet address to send to.", + "invalidRecipient": "Please enter a valid wallet address recipient.", + "recipientAddress": "Recipient Address", + "youAreSending": "You are sending", + "willReceive": "will receive at least", + "to": "to", + "addLiquidity": "Add Liquidity", + "deposit": "Deposit", + "currentPoolSize": "Current Pool Size", + "yourPoolShare": "Your Pool Share", + "noZero": "Amount cannot be zero.", + "mustBeETH": "One of the input must be ETH.", + "enterCurrencyOrLabelCont": "Enter a {{ inputCurrency }} or {{ label }} value to continue.", + "youAreAdding": "You are adding", + "and": "and", + "intoPool": "into the liquidity pool.", + "outPool": "from the liquidity pool.", + "youWillMint": "You will mint", + "liquidityTokens": "liquidity tokens.", + "totalSupplyIs": "Current total supply of liquidity tokens is", + "youAreSettingExRate": "You are setting the initial exchange rate to", + "totalSupplyIs0": "Current total supply of liquidity tokens is 0.", + "tokenWorth": "At current exchange rate, each pool token is worth", + "firstLiquidity": "You are the first person to add liquidity!", + "initialExchangeRate": "The initial exchange rate will be set based on your deposits. Please make sure that your ETH and {{ label }} deposits have the same fiat value.", + "removeLiquidity": "Remove Liquidity", + "poolTokens": "Pool Tokens", + "enterLabelCont": "Enter a {{ label }} value to continue.", + "youAreRemoving": "You are removing between", + "youWillRemove": "You will remove", + "createExchange": "Create Exchange", + "invalidTokenAddress": "Not a valid token address", + "exchangeExists": "{{ label }} Exchange already exists!", + "invalidSymbol": "Invalid symbol", + "invalidDecimals": "Invalid decimals", + "tokenAddress": "Token Address", + "label": "Label", + "name": "Name", + "symbol": "Symbol", + "decimals": "Decimals", + "enterTokenCont": "Enter a token address to continue", + "priceChange": "Expected price slippage", + "forAtLeast": "for at least ", + "brokenToken": "The selected token is not compatible with Uniswap V1. Adding liquidity will result in locked funds.", + "toleranceExplanation": "Lowering this limit decreases your risk of frontrunning. However, this makes more likely that your transaction will fail due to normal price movements.", + "tokenSearchPlaceholder": "Search name or paste address", + "selectFee": "Select Fee", + "fee": "fee", + "setLimits": "Set Limits", + "percent": "Percent", + "rate": "Rate", + "currentRate": "Current {{label}} Rate:", + "inactiveRangeWarning": "Your position will not be active or earn fees until the selected rates come into range.", + "invalidRangeWarning": "Invalid Range", + "connectWallet": "Connect Wallet", + "unsupportedAsset": "Unsupported Asset", + "feePool": "Fee Pool", + "rebalanceMessage": "Your underlying tokens will be automatically rebalanced when the rate of the pool changes and may be different when you withdraw the position.", + "addEarnHelper": "You will earn fees from trades proportional to your share of the pool.", + "learnMoreAboutFess": " Learn more about earning fees." +} diff --git a/public/locales/es-AR.json b/public/locales/es-AR.json new file mode 100644 index 00000000..6b54ab0b --- /dev/null +++ b/public/locales/es-AR.json @@ -0,0 +1,75 @@ +{ + "noWallet": "No se encontró billetera de Ethereum", + "wrongNetwork": "Te encontrás en la red equivocada", + "switchNetwork": "Por favor cambia a {{ correctNetwork }}", + "installWeb3MobileBrowser": "Por favor ingresá desde un navegador móvil con web3 habilitado como Trust Wallet o Coinbase Wallet.", + "installMetamask": "Por favor visítanos nuevamente luego de instalar Metamask en Chrome o Brave.", + "disconnected": "Desconectado", + "swap": "Intercambiar", + "send": "Enviar", + "pool": "Pool", + "betaWarning": "Este proyecto se encuentra en beta. Usalo bajo tu propio riesgo.", + "input": "Entrada", + "output": "Salida", + "estimated": "estimado", + "balance": "Saldo: {{ balanceInput }}", + "unlock": "Desbloquear", + "pending": "Pendiente", + "selectToken": "Seleccioná un token", + "searchOrPaste": "Buscar Token o Pegar Dirección", + "noExchange": "No se encontró la divisa", + "exchangeRate": "Tasa de Cambio", + "enterValueCont": "Ingresá un valor en {{ missingCurrencyValue }} para continuar.", + "selectTokenCont": "Seleccioná un token para continuar.", + "noLiquidity": "Sin liquidez.", + "unlockTokenCont": "Por favor desbloqueá un token para continuar.", + "transactionDetails": "Detalles de la transacción", + "hideDetails": "Ocultar detalles", + "youAreSelling": "Estás vendiendo", + "orTransFail": "o la transacción fallará.", + "youWillReceive": "Vas a recibir al menos", + "youAreBuying": "Estás comprando", + "itWillCost": "Costará a lo sumo", + "insufficientBalance": "Saldo insuficiente", + "inputNotValid": "No es un valor de entrada válido", + "differentToken": "Debe ser un token distinto.", + "noRecipient": "Ingresá una dirección de billetera para enviar.", + "invalidRecipient": "Por favor ingrese una billetera de destino válida.", + "recipientAddress": "Dirección del recipiente", + "youAreSending": "Estás enviando", + "willReceive": "recibirá al menos", + "to": "a", + "addLiquidity": "Agregar liquidez", + "deposit": "Depositar", + "currentPoolSize": "Tamaño del Pool Actual", + "yourPoolShare": "Tu parte del Pool", + "noZero": "El monto no puede ser cero.", + "mustBeETH": "Una de las entradas debe ser ETH.", + "enterCurrencyOrLabelCont": "Ingresá un valor de {{ inputCurrency }} o de {{ label }} para continuar.", + "youAreAdding": "Estás agregando entre", + "and": "y", + "intoPool": "en el pool de liquidez.", + "outPool": "en el pool de liquidez.", + "youWillMint": "Vas a acuñar", + "liquidityTokens": "tokens de liquidez.", + "totalSupplyIs": "El actual suministro total de tokens de liquidez es", + "youAreSettingExRate": "Está configurando el tipo de cambio inicial a", + "totalSupplyIs0": "El actual suministro total de tokens de liquidez es 0.", + "tokenWorth": "Al tipo de cambio actual, cada token del pool vale", + "firstLiquidity": "Sos la primer persona en agregar liquidez!", + "initialExchangeRate": "El tipo de cambio inicial se establecerá en función de tus depósitos. Por favor, asegúrate de que tus depósitos en ETH y {{ label }} tengan el mismo valor fíat.", + "removeLiquidity": "Remover Liquidez", + "poolTokens": "Pool de Tokens", + "enterLabelCont": "Ingresá un valor de {{ label }} para continuar.", + "youAreRemoving": "Estás quitando entre", + "youWillRemove": "Vas a remover", + "createExchange": "Crear divisa", + "invalidTokenAddress": "No es una dirección de token válida", + "exchangeExists": "La divisa {{ label }} ya existe!", + "invalidSymbol": "Símbolo inválido", + "invalidDecimals": "Decimales inválidos", + "tokenAddress": "Dirección de Token", + "label": "Etiqueta", + "decimals": "Decimales", + "enterTokenCont": "Ingresá una dirección de token para continuar" +} diff --git a/public/locales/es-US.json b/public/locales/es-US.json new file mode 100644 index 00000000..7dbd5566 --- /dev/null +++ b/public/locales/es-US.json @@ -0,0 +1,75 @@ +{ + "noWallet": "No se ha encontrado billetera de Ethereum", + "wrongNetwork": "Se encuentra en la red equivocada", + "switchNetwork": "Por favor cambie a {{ correctNetwork }}", + "installWeb3MobileBrowser": "Por favor ingrese desde un navegador móvil con web3 habilitado como Trust Wallet o Coinbase Wallet.", + "installMetamask": "Por favor visítenos nuevamente luego de instalar Metamask en Chrome o Brave.", + "disconnected": "Desconectado", + "swap": "Intercambiar", + "send": "Enviar", + "pool": "Pool", + "betaWarning": "Este proyecto se encuentra en beta. Úselo bajo tu propio riesgo.", + "input": "Entrada", + "output": "Salida", + "estimated": "estimado", + "balance": "Saldo: {{ balanceInput }}", + "unlock": "Desbloquear", + "pending": "Pendiente", + "selectToken": "Seleccione un token", + "searchOrPaste": "Buscar Token o Pegar Dirección", + "noExchange": "No se ha encontrado la divisa", + "exchangeRate": "Tasa de Cambio", + "enterValueCont": "Ingrese un valor en {{ missingCurrencyValue }} para continuar.", + "selectTokenCont": "Seleccione un token para continuar.", + "noLiquidity": "Sin liquidez.", + "unlockTokenCont": "Por favor desbloquea un token para continuar.", + "transactionDetails": "Detalles de la transacción", + "hideDetails": "Ocultar detalles", + "youAreSelling": "Está vendiendo", + "orTransFail": "o la transacción fallará.", + "youWillReceive": "Va a recibir al menos", + "youAreBuying": "Está comprando", + "itWillCost": "Costará a lo sumo", + "insufficientBalance": "Saldo insuficiente", + "inputNotValid": "No es un valor de entrada válido", + "differentToken": "Debe ser un token distinto.", + "noRecipient": "Ingrese una dirección de billetera para enviar.", + "invalidRecipient": "Por favor ingrese una billetera de destino válida.", + "recipientAddress": "Dirección del recipiente", + "youAreSending": "Está enviando", + "willReceive": "recibirá al menos", + "to": "a", + "addLiquidity": "Agregar liquidez", + "deposit": "Depositar", + "currentPoolSize": "Tamaño del Pool Actual", + "yourPoolShare": "Su parte del Pool", + "noZero": "El monto no puede ser cero.", + "mustBeETH": "Una de las entradas debe ser ETH.", + "enterCurrencyOrLabelCont": "Ingrese un valor de {{ inputCurrency }} o de {{ label }} para continuar.", + "youAreAdding": "Está agregando entre", + "and": "y", + "intoPool": "en el pool de liquidez.", + "outPool": "en el pool de liquidez.", + "youWillMint": "Va a acuñar", + "liquidityTokens": "tokens de liquidez.", + "totalSupplyIs": "El actual suministro total de tokens de liquidez es", + "youAreSettingExRate": "Está configurando el tipo de cambio inicial a", + "totalSupplyIs0": "El actual suministro total de tokens de liquidez es 0.", + "tokenWorth": "Al tipo de cambio actual, cada token del pool vale", + "firstLiquidity": "Es la primer persona en agregar liquidez!", + "initialExchangeRate": "El tipo de cambio inicial se establecerá en función de sus depósitos. Por favor, asegúrese de que sus depósitos en ETH y {{ label }} tengan el mismo valor fíat.", + "removeLiquidity": "Remover Liquidez", + "poolTokens": "Pool de Tokens", + "enterLabelCont": "Ingresa un valor de {{ label }} para continuar.", + "youAreRemoving": "Está quitando entre", + "youWillRemove": "Va a remover", + "createExchange": "Crear tipo de cambio", + "invalidTokenAddress": "No es una dirección de token válida", + "exchangeExists": "El tipo de cambio {{ label }} ya existe!", + "invalidSymbol": "Símbolo inválido", + "invalidDecimals": "Decimales inválidos", + "tokenAddress": "Dirección de Token", + "label": "Etiqueta", + "decimals": "Decimales", + "enterTokenCont": "Ingrese una dirección de token para continuar" +} diff --git a/public/locales/it-IT.json b/public/locales/it-IT.json new file mode 100644 index 00000000..41ffe99e --- /dev/null +++ b/public/locales/it-IT.json @@ -0,0 +1,87 @@ +{ + "noWallet": "Wallet Ethereum non trovato", + "wrongNetwork": "Sei connesso alla rete sbagliata", + "switchNetwork": "Perfavore connettiti su {{ correctNetwork }}", + "installWeb3MobileBrowser": "Perfavore visita il sito da un browser abilitato web3 o da un app mobile come Trust Wallet o Coinbase Wallet.", + "installMetamask": "Perfavore ritorna dopo aver installato Metamask su Chrome o Brave.", + "disconnected": "Disconnesso", + "swap": "Scambia", + "swapAnyway": "Scambia comunque", + "send": "Invia", + "sendAnyway": "Invia comunque", + "pool": "Riserva", + "betaWarning": "Questo progetto è in beta. Usalo a tuo rischio.", + "input": "Input", + "output": "Output", + "estimated": "stimato", + "balance": "Saldo: {{ balanceInput }}", + "unlock": "Sblocca", + "pending": "In attesa", + "selectToken": "Seleziona un token", + "searchOrPaste": "Cerca Nome, Simbolo o Indirizzo Token", + "searchOrPasteMobile": "Nome, Simbolo, o Indirizzo", + "noExchange": "Nessun Exchange Trovato", + "exchangeRate": "Tasso di cambio", + "unknownError": "Oops! Si è verificato un Errore imprevisto. Aggiorna la pagina o visita da un altro browser o dispositivo.", + "enterValueCont": "Inserisci un valore {{ missingCurrencyValue }} per continuare.", + "selectTokenCont": "Seleziona un token per continuare.", + "noLiquidity": "Nessuna liquidità.", + "insufficientLiquidity": "Liquidità insufficiente.", + "unlockTokenCont": "Si prega di sbloccare il token per continuare.", + "transactionDetails": "Dettagli avanzati", + "hideDetails": "Nascondi dettagli", + "slippageWarning": "Avviso di scostamento", + "highSlippageWarning": "Avviso di elevato scostamento", + "youAreSelling": "Stai vendendo", + "orTransFail": "o la transazione fallità.", + "youWillReceive": "Riceverai almeno", + "youAreBuying": "Stai comprando", + "itWillCost": "Costerà al massimo", + "forAtMost": "per al massimo", + "insufficientBalance": "Saldo insufficente", + "inputNotValid": "Non è un valore di input valido", + "differentToken": "Deve essere un token diverso.", + "noRecipient": "Inserisci un indirizzo di wallet a cui inviare.", + "invalidRecipient": "Inserisci un destinatario valido per l'indirizzo del wallet.", + "recipientAddress": "Indirizzo del destinatario", + "youAreSending": "Stai inviando", + "willReceive": "riceverà almeno", + "to": "a", + "addLiquidity": "Aggiungi liquidità", + "deposit": "Depositare", + "currentPoolSize": "Dimensione attuale del pool", + "yourPoolShare": "La tua parte di pool condivisa", + "noZero": "L'importo non può essere zero.", + "mustBeETH": "Uno degli input deve essere ETH.", + "enterCurrencyOrLabelCont": "Inserisci un valore {{ inputCurrency }} o {{ label }} per continuare.", + "youAreAdding": "Stai agginugendo", + "and": "e", + "intoPool": "nella riserva di liquidità.", + "outPool": "dalla riserva di liquidità.", + "youWillMint": "Tu conierai", + "liquidityTokens": "token di liquidità.", + "totalSupplyIs": "L'attuale disponibilità totale di token di liquidità è", + "youAreSettingExRate": "Stai impostando il tasso di cambio iniziale su", + "totalSupplyIs0": "L'attuale disponibilità totale di token di liquidità è 0.", + "tokenWorth": "Al tasso di cambio corrente, ogni token del pool vale", + "firstLiquidity": "Sei la prima persona ad aggiungere liquidità!", + "initialExchangeRate": "Il tasso di cambio iniziale verrà impostato in base ai tuoi depositi. Assicurati che i tuoi depositi ETH e {{ label }} abbiano lo stesso valore fiat.", + "removeLiquidity": "Rimuovi Liquidità", + "poolTokens": "Token Pool", + "enterLabelCont": "Inserisci un valore {{ label }} per continuare.", + "youAreRemoving": "Stai rimuovendo tra", + "youWillRemove": "Rimuoverai", + "createExchange": "Crea scambio", + "invalidTokenAddress": "Indirizzo token non valido", + "exchangeExists": "{{ label }} Exchange già esistente!", + "invalidSymbol": "Simbolo non valido", + "invalidDecimals": "Decimali non validi", + "tokenAddress": "Indirizzo Token", + "label": "Etichetta", + "name": "Nome", + "symbol": "Simbolo", + "decimals": "Decimali", + "enterTokenCont": "Inserire un indirizzo token per continuare", + "priceChange": "Scostamento del prezzo previsto", + "forAtLeast": "per almeno " +} diff --git a/public/locales/iw.json b/public/locales/iw.json new file mode 100644 index 00000000..a66030d7 --- /dev/null +++ b/public/locales/iw.json @@ -0,0 +1,75 @@ +{ + "noWallet": "לא נמצא ארנק", + "wrongNetwork": "נבחרה רשת לא נכונה", + "switchNetwork": "{{ correctNetwork }} יש צורך לשנות את הרשת ל", + "installWeb3MobileBrowser": "יש צורך בארנק ווב3.0, תתקין מטאמאסק או ארנק דומה", + "installMetamask": " Metamask יש צורך להתקין תוסף מטאמאסק לדפדפן, חפשו בגוגל ", + "disconnected": "מנותק", + "swap": "המרה", + "send": "שליחה", + "pool": "להפקיד", + "betaWarning": "הפרויקט נמצא בשלב בטא, השתמשו באחריות", + "input": "מוכר", + "output": "אקבל", + "estimated": "הערכה", + "balance": "בארנק שלי {{ balanceInput }}", + "unlock": "שחרור נעילת ארנק", + "pending": "ממתין לאישור", + "selectToken": "בחרו את הטוקן להמרה", + "searchOrPaste": "הכניסו שם או כתובת של טוקן לחיפוש", + "noExchange": "לא מתאפשרת המרה", + "exchangeRate": "שער המרה", + "enterValueCont": "כדי להמשיך {{ missingCurrencyValue }} הזינו ", + "selectTokenCont": "בחרו טוקן כדי להמשיך", + "noLiquidity": "אין נזילות", + "unlockTokenCont": "יש צורך לאשר את הטוקן למסחר", + "transactionDetails": "פרטי הטרנזקציה", + "hideDetails": "הסתר פרטים נוספים", + "youAreSelling": "למכירה", + "orTransFail": "או שהטרנזקציה תיכשל", + "youWillReceive": "תוצר המרה מינימלי", + "youAreBuying": "קונה", + "itWillCost": "זה יעלה", + "insufficientBalance": "אין בחשבון מספיק מטבעות", + "inputNotValid": "קלט לא תקין", + "differentToken": "יש צורך בטוקנים שונים", + "noRecipient": "לא הוכנסה כתובת ארנק יעד", + "invalidRecipient": "לא הוכנסה כתובת תקינה", + "recipientAddress": "כתובת יעד", + "youAreSending": "כמות לשליחה", + "willReceive": "יתקבל לכל הפחות", + "to": "אל", + "addLiquidity": "להוספת נזילות למאגר", + "deposit": "הפקדה", + "currentPoolSize": "גודל מאגר הנזילות הכולל", + "yourPoolShare": "חלקך במאגר הנזילות", + "noZero": "אפס אינו ערך תקין", + "mustBeETH": "ETH חייב להופיע באחד מהצדדים", + "enterCurrencyOrLabelCont": "כדי להמשיך {{ inputCurrency }} או {{ label }} הכנס", + "youAreAdding": "מתווספים למאגר", + "and": "וגם", + "intoPool": "לתוך הנזילות", + "outPool": "מתוך", + "youWillMint": "יונפקו לכם", + "liquidityTokens": "טוקנים של נזילות", + "totalSupplyIs": "חלקך במאגר הנזילות", + "youAreSettingExRate": "שער ההמרה יקבע על ידך", + "totalSupplyIs0": "אין לך טוקנים של נזילות", + "tokenWorth": "שווי כל טוקן נזילות הינו", + "firstLiquidity": "אתה הראשוןה שמזרים נזילות למאגר", + "initialExchangeRate": "ושל האית'ר הינן בערך שווה {{ label }} תוודאו שההפקדה של הטוקן", + "removeLiquidity": "הוצאה של נזילות", + "poolTokens": "טוקנים של מאגר הנזילות", + "enterLabelCont": "כדי להמשיך {{ label }} הכנס ", + "youAreRemoving": "יוסרו", + "youWillRemove": "יוסרו", + "createExchange": "ליצירת זוג מסחר", + "invalidTokenAddress": "כתובת טוקן לא נכונה", + "exchangeExists": "{{ label }} כבר קיים זוג המרה עבור", + "invalidSymbol": "תו שגוי", + "invalidDecimals": "ספרות עשרוניות שגויות", + "tokenAddress": "כתובת הטוקן", + "label": "שם", + "decimals": "ספרות עשרויות", + "enterTokenCont": "הכניסו כתובת טוקן כדי להמשיך" +} diff --git a/public/locales/ro.json b/public/locales/ro.json new file mode 100644 index 00000000..535afdc2 --- /dev/null +++ b/public/locales/ro.json @@ -0,0 +1,91 @@ +{ + "noWallet": "Niciun portofel Ethereum găsit", + "wrongNetwork": "Nu ești conectat la rețeaua corectă", + "switchNetwork": "Conectează-te te rog la {{ correctNetwork }}", + "installWeb3MobileBrowser": "Incearcă să vizitezi această pagina folosind un browser precum Trust Wallet sau Coinbase Wallet.", + "installMetamask": "Vizitează această pagină din nou după ce instalezi MetaMask în Chrome sau Brave", + "disconnected": "Deconectat", + "swap": "Schimbă", + "swapAnyway": "Schimbă Oricum", + "send": "Trimite", + "sendAnyway": "Trimite Oricum", + "pool": "Depune Lichiditate", + "betaWarning": "Proiectul este încă în versiunea beta. Folosește-l cu grijă, riscul este al tău.", + "input": "Input", + "output": "Output", + "estimated": "estimat", + "balance": "Balanță: {{ balanceInput }}", + "unlock": "Deblochează", + "pending": "În Așteptare", + "selectToken": "Selectează un jeton", + "searchOrPaste": "Caută după Numele, Simbolul sau Adresa Jetonului", + "searchOrPasteMobile": "Nume, Simbol sau Adresă", + "noExchange": "Nicio Piață de Schimb Găsită", + "noToken": "Nicin Jeton Găsit", + "exchangeRate": "Curs de Schimb", + "unknownError": "Ups! A intervenit o eroare tehnică. Te rog reîncarcă pagina, sau acceseaz-o de pe alt navigator sau dispozitiv.", + "enterValueCont": "Setează o valoare pentru {{ missingCurrencyValue }} pentru a continua.", + "selectTokenCont": "Selectează un jeton pentru a continua.", + "noLiquidity": "Nu Există Lichiditate.", + "insufficientLiquidity": "Lichiditate Insuficientă.", + "unlockTokenCont": "Te rog deblochează jetonul pentru a continua.", + "transactionDetails": "Detalii Avansate", + "hideDetails": "Ascunde Detaili", + "slippageWarning": "Alertă Deviație de Preț", + "highSlippageWarning": "Alertă Deviație de Preț Mare", + "youAreSelling": "Tu vinzi", + "orTransFail": "sau tranzacția va eșua.", + "youWillReceive": "Vei primi cel puțin", + "youAreBuying": "Tu cumperi", + "itWillCost": "Va costa cel mult", + "forAtMost": "pentru maximum", + "insufficientBalance": "Balanță Insuficientă", + "inputNotValid": "Valoarea setată nu este validă", + "differentToken": "Trebuie să fie un jeton diferit.", + "noRecipient": "Setează o adresă de portofel pentru destinatar.", + "invalidRecipient": "Te rog setează o adresă de portofel validă pentru destinatar.", + "recipientAddress": "Adresa Destinatarului", + "youAreSending": "Tu trimiți", + "willReceive": "vei primi cel puțin", + "to": "spre", + "addLiquidity": "Adaugă Lichiditate", + "deposit": "Depozitează", + "currentPoolSize": "Volumul Actual al Fondului", + "yourPoolShare": "Partea Ta din Fond", + "noZero": "Cantitatea nu poate fi zero.", + "mustBeETH": "Una dintre valori trebuie să fie ETH.", + "enterCurrencyOrLabelCont": "Setează o valoare pentru {{ inputCurrency }} sau {{ label }} pentru a continua. ", + "youAreAdding": "Tu adaugi", + "and": "și", + "intoPool": "în fondul de lichidatate.", + "outPool": "din fondul de lichiditate.", + "youWillMint": "Tu vei tipări", + "liquidityTokens": "jetoane de lichiditate.", + "totalSupplyIs": "Cantitatea totală de jetoane de lichiditate este", + "youAreSettingExRate": "Setezi cursul de schimb inițial la", + "totalSupplyIs0": "Cantitatea totală de jetoane de lichiditate este 0.", + "tokenWorth": "La cursul de schimb actual, fiecare jeton de lichiditate este valorat la", + "firstLiquidity": "Ești prima persoană care depune lichiditate!", + "initialExchangeRate": "Cursul de schimb inițial va fi setat în funcție de depozitele tale. Te rog asigură-te că ETH-ul și {{ label }}-ul pe care le-ai depozitat au aceeași valoare în bani fiat.", + "removeLiquidity": "Retrage Lichiditat", + "poolTokens": "Depune Jetoane", + "enterLabelCont": "Setează o valoare pentru {{ label }} pentru a continua.", + "youAreRemoving": "Retragi între", + "youWillRemove": "Vei retrage", + "createExchange": "Creează Piață de Schimb", + "invalidTokenAddress": "Adresa de jeton nu este validă", + "exchangeExists": "{{ label }} Piața de schimb există deja!", + "invalidSymbol": "Simbol invalid", + "invalidDecimals": "Zecimale invalide", + "tokenAddress": "Adresă Jeton", + "label": "Denumire", + "name": "Nume", + "symbol": "Simbol", + "decimals": "Zecimale", + "enterTokenCont": "Setează o adresă de jeton pentru a continua", + "priceChange": "Deviație de preț așteptată", + "forAtLeast": "pentru cel puțin ", + "brokenToken": "Jetonul selectat nu este compatibil cu Uniswap V1. Depunerea de lichiditate îți va bloca fondurile pe vecie.", + "toleranceExplanation": "Micșorând această limită, vei reduce riscul de frontrunning. În același timp, devine mai probabil că tranzacția va eșua din cauza variațiilor normale de preț.", + "tokenSearchPlaceholder": "Caută nume sau lipește adresă" +} diff --git a/public/locales/ru.json b/public/locales/ru.json new file mode 100644 index 00000000..6c6d3b03 --- /dev/null +++ b/public/locales/ru.json @@ -0,0 +1,75 @@ +{ + "noWallet": "Кошелек эфира не найден", + "wrongNetwork": "Некорректная сеть", + "switchNetwork": "Пожалуйста, перейдите в {{ correctNetwork }}", + "installWeb3MobileBrowser": "Пожалуйста, откройте в браузере с поддержкой web3, таком, как Trust Wallet или Coinbase Wallet.", + "installMetamask": "Пожалуйста, откройте в Chrome или Brave с установленным расширением Metamask.", + "disconnected": "Нет подключения", + "swap": "Обменять", + "send": "Отправить", + "pool": "Вложить", + "betaWarning": "Проект находится на стадии бета тестирования.", + "input": "Ввести", + "output": "Вывести", + "estimated": "по оценке", + "balance": "Баланс: {{ balanceInput }}", + "unlock": "Разблокировать", + "pending": "Ожидание", + "selectToken": "Выберите токен", + "searchOrPaste": "Поиск токена или вставить адрес токена", + "noExchange": "Обмен не найден", + "exchangeRate": "Курс обмена", + "enterValueCont": "Введите {{ missingCurrencyValue }}, чтобы продолжить.", + "selectTokenCont": "Введите токен, чтобы продолжить.", + "noLiquidity": "Нет ликвидности.", + "unlockTokenCont": "Пожалуйста, разблокируйте токен, чтобы продолжить.", + "transactionDetails": "Детали транзакции", + "hideDetails": "Скрыть подробности", + "youAreSelling": "Вы продаете", + "orTransFail": "или транзакция будет отклонена.", + "youWillReceive": "Вы получите как минимум", + "youAreBuying": "Вы покупаете", + "itWillCost": "В крайнем случае это будет стоить", + "insufficientBalance": "Недостаточно средств", + "inputNotValid": "Некорректное значение", + "differentToken": "Должны быть разные токены.", + "noRecipient": "Введите адрес кошелька эфира, куда перечислить.", + "invalidRecipient": "Пожалуйста, введите корректный адрес кошелька получателя.", + "recipientAddress": "Адрес получателя", + "youAreSending": "Вы отправляете", + "willReceive": "получит как минимум", + "to": "", + "addLiquidity": "Добавить ликвидность", + "deposit": "Вложить", + "currentPoolSize": "Текущий размер пула", + "yourPoolShare": "Ваша доля в пуле", + "noZero": "Значение не может быть нулевым.", + "mustBeETH": "Одно из значений должно быть ETH.", + "enterCurrencyOrLabelCont": "Введите {{ inputCurrency }} или {{ label }}, чтобы продолжить.", + "youAreAdding": "Вы добавляете от", + "and": "и", + "intoPool": "в пул ликвидности.", + "outPool": "из пула ликвидности.", + "youWillMint": "Вы произведёте", + "liquidityTokens": "токенов ликвидности.", + "totalSupplyIs": "Ваш объем токенов ликвидности", + "youAreSettingExRate": "Вы устанавливаете начальный курс обмена", + "totalSupplyIs0": "Ваш объем токенов ликвидности 0.", + "tokenWorth": "При текущем курсе, каждый токен пула оценивается в", + "firstLiquidity": "Вы первый, кто создаст ликвидность!", + "initialExchangeRate": "Начальный курс обмена будет установлен согласно вашим депозитам. Убедитесь, что ваши депозиты ETH и {{ label }} имеют одинаковое значение в валюте.", + "removeLiquidity": "Убрать ликвидность", + "poolTokens": "Токены пула", + "enterLabelCont": "Введите {{ label }}, чтобы продолжить.", + "youAreRemoving": "Вы убираете в от", + "youWillRemove": "Вы уберёте", + "createExchange": "Создать обмен", + "invalidTokenAddress": "Некорректный адрес токена", + "exchangeExists": "{{ label }} Обмен уже существует!", + "invalidSymbol": "Некорректный символ", + "invalidDecimals": "Некорректное десятичное значение", + "tokenAddress": "Адрес токена", + "label": "Название", + "decimals": "Десятичное значение", + "enterTokenCont": "Чтобы продолжить, введите адрес токена" +} diff --git a/public/locales/vi.json b/public/locales/vi.json new file mode 100644 index 00000000..a0fd6943 --- /dev/null +++ b/public/locales/vi.json @@ -0,0 +1,87 @@ +{ + "noWallet": "Không tìm thấy ví tiền Ethereum", + "wrongNetwork": "Kết nối mạng không đúng", + "switchNetwork": "Vui lòng chuyển sang {{ correctNetwork }}", + "installWeb3MobileBrowser": "Vui lòng truy cập từ trình duyệt di động hỗ trợ web3 như là Ví Trust hoặc Ví Coinbase", + "installMetamask": "Vui lòng truy cập sau khi cài đặt Metamask trên Chrome hoặc Brave.", + "disconnected": "Ngắt kết nối rồi", + "swap": "Hoán đổi", + "swapAnyway": "Tiếp tục hoán đổi?", + "send": "Gửi", + "sendAnyway": "Tiếp tục gửi?", + "pool": "Chung vốn", + "betaWarning": "Dự án này đang trong giai đoạn thử nghiệm. Sử dụng có rủi ro của riêng bạn", + "input": "Đầu vào", + "output": "Đầu ra", + "estimated": "ước lượng", + "balance": "Số dư: {{ balanceInput }}", + "unlock": "Mở khóa", + "pending": "Đang chờ xử lý", + "selectToken": "Chọn một đồng tiền ảo", + "searchOrPaste": "Tìm kiếm tên, biểu tượng, hoặc địa chỉ của đồng tiền ảo", + "searchOrPasteMobile": "Tên, Biểu tượng, hoặc Địa chỉ", + "noExchange": "Không tìm thấy giao dịch", + "exchangeRate": "Tỷ giá", + "unknownError": "Rất tiếc! Xảy ra lỗi không xác định. Vui lòng làm mới trang, hoặc truy cập từ trình duyệt hay thiết bị khác.", + "enterValueCont": "Nhập một giá trị {{ missingCurrencyValue }} để tiếp tục.", + "selectTokenCont": "Chọn một đồng tiền ảo để tiếp tục.", + "noLiquidity": "Không có tính thanh khoản.", + "insufficientLiquidity": "Không đủ tính thanh khoản.", + "unlockTokenCont": "Vui lòng mở khoá đồng tiền ảo để tiếp tục", + "transactionDetails": "Chi tiết nâng cao", + "hideDetails": "Ẩn chi tiết", + "slippageWarning": "Cảnh báo trượt giá", + "highSlippageWarning": "Cảnh báo trượt giá cao", + "youAreSelling": "Bạn đang bán", + "orTransFail": "hoặc giao dịch sẽ thất bại.", + "youWillReceive": "Bạn sẽ nhận dược ít nhất là", + "youAreBuying": "Bạn đang mua", + "itWillCost": "Nó sẽ có giá cao nhất", + "forAtMost": "nhiều nhất", + "insufficientBalance": "Số dư không đủ", + "inputNotValid": "Giá trị nhập vào không hợp lệ", + "differentToken": "Đồng tiền ảo phải khác nhau.", + "noRecipient": "Nhập địa chỉ ví để gửi đến.", + "invalidRecipient": "Vui lòng nhập một người nhận địa chỉ ví hợp lệ.", + "recipientAddress": "Địa chỉ người nhận", + "youAreSending": "Bạn đang gửi", + "willReceive": "sẽ nhận dược ít nhất là", + "to": "đến", + "addLiquidity": "Thêm tiền thanh khoản", + "deposit": "Gửi tiền", + "currentPoolSize": "Quy mô hiện tại của quỹ", + "yourPoolShare": "Phần hùn của bạn trong quỹ", + "noZero": "Số tiền không thể bằng không.", + "mustBeETH": "Một trong những đầu vào phải là ETH.", + "enterCurrencyOrLabelCont": "Nhập giá trị {{ inputCurrency }} hoặc {{ label }} để tiếp tục.", + "youAreAdding": "Bạn đang thêm", + "and": "và", + "intoPool": "vào nhóm thanh khoản.", + "outPool": "từ nhóm thanh khoản.", + "youWillMint": "Bạn sẽ đúc tiền", + "liquidityTokens": "đồng thanh khoản.", + "totalSupplyIs": "Tổng cung hiện tại của đồng thanh khoản là", + "youAreSettingExRate": "Bạn đang đặt tỷ giá hối đoái ban đầu thành", + "totalSupplyIs0": "Tổng cung hiện tại của đồng thanh khoản là 0.", + "tokenWorth": "Tại tỷ giá hối đoái hiện tại, giá trị đồng token của quỹ là", + "firstLiquidity": "Bạn là người đầu tiên thêm thanh khoản!", + "initialExchangeRate": "Tỷ giá hối đoái ban đầu sẽ được thiết lập dựa trên tiền gửi của bạn. Vui lòng đảm bảo rằng tiền gửi ETH và {{ label }} của bạn có cùng giá trị tiền định danh.", + "removeLiquidity": "Loại bỏ thanh khoản", + "poolTokens": "Đồng tiền ảo của quỹ", + "enterLabelCont": "Nhập giá trị {{ label }} để tiếp tục", + "youAreRemoving": "Bạn đang loại bỏ giữa", + "youWillRemove": "Bạn sẽ loại bỏ", + "createExchange": "Tạo giao dịch", + "invalidTokenAddress": "Địa chỉ đồng tiền điện tử không hợp lệ", + "exchangeExists": "{{ label }} Giao dịch đã tồn tại!", + "invalidSymbol": "Biểu tượng không hợp lệ", + "invalidDecimals": "Số thập phân không hợp lệ", + "tokenAddress": "Địa chỉ đồng tiền điện tử", + "label": "Nhãn", + "name": "Tên", + "symbol": "Biểu tượng", + "decimals": "Số thập phân", + "enterTokenCont": "Nhập địa chỉ đồng tiền ảo để tiếp tục", + "priceChange": "Trượt giá dự kiến", + "forAtLeast": "cho ít nhất " +} diff --git a/public/locales/zh-CN.json b/public/locales/zh-CN.json new file mode 100644 index 00000000..57d1d2d3 --- /dev/null +++ b/public/locales/zh-CN.json @@ -0,0 +1,75 @@ +{ + "noWallet": "未发现以太钱包", + "wrongNetwork": "网络错误", + "switchNetwork": "请切换到 {{ correctNetwork }}", + "installWeb3MobileBrowser": "请从支持web3的移动端浏览器,如 Trust Wallet 或 Coinbase Wallet 访问。", + "installMetamask": "请从安装了 Metamask 插件的 Chrome 或 Brave 访问。", + "disconnected": "未连接", + "swap": "兑换", + "send": "发送", + "pool": "资金池", + "betaWarning": "项目尚处于beta阶段。使用需自行承担风险。", + "input": "输入", + "output": "输出", + "estimated": "估计", + "balance": "余额: {{ balanceInput }}", + "unlock": "解锁", + "pending": "处理中", + "selectToken": "选择通证", + "searchOrPaste": "搜索通证或粘贴地址", + "noExchange": "未找到交易所", + "exchangeRate": "兑换率", + "enterValueCont": "输入{{ missingCurrencyValue }}值并继续。", + "selectTokenCont": "选取通证继续。", + "noLiquidity": "没有流动金。", + "unlockTokenCont": "请解锁通证并继续。", + "transactionDetails": "交易明细", + "hideDetails": "隐藏明细", + "youAreSelling": "你正在出售", + "orTransFail": "或交易失败。", + "youWillReceive": "你将至少收到", + "youAreBuying": "你正在购买", + "itWillCost": "它将至少花费", + "insufficientBalance": "余额不足", + "inputNotValid": "无效的输入值", + "differentToken": "必须是不同的通证。", + "noRecipient": "输入接收钱包地址。", + "invalidRecipient": "请输入有效的收钱地址。", + "recipientAddress": "接收地址", + "youAreSending": "你正在发送", + "willReceive": "将至少收到", + "to": "至", + "addLiquidity": "添加流动金", + "deposit": "存入", + "currentPoolSize": "当前资金池大小", + "yourPoolShare": "你的资金池份额", + "noZero": "金额不能为零。", + "mustBeETH": "输入中必须有一个是 ETH。", + "enterCurrencyOrLabelCont": "输入 {{ inputCurrency }} 或 {{ label }} 值并继续。", + "youAreAdding": "你将添加", + "and": "和", + "intoPool": "入流动资金池。", + "outPool": "出流动资金池。", + "youWillMint": "你将铸造", + "liquidityTokens": "流动通证。", + "totalSupplyIs": "当前流动通证的总量是", + "youAreSettingExRate": "你将初始兑换率设置为", + "totalSupplyIs0": "当前流动通证的总量是0。", + "tokenWorth": "当前兑换率下,每个资金池通证价值", + "firstLiquidity": "你是第一个添加流动金的人!", + "initialExchangeRate": "初始兑换率将由你的存入情况决定。请确保你存入的 ETH 和 {{ label }} 具有相同的总市值。", + "removeLiquidity": "删除流动金", + "poolTokens": "资金池通证", + "enterLabelCont": "输入 {{ label }} 值并继续。", + "youAreRemoving": "你正在移除", + "youWillRemove": "你将移除", + "createExchange": "创建交易所", + "invalidTokenAddress": "通证地址无效", + "exchangeExists": "{{ label }} 交易所已存在!", + "invalidSymbol": "通证符号无效", + "invalidDecimals": "小数位数无效", + "tokenAddress": "通证地址", + "label": "通证符号", + "decimals": "小数位数", + "enterTokenCont": "输入通证地址并继续" +} diff --git a/public/locales/zh-TW.json b/public/locales/zh-TW.json new file mode 100644 index 00000000..0bf94f4e --- /dev/null +++ b/public/locales/zh-TW.json @@ -0,0 +1,75 @@ +{ + "noWallet": "未偵測到以太坊錢包", + "wrongNetwork": "你位在錯誤的網路", + "switchNetwork": "請切換到 {{ correctNetwork }}", + "installWeb3MobileBrowser": "請安裝含有 web3 瀏覽器的手機錢包,如 Trust Wallet 或 Coinbase Wallet。", + "installMetamask": "請使用 Chrome 或 Brave 瀏覽器安裝 Metamask。", + "disconnected": "未連接", + "swap": "兌換", + "send": "發送", + "pool": "資金池", + "betaWarning": "本產品仍在測試階段。使用者需自負風險。", + "input": "輸入", + "output": "輸出", + "estimated": "估計", + "balance": "餘額: {{ balanceInput }}", + "unlock": "解鎖", + "pending": "處理中", + "selectToken": "選擇代幣", + "searchOrPaste": "選擇代幣或輸入地址", + "noExchange": "找不到交易所", + "exchangeRate": "匯率", + "enterValueCont": "輸入 {{ missingCurrencyValue }} 以繼續。", + "selectTokenCont": "選擇代幣以繼續。", + "noLiquidity": "沒有流動性資金。", + "unlockTokenCont": "解鎖代幣以繼續。", + "transactionDetails": "交易明細", + "hideDetails": "隱藏明細", + "youAreSelling": "你正在出售", + "orTransFail": "或交易失敗。", + "youWillReceive": "你將至少收到", + "youAreBuying": "你正在購買", + "itWillCost": "這將花費至多", + "insufficientBalance": "餘額不足", + "inputNotValid": "無效的輸入值", + "differentToken": "必須是不同的代幣。", + "noRecipient": "請輸入收款人錢包地址。", + "invalidRecipient": "請輸入有效的錢包地址。", + "recipientAddress": "收款人錢包地址", + "youAreSending": "你正在發送", + "willReceive": "將至少收到", + "to": "至", + "addLiquidity": "增加流動性資金", + "deposit": "存入", + "currentPoolSize": "目前的資金池總量", + "yourPoolShare": "你在資金池中的佔比", + "noZero": "金額不能為零。", + "mustBeETH": "輸入中必須包含 ETH。", + "enterCurrencyOrLabelCont": "輸入 {{ inputCurrency }} 或 {{ label }} 以繼續。", + "youAreAdding": "你將把", + "and": "和", + "intoPool": "加入資金池。", + "outPool": "領出資金池。", + "youWillMint": "你將產生", + "liquidityTokens": "流動性代幣。", + "totalSupplyIs": "目前流動性代幣供給總量為", + "youAreSettingExRate": "初始的匯率將被設定為", + "totalSupplyIs0": "目前流動性代幣供給為零。", + "tokenWorth": "依據目前的匯率,每個流動性代幣價值", + "firstLiquidity": "您是第一個提供流動性資金的人!", + "initialExchangeRate": "初始的匯率將取決於你存入的資金。請確保存入的 ETH 和 {{ label }} 的價值相等。", + "removeLiquidity": "領出流動性資金", + "poolTokens": "資金池代幣", + "enterLabelCont": "輸入 {{ label }} 以繼續。", + "youAreRemoving": "您正在移除", + "youWillRemove": "您即將移除", + "createExchange": "創建交易所", + "invalidTokenAddress": "無效的代幣地址", + "exchangeExists": "{{ label }} 的交易所已經存在!", + "invalidSymbol": "代幣符號錯誤", + "invalidDecimals": "小數位數錯誤", + "tokenAddress": "代幣地址", + "label": "代幣符號", + "decimals": "小數位數", + "enterTokenCont": "輸入代幣地址" +} diff --git a/public/manifest.json b/public/manifest.json index 462549e2..92811ec2 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -1,15 +1,22 @@ -{ - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.png", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} +{ + "short_name": "Uniswap", + "name": "Uniswap", + "icons": [ + { + "src": "./images/192x192_App_Icon.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "any maskable" + }, + { + "src": "./images/512x512_App_Icon.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "any maskable" + } + ], + "orientation": "portrait", + "display": "standalone", + "theme_color": "#ff007a", + "background_color": "#fff" +} diff --git a/public/robots.txt b/public/robots.txt deleted file mode 100644 index 9dd52a51..00000000 --- a/public/robots.txt +++ /dev/null @@ -1,3 +0,0 @@ -# https://www.robotstxt.org/robotstxt.html -User-agent: * -Disallow: diff --git a/src/assets/images/logo.svg b/src/assets/images/logo.svg deleted file mode 100644 index 3028d7a1..00000000 --- a/src/assets/images/logo.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/assets/images/logo_white.svg b/src/assets/images/logo_white.svg deleted file mode 100644 index fe008f1d..00000000 --- a/src/assets/images/logo_white.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/assets/svg/QR.svg b/src/assets/svg/QR.svg new file mode 100644 index 00000000..dabbb02d --- /dev/null +++ b/src/assets/svg/QR.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/svg/lightcircle.svg b/src/assets/svg/lightcircle.svg new file mode 100644 index 00000000..c4cf2fa2 --- /dev/null +++ b/src/assets/svg/lightcircle.svg @@ -0,0 +1,11 @@ + + + + Path + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/src/assets/svg/logo.svg b/src/assets/svg/logo.svg new file mode 100644 index 00000000..eaf1e742 --- /dev/null +++ b/src/assets/svg/logo.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/svg/logo_pink.svg b/src/assets/svg/logo_pink.svg new file mode 100644 index 00000000..d131f6c7 --- /dev/null +++ b/src/assets/svg/logo_pink.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/svg/logo_white.svg b/src/assets/svg/logo_white.svg new file mode 100644 index 00000000..9cec5c7b --- /dev/null +++ b/src/assets/svg/logo_white.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/assets/svg/tokenlist.svg b/src/assets/svg/tokenlist.svg new file mode 100644 index 00000000..b5c29f9a --- /dev/null +++ b/src/assets/svg/tokenlist.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/svg/wordmark.svg b/src/assets/svg/wordmark.svg new file mode 100644 index 00000000..993a9ee0 --- /dev/null +++ b/src/assets/svg/wordmark.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/svg/wordmark_pink.svg b/src/assets/svg/wordmark_pink.svg new file mode 100644 index 00000000..902924cf --- /dev/null +++ b/src/assets/svg/wordmark_pink.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/svg/wordmark_white.svg b/src/assets/svg/wordmark_white.svg new file mode 100644 index 00000000..e0e5931a --- /dev/null +++ b/src/assets/svg/wordmark_white.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/components/AccountDetails/Copy.tsx b/src/components/AccountDetails/Copy.tsx new file mode 100644 index 00000000..6f5ff05e --- /dev/null +++ b/src/components/AccountDetails/Copy.tsx @@ -0,0 +1,46 @@ +import React from 'react' +import styled from 'styled-components' +import useCopyClipboard from '../../hooks/useCopyClipboard' + +import { LinkStyledButton } from '../../theme' +import { CheckCircle, Copy } from 'react-feather' + +const CopyIcon = styled(LinkStyledButton)` + color: ${({ theme }) => theme.text3}; + flex-shrink: 0; + display: flex; + text-decoration: none; + font-size: 0.825rem; + :hover, + :active, + :focus { + text-decoration: none; + color: ${({ theme }) => theme.text2}; + } +` +const TransactionStatusText = styled.span` + margin-left: 0.25rem; + font-size: 0.825rem; + ${({ theme }) => theme.flexRowNoWrap}; + align-items: center; +` + +export default function CopyHelper(props: { toCopy: string; children?: React.ReactNode }) { + const [isCopied, setCopied] = useCopyClipboard() + + return ( + setCopied(props.toCopy)}> + {isCopied ? ( + + + Copied + + ) : ( + + + + )} + {isCopied ? '' : props.children} + + ) +} diff --git a/src/components/AccountDetails/Transaction.tsx b/src/components/AccountDetails/Transaction.tsx new file mode 100644 index 00000000..8ffe6ad2 --- /dev/null +++ b/src/components/AccountDetails/Transaction.tsx @@ -0,0 +1,62 @@ +import React from 'react' +import styled from 'styled-components' +import { CheckCircle, Triangle } from 'react-feather' + +import { useActiveWeb3React } from '../../hooks' +import { getEtherscanLink } from '../../utils' +import { ExternalLink } from '../../theme' +import { useAllTransactions } from '../../state/transactions/hooks' +import { RowFixed } from '../Row' +import Loader from '../Loader' + +const TransactionWrapper = styled.div`` + +const TransactionStatusText = styled.div` + margin-right: 0.5rem; + display: flex; + align-items: center; + :hover { + text-decoration: underline; + } +` + +const TransactionState = styled(ExternalLink)<{ pending: boolean; success?: boolean }>` + display: flex; + justify-content: space-between; + align-items: center; + text-decoration: none !important; + border-radius: 0.5rem; + padding: 0.25rem 0rem; + font-weight: 500; + font-size: 0.825rem; + color: ${({ theme }) => theme.primary1}; +` + +const IconWrapper = styled.div<{ pending: boolean; success?: boolean }>` + color: ${({ pending, success, theme }) => (pending ? theme.primary1 : success ? theme.green1 : theme.red1)}; +` + +export default function Transaction({ hash }: { hash: string }) { + const { chainId } = useActiveWeb3React() + const allTransactions = useAllTransactions() + + const tx = allTransactions?.[hash] + const summary = tx?.summary + const pending = !tx?.receipt + const success = !pending && tx && (tx.receipt?.status === 1 || typeof tx.receipt?.status === 'undefined') + + if (!chainId) return null + + return ( + + + + {summary ?? hash} ↗ + + + {pending ? : success ? : } + + + + ) +} diff --git a/src/components/AccountDetails/index.tsx b/src/components/AccountDetails/index.tsx new file mode 100644 index 00000000..caa7611a --- /dev/null +++ b/src/components/AccountDetails/index.tsx @@ -0,0 +1,410 @@ +import React, { useCallback, useContext } from 'react' +import { useDispatch } from 'react-redux' +import styled, { ThemeContext } from 'styled-components' +import { useActiveWeb3React } from '../../hooks' +import { AppDispatch } from '../../state' +import { clearAllTransactions } from '../../state/transactions/actions' +import { shortenAddress } from '../../utils' +import { AutoRow } from '../Row' +import Copy from './Copy' +import Transaction from './Transaction' +import { SUPPORTED_WALLETS } from '../../constants' +import { ReactComponent as Close } from '../../assets/images/x.svg' +import { getEtherscanLink } from '../../utils' +import { injected, walletconnect, walletlink, fortmatic, portis } from '../../connectors' +import CoinbaseWalletIcon from '../../assets/images/coinbaseWalletIcon.svg' +import WalletConnectIcon from '../../assets/images/walletConnectIcon.svg' +import FortmaticIcon from '../../assets/images/fortmaticIcon.png' +import PortisIcon from '../../assets/images/portisIcon.png' +import Identicon from '../Identicon' +import { ButtonSecondary } from '../Button' +import { ExternalLink as LinkIcon } from 'react-feather' +import { ExternalLink, LinkStyledButton, TYPE } from '../../theme' + +const HeaderRow = styled.div` + ${({ theme }) => theme.flexRowNoWrap}; + padding: 1rem 1rem; + font-weight: 500; + color: ${(props) => (props.color === 'blue' ? ({ theme }) => theme.primary1 : 'inherit')}; + ${({ theme }) => theme.mediaWidth.upToMedium` + padding: 1rem; + `}; +` + +const UpperSection = styled.div` + position: relative; + + h5 { + margin: 0; + margin-bottom: 0.5rem; + font-size: 1rem; + font-weight: 400; + } + + h5:last-child { + margin-bottom: 0px; + } + + h4 { + margin-top: 0; + font-weight: 500; + } +` + +const InfoCard = styled.div` + padding: 1rem; + border: 1px solid ${({ theme }) => theme.bg3}; + border-radius: 20px; + position: relative; + display: grid; + grid-row-gap: 12px; + margin-bottom: 20px; +` + +const AccountGroupingRow = styled.div` + ${({ theme }) => theme.flexRowNoWrap}; + justify-content: space-between; + align-items: center; + font-weight: 400; + color: ${({ theme }) => theme.text1}; + + div { + ${({ theme }) => theme.flexRowNoWrap} + align-items: center; + } +` + +const AccountSection = styled.div` + background-color: ${({ theme }) => theme.bg1}; + padding: 0rem 1rem; + ${({ theme }) => theme.mediaWidth.upToMedium`padding: 0rem 1rem 1.5rem 1rem;`}; +` + +const YourAccount = styled.div` + h5 { + margin: 0 0 1rem 0; + font-weight: 400; + } + + h4 { + margin: 0; + font-weight: 500; + } +` + +const LowerSection = styled.div` + ${({ theme }) => theme.flexColumnNoWrap} + padding: 1.5rem; + flex-grow: 1; + overflow: auto; + background-color: ${({ theme }) => theme.bg2}; + border-bottom-left-radius: 20px; + border-bottom-right-radius: 20px; + + h5 { + margin: 0; + font-weight: 400; + color: ${({ theme }) => theme.text3}; + } +` + +const AccountControl = styled.div` + display: flex; + justify-content: space-between; + min-width: 0; + width: 100%; + + font-weight: 500; + font-size: 1.25rem; + + a:hover { + text-decoration: underline; + } + + p { + min-width: 0; + margin: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } +` + +const AddressLink = styled(ExternalLink)<{ hasENS: boolean; isENS: boolean }>` + font-size: 0.825rem; + color: ${({ theme }) => theme.text3}; + margin-left: 1rem; + font-size: 0.825rem; + display: flex; + :hover { + color: ${({ theme }) => theme.text2}; + } +` + +const CloseIcon = styled.div` + position: absolute; + right: 1rem; + top: 14px; + &:hover { + cursor: pointer; + opacity: 0.6; + } +` + +const CloseColor = styled(Close)` + path { + stroke: ${({ theme }) => theme.text4}; + } +` + +const WalletName = styled.div` + width: initial; + font-size: 0.825rem; + font-weight: 500; + color: ${({ theme }) => theme.text3}; +` + +const IconWrapper = styled.div<{ size?: number }>` + ${({ theme }) => theme.flexColumnNoWrap}; + align-items: center; + justify-content: center; + margin-right: 8px; + & > img, + span { + height: ${({ size }) => (size ? size + 'px' : '32px')}; + width: ${({ size }) => (size ? size + 'px' : '32px')}; + } + ${({ theme }) => theme.mediaWidth.upToMedium` + align-items: flex-end; + `}; +` + +const TransactionListWrapper = styled.div` + ${({ theme }) => theme.flexColumnNoWrap}; +` + +const WalletAction = styled(ButtonSecondary)` + width: fit-content; + font-weight: 400; + margin-left: 8px; + font-size: 0.825rem; + padding: 4px 6px; + :hover { + cursor: pointer; + text-decoration: underline; + } +` + +const MainWalletAction = styled(WalletAction)` + color: ${({ theme }) => theme.primary1}; +` + +function renderTransactions(transactions: string[]) { + return ( + + {transactions.map((hash, i) => { + return + })} + + ) +} + +interface AccountDetailsProps { + toggleWalletModal: () => void + pendingTransactions: string[] + confirmedTransactions: string[] + ENSName?: string + openOptions: () => void +} + +export default function AccountDetails({ + toggleWalletModal, + pendingTransactions, + confirmedTransactions, + ENSName, + openOptions, +}: AccountDetailsProps) { + const { chainId, account, connector } = useActiveWeb3React() + const theme = useContext(ThemeContext) + const dispatch = useDispatch() + + function formatConnectorName() { + const { ethereum } = window + const isMetaMask = !!(ethereum && ethereum.isMetaMask) + const name = Object.keys(SUPPORTED_WALLETS) + .filter( + (k) => + SUPPORTED_WALLETS[k].connector === connector && (connector !== injected || isMetaMask === (k === 'METAMASK')) + ) + .map((k) => SUPPORTED_WALLETS[k].name)[0] + return Connected with {name} + } + + function getStatusIcon() { + if (connector === injected) { + return ( + + + + ) + } else if (connector === walletconnect) { + return ( + + {'wallet + + ) + } else if (connector === walletlink) { + return ( + + {'coinbase + + ) + } else if (connector === fortmatic) { + return ( + + {'fortmatic + + ) + } else if (connector === portis) { + return ( + <> + + {'portis + { + portis.portis.showPortis() + }} + > + Show Portis + + + + ) + } + return null + } + + const clearAllTransactionsCallback = useCallback(() => { + if (chainId) dispatch(clearAllTransactions({ chainId })) + }, [dispatch, chainId]) + + return ( + <> + + + + + Account + + + + + {formatConnectorName()} +
+ {connector !== injected && connector !== walletlink && ( + { + ;(connector as any).close() + }} + > + Disconnect + + )} + { + openOptions() + }} + > + Change + +
+
+ + + {ENSName ? ( + <> +
+ {getStatusIcon()} +

{ENSName}

+
+ + ) : ( + <> +
+ {getStatusIcon()} +

{account && shortenAddress(account)}

+
+ + )} +
+
+ + {ENSName ? ( + <> + +
+ {account && ( + + Copy Address + + )} + {chainId && account && ( + + + View on Etherscan + + )} +
+
+ + ) : ( + <> + +
+ {account && ( + + Copy Address + + )} + {chainId && account && ( + + + View on Etherscan + + )} +
+
+ + )} +
+
+
+
+
+ {!!pendingTransactions.length || !!confirmedTransactions.length ? ( + + + Recent Transactions + (clear all) + + {renderTransactions(pendingTransactions)} + {renderTransactions(confirmedTransactions)} + + ) : ( + + Your transactions will appear here... + + )} + + ) +} diff --git a/src/components/AddressInputPanel/index.tsx b/src/components/AddressInputPanel/index.tsx new file mode 100644 index 00000000..f55b1891 --- /dev/null +++ b/src/components/AddressInputPanel/index.tsx @@ -0,0 +1,128 @@ +import React, { useContext, useCallback } from 'react' +import styled, { ThemeContext } from 'styled-components' +import useENS from '../../hooks/useENS' +import { useActiveWeb3React } from '../../hooks' +import { ExternalLink, TYPE } from '../../theme' +import { AutoColumn } from '../Column' +import { RowBetween } from '../Row' +import { getEtherscanLink } from '../../utils' + +const InputPanel = styled.div` + ${({ theme }) => theme.flexColumnNoWrap} + position: relative; + border-radius: 1.25rem; + background-color: ${({ theme }) => theme.bg1}; + z-index: 1; + width: 100%; +` + +const ContainerRow = styled.div<{ error: boolean }>` + display: flex; + justify-content: center; + align-items: center; + border-radius: 1.25rem; + border: 1px solid ${({ error, theme }) => (error ? theme.red1 : theme.bg2)}; + transition: border-color 300ms ${({ error }) => (error ? 'step-end' : 'step-start')}, + color 500ms ${({ error }) => (error ? 'step-end' : 'step-start')}; + background-color: ${({ theme }) => theme.bg1}; +` + +const InputContainer = styled.div` + flex: 1; + padding: 1rem; +` + +const Input = styled.input<{ error?: boolean }>` + font-size: 1.25rem; + outline: none; + border: none; + flex: 1 1 auto; + width: 0; + background-color: ${({ theme }) => theme.bg1}; + transition: color 300ms ${({ error }) => (error ? 'step-end' : 'step-start')}; + color: ${({ error, theme }) => (error ? theme.red1 : theme.primary1)}; + overflow: hidden; + text-overflow: ellipsis; + font-weight: 500; + width: 100%; + ::placeholder { + color: ${({ theme }) => theme.text4}; + } + padding: 0px; + -webkit-appearance: textfield; + + ::-webkit-search-decoration { + -webkit-appearance: none; + } + + ::-webkit-outer-spin-button, + ::-webkit-inner-spin-button { + -webkit-appearance: none; + } + + ::placeholder { + color: ${({ theme }) => theme.text4}; + } +` + +export default function AddressInputPanel({ + id, + value, + onChange, +}: { + id?: string + // the typed string value + value: string + // triggers whenever the typed value changes + onChange: (value: string) => void +}) { + const { chainId } = useActiveWeb3React() + const theme = useContext(ThemeContext) + + const { address, loading, name } = useENS(value) + + const handleInput = useCallback( + (event) => { + const input = event.target.value + const withoutSpaces = input.replace(/\s+/g, '') + onChange(withoutSpaces) + }, + [onChange] + ) + + const error = Boolean(value.length > 0 && !loading && !address) + + return ( + + + + + + + Recipient + + {address && chainId && ( + + (View on Etherscan) + + )} + + + + + + + ) +} diff --git a/src/components/Blocklist/index.tsx b/src/components/Blocklist/index.tsx new file mode 100644 index 00000000..d83a975c --- /dev/null +++ b/src/components/Blocklist/index.tsx @@ -0,0 +1,12 @@ +import React, { ReactNode, useMemo } from 'react' +import { BLOCKED_ADDRESSES } from '../../constants' +import { useActiveWeb3React } from '../../hooks' + +export default function Blocklist({ children }: { children: ReactNode }) { + const { account } = useActiveWeb3React() + const blocked: boolean = useMemo(() => Boolean(account && BLOCKED_ADDRESSES.indexOf(account) !== -1), [account]) + if (blocked) { + return
Blocked address
+ } + return <>{children} +} diff --git a/src/components/Button/Button.stories.tsx b/src/components/Button/Button.stories.tsx new file mode 100644 index 00000000..8b5bb187 --- /dev/null +++ b/src/components/Button/Button.stories.tsx @@ -0,0 +1,153 @@ +import { Story } from '@storybook/react/types-6-0' +import styled from 'styled-components' +import React from 'react' +import { + ButtonConfirmed, + ButtonDropdown, + ButtonDropdownGrey, + ButtonDropdownLight, + ButtonEmpty, + ButtonError, + ButtonGray, + ButtonLight, + ButtonOutlined, + ButtonPink, + ButtonPrimary, + ButtonRadio, + ButtonSecondary, + ButtonUNIGradient, + ButtonWhite, +} from './index' + +const wrapperCss = styled.main` + font-size: 2em; + margin: 3em; + max-width: 300px; +` + +export default { + title: 'Buttons', + argTypes: { + disabled: { control: { type: 'boolean' } }, + onClick: { action: 'clicked' }, + }, + decorators: [ + (Component: Story) => ( +
+ +
+ ), + ], +} + +const Unicorn = () => ( + + 🦄 + +) + +export const Radio = () => ( + + +  UNISWAP  + + +) +export const DropdownLight = () => ( + + +  UNISWAP  + + +) +export const DropdownGrey = () => ( + + +  UNISWAP  + + +) +export const Dropdown = () => ( + + +  UNISWAP  + + +) +export const Error = () => ( + + +  UNISWAP  + + +) +export const Confirmed = () => ( + + +  UNISWAP  + + +) +export const White = () => ( + + +  UNISWAP  + + +) +export const Empty = () => ( + + +  UNISWAP  + + +) +export const Outlined = () => ( + + +  UNISWAP  + + +) +export const UNIGradient = () => ( + + +  UNISWAP  + + +) +export const Pink = () => ( + + +  UNISWAP  + + +) +export const Secondary = () => ( + + +  UNISWAP  + + +) +export const Gray = () => ( + + +  UNISWAP  + + +) +export const Light = () => ( + + +  UNISWAP  + + +) +export const Primary = () => ( + + +  UNISWAP  + + +) diff --git a/src/components/Button/index.tsx b/src/components/Button/index.tsx index 79091f9a..7ebc52a1 100644 --- a/src/components/Button/index.tsx +++ b/src/components/Button/index.tsx @@ -1,19 +1,19 @@ -import React from "react"; -import styled from "styled-components"; -import { darken, lighten } from "polished"; +import React from 'react' +import styled from 'styled-components' +import { darken, lighten } from 'polished' -import { RowBetween } from "../Row"; -import { ChevronDown, Check } from "react-feather"; -import { Button as RebassButton, ButtonProps } from "rebass/styled-components"; +import { RowBetween } from '../Row' +import { ChevronDown, Check } from 'react-feather' +import { Button as RebassButton, ButtonProps } from 'rebass/styled-components' const Base = styled(RebassButton)<{ - padding?: string; - width?: string; - borderRadius?: string; - altDisabledStyle?: boolean; + padding?: string + width?: string + borderRadius?: string + altDisabledStyle?: boolean }>` - padding: ${({ padding }) => (padding ? padding : "18px")}; - width: ${({ width }) => (width ? width : "100%")}; + padding: ${({ padding }) => (padding ? padding : '18px')}; + width: ${({ width }) => (width ? width : '100%')}; font-weight: 500; text-align: center; border-radius: 20px; @@ -36,7 +36,7 @@ const Base = styled(RebassButton)<{ > * { user-select: none; } -`; +` export const ButtonPrimary = styled(Base)` background-color: ${({ theme }) => theme.primary1}; @@ -56,14 +56,14 @@ export const ButtonPrimary = styled(Base)` background-color: ${({ theme, altDisabledStyle, disabled }) => altDisabledStyle ? (disabled ? theme.bg3 : theme.primary1) : theme.bg3}; color: ${({ theme, altDisabledStyle, disabled }) => - altDisabledStyle ? (disabled ? theme.text3 : "white") : theme.text3}; + altDisabledStyle ? (disabled ? theme.text3 : 'white') : theme.text3}; cursor: auto; box-shadow: none; border: 1px solid transparent; outline: none; - opacity: ${({ altDisabledStyle }) => (altDisabledStyle ? "0.5" : "1")}; + opacity: ${({ altDisabledStyle }) => (altDisabledStyle ? '0.5' : '1')}; } -`; +` export const ButtonLight = styled(Base)` background-color: ${({ theme }) => theme.primary5}; @@ -71,20 +71,15 @@ export const ButtonLight = styled(Base)` font-size: 16px; font-weight: 500; &:focus { - box-shadow: 0 0 0 1pt - ${({ theme, disabled }) => !disabled && darken(0.03, theme.primary5)}; - background-color: ${({ theme, disabled }) => - !disabled && darken(0.03, theme.primary5)}; + box-shadow: 0 0 0 1pt ${({ theme, disabled }) => !disabled && darken(0.03, theme.primary5)}; + background-color: ${({ theme, disabled }) => !disabled && darken(0.03, theme.primary5)}; } &:hover { - background-color: ${({ theme, disabled }) => - !disabled && darken(0.03, theme.primary5)}; + background-color: ${({ theme, disabled }) => !disabled && darken(0.03, theme.primary5)}; } &:active { - box-shadow: 0 0 0 1pt - ${({ theme, disabled }) => !disabled && darken(0.05, theme.primary5)}; - background-color: ${({ theme, disabled }) => - !disabled && darken(0.05, theme.primary5)}; + box-shadow: 0 0 0 1pt ${({ theme, disabled }) => !disabled && darken(0.05, theme.primary5)}; + background-color: ${({ theme, disabled }) => !disabled && darken(0.05, theme.primary5)}; } :disabled { opacity: 0.4; @@ -96,7 +91,7 @@ export const ButtonLight = styled(Base)` outline: none; } } -`; +` export const ButtonGray = styled(Base)` background-color: ${({ theme }) => theme.bg3}; @@ -104,18 +99,15 @@ export const ButtonGray = styled(Base)` font-size: 16px; font-weight: 500; &:focus { - background-color: ${({ theme, disabled }) => - !disabled && darken(0.05, theme.bg4)}; + background-color: ${({ theme, disabled }) => !disabled && darken(0.05, theme.bg4)}; } &:hover { - background-color: ${({ theme, disabled }) => - !disabled && darken(0.05, theme.bg4)}; + background-color: ${({ theme, disabled }) => !disabled && darken(0.05, theme.bg4)}; } &:active { - background-color: ${({ theme, disabled }) => - !disabled && darken(0.1, theme.bg4)}; + background-color: ${({ theme, disabled }) => !disabled && darken(0.1, theme.bg4)}; } -`; +` export const ButtonSecondary = styled(Base)` border: 1px solid ${({ theme }) => theme.primary4}; @@ -123,7 +115,7 @@ export const ButtonSecondary = styled(Base)` background-color: transparent; font-size: 16px; border-radius: 12px; - padding: ${({ padding }) => (padding ? padding : "10px")}; + padding: ${({ padding }) => (padding ? padding : '10px')}; &:focus { box-shadow: 0 0 0 1pt ${({ theme }) => theme.primary4}; @@ -143,7 +135,7 @@ export const ButtonSecondary = styled(Base)` a:hover { text-decoration: none; } -`; +` export const ButtonPink = styled(Base)` background-color: ${({ theme }) => theme.primary1}; @@ -165,7 +157,7 @@ export const ButtonPink = styled(Base)` opacity: 50%; cursor: auto; } -`; +` export const ButtonUNIGradient = styled(ButtonPrimary)` color: white; @@ -173,12 +165,7 @@ export const ButtonUNIGradient = styled(ButtonPrimary)` height: 36px; font-weight: 500; background-color: ${({ theme }) => theme.bg3}; - background: radial-gradient( - 174.47% 188.91% at 1.84% 0%, - #ff007a 0%, - #2172e5 100% - ), - #edeef2; + background: radial-gradient(174.47% 188.91% at 1.84% 0%, #ff007a 0%, #2172e5 100%), #edeef2; width: fit-content; position: relative; cursor: pointer; @@ -190,7 +177,7 @@ export const ButtonUNIGradient = styled(ButtonPrimary)` :active { opacity: 0.9; } -`; +` export const ButtonOutlined = styled(Base)` border: 1px solid ${({ theme }) => theme.bg2}; @@ -210,7 +197,7 @@ export const ButtonOutlined = styled(Base)` opacity: 50%; cursor: auto; } -`; +` export const ButtonEmpty = styled(Base)` background-color: transparent; @@ -232,7 +219,7 @@ export const ButtonEmpty = styled(Base)` opacity: 50%; cursor: auto; } -`; +` export const ButtonWhite = styled(Base)` border: 1px solid #edeef2; @@ -241,19 +228,19 @@ export const ButtonWhite = styled(Base)` &:focus { // eslint-disable-next-line @typescript-eslint/no-unused-vars - box-shadow: 0 0 0 1pt ${darken(0.05, "#edeef2")}; + box-shadow: 0 0 0 1pt ${darken(0.05, '#edeef2')}; } &:hover { - box-shadow: 0 0 0 1pt ${darken(0.1, "#edeef2")}; + box-shadow: 0 0 0 1pt ${darken(0.1, '#edeef2')}; } &:active { - box-shadow: 0 0 0 1pt ${darken(0.1, "#edeef2")}; + box-shadow: 0 0 0 1pt ${darken(0.1, '#edeef2')}; } &:disabled { opacity: 50%; cursor: auto; } -`; +` const ButtonConfirmedStyle = styled(Base)` background-color: ${({ theme }) => lighten(0.5, theme.green1)}; @@ -264,7 +251,7 @@ const ButtonConfirmedStyle = styled(Base)` opacity: 50%; cursor: auto; } -`; +` const ButtonErrorStyle = styled(Base)` background-color: ${({ theme }) => theme.red1}; @@ -288,7 +275,7 @@ const ButtonErrorStyle = styled(Base)` background-color: ${({ theme }) => theme.red1}; border: 1px solid ${({ theme }) => theme.red1}; } -`; +` export function ButtonConfirmed({ confirmed, @@ -296,83 +283,65 @@ export function ButtonConfirmed({ ...rest }: { confirmed?: boolean; altDisabledStyle?: boolean } & ButtonProps) { if (confirmed) { - return ; + return } else { - return ; + return } } -export function ButtonError({ - error, - ...rest -}: { error?: boolean } & ButtonProps) { +export function ButtonError({ error, ...rest }: { error?: boolean } & ButtonProps) { if (error) { - return ; + return } else { - return ; + return } } -export function ButtonDropdown({ - disabled = false, - children, - ...rest -}: { disabled?: boolean } & ButtonProps) { +export function ButtonDropdown({ disabled = false, children, ...rest }: { disabled?: boolean } & ButtonProps) { return ( -
{children}
+
{children}
- ); + ) } -export function ButtonDropdownGrey({ - disabled = false, - children, - ...rest -}: { disabled?: boolean } & ButtonProps) { +export function ButtonDropdownGrey({ disabled = false, children, ...rest }: { disabled?: boolean } & ButtonProps) { return ( - + -
{children}
+
{children}
- ); + ) } -export function ButtonDropdownLight({ - disabled = false, - children, - ...rest -}: { disabled?: boolean } & ButtonProps) { +export function ButtonDropdownLight({ disabled = false, children, ...rest }: { disabled?: boolean } & ButtonProps) { return ( -
{children}
+
{children}
- ); + ) } -export function ButtonRadio({ - active, - ...rest -}: { active?: boolean } & ButtonProps) { +export function ButtonRadio({ active, ...rest }: { active?: boolean } & ButtonProps) { if (!active) { - return ; + return } else { - return ; + return } } const ActiveOutlined = styled(ButtonOutlined)` border: 1px solid; border-color: ${({ theme }) => theme.primary1}; -`; +` const Circle = styled.div` height: 20px; @@ -382,24 +351,20 @@ const Circle = styled.div` display: flex; align-items: center; justify-content: center; -`; +` const CheckboxWrapper = styled.div` width: 30px; padding: 0 10px; -`; +` -export function ButtonRadioChecked({ - active = false, - children, - ...rest -}: { active?: boolean } & ButtonProps) { +export function ButtonRadioChecked({ active = false, children, ...rest }: { active?: boolean } & ButtonProps) { if (!active) { return ( {{children}} - ); + ) } else { return ( @@ -414,6 +379,6 @@ export function ButtonRadioChecked({ } - ); + ) } } diff --git a/src/components/Card/index.tsx b/src/components/Card/index.tsx new file mode 100644 index 00000000..3ba81680 --- /dev/null +++ b/src/components/Card/index.tsx @@ -0,0 +1,51 @@ +import React from 'react' +import styled from 'styled-components' +import { CardProps, Text } from 'rebass' +import { Box } from 'rebass/styled-components' +import { darken } from 'polished' + +const Card = styled(Box)<{ width?: string; padding?: string; border?: string; borderRadius?: string }>` + width: ${({ width }) => width ?? '100%'}; + border-radius: 16px; + padding: 1.25rem; + padding: ${({ padding }) => padding}; + border: ${({ border }) => border}; + border-radius: ${({ borderRadius }) => borderRadius}; +` +export default Card + +export const LightCard = styled(Card)` + border: 1px solid ${({ theme }) => theme.bg2}; + background-color: ${({ theme }) => theme.bg1}; +` + +export const LightGreyCard = styled(Card)` + background-color: ${({ theme }) => theme.bg2}; +` + +export const GreyCard = styled(Card)` + background-color: ${({ theme }) => theme.bg3}; +` + +export const OutlineCard = styled(Card)` + border: 1px solid ${({ theme }) => theme.bg3}; +` + +export const YellowCard = styled(Card)` + background-color: rgba(243, 132, 30, 0.05); + color: ${({ theme }) => theme.yellow3}; + font-weight: 500; +` + +export const PinkCard = styled(Card)` + background-color: rgba(255, 0, 122, 0.03); + color: ${({ theme }) => theme.primary1}; + font-weight: 500; +` + +export const BlueCard = styled(Card)` + background-color: ${({ theme }) => theme.primary5}; + color: ${({ theme }) => theme.blue2}; + border-radius: 12px; + width: fit-content; +` diff --git a/src/components/Column/index.tsx b/src/components/Column/index.tsx new file mode 100644 index 00000000..749fa5b7 --- /dev/null +++ b/src/components/Column/index.tsx @@ -0,0 +1,23 @@ +import styled from 'styled-components' + +const Column = styled.div` + display: flex; + flex-direction: column; + justify-content: flex-start; +` +export const ColumnCenter = styled(Column)` + width: 100%; + align-items: center; +` + +export const AutoColumn = styled.div<{ + gap?: 'sm' | 'md' | 'lg' | string + justify?: 'stretch' | 'center' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'space-between' +}>` + display: grid; + grid-auto-rows: auto; + grid-row-gap: ${({ gap }) => (gap === 'sm' && '8px') || (gap === 'md' && '12px') || (gap === 'lg' && '24px') || gap}; + justify-items: ${({ justify }) => justify && justify}; +` + +export default Column diff --git a/src/components/Confetti/index.tsx b/src/components/Confetti/index.tsx new file mode 100644 index 00000000..5a9f22cd --- /dev/null +++ b/src/components/Confetti/index.tsx @@ -0,0 +1,32 @@ +import React from 'react' +import ReactConfetti from 'react-confetti' +import { useWindowSize } from '../../hooks/useWindowSize' + +// eslint-disable-next-line react/prop-types +export default function Confetti({ start, variant }: { start: boolean; variant?: string }) { + const { width, height } = useWindowSize() + + const _variant = variant ? variant : height && width && height > 1.5 * width ? 'bottom' : variant + + return start && width && height ? ( + + ) : null +} diff --git a/src/components/CurrencyInputPanel/index.tsx b/src/components/CurrencyInputPanel/index.tsx new file mode 100644 index 00000000..a960fff5 --- /dev/null +++ b/src/components/CurrencyInputPanel/index.tsx @@ -0,0 +1,248 @@ +import { Currency, Pair } from '@uniswap/sdk' +import React, { useState, useCallback } from 'react' +import styled from 'styled-components' +import { darken } from 'polished' +import { useCurrencyBalance } from '../../state/wallet/hooks' +import CurrencySearchModal from '../SearchModal/CurrencySearchModal' +import CurrencyLogo from '../CurrencyLogo' +import DoubleCurrencyLogo from '../DoubleLogo' +import { RowBetween } from '../Row' +import { TYPE } from '../../theme' +import { Input as NumericalInput } from '../NumericalInput' +import { ReactComponent as DropDown } from '../../assets/images/dropdown.svg' + +import { useActiveWeb3React } from '../../hooks' +import { useTranslation } from 'react-i18next' +import useTheme from '../../hooks/useTheme' + +const InputRow = styled.div<{ selected: boolean }>` + ${({ theme }) => theme.flexRowNoWrap} + align-items: center; + padding: ${({ selected }) => (selected ? '0.75rem 0.5rem 0.75rem 1rem' : '0.75rem 0.75rem 0.75rem 1rem')}; +` + +const CurrencySelect = styled.button<{ selected: boolean }>` + align-items: center; + height: 2.2rem; + font-size: 20px; + font-weight: 500; + background-color: ${({ selected, theme }) => (selected ? theme.bg1 : theme.primary1)}; + color: ${({ selected, theme }) => (selected ? theme.text1 : theme.white)}; + border-radius: 12px; + box-shadow: ${({ selected }) => (selected ? 'none' : '0px 6px 10px rgba(0, 0, 0, 0.075)')}; + outline: none; + cursor: pointer; + user-select: none; + border: none; + padding: 0 0.5rem; + + :focus, + :hover { + background-color: ${({ selected, theme }) => (selected ? theme.bg2 : darken(0.05, theme.primary1))}; + } +` + +const LabelRow = styled.div` + ${({ theme }) => theme.flexRowNoWrap} + align-items: center; + color: ${({ theme }) => theme.text1}; + font-size: 0.75rem; + line-height: 1rem; + padding: 0rem 1rem 0.75rem 1rem; + span:hover { + cursor: pointer; + color: ${({ theme }) => darken(0.2, theme.text2)}; + } +` + +const Aligner = styled.span` + display: flex; + align-items: center; + justify-content: space-between; +` + +const StyledDropDown = styled(DropDown)<{ selected: boolean }>` + margin: 0 0.25rem 0 0.5rem; + height: 35%; + + path { + stroke: ${({ selected, theme }) => (selected ? theme.text1 : theme.white)}; + stroke-width: 1.5px; + } +` + +const InputPanel = styled.div<{ hideInput?: boolean }>` + ${({ theme }) => theme.flexColumnNoWrap} + position: relative; + border-radius: ${({ hideInput }) => (hideInput ? '8px' : '20px')}; + background-color: ${({ theme }) => theme.bg2}; + z-index: 1; +` + +const Container = styled.div<{ hideInput: boolean }>` + border-radius: ${({ hideInput }) => (hideInput ? '8px' : '20px')}; + border: 1px solid ${({ theme }) => theme.bg2}; + background-color: ${({ theme }) => theme.bg1}; +` + +const StyledTokenName = styled.span<{ active?: boolean }>` + ${({ active }) => (active ? ' margin: 0 0.25rem 0 0.75rem;' : ' margin: 0 0.25rem 0 0.25rem;')} + font-size: ${({ active }) => (active ? '20px' : '16px')}; +` + +const StyledBalanceMax = styled.button` + height: 28px; + background-color: ${({ theme }) => theme.primary5}; + border: 1px solid ${({ theme }) => theme.primary5}; + border-radius: 0.5rem; + font-size: 0.875rem; + + font-weight: 500; + cursor: pointer; + margin-right: 0.5rem; + color: ${({ theme }) => theme.primaryText1}; + :hover { + border: 1px solid ${({ theme }) => theme.primary1}; + } + :focus { + border: 1px solid ${({ theme }) => theme.primary1}; + outline: none; + } + + ${({ theme }) => theme.mediaWidth.upToExtraSmall` + margin-right: 0.5rem; + `}; +` + +interface CurrencyInputPanelProps { + value: string + onUserInput: (value: string) => void + onMax?: () => void + showMaxButton: boolean + label?: string + onCurrencySelect?: (currency: Currency) => void + currency?: Currency | null + disableCurrencySelect?: boolean + hideBalance?: boolean + pair?: Pair | null + hideInput?: boolean + otherCurrency?: Currency | null + id: string + showCommonBases?: boolean + customBalanceText?: string +} + +export default function CurrencyInputPanel({ + value, + onUserInput, + onMax, + showMaxButton, + label = 'Input', + onCurrencySelect, + currency, + disableCurrencySelect = false, + hideBalance = false, + pair = null, // used for double token logo + hideInput = false, + otherCurrency, + id, + showCommonBases, + customBalanceText, +}: CurrencyInputPanelProps) { + const { t } = useTranslation() + + const [modalOpen, setModalOpen] = useState(false) + const { account } = useActiveWeb3React() + const selectedCurrencyBalance = useCurrencyBalance(account ?? undefined, currency ?? undefined) + const theme = useTheme() + + const handleDismissSearch = useCallback(() => { + setModalOpen(false) + }, [setModalOpen]) + + return ( + + + + {!hideInput && ( + <> + { + onUserInput(val) + }} + /> + {account && currency && showMaxButton && label !== 'To' && ( + MAX + )} + + )} + { + if (!disableCurrencySelect) { + setModalOpen(true) + } + }} + > + + {pair ? ( + + ) : currency ? ( + + ) : null} + {pair ? ( + + {pair?.token0.symbol}:{pair?.token1.symbol} + + ) : ( + + {(currency && currency.symbol && currency.symbol.length > 20 + ? currency.symbol.slice(0, 4) + + '...' + + currency.symbol.slice(currency.symbol.length - 5, currency.symbol.length) + : currency?.symbol) || t('selectToken')} + + )} + {!disableCurrencySelect && } + + + + {!hideInput && ( + + + + {label} + + {account && ( + + {!hideBalance && !!currency && selectedCurrencyBalance + ? (customBalanceText ?? 'Balance: ') + selectedCurrencyBalance?.toSignificant(6) + : ' -'} + + )} + + + )} + + {!disableCurrencySelect && onCurrencySelect && ( + + )} + + ) +} diff --git a/src/components/CurrencyLogo/index.tsx b/src/components/CurrencyLogo/index.tsx new file mode 100644 index 00000000..36b3562e --- /dev/null +++ b/src/components/CurrencyLogo/index.tsx @@ -0,0 +1,56 @@ +import { Currency, ETHER, Token } from '@uniswap/sdk' +import React, { useMemo } from 'react' +import styled from 'styled-components' + +import EthereumLogo from '../../assets/images/ethereum-logo.png' +import useHttpLocations from '../../hooks/useHttpLocations' +import { WrappedTokenInfo } from '../../state/lists/hooks' +import Logo from '../Logo' + +export const getTokenLogoURL = (address: string) => + `https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/${address}/logo.png` + +const StyledEthereumLogo = styled.img<{ size: string }>` + width: ${({ size }) => size}; + height: ${({ size }) => size}; + box-shadow: 0px 6px 10px rgba(0, 0, 0, 0.075); + border-radius: 24px; +` + +const StyledLogo = styled(Logo)<{ size: string }>` + width: ${({ size }) => size}; + height: ${({ size }) => size}; + border-radius: ${({ size }) => size}; + box-shadow: 0px 6px 10px rgba(0, 0, 0, 0.075); + background-color: ${({ theme }) => theme.white}; +` + +export default function CurrencyLogo({ + currency, + size = '24px', + style, +}: { + currency?: Currency + size?: string + style?: React.CSSProperties +}) { + const uriLocations = useHttpLocations(currency instanceof WrappedTokenInfo ? currency.logoURI : undefined) + + const srcs: string[] = useMemo(() => { + if (currency === ETHER) return [] + + if (currency instanceof Token) { + if (currency instanceof WrappedTokenInfo) { + return [...uriLocations, getTokenLogoURL(currency.address)] + } + return [getTokenLogoURL(currency.address)] + } + return [] + }, [currency, uriLocations]) + + if (currency === ETHER) { + return + } + + return +} diff --git a/src/components/DoubleLogo/index.tsx b/src/components/DoubleLogo/index.tsx new file mode 100644 index 00000000..a6da21a7 --- /dev/null +++ b/src/components/DoubleLogo/index.tsx @@ -0,0 +1,40 @@ +import { Currency } from '@uniswap/sdk' +import React from 'react' +import styled from 'styled-components' +import CurrencyLogo from '../CurrencyLogo' + +const Wrapper = styled.div<{ margin: boolean; sizeraw: number }>` + position: relative; + display: flex; + flex-direction: row; + margin-right: ${({ sizeraw, margin }) => margin && (sizeraw / 3 + 8).toString() + 'px'}; +` + +interface DoubleCurrencyLogoProps { + margin?: boolean + size?: number + currency0?: Currency + currency1?: Currency +} + +const HigherLogo = styled(CurrencyLogo)` + z-index: 2; +` +const CoveredLogo = styled(CurrencyLogo)<{ sizeraw: number }>` + position: absolute; + left: ${({ sizeraw }) => '-' + (sizeraw / 2).toString() + 'px'} !important; +` + +export default function DoubleCurrencyLogo({ + currency0, + currency1, + size = 16, + margin = false, +}: DoubleCurrencyLogoProps) { + return ( + + {currency0 && } + {currency1 && } + + ) +} diff --git a/src/components/FormattedCurrencyAmount/index.tsx b/src/components/FormattedCurrencyAmount/index.tsx new file mode 100644 index 00000000..425c4eab --- /dev/null +++ b/src/components/FormattedCurrencyAmount/index.tsx @@ -0,0 +1,22 @@ +import React from 'react' +import { CurrencyAmount, Fraction, JSBI } from '@uniswap/sdk' + +const CURRENCY_AMOUNT_MIN = new Fraction(JSBI.BigInt(1), JSBI.BigInt(1000000)) + +export default function FormattedCurrencyAmount({ + currencyAmount, + significantDigits = 4, +}: { + currencyAmount: CurrencyAmount + significantDigits?: number +}) { + return ( + <> + {currencyAmount.equalTo(JSBI.BigInt(0)) + ? '0' + : currencyAmount.greaterThan(CURRENCY_AMOUNT_MIN) + ? currencyAmount.toSignificant(significantDigits) + : `<${CURRENCY_AMOUNT_MIN.toSignificant(1)}`} + + ) +} diff --git a/src/components/Header/Polling.tsx b/src/components/Header/Polling.tsx new file mode 100644 index 00000000..638d8683 --- /dev/null +++ b/src/components/Header/Polling.tsx @@ -0,0 +1,94 @@ +import React, { useState, useEffect } from 'react' +import styled, { keyframes } from 'styled-components' +import { TYPE, ExternalLink } from '../../theme' + +import { useBlockNumber } from '../../state/application/hooks' +import { getEtherscanLink } from '../../utils' +import { useActiveWeb3React } from '../../hooks' + +const StyledPolling = styled.div` + position: fixed; + display: flex; + right: 0; + bottom: 0; + padding: 1rem; + color: white; + transition: opacity 0.25s ease; + color: ${({ theme }) => theme.green1}; + :hover { + opacity: 1; + } + + ${({ theme }) => theme.mediaWidth.upToMedium` + display: none; + `} +` +const StyledPollingDot = styled.div` + width: 8px; + height: 8px; + min-height: 8px; + min-width: 8px; + margin-left: 0.5rem; + margin-top: 3px; + border-radius: 50%; + position: relative; + background-color: ${({ theme }) => theme.green1}; +` + +const rotate360 = keyframes` + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +` + +const Spinner = styled.div` + animation: ${rotate360} 1s cubic-bezier(0.83, 0, 0.17, 1) infinite; + transform: translateZ(0); + + border-top: 1px solid transparent; + border-right: 1px solid transparent; + border-bottom: 1px solid transparent; + border-left: 2px solid ${({ theme }) => theme.green1}; + background: transparent; + width: 14px; + height: 14px; + border-radius: 50%; + position: relative; + + left: -3px; + top: -3px; +` + +export default function Polling() { + const { chainId } = useActiveWeb3React() + + const blockNumber = useBlockNumber() + + const [isMounted, setIsMounted] = useState(true) + + useEffect( + () => { + const timer1 = setTimeout(() => setIsMounted(true), 1000) + + // this will clear Timeout when component unmount like in willComponentUnmount + return () => { + setIsMounted(false) + clearTimeout(timer1) + } + }, + [blockNumber] //useEffect will run only one time + //if you pass a value to array, like this [data] than clearTimeout will run every time this value changes (useEffect re-run) + ) + + return ( + + + {blockNumber} + {!isMounted && } + + + ) +} diff --git a/src/components/Header/URLWarning.tsx b/src/components/Header/URLWarning.tsx new file mode 100644 index 00000000..87853261 --- /dev/null +++ b/src/components/Header/URLWarning.tsx @@ -0,0 +1,47 @@ +import React from 'react' +import styled from 'styled-components' + +import { AlertTriangle, X } from 'react-feather' +import { useURLWarningToggle, useURLWarningVisible } from '../../state/user/hooks' +import { isMobile } from 'react-device-detect' + +const PhishAlert = styled.div<{ isActive: any }>` + width: 100%; + padding: 6px 6px; + background-color: ${({ theme }) => theme.blue1}; + color: white; + font-size: 11px; + justify-content: space-between; + align-items: center; + display: ${({ isActive }) => (isActive ? 'flex' : 'none')}; +` + +export const StyledClose = styled(X)` + :hover { + cursor: pointer; + } +` + +export default function URLWarning() { + const toggleURLWarning = useURLWarningToggle() + const showURLWarning = useURLWarningVisible() + + return isMobile ? ( + +
+ Make sure the URL is + app.uniswap.org +
+ +
+ ) : window.location.hostname === 'app.uniswap.org' ? ( + +
+ Always make sure the URL is + app.uniswap.org - bookmark it + to be safe. +
+ +
+ ) : null +} diff --git a/src/components/Header/UniBalanceContent.tsx b/src/components/Header/UniBalanceContent.tsx new file mode 100644 index 00000000..300681af --- /dev/null +++ b/src/components/Header/UniBalanceContent.tsx @@ -0,0 +1,127 @@ +import { ChainId, TokenAmount } from '@uniswap/sdk' +import React, { useMemo } from 'react' +import { X } from 'react-feather' +import styled from 'styled-components' +import tokenLogo from '../../assets/images/token-logo.png' +import { UNI } from '../../constants' +import { useTotalSupply } from '../../data/TotalSupply' +import { useActiveWeb3React } from '../../hooks' +import { useMerkleDistributorContract } from '../../hooks/useContract' +import useCurrentBlockTimestamp from '../../hooks/useCurrentBlockTimestamp' +import { useTotalUniEarned } from '../../state/stake/hooks' +import { useAggregateUniBalance, useTokenBalance } from '../../state/wallet/hooks' +import { ExternalLink, StyledInternalLink, TYPE, UniTokenAnimated } from '../../theme' +import { computeUniCirculation } from '../../utils/computeUniCirculation' +import useUSDCPrice from '../../utils/useUSDCPrice' +import { AutoColumn } from '../Column' +import { RowBetween } from '../Row' +import { Break, CardBGImage, CardNoise, CardSection, DataCard } from '../earn/styled' + +const ContentWrapper = styled(AutoColumn)` + width: 100%; +` + +const ModalUpper = styled(DataCard)` + box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.1); + background: radial-gradient(76.02% 75.41% at 1.84% 0%, #ff007a 0%, #021d43 100%); + padding: 0.5rem; +` + +const StyledClose = styled(X)` + position: absolute; + right: 16px; + top: 16px; + + :hover { + cursor: pointer; + } +` + +/** + * Content for balance stats modal + */ +export default function UniBalanceContent({ setShowUniBalanceModal }: { setShowUniBalanceModal: any }) { + const { account, chainId } = useActiveWeb3React() + const uni = chainId ? UNI[chainId] : undefined + + const total = useAggregateUniBalance() + const uniBalance: TokenAmount | undefined = useTokenBalance(account ?? undefined, uni) + const uniToClaim: TokenAmount | undefined = useTotalUniEarned() + + const totalSupply: TokenAmount | undefined = useTotalSupply(uni) + const uniPrice = useUSDCPrice(uni) + const blockTimestamp = useCurrentBlockTimestamp() + const unclaimedUni = useTokenBalance(useMerkleDistributorContract()?.address, uni) + const circulation: TokenAmount | undefined = useMemo( + () => + blockTimestamp && uni && chainId === ChainId.MAINNET + ? computeUniCirculation(uni, blockTimestamp, unclaimedUni) + : totalSupply, + [blockTimestamp, chainId, totalSupply, unclaimedUni, uni] + ) + + return ( + + + + + + + Your UNI Breakdown + setShowUniBalanceModal(false)} /> + + + + {account && ( + <> + + + {' '} + + {total?.toFixed(2, { groupSeparator: ',' })} + + + + + Balance: + {uniBalance?.toFixed(2, { groupSeparator: ',' })} + + + Unclaimed: + + {uniToClaim?.toFixed(4, { groupSeparator: ',' })}{' '} + {uniToClaim && uniToClaim.greaterThan('0') && ( + setShowUniBalanceModal(false)} to="/uni"> + (claim) + + )} + + + + + + + )} + + + + UNI price: + ${uniPrice?.toFixed(2) ?? '-'} + + + UNI in circulation: + {circulation?.toFixed(0, { groupSeparator: ',' })} + + + Total Supply + {totalSupply?.toFixed(0, { groupSeparator: ',' })} + + {uni && uni.chainId === ChainId.MAINNET ? ( + View UNI Analytics + ) : null} + + + + + ) +} diff --git a/src/components/Header/index.tsx b/src/components/Header/index.tsx index e49e9044..6c00dc93 100644 --- a/src/components/Header/index.tsx +++ b/src/components/Header/index.tsx @@ -1,15 +1,35 @@ -import React from "react"; -import { NavLink } from "react-router-dom"; -import { darken } from "polished"; +import { ChainId, TokenAmount } from '@uniswap/sdk' +import React, { useState } from 'react' +import { Text } from 'rebass' +import { NavLink } from 'react-router-dom' +import { darken } from 'polished' +import { useTranslation } from 'react-i18next' -import styled from "styled-components"; -import Logo from "../../assets/images/logo.svg"; -import LogoDark from "../../assets/images/logo_white.svg"; -import { useDarkModeManager } from "../../state/user/hooks"; -import Row, { RowFixed } from "../Row"; -import Web3Status from "../Web3Status"; +import styled from 'styled-components' -const activeClassName = "ACTIVE"; +import Logo from '../../assets/svg/logo.svg' +import LogoDark from '../../assets/svg/logo_white.svg' +import { useActiveWeb3React } from '../../hooks' +import { useDarkModeManager } from '../../state/user/hooks' +import { useETHBalances, useAggregateUniBalance } from '../../state/wallet/hooks' +import { CardNoise } from '../earn/styled' +import { CountUp } from 'use-count-up' +import { TYPE, ExternalLink } from '../../theme' + +import { YellowCard } from '../Card' +import { Moon, Sun } from 'react-feather' +import Menu from '../Menu' + +import Row, { RowFixed } from '../Row' +import Web3Status from '../Web3Status' +import ClaimModal from '../claim/ClaimModal' +import { useToggleSelfClaimModal, useShowClaimPopup } from '../../state/application/hooks' +import { useUserHasAvailableClaim } from '../../state/claim/hooks' +import { useUserHasSubmittedClaim } from '../../state/transactions/hooks' +import { Dots } from '../swap/styleds' +import Modal from '../Modal' +import UniBalanceContent from './UniBalanceContent' +import usePrevious from '../../hooks/usePrevious' const HeaderFrame = styled.div` display: grid; @@ -37,13 +57,57 @@ const HeaderFrame = styled.div` ${({ theme }) => theme.mediaWidth.upToExtraSmall` padding: 0.5rem 1rem; `} -`; +` + +const HeaderControls = styled.div` + display: flex; + flex-direction: row; + align-items: center; + justify-self: flex-end; + + ${({ theme }) => theme.mediaWidth.upToMedium` + flex-direction: row; + justify-content: space-between; + justify-self: center; + width: 100%; + max-width: 960px; + padding: 1rem; + position: fixed; + bottom: 0px; + left: 0px; + width: 100%; + z-index: 99; + height: 72px; + border-radius: 12px 12px 0 0; + background-color: ${({ theme }) => theme.bg1}; + `}; +` + +const HeaderElement = styled.div` + display: flex; + align-items: center; + + /* addresses safari's lack of support for "gap" */ + & > *:not(:first-child) { + margin-left: 8px; + } + + ${({ theme }) => theme.mediaWidth.upToMedium` + flex-direction: row-reverse; + align-items: center; + `}; +` + +const HeaderElementWrap = styled.div` + display: flex; + align-items: center; +` const HeaderRow = styled(RowFixed)` ${({ theme }) => theme.mediaWidth.upToMedium` width: 100%; `}; -`; +` const HeaderLinks = styled(Row)` justify-content: center; @@ -51,28 +115,93 @@ const HeaderLinks = styled(Row)` padding: 1rem 0 1rem 1rem; justify-content: flex-end; `}; -`; +` -const Title = styled(NavLink)` +const AccountElement = styled.div<{ active: boolean }>` + display: flex; + flex-direction: row; + align-items: center; + background-color: ${({ theme, active }) => (!active ? theme.bg1 : theme.bg3)}; + border-radius: 12px; + white-space: nowrap; + width: 100%; + cursor: pointer; + + :focus { + border: 1px solid blue; + } +` + +const UNIAmount = styled(AccountElement)` + color: white; + padding: 4px 8px; + height: 36px; + font-weight: 500; + background-color: ${({ theme }) => theme.bg3}; + background: radial-gradient(174.47% 188.91% at 1.84% 0%, #ff007a 0%, #2172e5 100%), #edeef2; +` + +const UNIWrapper = styled.span` + width: fit-content; + position: relative; + cursor: pointer; + + :hover { + opacity: 0.8; + } + + :active { + opacity: 0.9; + } +` + +const HideSmall = styled.span` + ${({ theme }) => theme.mediaWidth.upToSmall` + display: none; + `}; +` + +const NetworkCard = styled(YellowCard)` + border-radius: 12px; + padding: 8px 12px; + ${({ theme }) => theme.mediaWidth.upToSmall` + margin: 0; + margin-right: 0.5rem; + width: initial; + overflow: hidden; + text-overflow: ellipsis; + flex-shrink: 1; + `}; +` + +const BalanceText = styled(Text)` + ${({ theme }) => theme.mediaWidth.upToExtraSmall` + display: none; + `}; +` + +const Title = styled.a` display: flex; align-items: center; pointer-events: auto; justify-self: flex-start; - margin-right: 24px; + margin-right: 12px; ${({ theme }) => theme.mediaWidth.upToSmall` justify-self: center; `}; :hover { cursor: pointer; } -`; +` const UniIcon = styled.div` transition: transform 0.3s ease; :hover { transform: rotate(-5deg); } -`; +` + +const activeClassName = 'ACTIVE' const StyledNavLink = styled(NavLink).attrs({ activeClassName, @@ -83,60 +212,212 @@ const StyledNavLink = styled(NavLink).attrs({ outline: none; cursor: pointer; text-decoration: none; - color: ${({ theme }) => theme.text3}; + color: ${({ theme }) => theme.text2}; + font-size: 1rem; + width: fit-content; + margin: 0 12px; + font-weight: 500; + + &.${activeClassName} { + border-radius: 12px; + font-weight: 600; + color: ${({ theme }) => theme.text1}; + } + + :hover, + :focus { + color: ${({ theme }) => darken(0.1, theme.text1)}; + } +` + +const StyledExternalLink = styled(ExternalLink).attrs({ + activeClassName, +})<{ isActive?: boolean }>` + ${({ theme }) => theme.flexRowNoWrap} + align-items: left; + border-radius: 3rem; + outline: none; + cursor: pointer; + text-decoration: none; + color: ${({ theme }) => theme.text2}; font-size: 1rem; width: fit-content; - margin: 0 6px; - font-weight: 600; - padding: 8.5px 12px; + margin: 0 12px; + font-weight: 500; &.${activeClassName} { border-radius: 12px; + font-weight: 600; color: ${({ theme }) => theme.text1}; - background-color: ${({ theme }) => theme.bg2}; } :hover, :focus { color: ${({ theme }) => darken(0.1, theme.text1)}; } -`; + + ${({ theme }) => theme.mediaWidth.upToExtraSmall` + display: none; +`} +` + +export const StyledMenuButton = styled.button` + position: relative; + width: 100%; + height: 100%; + border: none; + background-color: transparent; + margin: 0; + padding: 0; + height: 35px; + background-color: ${({ theme }) => theme.bg3}; + margin-left: 8px; + padding: 0.15rem 0.5rem; + border-radius: 0.5rem; + + :hover, + :focus { + cursor: pointer; + outline: none; + background-color: ${({ theme }) => theme.bg4}; + } + + svg { + margin-top: 2px; + } + > * { + stroke: ${({ theme }) => theme.text1}; + } +` + +const NETWORK_LABELS: { [chainId in ChainId]?: string } = { + [ChainId.RINKEBY]: 'Rinkeby', + [ChainId.ROPSTEN]: 'Ropsten', + [ChainId.GÖRLI]: 'Görli', + [ChainId.KOVAN]: 'Kovan', +} export default function Header() { + const { account, chainId } = useActiveWeb3React() + const { t } = useTranslation() + + const userEthBalance = useETHBalances(account ? [account] : [])?.[account ?? ''] // const [isDark] = useDarkModeManager() - const [darkMode] = useDarkModeManager(); + const [darkMode, toggleDarkMode] = useDarkModeManager() + + const toggleClaimModal = useToggleSelfClaimModal() + + const availableClaim: boolean = useUserHasAvailableClaim(account) + + const { claimTxn } = useUserHasSubmittedClaim(account ?? undefined) + + const aggregateBalance: TokenAmount | undefined = useAggregateUniBalance() + + const [showUniBalanceModal, setShowUniBalanceModal] = useState(false) + const showClaimPopup = useShowClaimPopup() + + const countUpValue = aggregateBalance?.toFixed(0) ?? '0' + const countUpValuePrevious = usePrevious(countUpValue) ?? '0' return ( + + setShowUniBalanceModal(false)}> + + - + <Title href="."> <UniIcon> - <img width={"20px"} src={darkMode ? LogoDark : Logo} alt="logo" /> + <img width={'24px'} src={darkMode ? LogoDark : Logo} alt="logo" /> </UniIcon> + + {t('swap')} + pathname === "/"} + id={`pool-nav-link`} + to={'/pool'} + isActive={(match, { pathname }) => + Boolean(match) || + pathname.startsWith('/add') || + pathname.startsWith('/remove') || + pathname.startsWith('/create') || + pathname.startsWith('/find') + } > - Overview - - - Protocol - - - Pools + {t('pool')} - - Tokens + + UNI - - Wallets + + Vote + + Charts + - + + + + {chainId && NETWORK_LABELS[chainId] && ( + {NETWORK_LABELS[chainId]} + )} + + {availableClaim && !showClaimPopup && ( + + + + {claimTxn && !claimTxn?.receipt ? Claiming UNI : 'Claim UNI'} + + + + + )} + {!availableClaim && aggregateBalance && ( + setShowUniBalanceModal(true)}> + + {account && ( + + + + + + )} + UNI + + + + )} + + {account && userEthBalance ? ( + + {userEthBalance?.toSignificant(4)} ETH + + ) : null} + + + + + toggleDarkMode()}> + {darkMode ? : } + + + + - ); + ) } diff --git a/src/components/Identicon/index.tsx b/src/components/Identicon/index.tsx index ec7d5ab3..258e9940 100644 --- a/src/components/Identicon/index.tsx +++ b/src/components/Identicon/index.tsx @@ -1,29 +1,29 @@ -import React, { useEffect, useRef } from "react"; +import React, { useEffect, useRef } from 'react' -import styled from "styled-components"; +import styled from 'styled-components' -import Jazzicon from "@metamask/jazzicon"; -import { useActiveWeb3React } from "hooks/web3React"; +import { useActiveWeb3React } from '../../hooks' +import Jazzicon from 'jazzicon' const StyledIdenticonContainer = styled.div` height: 1rem; width: 1rem; border-radius: 1.125rem; background-color: ${({ theme }) => theme.bg4}; -`; +` export default function Identicon() { - const ref = useRef(); + const ref = useRef() - const { account } = useActiveWeb3React(); + const { account } = useActiveWeb3React() useEffect(() => { if (account && ref.current) { - ref.current.innerHTML = ""; - ref.current.appendChild(Jazzicon(16, parseInt(account.slice(2, 10), 16))); + ref.current.innerHTML = '' + ref.current.appendChild(Jazzicon(16, parseInt(account.slice(2, 10), 16))) } - }, [account]); + }, [account]) // https://github.com/DefinitelyTyped/DefinitelyTyped/issues/30451 - return ; + return } diff --git a/src/components/InputStepCounter/InputStepCounter.tsx b/src/components/InputStepCounter/InputStepCounter.tsx new file mode 100644 index 00000000..61e38528 --- /dev/null +++ b/src/components/InputStepCounter/InputStepCounter.tsx @@ -0,0 +1,123 @@ +import React, { useState, useCallback, useEffect } from 'react' +import { OutlineCard } from 'components/Card' +import { RowBetween } from 'components/Row' +import { ButtonGray } from 'components/Button' +import { TYPE } from 'theme' +import { Input as NumericalInput } from '../NumericalInput' +import styled, { keyframes, css } from 'styled-components' + +const pulse = (color: string) => keyframes` + 0% { + box-shadow: 0 0 0 0 ${color}; + } + + 70% { + box-shadow: 0 0 0 2px ${color}; + } + + 100% { + box-shadow: 0 0 0 0 ${color}; + } +` + +const FocusedOutlineCard = styled(OutlineCard)<{ active?: boolean; pulsing?: boolean }>` + border-color: ${({ active, theme }) => active && theme.blue1}; + padding: 8px 12px; + + ${({ pulsing, theme }) => + pulsing && + css` + animation: ${pulse(theme.blue1)} 0.8s linear; + `} +` + +const StyledInput = styled(NumericalInput)<{ usePercent?: boolean }>` + background-color: ${({ theme }) => theme.bg0}; + text-align: ${({ usePercent }) => (usePercent ? 'right' : 'center')}; + margin-right: 2px; +` + +const ContentWrapper = styled(RowBetween)` + padding: 0 8px; + width: 70%; +` + +interface StepCounterProps { + value: string + onUserInput: (value: string) => void + onIncrement?: () => void + onDecrement?: () => void + usePercent?: boolean + prependSymbol?: string | undefined +} + +const StepCounter = ({ value, onUserInput, usePercent = false, prependSymbol }: StepCounterProps) => { + // for focus state, styled components doesnt let you select input parent container + const [active, setActive] = useState(false) + + // let user type value and only update parent value on blur + const [localValue, setLocalValue] = useState('') + const [useLocalValue, setUseLocalValue] = useState(false) + + // animation if parent value updates local value + const [pulsing, setPulsing] = useState(false) + + const handleOnFocus = () => { + setUseLocalValue(true) + setActive(true) + } + + const handleOnBlur = useCallback(() => { + setUseLocalValue(false) + setActive(false) + onUserInput(localValue) // trigger update on parent value + }, [localValue, onUserInput]) + + useEffect(() => { + if (localValue !== value && !useLocalValue) { + setTimeout(() => { + setLocalValue(value) // reset local value to match parent + setPulsing(true) // trigger animation + setTimeout(function () { + setPulsing(false) + }, 1800) + }, 400) + } + }, [localValue, useLocalValue, value]) + + const handleDeccrement = useCallback(() => { + localValue && setLocalValue((parseFloat(localValue) * 0.997).toString()) + }, [localValue]) + + const handleIncrement = useCallback(() => { + localValue && setLocalValue((parseFloat(localValue) * 1.003).toString()) + }, [localValue]) + + return ( + + + + - + + + { + setLocalValue(val) + }} + prependSymbol={prependSymbol} + usePercent={usePercent} + /> + {usePercent && %} + + + + + + + + ) +} + +export default StepCounter diff --git a/src/components/LineChart/LineChart.stories.tsx b/src/components/LineChart/LineChart.stories.tsx new file mode 100644 index 00000000..effce1d8 --- /dev/null +++ b/src/components/LineChart/LineChart.stories.tsx @@ -0,0 +1,90 @@ +import { Story } from '@storybook/react/types-6-0' +import React from 'react' +// import Row, { RowFixed } from 'components/Row' +import styled from 'styled-components' +import Component, { LineChartProps } from './' +import { dummyData } from './data' +// import { AutoColumn } from 'components/Column' +// import { TYPE } from 'theme' +// import DoubleCurrencyLogo from 'components/DoubleLogo' +// import { MKR } from 'constants' +// import { ETHER } from '@uniswap/sdk' +// import LineChart from '.' + +const Wrapper = styled.div` + margin: 1em 2em; + max-width: 500px; + & > * { + font-size: 1em; + } +` + +export default { + title: 'Charts', + argTypes: { + disabled: { control: { type: 'boolean' } }, + onClick: { action: 'clicked' }, + }, + decorators: [ + (Component: Story) => ( + + + + ), + ], +} + +const Template: Story = (args) => {args.children} + +export const Basic = Template.bind({}) +Basic.args = { data: dummyData } + +// const Full = () => { +// const [value, setValue] = useState(dummyData[dummyData.length - 1].value) + +// const dummyUSDPrice = 410 // used for conversion + +// const TopLeftContent = () => ( +// +// +// {' '} +// +// ETH / MKR +// +// +// +// +// {value} MKR +// +// +// ($ +// {value +// ? (value * dummyUSDPrice).toLocaleString('USD', { +// currency: 'USD', +// minimumFractionDigits: 2 +// }) +// : null}{' '} +// ) +// +// +// +// ) + +// return ( +// +// } /> +// +// ) +// } + +// export const FullVersion = Template.bind(() => ) +// Full.args = { data: dummyData } +// Full.decorators = [ +// (Story: any) => { +// return ( +// +// +// +// ) +// } +// ] diff --git a/src/components/LineChart/data.ts b/src/components/LineChart/data.ts new file mode 100644 index 00000000..da2c7d72 --- /dev/null +++ b/src/components/LineChart/data.ts @@ -0,0 +1,152 @@ +export const dummyData = [ + { time: '2018-10-19', value: 35.98 }, + { time: '2018-10-22', value: 35.75 }, + { time: '2018-10-23', value: 35.65 }, + { time: '2018-10-24', value: 34.12 }, + { time: '2018-10-25', value: 35.84 }, + { time: '2018-10-26', value: 35.24 }, + { time: '2018-10-29', value: 35.99 }, + { time: '2018-10-30', value: 37.71 }, + { time: '2018-10-31', value: 38.14 }, + { time: '2018-11-01', value: 37.95 }, + { time: '2018-11-02', value: 37.66 }, + { time: '2018-11-05', value: 38.02 }, + { time: '2018-11-06', value: 37.73 }, + { time: '2018-11-07', value: 38.3 }, + { time: '2018-11-08', value: 38.3 }, + { time: '2018-11-09', value: 38.34 }, + { time: '2018-11-12', value: 38.0 }, + { time: '2018-11-13', value: 37.72 }, + { time: '2018-11-14', value: 38.29 }, + { time: '2018-11-15', value: 38.49 }, + { time: '2018-11-16', value: 38.59 }, + { time: '2018-11-19', value: 38.18 }, + { time: '2018-11-20', value: 36.76 }, + { time: '2018-11-21', value: 37.51 }, + { time: '2018-11-23', value: 37.39 }, + { time: '2018-11-26', value: 37.77 }, + { time: '2018-11-27', value: 38.36 }, + { time: '2018-11-28', value: 39.06 }, + { time: '2018-11-29', value: 39.42 }, + { time: '2018-11-30', value: 39.01 }, + { time: '2018-12-03', value: 39.15 }, + { time: '2018-12-04', value: 37.69 }, + { time: '2018-12-06', value: 37.88 }, + { time: '2018-12-07', value: 37.41 }, + { time: '2018-12-10', value: 37.35 }, + { time: '2018-12-11', value: 36.84 }, + { time: '2018-12-12', value: 36.98 }, + { time: '2018-12-13', value: 36.76 }, + { time: '2018-12-14', value: 36.34 }, + { time: '2018-12-17', value: 36.21 }, + { time: '2018-12-18', value: 35.65 }, + { time: '2018-12-19', value: 35.19 }, + { time: '2018-12-20', value: 34.62 }, + { time: '2018-12-21', value: 33.75 }, + { time: '2018-12-24', value: 33.07 }, + { time: '2018-12-26', value: 34.14 }, + { time: '2018-12-27', value: 34.47 }, + { time: '2018-12-28', value: 34.35 }, + { time: '2018-12-31', value: 34.05 }, + { time: '2019-01-02', value: 34.37 }, + { time: '2019-01-03', value: 34.64 }, + { time: '2019-01-04', value: 35.81 }, + { time: '2019-01-07', value: 35.43 }, + { time: '2019-01-08', value: 35.72 }, + { time: '2019-01-09', value: 36.06 }, + { time: '2019-01-10', value: 35.82 }, + { time: '2019-01-11', value: 35.63 }, + { time: '2019-01-14', value: 35.77 }, + { time: '2019-01-15', value: 35.83 }, + { time: '2019-01-16', value: 35.9 }, + { time: '2019-01-17', value: 35.91 }, + { time: '2019-01-18', value: 36.21 }, + { time: '2019-01-22', value: 34.97 }, + { time: '2019-01-23', value: 36.89 }, + { time: '2019-01-24', value: 36.24 }, + { time: '2019-01-25', value: 35.78 }, + { time: '2019-01-28', value: 35.37 }, + { time: '2019-01-29', value: 36.08 }, + { time: '2019-01-30', value: 35.43 }, + { time: '2019-01-31', value: 36.57 }, + { time: '2019-02-01', value: 36.79 }, + { time: '2019-02-04', value: 36.77 }, + { time: '2019-02-05', value: 37.15 }, + { time: '2019-02-06', value: 37.17 }, + { time: '2019-02-07', value: 37.68 }, + { time: '2019-02-08', value: 37.6 }, + { time: '2019-02-11', value: 37.0 }, + { time: '2019-02-12', value: 37.24 }, + { time: '2019-02-13', value: 37.03 }, + { time: '2019-02-14', value: 37.26 }, + { time: '2019-02-15', value: 37.77 }, + { time: '2019-02-19', value: 37.55 }, + { time: '2019-02-20', value: 37.79 }, + { time: '2019-02-21', value: 38.47 }, + { time: '2019-02-22', value: 38.61 }, + { time: '2019-02-25', value: 38.57 }, + { time: '2019-02-26', value: 38.8 }, + { time: '2019-02-27', value: 38.53 }, + { time: '2019-02-28', value: 38.67 }, + { time: '2019-03-01', value: 39.1 }, + { time: '2019-03-04', value: 38.73 }, + { time: '2019-03-05', value: 38.72 }, + { time: '2019-03-06', value: 38.61 }, + { time: '2019-03-07', value: 38.38 }, + { time: '2019-03-08', value: 38.19 }, + { time: '2019-03-11', value: 39.17 }, + { time: '2019-03-12', value: 39.49 }, + { time: '2019-03-13', value: 39.56 }, + { time: '2019-03-14', value: 39.87 }, + { time: '2019-03-15', value: 40.47 }, + { time: '2019-03-18', value: 39.92 }, + { time: '2019-03-19', value: 39.78 }, + { time: '2019-03-20', value: 39.47 }, + { time: '2019-03-21', value: 40.05 }, + { time: '2019-03-22', value: 39.46 }, + { time: '2019-03-25', value: 39.18 }, + { time: '2019-03-26', value: 39.63 }, + { time: '2019-03-27', value: 40.21 }, + { time: '2019-03-28', value: 40.42 }, + { time: '2019-03-29', value: 39.98 }, + { time: '2019-04-01', value: 40.31 }, + { time: '2019-04-02', value: 40.02 }, + { time: '2019-04-03', value: 40.27 }, + { time: '2019-04-04', value: 40.41 }, + { time: '2019-04-05', value: 40.42 }, + { time: '2019-04-08', value: 40.71 }, + { time: '2019-04-09', value: 41.04 }, + { time: '2019-04-10', value: 41.08 }, + { time: '2019-04-11', value: 41.04 }, + { time: '2019-04-12', value: 41.3 }, + { time: '2019-04-15', value: 41.78 }, + { time: '2019-04-16', value: 41.97 }, + { time: '2019-04-17', value: 42.57 }, + { time: '2019-04-18', value: 42.43 }, + { time: '2019-04-22', value: 42.0 }, + { time: '2019-04-23', value: 41.99 }, + { time: '2019-04-24', value: 41.85 }, + { time: '2019-04-25', value: 42.93 }, + { time: '2019-04-26', value: 43.08 }, + { time: '2019-04-29', value: 43.45 }, + { time: '2019-04-30', value: 43.53 }, + { time: '2019-05-01', value: 43.42 }, + { time: '2019-05-02', value: 42.65 }, + { time: '2019-05-03', value: 43.29 }, + { time: '2019-05-06', value: 43.3 }, + { time: '2019-05-07', value: 42.76 }, + { time: '2019-05-08', value: 42.55 }, + { time: '2019-05-09', value: 42.92 }, + { time: '2019-05-10', value: 43.15 }, + { time: '2019-05-13', value: 42.28 }, + { time: '2019-05-14', value: 42.91 }, + { time: '2019-05-15', value: 42.49 }, + { time: '2019-05-16', value: 43.19 }, + { time: '2019-05-17', value: 43.54 }, + { time: '2019-05-20', value: 42.78 }, + { time: '2019-05-21', value: 43.29 }, + { time: '2019-05-22', value: 43.3 }, + { time: '2019-05-23', value: 42.73 }, + { time: '2019-05-24', value: 42.67 }, + { time: '2019-05-28', value: 42.75 }, +] diff --git a/src/components/LineChart/index.tsx b/src/components/LineChart/index.tsx new file mode 100644 index 00000000..c07d4bd5 --- /dev/null +++ b/src/components/LineChart/index.tsx @@ -0,0 +1,169 @@ +import React, { useRef, useState, useEffect, useCallback, Dispatch, SetStateAction, ReactNode } from 'react' +import { createChart, IChartApi } from 'lightweight-charts' +import { darken } from 'polished' +import { RowBetween } from 'components/Row' +import Card from '../Card' +import styled from 'styled-components' +import useTheme from 'hooks/useTheme' + +const Wrapper = styled(Card)` + width: 100%; + padding: 1rem; + display: flex; + background-color: ${({ theme }) => theme.bg0} + flex-direction: column; + > * { + font-size: 1rem; + } +` + +const DEFAULT_HEIGHT = 300 + +export type LineChartProps = { + data: any[] + color?: string | undefined + height?: number | undefined + setValue?: Dispatch> // used for value on hover + topLeft?: ReactNode | undefined + topRight?: ReactNode | undefined + bottomLeft?: ReactNode | undefined + bottomRight?: ReactNode | undefined +} & React.HTMLAttributes + +const LineChart = ({ + data, + color = '#56B2A4', + setValue, + topLeft, + topRight, + bottomLeft, + bottomRight, + height = DEFAULT_HEIGHT, + ...rest +}: LineChartProps) => { + const theme = useTheme() + + const chartRef = useRef(null) + const [chartCreated, setChart] = useState() + + // for reseting value on hover exit + const currenValue = data[data.length - 1].value + + const handleResize = useCallback(() => { + if (chartCreated && chartRef?.current?.parentElement) { + chartCreated.resize(chartRef.current.parentElement.clientWidth - 32, height) + chartCreated.timeScale().fitContent() + chartCreated.timeScale().scrollToPosition(0, false) + } + }, [chartCreated, chartRef, height]) + + // add event listener for resize + const isClient = typeof window === 'object' + useEffect(() => { + if (!isClient) { + return + } + window.addEventListener('resize', handleResize) + return () => window.removeEventListener('resize', handleResize) + }, [isClient, chartRef, handleResize]) // Empty array ensures that effect is only run on mount and unmount + + const textColor = theme.text2 + + // if chart not instantiated in canvas, create it + useEffect(() => { + if (!chartCreated && data && !!chartRef?.current?.parentElement) { + const chart = createChart(chartRef.current, { + height: height, + width: chartRef.current.parentElement.clientWidth - 32, + layout: { + backgroundColor: 'transparent', + textColor: textColor, + fontFamily: 'Inter', + }, + rightPriceScale: { + scaleMargins: { + top: 0.1, + bottom: 0.1, + }, + borderVisible: false, + }, + timeScale: { + borderVisible: false, + }, + watermark: { + color: 'rgba(0, 0, 0, 0)', + }, + grid: { + horzLines: { + visible: false, + }, + vertLines: { + visible: false, + }, + }, + crosshair: { + horzLine: { + visible: true, + style: 3, + width: 1, + color: '#505050', + labelBackgroundColor: color, + }, + vertLine: { + visible: true, + style: 3, + width: 1, + color: '#505050', + labelBackgroundColor: color, + }, + }, + }) + + const series = chart.addAreaSeries({ + lineColor: color, + topColor: darken(0.4, color), + bottomColor: theme.bg0, + lineWidth: 2, + priceLineVisible: false, + }) + + series.setData(data) + + // update the title when hovering on the chart + chart.subscribeCrosshairMove(function (param) { + if ( + chartRef?.current && + (param === undefined || + param.time === undefined || + (param && param.point && param.point.x < 0) || + (param && param.point && param.point.x > chartRef.current.clientWidth) || + (param && param.point && param.point.y < 0) || + (param && param.point && param.point.y > height)) + ) { + setValue && setValue(currenValue) + } else { + const price = parseFloat(param.seriesPrices.get(series)?.toString() ?? currenValue) + setValue && setValue(price) + } + }) + chart.timeScale().fitContent() + setChart(chart) + } + }, [color, chartCreated, currenValue, data, height, setValue, textColor, theme]) + + return ( + + + {topLeft ?? null} + {topRight ?? null} + +
+ + {bottomLeft ?? null} + {bottomRight ?? null} + + + ) +} + +export default LineChart diff --git a/src/components/ListLogo/index.tsx b/src/components/ListLogo/index.tsx new file mode 100644 index 00000000..b51287d0 --- /dev/null +++ b/src/components/ListLogo/index.tsx @@ -0,0 +1,26 @@ +import React from 'react' +import styled from 'styled-components' +import useHttpLocations from '../../hooks/useHttpLocations' + +import Logo from '../Logo' + +const StyledListLogo = styled(Logo)<{ size: string }>` + width: ${({ size }) => size}; + height: ${({ size }) => size}; +` + +export default function ListLogo({ + logoURI, + style, + size = '24px', + alt, +}: { + logoURI: string + size?: string + style?: React.CSSProperties + alt?: string +}) { + const srcs: string[] = useHttpLocations(logoURI) + + return +} diff --git a/src/components/Loader/index.tsx b/src/components/Loader/index.tsx new file mode 100644 index 00000000..1bd255a2 --- /dev/null +++ b/src/components/Loader/index.tsx @@ -0,0 +1,46 @@ +import React from 'react' + +import styled, { keyframes } from 'styled-components' + +const rotate = keyframes` + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +` + +const StyledSVG = styled.svg<{ size: string; stroke?: string }>` + animation: 2s ${rotate} linear infinite; + height: ${({ size }) => size}; + width: ${({ size }) => size}; + path { + stroke: ${({ stroke, theme }) => stroke ?? theme.primary1}; + } +` + +/** + * Takes in custom size and stroke for circle color, default to primary color as fill, + * need ...rest for layered styles on top + */ +export default function Loader({ + size = '16px', + stroke, + ...rest +}: { + size?: string + stroke?: string + [k: string]: any +}) { + return ( + + + + ) +} diff --git a/src/components/Logo/index.tsx b/src/components/Logo/index.tsx new file mode 100644 index 00000000..4de1df3e --- /dev/null +++ b/src/components/Logo/index.tsx @@ -0,0 +1,34 @@ +import React, { useState } from 'react' +import { HelpCircle } from 'react-feather' +import { ImageProps } from 'rebass' + +const BAD_SRCS: { [tokenAddress: string]: true } = {} + +export interface LogoProps extends Pick { + srcs: string[] +} + +/** + * Renders an image by sequentially trying a list of URIs, and then eventually a fallback triangle alert + */ +export default function Logo({ srcs, alt, ...rest }: LogoProps) { + const [, refresh] = useState(0) + + const src: string | undefined = srcs.find((src) => !BAD_SRCS[src]) + + if (src) { + return ( + {alt} { + if (src) BAD_SRCS[src] = true + refresh((i) => i + 1) + }} + /> + ) + } + + return +} diff --git a/src/components/Menu/index.tsx b/src/components/Menu/index.tsx new file mode 100644 index 00000000..22e16a29 --- /dev/null +++ b/src/components/Menu/index.tsx @@ -0,0 +1,137 @@ +import React, { useRef } from 'react' +import { BookOpen, Code, Info, MessageCircle, PieChart } from 'react-feather' +import styled from 'styled-components' +import { ReactComponent as MenuIcon } from '../../assets/images/menu.svg' +import { useActiveWeb3React } from '../../hooks' +import { useOnClickOutside } from '../../hooks/useOnClickOutside' +import { ApplicationModal } from '../../state/application/actions' +import { useModalOpen, useToggleModal } from '../../state/application/hooks' + +import { ExternalLink } from '../../theme' +import { ButtonPrimary } from '../Button' + +const StyledMenuIcon = styled(MenuIcon)` + path { + stroke: ${({ theme }) => theme.text1}; + } +` + +const StyledMenuButton = styled.button` + width: 100%; + height: 100%; + border: none; + background-color: transparent; + margin: 0; + padding: 0; + height: 35px; + background-color: ${({ theme }) => theme.bg3}; + + padding: 0.15rem 0.5rem; + border-radius: 0.5rem; + + :hover, + :focus { + cursor: pointer; + outline: none; + background-color: ${({ theme }) => theme.bg4}; + } + + svg { + margin-top: 2px; + } +` + +const StyledMenu = styled.div` + margin-left: 0.5rem; + display: flex; + justify-content: center; + align-items: center; + position: relative; + border: none; + text-align: left; +` + +const MenuFlyout = styled.span` + min-width: 8.125rem; + background-color: ${({ theme }) => theme.bg3}; + box-shadow: 0px 0px 1px rgba(0, 0, 0, 0.01), 0px 4px 8px rgba(0, 0, 0, 0.04), 0px 16px 24px rgba(0, 0, 0, 0.04), + 0px 24px 32px rgba(0, 0, 0, 0.01); + border-radius: 12px; + padding: 0.5rem; + display: flex; + flex-direction: column; + font-size: 1rem; + position: absolute; + top: 4rem; + right: 0rem; + z-index: 100; + + ${({ theme }) => theme.mediaWidth.upToMedium` + top: -17.25rem; + `}; +` + +const MenuItem = styled(ExternalLink)` + flex: 1; + padding: 0.5rem 0.5rem; + color: ${({ theme }) => theme.text2}; + :hover { + color: ${({ theme }) => theme.text1}; + cursor: pointer; + text-decoration: none; + } + > svg { + margin-right: 8px; + } +` + +const CODE_LINK = 'https://github.com/Uniswap/uniswap-interface' + +export default function Menu() { + const { account } = useActiveWeb3React() + + const node = useRef() + const open = useModalOpen(ApplicationModal.MENU) + const toggle = useToggleModal(ApplicationModal.MENU) + useOnClickOutside(node, open ? toggle : undefined) + const openClaimModal = useToggleModal(ApplicationModal.ADDRESS_CLAIM) + + return ( + // https://github.com/DefinitelyTyped/DefinitelyTyped/issues/30451 + + + + + + {open && ( + + + + About + + + + Docs + + + + Code + + + + Discord + + + + Analytics + + {account && ( + + Claim UNI + + )} + + )} + + ) +} diff --git a/src/components/Modal/index.tsx b/src/components/Modal/index.tsx new file mode 100644 index 00000000..c1c027ed --- /dev/null +++ b/src/components/Modal/index.tsx @@ -0,0 +1,142 @@ +import React from 'react' +import styled, { css } from 'styled-components' +import { animated, useTransition, useSpring } from 'react-spring' +import { DialogOverlay, DialogContent } from '@reach/dialog' +import { isMobile } from 'react-device-detect' +import '@reach/dialog/styles.css' +import { transparentize } from 'polished' +import { useGesture } from 'react-use-gesture' + +const AnimatedDialogOverlay = animated(DialogOverlay) +// eslint-disable-next-line @typescript-eslint/no-unused-vars +const StyledDialogOverlay = styled(AnimatedDialogOverlay)` + &[data-reach-dialog-overlay] { + z-index: 2; + background-color: transparent; + overflow: hidden; + + display: flex; + align-items: center; + justify-content: center; + + background-color: ${({ theme }) => theme.modalBG}; + } +` + +const AnimatedDialogContent = animated(DialogContent) +// destructure to not pass custom props to Dialog DOM element +// eslint-disable-next-line @typescript-eslint/no-unused-vars +const StyledDialogContent = styled(({ minHeight, maxHeight, mobile, isOpen, ...rest }) => ( + +)).attrs({ + 'aria-label': 'dialog', +})` + overflow-y: ${({ mobile }) => (mobile ? 'scroll' : 'hidden')}; + + &[data-reach-dialog-content] { + margin: 0 0 2rem 0; + background-color: ${({ theme }) => theme.bg1}; + box-shadow: 0 4px 8px 0 ${({ theme }) => transparentize(0.95, theme.shadow1)}; + padding: 0px; + width: 50vw; + overflow-y: ${({ mobile }) => (mobile ? 'scroll' : 'hidden')}; + overflow-x: hidden; + + align-self: ${({ mobile }) => (mobile ? 'flex-end' : 'center')}; + + max-width: 420px; + ${({ maxHeight }) => + maxHeight && + css` + max-height: ${maxHeight}vh; + `} + ${({ minHeight }) => + minHeight && + css` + min-height: ${minHeight}vh; + `} + display: flex; + border-radius: 20px; + ${({ theme }) => theme.mediaWidth.upToMedium` + width: 65vw; + margin: 0; + `} + ${({ theme, mobile }) => theme.mediaWidth.upToSmall` + width: 85vw; + ${ + mobile && + css` + width: 100vw; + border-radius: 20px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + ` + } + `} + } +` + +interface ModalProps { + isOpen: boolean + onDismiss: () => void + minHeight?: number | false + maxHeight?: number + initialFocusRef?: React.RefObject + children?: React.ReactNode +} + +export default function Modal({ + isOpen, + onDismiss, + minHeight = false, + maxHeight = 90, + initialFocusRef, + children, +}: ModalProps) { + const fadeTransition = useTransition(isOpen, null, { + config: { duration: 200 }, + from: { opacity: 0 }, + enter: { opacity: 1 }, + leave: { opacity: 0 }, + }) + + const [{ y }, set] = useSpring(() => ({ y: 0, config: { mass: 1, tension: 210, friction: 20 } })) + const bind = useGesture({ + onDrag: (state) => { + set({ + y: state.down ? state.movement[1] : 0, + }) + if (state.movement[1] > 300 || (state.velocity > 3 && state.direction[1] > 0)) { + onDismiss() + } + }, + }) + + return ( + <> + {fadeTransition.map( + ({ item, key, props }) => + item && ( + + `translateY(${y > 0 ? y : 0}px)`) }, + } + : {})} + aria-label="dialog content" + minHeight={minHeight} + maxHeight={maxHeight} + mobile={isMobile} + > + {/* prevents the automatic focusing of inputs on mobile by the reach dialog */} + {!initialFocusRef && isMobile ?
: null} + {children} + + + ) + )} + + ) +} diff --git a/src/components/ModalViews/index.tsx b/src/components/ModalViews/index.tsx new file mode 100644 index 00000000..a1b384c6 --- /dev/null +++ b/src/components/ModalViews/index.tsx @@ -0,0 +1,72 @@ +import React, { useContext } from 'react' +import { useActiveWeb3React } from '../../hooks' + +import { AutoColumn, ColumnCenter } from '../Column' +import styled, { ThemeContext } from 'styled-components' +import { RowBetween } from '../Row' +import { TYPE, CloseIcon, CustomLightSpinner } from '../../theme' +import { ArrowUpCircle } from 'react-feather' + +import Circle from '../../assets/images/blue-loader.svg' +import { getEtherscanLink } from '../../utils' +import { ExternalLink } from '../../theme/components' + +const ConfirmOrLoadingWrapper = styled.div` + width: 100%; + padding: 24px; +` + +const ConfirmedIcon = styled(ColumnCenter)` + padding: 60px 0; +` + +export function LoadingView({ children, onDismiss }: { children: any; onDismiss: () => void }) { + return ( + + +
+ + + + + + + {children} + Confirm this transaction in your wallet + + + ) +} + +export function SubmittedView({ + children, + onDismiss, + hash, +}: { + children: any + onDismiss: () => void + hash: string | undefined +}) { + const theme = useContext(ThemeContext) + const { chainId } = useActiveWeb3React() + + return ( + + +
+ + + + + + + {children} + {chainId && hash && ( + + View transaction on Etherscan + + )} + + + ) +} diff --git a/src/components/NavigationTabs/index.tsx b/src/components/NavigationTabs/index.tsx new file mode 100644 index 00000000..0eadd62d --- /dev/null +++ b/src/components/NavigationTabs/index.tsx @@ -0,0 +1,107 @@ +import React from 'react' +import styled from 'styled-components' +import { darken } from 'polished' +import { useTranslation } from 'react-i18next' +import { NavLink, Link as HistoryLink } from 'react-router-dom' + +import { ArrowLeft } from 'react-feather' +import { RowBetween } from '../Row' +// import QuestionHelper from '../QuestionHelper' +import Settings from '../Settings' +import { useDispatch } from 'react-redux' +import { AppDispatch } from 'state' +import { resetMintState } from 'state/mint/actions' + +const Tabs = styled.div` + ${({ theme }) => theme.flexRowNoWrap} + align-items: center; + border-radius: 3rem; + justify-content: space-evenly; +` + +const activeClassName = 'ACTIVE' + +const StyledNavLink = styled(NavLink).attrs({ + activeClassName, +})` + ${({ theme }) => theme.flexRowNoWrap} + align-items: center; + justify-content: center; + height: 3rem; + border-radius: 3rem; + outline: none; + cursor: pointer; + text-decoration: none; + color: ${({ theme }) => theme.text3}; + font-size: 20px; + + &.${activeClassName} { + border-radius: 12px; + font-weight: 500; + color: ${({ theme }) => theme.text1}; + } + + :hover, + :focus { + color: ${({ theme }) => darken(0.1, theme.text1)}; + } +` + +const ActiveText = styled.div` + font-weight: 500; + font-size: 20px; +` + +const StyledArrowLeft = styled(ArrowLeft)` + color: ${({ theme }) => theme.text1}; +` + +export function SwapPoolTabs({ active }: { active: 'swap' | 'pool' }) { + const { t } = useTranslation() + return ( + + active === 'swap'}> + {t('swap')} + + active === 'pool'}> + {t('pool')} + + + ) +} + +export function FindPoolTabs() { + return ( + + + + + + Import Pool + + + + ) +} + +export function AddRemoveTabs({ adding, creating }: { adding: boolean; creating: boolean }) { + // reset states on back + const dispatch = useDispatch() + + return ( + + + { + adding && dispatch(resetMintState()) + }} + > + + + {creating ? 'Create a pair' : adding ? 'Add Liquidity' : 'Remove Liquidity'} + + + + ) +} diff --git a/src/components/NumericalInput/index.tsx b/src/components/NumericalInput/index.tsx new file mode 100644 index 00000000..cd464ed2 --- /dev/null +++ b/src/components/NumericalInput/index.tsx @@ -0,0 +1,99 @@ +import React from 'react' +import styled from 'styled-components' +import { escapeRegExp } from '../../utils' + +const StyledInput = styled.input<{ error?: boolean; fontSize?: string; align?: string }>` + color: ${({ error, theme }) => (error ? theme.red1 : theme.text1)}; + width: 0; + position: relative; + font-weight: 500; + outline: none; + border: none; + flex: 1 1 auto; + background-color: ${({ theme }) => theme.bg1}; + font-size: ${({ fontSize }) => fontSize ?? '24px'}; + text-align: ${({ align }) => align && align}; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + padding: 0px; + -webkit-appearance: textfield; + + ::-webkit-search-decoration { + -webkit-appearance: none; + } + + [type='number'] { + -moz-appearance: textfield; + } + + ::-webkit-outer-spin-button, + ::-webkit-inner-spin-button { + -webkit-appearance: none; + } + + ::placeholder { + color: ${({ theme }) => theme.text4}; + } +` + +const inputRegex = RegExp(`^\\d*(?:\\\\[.])?\\d*$`) // match escaped "." characters via in a non-capturing group + +export const Input = React.memo(function InnerInput({ + value, + onUserInput, + placeholder, + prependSymbol, + ...rest +}: { + value: string | number + onUserInput: (input: string) => void + error?: boolean + fontSize?: string + align?: 'right' | 'left' + prependSymbol?: string | undefined +} & Omit, 'ref' | 'onChange' | 'as'>) { + const enforcer = (nextUserInput: string) => { + if (nextUserInput === '' || inputRegex.test(escapeRegExp(nextUserInput))) { + onUserInput(nextUserInput) + } + } + + return ( + { + if (prependSymbol) { + const value = event.target.value + + // cut off prepended symbol + const formattedValue = value.toString().includes(prependSymbol) + ? value.toString().slice(1, value.toString().length + 1) + : value + + // replace commas with periods, because uniswap exclusively uses period as the decimal separator + enforcer(formattedValue.replace(/,/g, '.')) + } else { + enforcer(event.target.value.replace(/,/g, '.')) + } + }} + // universal input options + inputMode="decimal" + title="Token Amount" + autoComplete="off" + autoCorrect="off" + // text-specific options + type="text" + pattern="^[0-9]*[.,]?[0-9]*$" + placeholder={placeholder || '0.0'} + minLength={1} + maxLength={79} + spellCheck="false" + /> + ) +}) + +export default Input + +// const inputRegex = RegExp(`^\\d*(?:\\\\[.])?\\d*$`) // match escaped "." characters via in a non-capturing group diff --git a/src/components/Popover/index.tsx b/src/components/Popover/index.tsx new file mode 100644 index 00000000..933b1d87 --- /dev/null +++ b/src/components/Popover/index.tsx @@ -0,0 +1,118 @@ +import { Placement } from '@popperjs/core' +import { transparentize } from 'polished' +import React, { useCallback, useState } from 'react' +import { usePopper } from 'react-popper' +import styled from 'styled-components' +import useInterval from '../../hooks/useInterval' +import Portal from '@reach/portal' + +const PopoverContainer = styled.div<{ show: boolean }>` + z-index: 9999; + + visibility: ${(props) => (props.show ? 'visible' : 'hidden')}; + opacity: ${(props) => (props.show ? 1 : 0)}; + transition: visibility 150ms linear, opacity 150ms linear; + + background: ${({ theme }) => theme.bg2}; + border: 1px solid ${({ theme }) => theme.bg3}; + box-shadow: 0 4px 8px 0 ${({ theme }) => transparentize(0.9, theme.shadow1)}; + color: ${({ theme }) => theme.text2}; + border-radius: 8px; +` + +const ReferenceElement = styled.div` + display: inline-block; +` + +const Arrow = styled.div` + width: 8px; + height: 8px; + z-index: 9998; + + ::before { + position: absolute; + width: 8px; + height: 8px; + z-index: 9998; + + content: ''; + border: 1px solid ${({ theme }) => theme.bg3}; + transform: rotate(45deg); + background: ${({ theme }) => theme.bg2}; + } + + &.arrow-top { + bottom: -5px; + ::before { + border-top: none; + border-left: none; + } + } + + &.arrow-bottom { + top: -5px; + ::before { + border-bottom: none; + border-right: none; + } + } + + &.arrow-left { + right: -5px; + + ::before { + border-bottom: none; + border-left: none; + } + } + + &.arrow-right { + left: -5px; + ::before { + border-right: none; + border-top: none; + } + } +` + +export interface PopoverProps { + content: React.ReactNode + show: boolean + children: React.ReactNode + placement?: Placement +} + +export default function Popover({ content, show, children, placement = 'auto' }: PopoverProps) { + const [referenceElement, setReferenceElement] = useState(null) + const [popperElement, setPopperElement] = useState(null) + const [arrowElement, setArrowElement] = useState(null) + const { styles, update, attributes } = usePopper(referenceElement, popperElement, { + placement, + strategy: 'fixed', + modifiers: [ + { name: 'offset', options: { offset: [8, 8] } }, + { name: 'arrow', options: { element: arrowElement } }, + ], + }) + const updateCallback = useCallback(() => { + update && update() + }, [update]) + useInterval(updateCallback, show ? 100 : null) + + return ( + <> + {children} + + + {content} + + + + + ) +} diff --git a/src/components/Popups/ClaimPopup.tsx b/src/components/Popups/ClaimPopup.tsx new file mode 100644 index 00000000..7998707d --- /dev/null +++ b/src/components/Popups/ClaimPopup.tsx @@ -0,0 +1,113 @@ +import { TokenAmount } from '@uniswap/sdk' +import React, { useEffect } from 'react' +import { X } from 'react-feather' +import styled, { keyframes } from 'styled-components' +import tokenLogo from '../../assets/images/token-logo.png' +import { ButtonPrimary } from '../../components/Button' +import { useActiveWeb3React } from '../../hooks' +import { ApplicationModal } from '../../state/application/actions' +import { + useModalOpen, + useShowClaimPopup, + useToggleSelfClaimModal, + useToggleShowClaimPopup, +} from '../../state/application/hooks' + +import { useUserHasAvailableClaim, useUserUnclaimedAmount } from '../../state/claim/hooks' +import { TYPE } from '../../theme' +import { AutoColumn } from '../Column' +import { CardBGImage, CardNoise } from '../earn/styled' + +const StyledClaimPopup = styled(AutoColumn)` + background: radial-gradient(76.02% 75.41% at 1.84% 0%, #ff007a 0%, #021d43 100%); + border-radius: 20px; + padding: 1.5rem; + overflow: hidden; + position: relative; + max-width: 360px; + box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.1); +` + +const StyledClose = styled(X)` + position: absolute; + right: 10px; + top: 10px; + + :hover { + cursor: pointer; + } +` + +const rotate = keyframes` + 0% { + transform: perspective(1000px) rotateY(0deg); + } + + 100% { + transform: perspective(1000px) rotateY(360deg); + } +` + +const UniToken = styled.img` + animation: ${rotate} 5s cubic-bezier(0.83, 0, 0.17, 1) infinite; +` + +export default function ClaimPopup() { + const { account } = useActiveWeb3React() + + // dont store these in persisted state yet + const showClaimPopup: boolean = useShowClaimPopup() + const toggleShowClaimPopup = useToggleShowClaimPopup() + + // toggle for showing this modal + const showClaimModal = useModalOpen(ApplicationModal.SELF_CLAIM) + const toggleSelfClaimModal = useToggleSelfClaimModal() + + // const userHasAvailableclaim = useUserHasAvailableClaim() + const userHasAvailableclaim: boolean = useUserHasAvailableClaim(account) + const unclaimedAmount: TokenAmount | undefined = useUserUnclaimedAmount(account) + + // listen for available claim and show popup if needed + useEffect(() => { + if (userHasAvailableclaim) { + toggleShowClaimPopup() + } + // the toggleShowClaimPopup function changes every time the popup changes, so this will cause an infinite loop. + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [userHasAvailableclaim]) + + return ( + <> + {showClaimPopup && !showClaimModal && ( + + + + + + {' '} + + {unclaimedAmount?.toFixed(0, { groupSeparator: ',' } ?? '-')} UNI + + + + 🎉 + {' '} + UNI has arrived{' '} + + 🎉 + + + + {`Thanks for being part of the Uniswap community <3`} + + + + + Claim your UNI tokens + + + + )} + + ) +} diff --git a/src/components/Popups/ListUpdatePopup.tsx b/src/components/Popups/ListUpdatePopup.tsx new file mode 100644 index 00000000..a25dd339 --- /dev/null +++ b/src/components/Popups/ListUpdatePopup.tsx @@ -0,0 +1,112 @@ +import { diffTokenLists, TokenList } from '@uniswap/token-lists' +import React, { useCallback, useMemo } from 'react' +import ReactGA from 'react-ga' +import { useDispatch } from 'react-redux' +import { Text } from 'rebass' +import styled from 'styled-components' +import { AppDispatch } from '../../state' +import { useRemovePopup } from '../../state/application/hooks' +import { acceptListUpdate } from '../../state/lists/actions' +import { TYPE } from '../../theme' +import listVersionLabel from '../../utils/listVersionLabel' +import { ButtonSecondary } from '../Button' +import { AutoColumn } from '../Column' +import { AutoRow } from '../Row' + +export const ChangesList = styled.ul` + max-height: 400px; + overflow: auto; +` + +export default function ListUpdatePopup({ + popKey, + listUrl, + oldList, + newList, + auto, +}: { + popKey: string + listUrl: string + oldList: TokenList + newList: TokenList + auto: boolean +}) { + const removePopup = useRemovePopup() + const removeThisPopup = useCallback(() => removePopup(popKey), [popKey, removePopup]) + const dispatch = useDispatch() + + const handleAcceptUpdate = useCallback(() => { + if (auto) return + ReactGA.event({ + category: 'Lists', + action: 'Update List from Popup', + label: listUrl, + }) + dispatch(acceptListUpdate(listUrl)) + removeThisPopup() + }, [auto, dispatch, listUrl, removeThisPopup]) + + const { added: tokensAdded, changed: tokensChanged, removed: tokensRemoved } = useMemo(() => { + return diffTokenLists(oldList.tokens, newList.tokens) + }, [newList.tokens, oldList.tokens]) + const numTokensChanged = useMemo( + () => + Object.keys(tokensChanged).reduce((memo, chainId: any) => memo + Object.keys(tokensChanged[chainId]).length, 0), + [tokensChanged] + ) + + return ( + + + {auto ? ( + + The token list "{oldList.name}" has been updated to{' '} + {listVersionLabel(newList.version)}. + + ) : ( + <> +
+ + An update is available for the token list "{oldList.name}" ( + {listVersionLabel(oldList.version)} to {listVersionLabel(newList.version)}). + + + {tokensAdded.length > 0 ? ( +
  • + {tokensAdded.map((token, i) => ( + + {token.symbol} + {i === tokensAdded.length - 1 ? null : ', '} + + ))}{' '} + added +
  • + ) : null} + {tokensRemoved.length > 0 ? ( +
  • + {tokensRemoved.map((token, i) => ( + + {token.symbol} + {i === tokensRemoved.length - 1 ? null : ', '} + + ))}{' '} + removed +
  • + ) : null} + {numTokensChanged > 0 ?
  • {numTokensChanged} tokens updated
  • : null} +
    +
    + +
    + Accept update +
    +
    + Dismiss +
    +
    + + )} +
    +
    + ) +} diff --git a/src/components/Popups/PopupItem.tsx b/src/components/Popups/PopupItem.tsx new file mode 100644 index 00000000..26e8b3e3 --- /dev/null +++ b/src/components/Popups/PopupItem.tsx @@ -0,0 +1,100 @@ +import React, { useCallback, useContext, useEffect } from 'react' +import { X } from 'react-feather' +import { useSpring } from 'react-spring/web' +import styled, { ThemeContext } from 'styled-components' +import { animated } from 'react-spring' +import { PopupContent } from '../../state/application/actions' +import { useRemovePopup } from '../../state/application/hooks' +import ListUpdatePopup from './ListUpdatePopup' +import TransactionPopup from './TransactionPopup' + +export const StyledClose = styled(X)` + position: absolute; + right: 10px; + top: 10px; + + :hover { + cursor: pointer; + } +` +export const Popup = styled.div` + display: inline-block; + width: 100%; + padding: 1em; + background-color: ${({ theme }) => theme.bg1}; + position: relative; + border-radius: 10px; + padding: 20px; + padding-right: 35px; + overflow: hidden; + + ${({ theme }) => theme.mediaWidth.upToSmall` + min-width: 290px; + &:not(:last-of-type) { + margin-right: 20px; + } + `} +` +const Fader = styled.div` + position: absolute; + bottom: 0px; + left: 0px; + width: 100%; + height: 2px; + background-color: ${({ theme }) => theme.bg3}; +` + +const AnimatedFader = animated(Fader) + +export default function PopupItem({ + removeAfterMs, + content, + popKey, +}: { + removeAfterMs: number | null + content: PopupContent + popKey: string +}) { + const removePopup = useRemovePopup() + const removeThisPopup = useCallback(() => removePopup(popKey), [popKey, removePopup]) + useEffect(() => { + if (removeAfterMs === null) return undefined + + const timeout = setTimeout(() => { + removeThisPopup() + }, removeAfterMs) + + return () => { + clearTimeout(timeout) + } + }, [removeAfterMs, removeThisPopup]) + + const theme = useContext(ThemeContext) + + let popupContent + if ('txn' in content) { + const { + txn: { hash, success, summary }, + } = content + popupContent = + } else if ('listUpdate' in content) { + const { + listUpdate: { listUrl, oldList, newList, auto }, + } = content + popupContent = + } + + const faderStyle = useSpring({ + from: { width: '100%' }, + to: { width: '0%' }, + config: { duration: removeAfterMs ?? undefined }, + }) + + return ( + + + {popupContent} + {removeAfterMs !== null ? : null} + + ) +} diff --git a/src/components/Popups/TransactionPopup.tsx b/src/components/Popups/TransactionPopup.tsx new file mode 100644 index 00000000..d19d148c --- /dev/null +++ b/src/components/Popups/TransactionPopup.tsx @@ -0,0 +1,41 @@ +import React, { useContext } from 'react' +import { AlertCircle, CheckCircle } from 'react-feather' +import styled, { ThemeContext } from 'styled-components' +import { useActiveWeb3React } from '../../hooks' +import { TYPE } from '../../theme' +import { ExternalLink } from '../../theme/components' +import { getEtherscanLink } from '../../utils' +import { AutoColumn } from '../Column' +import { AutoRow } from '../Row' + +const RowNoFlex = styled(AutoRow)` + flex-wrap: nowrap; +` + +export default function TransactionPopup({ + hash, + success, + summary, +}: { + hash: string + success?: boolean + summary?: string +}) { + const { chainId } = useActiveWeb3React() + + const theme = useContext(ThemeContext) + + return ( + +
    + {success ? : } +
    + + {summary ?? 'Hash: ' + hash.slice(0, 8) + '...' + hash.slice(58, 65)} + {chainId && ( + View on Etherscan + )} + +
    + ) +} diff --git a/src/components/Popups/index.tsx b/src/components/Popups/index.tsx new file mode 100644 index 00000000..935fdc28 --- /dev/null +++ b/src/components/Popups/index.tsx @@ -0,0 +1,73 @@ +import React from 'react' +import styled from 'styled-components' +import { useActivePopups } from '../../state/application/hooks' +import { AutoColumn } from '../Column' +import PopupItem from './PopupItem' +import ClaimPopup from './ClaimPopup' +import { useURLWarningVisible } from '../../state/user/hooks' + +const MobilePopupWrapper = styled.div<{ height: string | number }>` + position: relative; + max-width: 100%; + height: ${({ height }) => height}; + margin: ${({ height }) => (height ? '0 auto;' : 0)}; + margin-bottom: ${({ height }) => (height ? '20px' : 0)}}; + + display: none; + ${({ theme }) => theme.mediaWidth.upToSmall` + display: block; + `}; +` + +const MobilePopupInner = styled.div` + height: 99%; + overflow-x: auto; + overflow-y: hidden; + display: flex; + flex-direction: row; + -webkit-overflow-scrolling: touch; + ::-webkit-scrollbar { + display: none; + } +` + +const FixedPopupColumn = styled(AutoColumn)<{ extraPadding: boolean }>` + position: fixed; + top: ${({ extraPadding }) => (extraPadding ? '108px' : '88px')}; + right: 1rem; + max-width: 355px !important; + width: 100%; + z-index: 3; + + ${({ theme }) => theme.mediaWidth.upToSmall` + display: none; + `}; +` + +export default function Popups() { + // get all popups + const activePopups = useActivePopups() + + const urlWarningActive = useURLWarningVisible() + + return ( + <> + + + {activePopups.map((item) => ( + + ))} + + 0 ? 'fit-content' : 0}> + + {activePopups // reverse so new items up front + .slice(0) + .reverse() + .map((item) => ( + + ))} + + + + ) +} diff --git a/src/components/PositionCard/V1.tsx b/src/components/PositionCard/V1.tsx new file mode 100644 index 00000000..6e276f51 --- /dev/null +++ b/src/components/PositionCard/V1.tsx @@ -0,0 +1,68 @@ +import { Token, TokenAmount, WETH } from '@uniswap/sdk' +import React, { useContext } from 'react' +import { Link, RouteComponentProps, withRouter } from 'react-router-dom' +import { Text } from 'rebass' +import { ThemeContext } from 'styled-components' +import { useActiveWeb3React } from '../../hooks' +import { ButtonSecondary } from '../Button' +import { AutoColumn } from '../Column' +import DoubleCurrencyLogo from '../DoubleLogo' +import { RowBetween, RowFixed } from '../Row' +import { FixedHeightRow, HoverCard } from './index' + +interface PositionCardProps extends RouteComponentProps> { + token: Token + V1LiquidityBalance: TokenAmount +} + +function V1PositionCard({ token, V1LiquidityBalance }: PositionCardProps) { + const theme = useContext(ThemeContext) + + const { chainId } = useActiveWeb3React() + + return ( + + + + + + + {`${chainId && token.equals(WETH[chainId]) ? 'WETH' : token.symbol}/ETH`} + + + V1 + + + + + + + + Migrate + + + + Remove + + + + + + ) +} + +export default withRouter(V1PositionCard) diff --git a/src/components/PositionCard/index.tsx b/src/components/PositionCard/index.tsx new file mode 100644 index 00000000..5166dc2b --- /dev/null +++ b/src/components/PositionCard/index.tsx @@ -0,0 +1,341 @@ +import { JSBI, Pair, Percent, TokenAmount } from '@uniswap/sdk' +import { darken } from 'polished' +import React, { useState } from 'react' +import { ChevronDown, ChevronUp } from 'react-feather' +import { Link } from 'react-router-dom' +import { Text } from 'rebass' +import styled from 'styled-components' +import { useTotalSupply } from '../../data/TotalSupply' + +import { useActiveWeb3React } from '../../hooks' +import { useTokenBalance } from '../../state/wallet/hooks' +import { ExternalLink, TYPE } from '../../theme' +import { currencyId } from '../../utils/currencyId' +import { unwrappedToken } from '../../utils/wrappedCurrency' +import { ButtonPrimary, ButtonSecondary, ButtonEmpty } from '../Button' +import { transparentize } from 'polished' +import { CardNoise } from '../earn/styled' + +import { useColor } from '../../hooks/useColor' + +import Card, { GreyCard, LightCard } from '../Card' +import { AutoColumn } from '../Column' +import CurrencyLogo from '../CurrencyLogo' +import DoubleCurrencyLogo from '../DoubleLogo' +import { RowBetween, RowFixed, AutoRow } from '../Row' +import { Dots } from '../swap/styleds' +import { BIG_INT_ZERO } from '../../constants' + +export const FixedHeightRow = styled(RowBetween)` + height: 24px; +` + +export const HoverCard = styled(Card)` + border: 1px solid transparent; + :hover { + border: 1px solid ${({ theme }) => darken(0.06, theme.bg2)}; + } +` +const StyledPositionCard = styled(LightCard)<{ bgColor: any }>` + border: none; + background: ${({ theme, bgColor }) => + `radial-gradient(91.85% 100% at 1.84% 0%, ${transparentize(0.8, bgColor)} 0%, ${theme.bg3} 100%) `}; + position: relative; + overflow: hidden; +` + +interface PositionCardProps { + pair: Pair + showUnwrapped?: boolean + border?: string + stakedBalance?: TokenAmount // optional balance to indicate that liquidity is deposited in mining pool +} + +export function MinimalPositionCard({ pair, showUnwrapped = false, border }: PositionCardProps) { + const { account } = useActiveWeb3React() + + const currency0 = showUnwrapped ? pair.token0 : unwrappedToken(pair.token0) + const currency1 = showUnwrapped ? pair.token1 : unwrappedToken(pair.token1) + + const [showMore, setShowMore] = useState(false) + + const userPoolBalance = useTokenBalance(account ?? undefined, pair.liquidityToken) + const totalPoolTokens = useTotalSupply(pair.liquidityToken) + + const poolTokenPercentage = + !!userPoolBalance && !!totalPoolTokens && JSBI.greaterThanOrEqual(totalPoolTokens.raw, userPoolBalance.raw) + ? new Percent(userPoolBalance.raw, totalPoolTokens.raw) + : undefined + + const [token0Deposited, token1Deposited] = + !!pair && + !!totalPoolTokens && + !!userPoolBalance && + // this condition is a short-circuit in the case where useTokenBalance updates sooner than useTotalSupply + JSBI.greaterThanOrEqual(totalPoolTokens.raw, userPoolBalance.raw) + ? [ + pair.getLiquidityValue(pair.token0, totalPoolTokens, userPoolBalance, false), + pair.getLiquidityValue(pair.token1, totalPoolTokens, userPoolBalance, false), + ] + : [undefined, undefined] + + return ( + <> + {userPoolBalance && JSBI.greaterThan(userPoolBalance.raw, JSBI.BigInt(0)) ? ( + + + + + + Your position + + + + setShowMore(!showMore)}> + + + + {currency0.symbol}/{currency1.symbol} + + + + + {userPoolBalance ? userPoolBalance.toSignificant(4) : '-'} + + + + + + + Your pool share: + + + {poolTokenPercentage ? poolTokenPercentage.toFixed(6) + '%' : '-'} + + + + + {currency0.symbol}: + + {token0Deposited ? ( + + + {token0Deposited?.toSignificant(6)} + + + ) : ( + '-' + )} + + + + {currency1.symbol}: + + {token1Deposited ? ( + + + {token1Deposited?.toSignificant(6)} + + + ) : ( + '-' + )} + + + + + ) : ( + + + + ⭐️ + {' '} + By adding liquidity you'll earn 0.3% of all trades on this pair proportional to your share of the pool. + Fees are added to the pool, accrue in real time and can be claimed by withdrawing your liquidity. + + + )} + + ) +} + +export default function FullPositionCard({ pair, border, stakedBalance }: PositionCardProps) { + const { account } = useActiveWeb3React() + + const currency0 = unwrappedToken(pair.token0) + const currency1 = unwrappedToken(pair.token1) + + const [showMore, setShowMore] = useState(false) + + const userDefaultPoolBalance = useTokenBalance(account ?? undefined, pair.liquidityToken) + const totalPoolTokens = useTotalSupply(pair.liquidityToken) + + // if staked balance balance provided, add to standard liquidity amount + const userPoolBalance = stakedBalance ? userDefaultPoolBalance?.add(stakedBalance) : userDefaultPoolBalance + + const poolTokenPercentage = + !!userPoolBalance && !!totalPoolTokens && JSBI.greaterThanOrEqual(totalPoolTokens.raw, userPoolBalance.raw) + ? new Percent(userPoolBalance.raw, totalPoolTokens.raw) + : undefined + + const [token0Deposited, token1Deposited] = + !!pair && + !!totalPoolTokens && + !!userPoolBalance && + // this condition is a short-circuit in the case where useTokenBalance updates sooner than useTotalSupply + JSBI.greaterThanOrEqual(totalPoolTokens.raw, userPoolBalance.raw) + ? [ + pair.getLiquidityValue(pair.token0, totalPoolTokens, userPoolBalance, false), + pair.getLiquidityValue(pair.token1, totalPoolTokens, userPoolBalance, false), + ] + : [undefined, undefined] + + const backgroundColor = useColor(pair?.token0) + + return ( + + + + + + + + {!currency0 || !currency1 ? Loading : `${currency0.symbol}/${currency1.symbol}`} + + + + setShowMore(!showMore)} + > + {showMore ? ( + <> + Manage + + + ) : ( + <> + Manage + + + )} + + + + + {showMore && ( + + + + Your total pool tokens: + + + {userPoolBalance ? userPoolBalance.toSignificant(4) : '-'} + + + {stakedBalance && ( + + + Pool tokens in rewards pool: + + + {stakedBalance.toSignificant(4)} + + + )} + + + + Pooled {currency0.symbol}: + + + {token0Deposited ? ( + + + {token0Deposited?.toSignificant(6)} + + + + ) : ( + '-' + )} + + + + + + Pooled {currency1.symbol}: + + + {token1Deposited ? ( + + + {token1Deposited?.toSignificant(6)} + + + + ) : ( + '-' + )} + + + + + Your pool share: + + + {poolTokenPercentage + ? (poolTokenPercentage.toFixed(2) === '0.00' ? '<0.01' : poolTokenPercentage.toFixed(2)) + '%' + : '-'} + + + + + + View accrued fees and analytics + + + {userDefaultPoolBalance && JSBI.greaterThan(userDefaultPoolBalance.raw, BIG_INT_ZERO) && ( + + + Add + + + Remove + + + )} + {stakedBalance && JSBI.greaterThan(stakedBalance.raw, BIG_INT_ZERO) && ( + + Manage Liquidity in Rewards Pool + + )} + + )} + + + ) +} diff --git a/src/components/ProgressSteps/index.tsx b/src/components/ProgressSteps/index.tsx new file mode 100644 index 00000000..cbe573da --- /dev/null +++ b/src/components/ProgressSteps/index.tsx @@ -0,0 +1,80 @@ +import React from 'react' +import styled from 'styled-components' +import { RowBetween } from '../Row' +import { AutoColumn } from '../Column' +import { transparentize } from 'polished' + +const Wrapper = styled(AutoColumn)`` + +const Grouping = styled(RowBetween)` + width: 50%; +` + +const Circle = styled.div<{ confirmed?: boolean; disabled?: boolean }>` + min-width: 20px; + min-height: 20px; + background-color: ${({ theme, confirmed, disabled }) => + disabled ? theme.bg4 : confirmed ? theme.green1 : theme.primary1}; + border-radius: 50%; + color: ${({ theme }) => theme.white}; + display: flex; + align-items: center; + justify-content: center; + line-height: 8px; + font-size: 12px; +` + +const CircleRow = styled.div` + width: calc(100% - 20px); + display: flex; + align-items: center; +` + +const Connector = styled.div<{ prevConfirmed?: boolean; disabled?: boolean }>` + width: 100%; + height: 2px; + background-color: ; + background: linear-gradient( + 90deg, + ${({ theme, prevConfirmed, disabled }) => + disabled ? theme.bg4 : transparentize(0.5, prevConfirmed ? theme.green1 : theme.primary1)} + 0%, + ${({ theme, prevConfirmed, disabled }) => (disabled ? theme.bg4 : prevConfirmed ? theme.primary1 : theme.bg4)} 80% + ); + opacity: 0.6; +` + +interface ProgressCirclesProps { + steps: boolean[] + disabled?: boolean +} + +/** + * Based on array of steps, create a step counter of circles. + * A circle can be enabled, disabled, or confirmed. States are derived + * from previous step. + * + * An extra circle is added to represent the ability to swap, add, or remove. + * This step will never be marked as complete (because no 'txn done' state in body ui). + * + * @param steps array of booleans where true means step is complete + */ +export default function ProgressCircles({ steps, disabled = false, ...rest }: ProgressCirclesProps) { + return ( + + + {steps.map((step, i) => { + return ( + + + {step ? '✓' : i + 1} + + + + ) + })} + {steps.length + 1} + + + ) +} diff --git a/src/components/QuestionHelper/index.tsx b/src/components/QuestionHelper/index.tsx new file mode 100644 index 00000000..5087faa0 --- /dev/null +++ b/src/components/QuestionHelper/index.tsx @@ -0,0 +1,82 @@ +import React, { useCallback, useState } from 'react' +import { HelpCircle as Question } from 'react-feather' +import styled from 'styled-components' +import Tooltip from '../Tooltip' + +const QuestionWrapper = styled.div` + display: flex; + align-items: center; + justify-content: center; + padding: 0.2rem; + border: none; + background: none; + outline: none; + cursor: default; + border-radius: 36px; + background-color: ${({ theme }) => theme.bg2}; + color: ${({ theme }) => theme.text2}; + + :hover, + :focus { + opacity: 0.7; + } +` + +const LightQuestionWrapper = styled.div` + display: flex; + align-items: center; + justify-content: center; + padding: 0.2rem; + border: none; + background: none; + outline: none; + cursor: default; + border-radius: 36px; + width: 24px; + height: 24px; + background-color: rgba(255, 255, 255, 0.1); + color: ${({ theme }) => theme.white}; + + :hover, + :focus { + opacity: 0.7; + } +` + +const QuestionMark = styled.span` + font-size: 1rem; +` + +export default function QuestionHelper({ text }: { text: string }) { + const [show, setShow] = useState(false) + + const open = useCallback(() => setShow(true), [setShow]) + const close = useCallback(() => setShow(false), [setShow]) + + return ( + + + + + + + + ) +} + +export function LightQuestionHelper({ text }: { text: string }) { + const [show, setShow] = useState(false) + + const open = useCallback(() => setShow(true), [setShow]) + const close = useCallback(() => setShow(false), [setShow]) + + return ( + + + + ? + + + + ) +} diff --git a/src/components/Row/index.tsx b/src/components/Row/index.tsx index da3e4e63..cd153ffa 100644 --- a/src/components/Row/index.tsx +++ b/src/components/Row/index.tsx @@ -1,32 +1,32 @@ -import styled from "styled-components"; -import { Box } from "rebass/styled-components"; +import styled from 'styled-components' +import { Box } from 'rebass/styled-components' const Row = styled(Box)<{ - width?: string; - align?: string; - justify?: string; - padding?: string; - border?: string; - borderRadius?: string; + width?: string + align?: string + justify?: string + padding?: string + border?: string + borderRadius?: string }>` - width: ${({ width }) => width ?? "100%"}; + width: ${({ width }) => width ?? '100%'}; display: flex; padding: 0; - align-items: ${({ align }) => align ?? "center"}; - justify-content: ${({ justify }) => justify ?? "flex-start"}; + align-items: ${({ align }) => align ?? 'center'}; + justify-content: ${({ justify }) => justify ?? 'flex-start'}; padding: ${({ padding }) => padding}; border: ${({ border }) => border}; border-radius: ${({ borderRadius }) => borderRadius}; -`; +` export const RowBetween = styled(Row)` justify-content: space-between; -`; +` export const RowFlat = styled.div` display: flex; align-items: flex-end; -`; +` export const AutoRow = styled(Row)<{ gap?: string; justify?: string }>` flex-wrap: wrap; @@ -36,11 +36,11 @@ export const AutoRow = styled(Row)<{ gap?: string; justify?: string }>` & > * { margin: ${({ gap }) => gap} !important; } -`; +` export const RowFixed = styled(Row)<{ gap?: string; justify?: string }>` width: fit-content; margin: ${({ gap }) => gap && `-${gap}`}; -`; +` -export default Row; +export default Row diff --git a/src/components/SearchModal/CommonBases.tsx b/src/components/SearchModal/CommonBases.tsx new file mode 100644 index 00000000..30c7e9b4 --- /dev/null +++ b/src/components/SearchModal/CommonBases.tsx @@ -0,0 +1,73 @@ +import React from 'react' +import { Text } from 'rebass' +import { ChainId, Currency, currencyEquals, ETHER, Token } from '@uniswap/sdk' +import styled from 'styled-components' + +import { SUGGESTED_BASES } from '../../constants' +import { AutoColumn } from '../Column' +import QuestionHelper from '../QuestionHelper' +import { AutoRow } from '../Row' +import CurrencyLogo from '../CurrencyLogo' + +const BaseWrapper = styled.div<{ disable?: boolean }>` + border: 1px solid ${({ theme, disable }) => (disable ? 'transparent' : theme.bg3)}; + border-radius: 10px; + display: flex; + padding: 6px; + + align-items: center; + :hover { + cursor: ${({ disable }) => !disable && 'pointer'}; + background-color: ${({ theme, disable }) => !disable && theme.bg2}; + } + + background-color: ${({ theme, disable }) => disable && theme.bg3}; + opacity: ${({ disable }) => disable && '0.4'}; +` + +export default function CommonBases({ + chainId, + onSelect, + selectedCurrency, +}: { + chainId?: ChainId + selectedCurrency?: Currency | null + onSelect: (currency: Currency) => void +}) { + return ( + + + + Common bases + + + + + { + if (!selectedCurrency || !currencyEquals(selectedCurrency, ETHER)) { + onSelect(ETHER) + } + }} + disable={selectedCurrency === ETHER} + > + + + ETH + + + {(chainId ? SUGGESTED_BASES[chainId] : []).map((token: Token) => { + const selected = selectedCurrency instanceof Token && selectedCurrency.address === token.address + return ( + !selected && onSelect(token)} disable={selected} key={token.address}> + + + {token.symbol} + + + ) + })} + + + ) +} diff --git a/src/components/SearchModal/CurrencyList.tsx b/src/components/SearchModal/CurrencyList.tsx new file mode 100644 index 00000000..4dd1ae17 --- /dev/null +++ b/src/components/SearchModal/CurrencyList.tsx @@ -0,0 +1,263 @@ +import { Currency, CurrencyAmount, currencyEquals, ETHER, Token } from '@uniswap/sdk' +import React, { CSSProperties, MutableRefObject, useCallback, useMemo } from 'react' +import { FixedSizeList } from 'react-window' +import { Text } from 'rebass' +import styled from 'styled-components' +import { useActiveWeb3React } from '../../hooks' +import { WrappedTokenInfo, useCombinedActiveList } from '../../state/lists/hooks' +import { useCurrencyBalance } from '../../state/wallet/hooks' +import { TYPE } from '../../theme' +import { useIsUserAddedToken, useAllInactiveTokens } from '../../hooks/Tokens' +import Column from '../Column' +import { RowFixed, RowBetween } from '../Row' +import CurrencyLogo from '../CurrencyLogo' +import { MouseoverTooltip } from '../Tooltip' +import { MenuItem } from './styleds' +import Loader from '../Loader' +import { isTokenOnList } from '../../utils' +import ImportRow from './ImportRow' +import { wrappedCurrency } from 'utils/wrappedCurrency' +import { LightGreyCard } from 'components/Card' +import TokenListLogo from '../../assets/svg/tokenlist.svg' +import QuestionHelper from 'components/QuestionHelper' +import useTheme from 'hooks/useTheme' + +function currencyKey(currency: Currency): string { + return currency instanceof Token ? currency.address : currency === ETHER ? 'ETHER' : '' +} + +const StyledBalanceText = styled(Text)` + white-space: nowrap; + overflow: hidden; + max-width: 5rem; + text-overflow: ellipsis; +` + +const Tag = styled.div` + background-color: ${({ theme }) => theme.bg3}; + color: ${({ theme }) => theme.text2}; + font-size: 14px; + border-radius: 4px; + padding: 0.25rem 0.3rem 0.25rem 0.3rem; + max-width: 6rem; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + justify-self: flex-end; + margin-right: 4px; +` + +const FixedContentRow = styled.div` + padding: 4px 20px; + height: 56px; + display: grid; + grid-gap: 16px; + align-items: center; +` + +function Balance({ balance }: { balance: CurrencyAmount }) { + return {balance.toSignificant(4)} +} + +const TagContainer = styled.div` + display: flex; + justify-content: flex-end; +` + +const TokenListLogoWrapper = styled.img` + height: 20px; +` + +function TokenTags({ currency }: { currency: Currency }) { + if (!(currency instanceof WrappedTokenInfo)) { + return + } + + const tags = currency.tags + if (!tags || tags.length === 0) return + + const tag = tags[0] + + return ( + + + {tag.name} + + {tags.length > 1 ? ( + `${name}: ${description}`) + .join('; \n')} + > + ... + + ) : null} + + ) +} + +function CurrencyRow({ + currency, + onSelect, + isSelected, + otherSelected, + style, +}: { + currency: Currency + onSelect: () => void + isSelected: boolean + otherSelected: boolean + style: CSSProperties +}) { + const { account } = useActiveWeb3React() + const key = currencyKey(currency) + const selectedTokenList = useCombinedActiveList() + const isOnSelectedList = isTokenOnList(selectedTokenList, currency) + const customAdded = useIsUserAddedToken(currency) + const balance = useCurrencyBalance(account ?? undefined, currency) + + // only show add or remove buttons if not on selected list + return ( + (isSelected ? null : onSelect())} + disabled={isSelected} + selected={otherSelected} + > + + + + {currency.symbol} + + + {currency.name} {!isOnSelectedList && customAdded && '• Added by user'} + + + + + {balance ? : account ? : null} + + + ) +} + +export default function CurrencyList({ + height, + currencies, + selectedCurrency, + onCurrencySelect, + otherCurrency, + fixedListRef, + showETH, + showImportView, + setImportToken, + breakIndex, +}: { + height: number + currencies: Currency[] + selectedCurrency?: Currency | null + onCurrencySelect: (currency: Currency) => void + otherCurrency?: Currency | null + fixedListRef?: MutableRefObject + showETH: boolean + showImportView: () => void + setImportToken: (token: Token) => void + breakIndex: number | undefined +}) { + const itemData: (Currency | undefined)[] = useMemo(() => { + let formatted: (Currency | undefined)[] = showETH ? [Currency.ETHER, ...currencies] : currencies + if (breakIndex !== undefined) { + formatted = [...formatted.slice(0, breakIndex), undefined, ...formatted.slice(breakIndex, formatted.length)] + } + return formatted + }, [breakIndex, currencies, showETH]) + + const { chainId } = useActiveWeb3React() + const theme = useTheme() + + const inactiveTokens: { + [address: string]: Token + } = useAllInactiveTokens() + + const Row = useCallback( + ({ data, index, style }) => { + const currency: Currency = data[index] + const isSelected = Boolean(selectedCurrency && currencyEquals(selectedCurrency, currency)) + const otherSelected = Boolean(otherCurrency && currencyEquals(otherCurrency, currency)) + const handleSelect = () => onCurrencySelect(currency) + + const token = wrappedCurrency(currency, chainId) + + const showImport = inactiveTokens && token && Object.keys(inactiveTokens).includes(token.address) + + if (index === breakIndex || !data) { + return ( + + + + + + + Expanded results from inactive Token Lists + + + + + + + ) + } + + if (showImport && token) { + return ( + + ) + } else { + return ( + + ) + } + }, + [ + chainId, + inactiveTokens, + onCurrencySelect, + otherCurrency, + selectedCurrency, + setImportToken, + showImportView, + breakIndex, + theme.text1, + ] + ) + + const itemKey = useCallback((index: number, data: any) => currencyKey(data[index]), []) + + return ( + + {Row} + + ) +} diff --git a/src/components/SearchModal/CurrencySearch.tsx b/src/components/SearchModal/CurrencySearch.tsx new file mode 100644 index 00000000..a55763b0 --- /dev/null +++ b/src/components/SearchModal/CurrencySearch.tsx @@ -0,0 +1,234 @@ +import { Currency, ETHER, Token } from '@uniswap/sdk' +import React, { KeyboardEvent, RefObject, useCallback, useEffect, useMemo, useRef, useState } from 'react' +import ReactGA from 'react-ga' +import { useTranslation } from 'react-i18next' +import { FixedSizeList } from 'react-window' +import { Text } from 'rebass' +import { useActiveWeb3React } from '../../hooks' +import { useAllTokens, useToken, useIsUserAddedToken, useFoundOnInactiveList } from '../../hooks/Tokens' +import { CloseIcon, TYPE, ButtonText, IconWrapper } from '../../theme' +import { isAddress } from '../../utils' +import Column from '../Column' +import Row, { RowBetween, RowFixed } from '../Row' +import CommonBases from './CommonBases' +import CurrencyList from './CurrencyList' +import { filterTokens, useSortedTokensByQuery } from './filtering' +import { useTokenComparator } from './sorting' +import { PaddedColumn, SearchInput, Separator } from './styleds' +import AutoSizer from 'react-virtualized-auto-sizer' +import styled from 'styled-components' +import useToggle from 'hooks/useToggle' +import { useOnClickOutside } from 'hooks/useOnClickOutside' +import useTheme from 'hooks/useTheme' +import ImportRow from './ImportRow' +import { Edit } from 'react-feather' +import useDebounce from 'hooks/useDebounce' + +const ContentWrapper = styled(Column)` + width: 100%; + flex: 1 1; + position: relative; +` + +const Footer = styled.div` + width: 100%; + border-radius: 20px; + padding: 20px; + border-top-left-radius: 0; + border-top-right-radius: 0; + background-color: ${({ theme }) => theme.bg1}; + border-top: 1px solid ${({ theme }) => theme.bg2}; +` + +interface CurrencySearchProps { + isOpen: boolean + onDismiss: () => void + selectedCurrency?: Currency | null + onCurrencySelect: (currency: Currency) => void + otherSelectedCurrency?: Currency | null + showCommonBases?: boolean + showManageView: () => void + showImportView: () => void + setImportToken: (token: Token) => void +} + +export function CurrencySearch({ + selectedCurrency, + onCurrencySelect, + otherSelectedCurrency, + showCommonBases, + onDismiss, + isOpen, + showManageView, + showImportView, + setImportToken, +}: CurrencySearchProps) { + const { t } = useTranslation() + const { chainId } = useActiveWeb3React() + const theme = useTheme() + + // refs for fixed size lists + const fixedList = useRef() + + const [searchQuery, setSearchQuery] = useState('') + const debouncedQuery = useDebounce(searchQuery, 200) + + const [invertSearchOrder] = useState(false) + + const allTokens = useAllTokens() + + // if they input an address, use it + const isAddressSearch = isAddress(debouncedQuery) + const searchToken = useToken(debouncedQuery) + const searchTokenIsAdded = useIsUserAddedToken(searchToken) + + useEffect(() => { + if (isAddressSearch) { + ReactGA.event({ + category: 'Currency Select', + action: 'Search by address', + label: isAddressSearch, + }) + } + }, [isAddressSearch]) + + const showETH: boolean = useMemo(() => { + const s = debouncedQuery.toLowerCase().trim() + return s === '' || s === 'e' || s === 'et' || s === 'eth' + }, [debouncedQuery]) + + const tokenComparator = useTokenComparator(invertSearchOrder) + + const filteredTokens: Token[] = useMemo(() => { + return filterTokens(Object.values(allTokens), debouncedQuery) + }, [allTokens, debouncedQuery]) + + const sortedTokens: Token[] = useMemo(() => { + return filteredTokens.sort(tokenComparator) + }, [filteredTokens, tokenComparator]) + + const filteredSortedTokens = useSortedTokensByQuery(sortedTokens, debouncedQuery) + + const handleCurrencySelect = useCallback( + (currency: Currency) => { + onCurrencySelect(currency) + onDismiss() + }, + [onDismiss, onCurrencySelect] + ) + + // clear the input on open + useEffect(() => { + if (isOpen) setSearchQuery('') + }, [isOpen]) + + // manage focus on modal show + const inputRef = useRef() + const handleInput = useCallback((event) => { + const input = event.target.value + const checksummedInput = isAddress(input) + setSearchQuery(checksummedInput || input) + fixedList.current?.scrollTo(0) + }, []) + + const handleEnter = useCallback( + (e: KeyboardEvent) => { + if (e.key === 'Enter') { + const s = debouncedQuery.toLowerCase().trim() + if (s === 'eth') { + handleCurrencySelect(ETHER) + } else if (filteredSortedTokens.length > 0) { + if ( + filteredSortedTokens[0].symbol?.toLowerCase() === debouncedQuery.trim().toLowerCase() || + filteredSortedTokens.length === 1 + ) { + handleCurrencySelect(filteredSortedTokens[0]) + } + } + } + }, + [filteredSortedTokens, handleCurrencySelect, debouncedQuery] + ) + + // menu ui + const [open, toggle] = useToggle(false) + const node = useRef() + useOnClickOutside(node, open ? toggle : undefined) + + // if no results on main list, show option to expand into inactive + const inactiveTokens = useFoundOnInactiveList(debouncedQuery) + const filteredInactiveTokens: Token[] = useSortedTokensByQuery(inactiveTokens, debouncedQuery) + + return ( + + + + + Select a token + + + + + } + onChange={handleInput} + onKeyDown={handleEnter} + /> + + {showCommonBases && ( + + )} + + + {searchToken && !searchTokenIsAdded ? ( + + + + ) : filteredSortedTokens?.length > 0 || filteredInactiveTokens?.length > 0 ? ( +
    + + {({ height }) => ( + + )} + +
    + ) : ( + + + No results found. + + + )} +
    + + + + + + + Manage + + + +
    +
    + ) +} diff --git a/src/components/SearchModal/CurrencySearchModal.tsx b/src/components/SearchModal/CurrencySearchModal.tsx new file mode 100644 index 00000000..f27bc8e1 --- /dev/null +++ b/src/components/SearchModal/CurrencySearchModal.tsx @@ -0,0 +1,104 @@ +import { Currency, Token } from '@uniswap/sdk' +import React, { useCallback, useEffect, useState } from 'react' +import useLast from '../../hooks/useLast' +import Modal from '../Modal' +import { CurrencySearch } from './CurrencySearch' +import { ImportToken } from './ImportToken' +import usePrevious from 'hooks/usePrevious' +import Manage from './Manage' +import { TokenList } from '@uniswap/token-lists' +import { ImportList } from './ImportList' + +interface CurrencySearchModalProps { + isOpen: boolean + onDismiss: () => void + selectedCurrency?: Currency | null + onCurrencySelect: (currency: Currency) => void + otherSelectedCurrency?: Currency | null + showCommonBases?: boolean +} + +export enum CurrencyModalView { + search, + manage, + importToken, + importList, +} + +export default function CurrencySearchModal({ + isOpen, + onDismiss, + onCurrencySelect, + selectedCurrency, + otherSelectedCurrency, + showCommonBases = false, +}: CurrencySearchModalProps) { + const [modalView, setModalView] = useState(CurrencyModalView.manage) + const lastOpen = useLast(isOpen) + + useEffect(() => { + if (isOpen && !lastOpen) { + setModalView(CurrencyModalView.search) + } + }, [isOpen, lastOpen]) + + const handleCurrencySelect = useCallback( + (currency: Currency) => { + onCurrencySelect(currency) + onDismiss() + }, + [onDismiss, onCurrencySelect] + ) + + // for token import view + const prevView = usePrevious(modalView) + + // used for import token flow + const [importToken, setImportToken] = useState() + + // used for import list + const [importList, setImportList] = useState() + const [listURL, setListUrl] = useState() + + // change min height if not searching + const minHeight = modalView === CurrencyModalView.importToken || modalView === CurrencyModalView.importList ? 40 : 80 + + return ( + + {modalView === CurrencyModalView.search ? ( + setModalView(CurrencyModalView.importToken)} + setImportToken={setImportToken} + showManageView={() => setModalView(CurrencyModalView.manage)} + /> + ) : modalView === CurrencyModalView.importToken && importToken ? ( + + setModalView(prevView && prevView !== CurrencyModalView.importToken ? prevView : CurrencyModalView.search) + } + handleCurrencySelect={handleCurrencySelect} + /> + ) : modalView === CurrencyModalView.importList && importList && listURL ? ( + + ) : modalView === CurrencyModalView.manage ? ( + + ) : ( + '' + )} + + ) +} diff --git a/src/components/SearchModal/ImportList.tsx b/src/components/SearchModal/ImportList.tsx new file mode 100644 index 00000000..2d15195a --- /dev/null +++ b/src/components/SearchModal/ImportList.tsx @@ -0,0 +1,163 @@ +import React, { useState, useCallback } from 'react' +import styled from 'styled-components' +import ReactGA from 'react-ga' +import { TYPE, CloseIcon } from 'theme' +import Card from 'components/Card' +import { AutoColumn } from 'components/Column' +import { RowBetween, RowFixed, AutoRow } from 'components/Row' +import { ArrowLeft, AlertTriangle } from 'react-feather' +import useTheme from 'hooks/useTheme' +import { transparentize } from 'polished' +import { ButtonPrimary } from 'components/Button' +import { SectionBreak } from 'components/swap/styleds' +import { ExternalLink } from '../../theme/components' +import ListLogo from 'components/ListLogo' +import { PaddedColumn, Checkbox, TextDot } from './styleds' +import { TokenList } from '@uniswap/token-lists' +import { useDispatch } from 'react-redux' +import { AppDispatch } from 'state' +import { useFetchListCallback } from 'hooks/useFetchListCallback' +import { removeList, enableList } from 'state/lists/actions' +import { CurrencyModalView } from './CurrencySearchModal' +import { useAllLists } from 'state/lists/hooks' + +const Wrapper = styled.div` + position: relative; + width: 100%; + overflow: auto; +` + +interface ImportProps { + listURL: string + list: TokenList + onDismiss: () => void + setModalView: (view: CurrencyModalView) => void +} + +export function ImportList({ listURL, list, setModalView, onDismiss }: ImportProps) { + const theme = useTheme() + const dispatch = useDispatch() + + // user must accept + const [confirmed, setConfirmed] = useState(false) + + const lists = useAllLists() + const fetchList = useFetchListCallback() + + // monitor is list is loading + const adding = Boolean(lists[listURL]?.loadingRequestId) + const [addError, setAddError] = useState(null) + + const handleAddList = useCallback(() => { + if (adding) return + setAddError(null) + fetchList(listURL) + .then(() => { + ReactGA.event({ + category: 'Lists', + action: 'Add List', + label: listURL, + }) + + // turn list on + dispatch(enableList(listURL)) + // go back to lists + setModalView(CurrencyModalView.manage) + }) + .catch((error) => { + ReactGA.event({ + category: 'Lists', + action: 'Add List Failed', + label: listURL, + }) + setAddError(error.message) + dispatch(removeList(listURL)) + }) + }, [adding, dispatch, fetchList, listURL, setModalView]) + + return ( + + + + setModalView(CurrencyModalView.manage)} /> + Import List + + + + + + + + + + {list.logoURI && } + + + + {list.name} + + + + {list.tokens.length} tokens + + + + + {listURL} + + + + + + + + + + + Import at your own risk{' '} + + + + + + By adding this list you are implicitly trusting that the data is correct. Anyone can create a list, + including creating fake versions of existing lists and lists that claim to represent projects that do + not have one. + + + If you purchase a token from this list, you may not be able to sell it back. + + + setConfirmed(!confirmed)}> + setConfirmed(!confirmed)} + /> + + I understand + + + + + + Import + + {addError ? ( + + {addError} + + ) : null} + + {/* */} + + + ) +} diff --git a/src/components/SearchModal/ImportRow.tsx b/src/components/SearchModal/ImportRow.tsx new file mode 100644 index 00000000..097ee15f --- /dev/null +++ b/src/components/SearchModal/ImportRow.tsx @@ -0,0 +1,108 @@ +import React, { CSSProperties } from 'react' +import { Token } from '@uniswap/sdk' +import { AutoRow, RowFixed } from 'components/Row' +import { AutoColumn } from 'components/Column' +import CurrencyLogo from 'components/CurrencyLogo' +import { TYPE } from 'theme' +import ListLogo from 'components/ListLogo' +import { useActiveWeb3React } from 'hooks' +import { useCombinedInactiveList } from 'state/lists/hooks' +import useTheme from 'hooks/useTheme' +import { ButtonPrimary } from 'components/Button' +import styled from 'styled-components' +import { useIsUserAddedToken, useIsTokenActive } from 'hooks/Tokens' +import { CheckCircle } from 'react-feather' + +const TokenSection = styled.div<{ dim?: boolean }>` + padding: 4px 20px; + height: 56px; + display: grid; + grid-template-columns: auto minmax(auto, 1fr) auto; + grid-gap: 16px; + align-items: center; + + opacity: ${({ dim }) => (dim ? '0.4' : '1')}; +` + +const CheckIcon = styled(CheckCircle)` + height: 16px; + width: 16px; + margin-right: 6px; + stroke: ${({ theme }) => theme.green1}; +` + +const NameOverflow = styled.div` + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + text-overflow: ellipsis; + max-width: 140px; + font-size: 12px; +` + +export default function ImportRow({ + token, + style, + dim, + showImportView, + setImportToken, +}: { + token: Token + style?: CSSProperties + dim?: boolean + showImportView: () => void + setImportToken: (token: Token) => void +}) { + // gloabls + const { chainId } = useActiveWeb3React() + const theme = useTheme() + + // check if token comes from list + const inactiveTokenList = useCombinedInactiveList() + const list = chainId && inactiveTokenList?.[chainId]?.[token.address]?.list + + // check if already active on list or local storage tokens + const isAdded = useIsUserAddedToken(token) + const isActive = useIsTokenActive(token) + + return ( + + + + + {token.symbol} + + {token.name} + + + {list && list.logoURI && ( + + + via {list.name} + + + + )} + + {!isActive && !isAdded ? ( + { + setImportToken && setImportToken(token) + showImportView() + }} + > + Import + + ) : ( + + + Active + + )} + + ) +} diff --git a/src/components/SearchModal/ImportToken.tsx b/src/components/SearchModal/ImportToken.tsx new file mode 100644 index 00000000..4e79f155 --- /dev/null +++ b/src/components/SearchModal/ImportToken.tsx @@ -0,0 +1,164 @@ +import React, { useState } from 'react' +import { Token, Currency } from '@uniswap/sdk' +import styled from 'styled-components' +import { TYPE, CloseIcon } from 'theme' +import Card from 'components/Card' +import { AutoColumn } from 'components/Column' +import { RowBetween, RowFixed, AutoRow } from 'components/Row' +import CurrencyLogo from 'components/CurrencyLogo' +import { ArrowLeft, AlertTriangle } from 'react-feather' +import { transparentize } from 'polished' +import useTheme from 'hooks/useTheme' +import { ButtonPrimary } from 'components/Button' +import { SectionBreak } from 'components/swap/styleds' +import { useAddUserToken } from 'state/user/hooks' +import { getEtherscanLink } from 'utils' +import { useActiveWeb3React } from 'hooks' +import { ExternalLink } from '../../theme/components' +import { useCombinedInactiveList } from 'state/lists/hooks' +import ListLogo from 'components/ListLogo' +import { PaddedColumn, Checkbox } from './styleds' + +const Wrapper = styled.div` + position: relative; + width: 100%; + overflow: auto; +` + +const WarningWrapper = styled(Card)<{ highWarning: boolean }>` + background-color: ${({ theme, highWarning }) => + highWarning ? transparentize(0.8, theme.red1) : transparentize(0.8, theme.yellow2)}; + width: fit-content; +` + +const AddressText = styled(TYPE.blue)` + font-size: 12px; + + ${({ theme }) => theme.mediaWidth.upToSmall` + font-size: 10px; +`} +` + +interface ImportProps { + tokens: Token[] + onBack?: () => void + onDismiss?: () => void + handleCurrencySelect?: (currency: Currency) => void +} + +export function ImportToken({ tokens, onBack, onDismiss, handleCurrencySelect }: ImportProps) { + const theme = useTheme() + + const { chainId } = useActiveWeb3React() + + const [confirmed, setConfirmed] = useState(false) + + const addToken = useAddUserToken() + + // use for showing import source on inactive tokens + const inactiveTokenList = useCombinedInactiveList() + + // higher warning severity if either is not on a list + const fromLists = + (chainId && inactiveTokenList?.[chainId]?.[tokens[0]?.address]?.list) || + (chainId && inactiveTokenList?.[chainId]?.[tokens[1]?.address]?.list) + + return ( + + + + {onBack ? :
    } + Import {tokens.length > 1 ? 'Tokens' : 'Token'} + {onDismiss ? :
    } +
    +
    + + + {tokens.map((token) => { + const list = chainId && inactiveTokenList?.[chainId]?.[token.address]?.list + return ( + + + + + + {token.symbol} + + {token.name} + + {chainId && ( + + {token.address} + + )} + {list !== undefined ? ( + + {list.logoURI && } + + via {list.name} + + + ) : ( + + + + + Unknown Source + + + + )} + + + ) + })} + + + + + + Trade at your own risk! + + + + + + Anyone can create a token, including creating fake versions of existing tokens that claim to represent + projects. + + + If you purchase this token, you may not be able to sell it back. + + + setConfirmed(!confirmed)}> + setConfirmed(!confirmed)} + /> + + I understand + + + + { + tokens.map((token) => addToken(token)) + handleCurrencySelect && handleCurrencySelect(tokens[0]) + }} + className=".token-dismiss-button" + > + Import + + +
    + ) +} diff --git a/src/components/SearchModal/Manage.tsx b/src/components/SearchModal/Manage.tsx new file mode 100644 index 00000000..4f6e6644 --- /dev/null +++ b/src/components/SearchModal/Manage.tsx @@ -0,0 +1,89 @@ +import React, { useState } from 'react' +import { PaddedColumn, Separator } from './styleds' +import { RowBetween } from 'components/Row' +import { ArrowLeft } from 'react-feather' +import { Text } from 'rebass' +import { CloseIcon } from 'theme' +import styled from 'styled-components' +import { Token } from '@uniswap/sdk' +import { ManageLists } from './ManageLists' +import ManageTokens from './ManageTokens' +import { TokenList } from '@uniswap/token-lists' +import { CurrencyModalView } from './CurrencySearchModal' + +const Wrapper = styled.div` + width: 100%; + position: relative; + padding-bottom: 80px; +` + +const ToggleWrapper = styled(RowBetween)` + background-color: ${({ theme }) => theme.bg3}; + border-radius: 12px; + padding: 6px; +` + +const ToggleOption = styled.div<{ active?: boolean }>` + width: 48%; + padding: 10px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 12px; + font-weight: 600; + background-color: ${({ theme, active }) => (active ? theme.bg1 : theme.bg3)}; + color: ${({ theme, active }) => (active ? theme.text1 : theme.text2)}; + user-select: none; + + :hover { + cursor: pointer; + opacity: 0.7; + } +` + +export default function Manage({ + onDismiss, + setModalView, + setImportList, + setImportToken, + setListUrl, +}: { + onDismiss: () => void + setModalView: (view: CurrencyModalView) => void + setImportToken: (token: Token) => void + setImportList: (list: TokenList) => void + setListUrl: (url: string) => void +}) { + // toggle between tokens and lists + const [showLists, setShowLists] = useState(true) + + return ( + + + + setModalView(CurrencyModalView.search)} /> + + Manage + + + + + + + + setShowLists(!showLists)} active={showLists}> + Lists + + setShowLists(!showLists)} active={!showLists}> + Tokens + + + + {showLists ? ( + + ) : ( + + )} + + ) +} diff --git a/src/components/SearchModal/ManageLists.tsx b/src/components/SearchModal/ManageLists.tsx new file mode 100644 index 00000000..d011ca98 --- /dev/null +++ b/src/components/SearchModal/ManageLists.tsx @@ -0,0 +1,377 @@ +import React, { memo, useCallback, useMemo, useRef, useState, useEffect } from 'react' +import { Settings, CheckCircle } from 'react-feather' +import ReactGA from 'react-ga' +import { usePopper } from 'react-popper' +import { useDispatch, useSelector } from 'react-redux' +import styled from 'styled-components' +import { useFetchListCallback } from '../../hooks/useFetchListCallback' +import { useOnClickOutside } from '../../hooks/useOnClickOutside' +import { TokenList } from '@uniswap/token-lists' + +import useToggle from '../../hooks/useToggle' +import { AppDispatch, AppState } from '../../state' +import { acceptListUpdate, removeList, disableList, enableList } from '../../state/lists/actions' +import { useIsListActive, useAllLists, useActiveListUrls } from '../../state/lists/hooks' +import { ExternalLink, LinkStyledButton, TYPE, IconWrapper } from '../../theme' +import listVersionLabel from '../../utils/listVersionLabel' +import { parseENSAddress } from '../../utils/parseENSAddress' +import uriToHttp from '../../utils/uriToHttp' +import { ButtonEmpty, ButtonPrimary } from '../Button' + +import Column, { AutoColumn } from '../Column' +import ListLogo from '../ListLogo' +import Row, { RowFixed, RowBetween } from '../Row' +import { PaddedColumn, SearchInput, Separator, SeparatorDark } from './styleds' +import { useListColor } from 'hooks/useColor' +import useTheme from '../../hooks/useTheme' +import ListToggle from '../Toggle/ListToggle' +import Card from 'components/Card' +import { CurrencyModalView } from './CurrencySearchModal' +import { UNSUPPORTED_LIST_URLS } from 'constants/lists' + +const Wrapper = styled(Column)` + width: 100%; + height: 100%; +` + +const UnpaddedLinkStyledButton = styled(LinkStyledButton)` + padding: 0; + font-size: 1rem; + opacity: ${({ disabled }) => (disabled ? '0.4' : '1')}; +` + +const PopoverContainer = styled.div<{ show: boolean }>` + z-index: 100; + visibility: ${(props) => (props.show ? 'visible' : 'hidden')}; + opacity: ${(props) => (props.show ? 1 : 0)}; + transition: visibility 150ms linear, opacity 150ms linear; + background: ${({ theme }) => theme.bg2}; + border: 1px solid ${({ theme }) => theme.bg3}; + box-shadow: 0px 0px 1px rgba(0, 0, 0, 0.01), 0px 4px 8px rgba(0, 0, 0, 0.04), 0px 16px 24px rgba(0, 0, 0, 0.04), + 0px 24px 32px rgba(0, 0, 0, 0.01); + color: ${({ theme }) => theme.text2}; + border-radius: 0.5rem; + padding: 1rem; + display: grid; + grid-template-rows: 1fr; + grid-gap: 8px; + font-size: 1rem; + text-align: left; +` + +const StyledMenu = styled.div` + display: flex; + justify-content: center; + align-items: center; + position: relative; + border: none; +` + +const StyledTitleText = styled.div<{ active: boolean }>` + font-size: 16px; + overflow: hidden; + text-overflow: ellipsis; + font-weight: 600; + color: ${({ theme, active }) => (active ? theme.white : theme.text2)}; +` + +const StyledListUrlText = styled(TYPE.main)<{ active: boolean }>` + font-size: 12px; + color: ${({ theme, active }) => (active ? theme.white : theme.text2)}; +` + +const RowWrapper = styled(Row)<{ bgColor: string; active: boolean }>` + background-color: ${({ bgColor, active, theme }) => (active ? bgColor ?? 'transparent' : theme.bg2)}; + transition: 200ms; + align-items: center; + padding: 1rem; + border-radius: 20px; +` + +function listUrlRowHTMLId(listUrl: string) { + return `list-row-${listUrl.replace(/\./g, '-')}` +} + +const ListRow = memo(function ListRow({ listUrl }: { listUrl: string }) { + const listsByUrl = useSelector((state) => state.lists.byUrl) + const dispatch = useDispatch() + const { current: list, pendingUpdate: pending } = listsByUrl[listUrl] + + const theme = useTheme() + const listColor = useListColor(list?.logoURI) + const isActive = useIsListActive(listUrl) + + const [open, toggle] = useToggle(false) + const node = useRef() + const [referenceElement, setReferenceElement] = useState() + const [popperElement, setPopperElement] = useState() + + const { styles, attributes } = usePopper(referenceElement, popperElement, { + placement: 'auto', + strategy: 'fixed', + modifiers: [{ name: 'offset', options: { offset: [8, 8] } }], + }) + + useOnClickOutside(node, open ? toggle : undefined) + + const handleAcceptListUpdate = useCallback(() => { + if (!pending) return + ReactGA.event({ + category: 'Lists', + action: 'Update List from List Select', + label: listUrl, + }) + dispatch(acceptListUpdate(listUrl)) + }, [dispatch, listUrl, pending]) + + const handleRemoveList = useCallback(() => { + ReactGA.event({ + category: 'Lists', + action: 'Start Remove List', + label: listUrl, + }) + if (window.prompt(`Please confirm you would like to remove this list by typing REMOVE`) === `REMOVE`) { + ReactGA.event({ + category: 'Lists', + action: 'Confirm Remove List', + label: listUrl, + }) + dispatch(removeList(listUrl)) + } + }, [dispatch, listUrl]) + + const handleEnableList = useCallback(() => { + ReactGA.event({ + category: 'Lists', + action: 'Enable List', + label: listUrl, + }) + dispatch(enableList(listUrl)) + }, [dispatch, listUrl]) + + const handleDisableList = useCallback(() => { + ReactGA.event({ + category: 'Lists', + action: 'Disable List', + label: listUrl, + }) + dispatch(disableList(listUrl)) + }, [dispatch, listUrl]) + + if (!list) return null + + return ( + + {list.logoURI ? ( + + ) : ( +
    + )} + + + {list.name} + + + + {list.tokens.length} tokens + + + + + + {open && ( + +
    {list && listVersionLabel(list.version)}
    + + View list + + Remove list + + {pending && ( + Update list + )} +
    + )} +
    +
    +
    + { + isActive ? handleDisableList() : handleEnableList() + }} + /> + + ) +}) + +const ListContainer = styled.div` + padding: 1rem; + height: 100%; + overflow: auto; + padding-bottom: 80px; +` + +export function ManageLists({ + setModalView, + setImportList, + setListUrl, +}: { + setModalView: (view: CurrencyModalView) => void + setImportList: (list: TokenList) => void + setListUrl: (url: string) => void +}) { + const theme = useTheme() + + const [listUrlInput, setListUrlInput] = useState('') + + const lists = useAllLists() + + // sort by active but only if not visible + const activeListUrls = useActiveListUrls() + const [activeCopy, setActiveCopy] = useState() + useEffect(() => { + if (!activeCopy && activeListUrls) { + setActiveCopy(activeListUrls) + } + }, [activeCopy, activeListUrls]) + + const handleInput = useCallback((e) => { + setListUrlInput(e.target.value) + }, []) + + const fetchList = useFetchListCallback() + + const validUrl: boolean = useMemo(() => { + return uriToHttp(listUrlInput).length > 0 || Boolean(parseENSAddress(listUrlInput)) + }, [listUrlInput]) + + const sortedLists = useMemo(() => { + const listUrls = Object.keys(lists) + return listUrls + .filter((listUrl) => { + // only show loaded lists, hide unsupported lists + return Boolean(lists[listUrl].current) && !Boolean(UNSUPPORTED_LIST_URLS.includes(listUrl)) + }) + .sort((u1, u2) => { + const { current: l1 } = lists[u1] + const { current: l2 } = lists[u2] + + // first filter on active lists + if (activeCopy?.includes(u1) && !activeCopy?.includes(u2)) { + return -1 + } + if (!activeCopy?.includes(u1) && activeCopy?.includes(u2)) { + return 1 + } + + if (l1 && l2) { + return l1.name.toLowerCase() < l2.name.toLowerCase() + ? -1 + : l1.name.toLowerCase() === l2.name.toLowerCase() + ? 0 + : 1 + } + if (l1) return -1 + if (l2) return 1 + return 0 + }) + }, [lists, activeCopy]) + + // temporary fetched list for import flow + const [tempList, setTempList] = useState() + const [addError, setAddError] = useState() + + useEffect(() => { + async function fetchTempList() { + fetchList(listUrlInput, false) + .then((list) => setTempList(list)) + .catch(() => setAddError('Error importing list')) + } + // if valid url, fetch details for card + if (validUrl) { + fetchTempList() + } else { + setTempList(undefined) + listUrlInput !== '' && setAddError('Enter valid list location') + } + + // reset error + if (listUrlInput === '') { + setAddError(undefined) + } + }, [fetchList, listUrlInput, validUrl]) + + // check if list is already imported + const isImported = Object.keys(lists).includes(listUrlInput) + + // set list values and have parent modal switch to import list view + const handleImport = useCallback(() => { + if (!tempList) return + setImportList(tempList) + setModalView(CurrencyModalView.importList) + setListUrl(listUrlInput) + }, [listUrlInput, setImportList, setListUrl, setModalView, tempList]) + + return ( + + + + + + {addError ? ( + + {addError} + + ) : null} + + {tempList && ( + + + + + {tempList.logoURI && } + + {tempList.name} + {tempList.tokens.length} tokens + + + {isImported ? ( + + + + + Loaded + + ) : ( + + Import + + )} + + + + )} + + + + {sortedLists.map((listUrl) => ( + + ))} + + + + ) +} diff --git a/src/components/SearchModal/ManageTokens.tsx b/src/components/SearchModal/ManageTokens.tsx new file mode 100644 index 00000000..816bef5f --- /dev/null +++ b/src/components/SearchModal/ManageTokens.tsx @@ -0,0 +1,143 @@ +import React, { useRef, RefObject, useCallback, useState, useMemo } from 'react' +import Column from 'components/Column' +import { PaddedColumn, Separator, SearchInput } from './styleds' +import Row, { RowBetween, RowFixed } from 'components/Row' +import { TYPE, ExternalLinkIcon, TrashIcon, ButtonText, ExternalLink } from 'theme' +import { useToken } from 'hooks/Tokens' +import styled from 'styled-components' +import { useUserAddedTokens, useRemoveUserAddedToken } from 'state/user/hooks' +import { Token } from '@uniswap/sdk' +import CurrencyLogo from 'components/CurrencyLogo' +import { getEtherscanLink, isAddress } from 'utils' +import { useActiveWeb3React } from 'hooks' +import Card from 'components/Card' +import ImportRow from './ImportRow' +import useTheme from '../../hooks/useTheme' + +import { CurrencyModalView } from './CurrencySearchModal' + +const Wrapper = styled.div` + width: 100%; + height: calc(100% - 60px); + position: relative; + padding-bottom: 60px; +` + +const Footer = styled.div` + position: absolute; + bottom: 0; + width: 100%; + border-radius: 20px; + border-top-right-radius: 0; + border-top-left-radius: 0; + border-top: 1px solid ${({ theme }) => theme.bg3}; + padding: 20px; + text-align: center; +` + +export default function ManageTokens({ + setModalView, + setImportToken, +}: { + setModalView: (view: CurrencyModalView) => void + setImportToken: (token: Token) => void +}) { + const { chainId } = useActiveWeb3React() + + const [searchQuery, setSearchQuery] = useState('') + const theme = useTheme() + + // manage focus on modal show + const inputRef = useRef() + const handleInput = useCallback((event) => { + const input = event.target.value + const checksummedInput = isAddress(input) + setSearchQuery(checksummedInput || input) + }, []) + + // if they input an address, use it + const isAddressSearch = isAddress(searchQuery) + const searchToken = useToken(searchQuery) + + // all tokens for local lisr + const userAddedTokens: Token[] = useUserAddedTokens() + const removeToken = useRemoveUserAddedToken() + + const handleRemoveAll = useCallback(() => { + if (chainId && userAddedTokens) { + userAddedTokens.map((token) => { + return removeToken(chainId, token.address) + }) + } + }, [removeToken, userAddedTokens, chainId]) + + const tokenList = useMemo(() => { + return ( + chainId && + userAddedTokens.map((token) => ( + + + + + + {token.symbol} + + + + + removeToken(chainId, token.address)} /> + + + + )) + ) + }, [userAddedTokens, chainId, removeToken]) + + return ( + + + + + } + onChange={handleInput} + /> + + {searchQuery !== '' && !isAddressSearch && Enter valid token address} + {searchToken && ( + + setModalView(CurrencyModalView.importToken)} + setImportToken={setImportToken} + style={{ height: 'fit-content' }} + /> + + )} + + + + + + {userAddedTokens?.length} Custom {userAddedTokens.length === 1 ? 'Token' : 'Tokens'} + + {userAddedTokens.length > 0 && ( + + Clear all + + )} + + {tokenList} + + +
    + Tip: Custom tokens are stored locally in your browser +
    +
    + ) +} diff --git a/src/components/SearchModal/SortButton.tsx b/src/components/SearchModal/SortButton.tsx new file mode 100644 index 00000000..9d2742e5 --- /dev/null +++ b/src/components/SearchModal/SortButton.tsx @@ -0,0 +1,34 @@ +import React from 'react' +import { Text } from 'rebass' +import styled from 'styled-components' +import { RowFixed } from '../Row' + +export const FilterWrapper = styled(RowFixed)` + padding: 8px; + background-color: ${({ theme }) => theme.bg2}; + color: ${({ theme }) => theme.text1}; + border-radius: 8px; + user-select: none; + & > * { + user-select: none; + } + :hover { + cursor: pointer; + } +` + +export default function SortButton({ + toggleSortOrder, + ascending, +}: { + toggleSortOrder: () => void + ascending: boolean +}) { + return ( + + + {ascending ? '↑' : '↓'} + + + ) +} diff --git a/src/components/SearchModal/filtering.ts b/src/components/SearchModal/filtering.ts new file mode 100644 index 00000000..8e2cadf5 --- /dev/null +++ b/src/components/SearchModal/filtering.ts @@ -0,0 +1,70 @@ +import { useMemo } from 'react' +import { isAddress } from '../../utils' +import { Token } from '@uniswap/sdk' + +export function filterTokens(tokens: Token[], search: string): Token[] { + if (search.length === 0) return tokens + + const searchingAddress = isAddress(search) + + if (searchingAddress) { + return tokens.filter((token) => token.address === searchingAddress) + } + + const lowerSearchParts = search + .toLowerCase() + .split(/\s+/) + .filter((s) => s.length > 0) + + if (lowerSearchParts.length === 0) { + return tokens + } + + const matchesSearch = (s: string): boolean => { + const sParts = s + .toLowerCase() + .split(/\s+/) + .filter((s) => s.length > 0) + + return lowerSearchParts.every((p) => p.length === 0 || sParts.some((sp) => sp.startsWith(p) || sp.endsWith(p))) + } + + return tokens.filter((token) => { + const { symbol, name } = token + return (symbol && matchesSearch(symbol)) || (name && matchesSearch(name)) + }) +} + +export function useSortedTokensByQuery(tokens: Token[] | undefined, searchQuery: string): Token[] { + return useMemo(() => { + if (!tokens) { + return [] + } + + const symbolMatch = searchQuery + .toLowerCase() + .split(/\s+/) + .filter((s) => s.length > 0) + + if (symbolMatch.length > 1) { + return tokens + } + + const exactMatches: Token[] = [] + const symbolSubtrings: Token[] = [] + const rest: Token[] = [] + + // sort tokens by exact match -> subtring on symbol match -> rest + tokens.map((token) => { + if (token.symbol?.toLowerCase() === symbolMatch[0]) { + return exactMatches.push(token) + } else if (token.symbol?.toLowerCase().startsWith(searchQuery.toLowerCase().trim())) { + return symbolSubtrings.push(token) + } else { + return rest.push(token) + } + }) + + return [...exactMatches, ...symbolSubtrings, ...rest] + }, [tokens, searchQuery]) +} diff --git a/src/components/SearchModal/sorting.ts b/src/components/SearchModal/sorting.ts new file mode 100644 index 00000000..4713cb5e --- /dev/null +++ b/src/components/SearchModal/sorting.ts @@ -0,0 +1,50 @@ +import { Token, TokenAmount } from '@uniswap/sdk' +import { useMemo } from 'react' +import { useAllTokenBalances } from '../../state/wallet/hooks' + +// compare two token amounts with highest one coming first +function balanceComparator(balanceA?: TokenAmount, balanceB?: TokenAmount) { + if (balanceA && balanceB) { + return balanceA.greaterThan(balanceB) ? -1 : balanceA.equalTo(balanceB) ? 0 : 1 + } else if (balanceA && balanceA.greaterThan('0')) { + return -1 + } else if (balanceB && balanceB.greaterThan('0')) { + return 1 + } + return 0 +} + +function getTokenComparator(balances: { + [tokenAddress: string]: TokenAmount | undefined +}): (tokenA: Token, tokenB: Token) => number { + return function sortTokens(tokenA: Token, tokenB: Token): number { + // -1 = a is first + // 1 = b is first + + // sort by balances + const balanceA = balances[tokenA.address] + const balanceB = balances[tokenB.address] + + const balanceComp = balanceComparator(balanceA, balanceB) + if (balanceComp !== 0) return balanceComp + + if (tokenA.symbol && tokenB.symbol) { + // sort by symbol + return tokenA.symbol.toLowerCase() < tokenB.symbol.toLowerCase() ? -1 : 1 + } else { + return tokenA.symbol ? -1 : tokenB.symbol ? -1 : 0 + } + } +} + +export function useTokenComparator(inverted: boolean): (tokenA: Token, tokenB: Token) => number { + const balances = useAllTokenBalances() + const comparator = useMemo(() => getTokenComparator(balances ?? {}), [balances]) + return useMemo(() => { + if (inverted) { + return (tokenA: Token, tokenB: Token) => comparator(tokenA, tokenB) * -1 + } else { + return comparator + } + }, [inverted, comparator]) +} diff --git a/src/components/SearchModal/styleds.tsx b/src/components/SearchModal/styleds.tsx new file mode 100644 index 00000000..52fe477c --- /dev/null +++ b/src/components/SearchModal/styleds.tsx @@ -0,0 +1,114 @@ +import styled from 'styled-components' +import { AutoColumn } from '../Column' +import { RowBetween, RowFixed } from '../Row' + +export const ModalInfo = styled.div` + ${({ theme }) => theme.flexRowNoWrap} + align-items: center; + padding: 1rem 1rem; + margin: 0.25rem 0.5rem; + justify-content: center; + flex: 1; + user-select: none; +` +export const StyledMenu = styled.div` + display: flex; + justify-content: center; + align-items: center; + position: relative; + border: none; +` + +export const PopoverContainer = styled.div<{ show: boolean }>` + z-index: 100; + visibility: ${(props) => (props.show ? 'visible' : 'hidden')}; + opacity: ${(props) => (props.show ? 1 : 0)}; + transition: visibility 150ms linear, opacity 150ms linear; + background: ${({ theme }) => theme.bg2}; + border: 1px solid ${({ theme }) => theme.bg3}; + box-shadow: 0px 0px 1px rgba(0, 0, 0, 0.01), 0px 4px 8px rgba(0, 0, 0, 0.04), 0px 16px 24px rgba(0, 0, 0, 0.04), + 0px 24px 32px rgba(0, 0, 0, 0.01); + color: ${({ theme }) => theme.text2}; + border-radius: 0.5rem; + padding: 1rem; + display: grid; + grid-template-rows: 1fr; + grid-gap: 8px; + font-size: 1rem; + text-align: left; + top: 80px; +` + +export const TextDot = styled.div` + height: 3px; + width: 3px; + background-color: ${({ theme }) => theme.text2}; + border-radius: 50%; +` + +export const FadedSpan = styled(RowFixed)` + color: ${({ theme }) => theme.primary1}; + font-size: 14px; +` +export const Checkbox = styled.input` + border: 1px solid ${({ theme }) => theme.red3}; + height: 20px; + margin: 0; +` + +export const PaddedColumn = styled(AutoColumn)` + padding: 20px; +` + +export const MenuItem = styled(RowBetween)` + padding: 4px 20px; + height: 56px; + display: grid; + grid-template-columns: auto minmax(auto, 1fr) auto minmax(0, 72px); + grid-gap: 16px; + cursor: ${({ disabled }) => !disabled && 'pointer'}; + pointer-events: ${({ disabled }) => disabled && 'none'}; + :hover { + background-color: ${({ theme, disabled }) => !disabled && theme.bg2}; + } + opacity: ${({ disabled, selected }) => (disabled || selected ? 0.5 : 1)}; +` + +export const SearchInput = styled.input` + position: relative; + display: flex; + padding: 16px; + align-items: center; + width: 100%; + white-space: nowrap; + background: none; + border: none; + outline: none; + border-radius: 20px; + color: ${({ theme }) => theme.text1}; + border-style: solid; + border: 1px solid ${({ theme }) => theme.bg3}; + -webkit-appearance: none; + + font-size: 18px; + + ::placeholder { + color: ${({ theme }) => theme.text3}; + } + transition: border 100ms; + :focus { + border: 1px solid ${({ theme }) => theme.primary1}; + outline: none; + } +` +export const Separator = styled.div` + width: 100%; + height: 1px; + background-color: ${({ theme }) => theme.bg2}; +` + +export const SeparatorDark = styled.div` + width: 100%; + height: 1px; + background-color: ${({ theme }) => theme.bg3}; +` diff --git a/src/components/Settings/index.tsx b/src/components/Settings/index.tsx new file mode 100644 index 00000000..60978e7a --- /dev/null +++ b/src/components/Settings/index.tsx @@ -0,0 +1,247 @@ +import React, { useContext, useRef, useState } from 'react' +import { Settings, X } from 'react-feather' +import { Text } from 'rebass' +import styled, { ThemeContext } from 'styled-components' +import { useOnClickOutside } from '../../hooks/useOnClickOutside' +import { ApplicationModal } from '../../state/application/actions' +import { useModalOpen, useToggleSettingsMenu } from '../../state/application/hooks' +import { + useExpertModeManager, + useUserTransactionTTL, + useUserSlippageTolerance, + useUserSingleHopOnly, +} from '../../state/user/hooks' +import { TYPE } from '../../theme' +import { ButtonError } from '../Button' +import { AutoColumn } from '../Column' +import Modal from '../Modal' +import QuestionHelper from '../QuestionHelper' +import { RowBetween, RowFixed } from '../Row' +import Toggle from '../Toggle' +import TransactionSettings from '../TransactionSettings' + +const StyledMenuIcon = styled(Settings)` + height: 20px; + width: 20px; + + > * { + stroke: ${({ theme }) => theme.text2}; + } + + :hover { + opacity: 0.7; + } +` + +const StyledCloseIcon = styled(X)` + height: 20px; + width: 20px; + :hover { + cursor: pointer; + } + + > * { + stroke: ${({ theme }) => theme.text1}; + } +` + +const StyledMenuButton = styled.button` + position: relative; + width: 100%; + height: 100%; + border: none; + background-color: transparent; + margin: 0; + padding: 0; + height: 35px; + + padding: 0.15rem 0.5rem; + border-radius: 0.5rem; + + :hover, + :focus { + cursor: pointer; + outline: none; + } + + svg { + margin-top: 2px; + } +` +const EmojiWrapper = styled.div` + position: absolute; + bottom: -6px; + right: 0px; + font-size: 14px; +` + +const StyledMenu = styled.div` + margin-left: 0.5rem; + display: flex; + justify-content: center; + align-items: center; + position: relative; + border: none; + text-align: left; +` + +const MenuFlyout = styled.span` + min-width: 20.125rem; + background-color: ${({ theme }) => theme.bg2}; + box-shadow: 0px 0px 1px rgba(0, 0, 0, 0.01), 0px 4px 8px rgba(0, 0, 0, 0.04), 0px 16px 24px rgba(0, 0, 0, 0.04), + 0px 24px 32px rgba(0, 0, 0, 0.01); + border-radius: 12px; + display: flex; + flex-direction: column; + font-size: 1rem; + position: absolute; + top: 3rem; + right: 0rem; + z-index: 100; + + ${({ theme }) => theme.mediaWidth.upToMedium` + min-width: 18.125rem; + `}; +` + +const Break = styled.div` + width: 100%; + height: 1px; + background-color: ${({ theme }) => theme.bg3}; +` + +const ModalContentWrapper = styled.div` + display: flex; + align-items: center; + justify-content: center; + padding: 2rem 0; + background-color: ${({ theme }) => theme.bg2}; + border-radius: 20px; +` + +export default function SettingsTab() { + const node = useRef() + const open = useModalOpen(ApplicationModal.SETTINGS) + const toggle = useToggleSettingsMenu() + + const theme = useContext(ThemeContext) + const [userSlippageTolerance, setUserslippageTolerance] = useUserSlippageTolerance() + + const [ttl, setTtl] = useUserTransactionTTL() + + const [expertMode, toggleExpertMode] = useExpertModeManager() + + const [singleHopOnly, setSingleHopOnly] = useUserSingleHopOnly() + + // show confirmation view before turning on + const [showConfirmation, setShowConfirmation] = useState(false) + + useOnClickOutside(node, open ? toggle : undefined) + + return ( + // https://github.com/DefinitelyTyped/DefinitelyTyped/issues/30451 + + setShowConfirmation(false)} maxHeight={100}> + + + +
    + + Are you sure? + + setShowConfirmation(false)} /> + + + + + Expert mode turns off the confirm transaction prompt and allows high slippage trades that often result + in bad rates and lost funds. + + + ONLY USE THIS MODE IF YOU KNOW WHAT YOU ARE DOING. + + { + if (window.prompt(`Please type the word "confirm" to enable expert mode.`) === 'confirm') { + toggleExpertMode() + setShowConfirmation(false) + } + }} + > + + Turn On Expert Mode + + + + + + + + + {expertMode ? ( + + + 🧙 + + + ) : null} + + {open && ( + + + + Transaction Settings + + + + Interface Settings + + + + + Toggle Expert Mode + + + + { + toggleExpertMode() + setShowConfirmation(false) + } + : () => { + toggle() + setShowConfirmation(true) + } + } + /> + + + + + Disable Multihops + + + + (singleHopOnly ? setSingleHopOnly(false) : setSingleHopOnly(true))} + /> + + + + )} + + ) +} diff --git a/src/components/Slider/index.tsx b/src/components/Slider/index.tsx new file mode 100644 index 00000000..11f5b5cc --- /dev/null +++ b/src/components/Slider/index.tsx @@ -0,0 +1,120 @@ +import React, { useCallback } from 'react' +import styled from 'styled-components' + +const StyledRangeInput = styled.input<{ size: number }>` + -webkit-appearance: none; /* Hides the slider so that custom slider can be made */ + width: 100%; /* Specific width is required for Firefox. */ + background: transparent; /* Otherwise white in Chrome */ + cursor: pointer; + + &:focus { + outline: none; + } + + &::-moz-focus-outer { + border: 0; + } + + &::-webkit-slider-thumb { + -webkit-appearance: none; + height: ${({ size }) => size}px; + width: ${({ size }) => size}px; + background-color: #565a69; + border-radius: 100%; + border: none; + transform: translateY(-50%); + color: ${({ theme }) => theme.bg1}; + + &:hover, + &:focus { + box-shadow: 0px 0px 1px rgba(0, 0, 0, 0.1), 0px 4px 8px rgba(0, 0, 0, 0.08), 0px 16px 24px rgba(0, 0, 0, 0.06), + 0px 24px 32px rgba(0, 0, 0, 0.04); + } + } + + &::-moz-range-thumb { + height: ${({ size }) => size}px; + width: ${({ size }) => size}px; + background-color: #565a69; + border-radius: 100%; + border: none; + color: ${({ theme }) => theme.bg1}; + + &:hover, + &:focus { + box-shadow: 0px 0px 1px rgba(0, 0, 0, 0.1), 0px 4px 8px rgba(0, 0, 0, 0.08), 0px 16px 24px rgba(0, 0, 0, 0.06), + 0px 24px 32px rgba(0, 0, 0, 0.04); + } + } + + &::-ms-thumb { + height: ${({ size }) => size}px; + width: ${({ size }) => size}px; + background-color: #565a69; + border-radius: 100%; + color: ${({ theme }) => theme.bg1}; + + &:hover, + &:focus { + box-shadow: 0px 0px 1px rgba(0, 0, 0, 0.1), 0px 4px 8px rgba(0, 0, 0, 0.08), 0px 16px 24px rgba(0, 0, 0, 0.06), + 0px 24px 32px rgba(0, 0, 0, 0.04); + } + } + + &::-webkit-slider-runnable-track { + background: linear-gradient(90deg, ${({ theme }) => theme.bg5}, ${({ theme }) => theme.bg3}); + height: 2px; + } + + &::-moz-range-track { + background: linear-gradient(90deg, ${({ theme }) => theme.bg5}, ${({ theme }) => theme.bg3}); + height: 2px; + } + + &::-ms-track { + width: 100%; + border-color: transparent; + color: transparent; + + background: ${({ theme }) => theme.bg5}; + height: 2px; + } + &::-ms-fill-lower { + background: ${({ theme }) => theme.bg5}; + } + &::-ms-fill-upper { + background: ${({ theme }) => theme.bg3}; + } +` + +interface InputSliderProps { + value: number + onChange: (value: number) => void + step?: number + min?: number + max?: number + size?: number +} + +export default function Slider({ value, onChange, min = 0, step = 1, max = 100, size = 28 }: InputSliderProps) { + const changeCallback = useCallback( + (e) => { + onChange(parseInt(e.target.value)) + }, + [onChange] + ) + + return ( + + ) +} diff --git a/src/components/Toggle/ListToggle.tsx b/src/components/Toggle/ListToggle.tsx new file mode 100644 index 00000000..b61bdc4d --- /dev/null +++ b/src/components/Toggle/ListToggle.tsx @@ -0,0 +1,56 @@ +import React from 'react' +import styled from 'styled-components' +import { TYPE } from '../../theme' + +const Wrapper = styled.button<{ isActive?: boolean; activeElement?: boolean }>` + border-radius: 20px; + border: none; + background: ${({ theme }) => theme.bg1}; + display: flex; + width: fit-content; + cursor: pointer; + outline: none; + padding: 0.4rem 0.4rem; + align-items: center; +` + +const ToggleElement = styled.span<{ isActive?: boolean; bgColor?: string }>` + border-radius: 50%; + height: 24px; + width: 24px; + background-color: ${({ isActive, bgColor, theme }) => (isActive ? bgColor : theme.bg4)}; + :hover { + opacity: 0.8; + } +` + +const StatusText = styled(TYPE.main)<{ isActive?: boolean }>` + margin: 0 10px; + width: 24px; + color: ${({ theme, isActive }) => (isActive ? theme.text1 : theme.text3)}; +` + +export interface ToggleProps { + id?: string + isActive: boolean + bgColor: string + toggle: () => void +} + +export default function ListToggle({ id, isActive, bgColor, toggle }: ToggleProps) { + return ( + + {isActive && ( + + ON + + )} + + {!isActive && ( + + OFF + + )} + + ) +} diff --git a/src/components/Toggle/MultiToggle.stories.tsx b/src/components/Toggle/MultiToggle.stories.tsx new file mode 100644 index 00000000..145142ec --- /dev/null +++ b/src/components/Toggle/MultiToggle.stories.tsx @@ -0,0 +1,35 @@ +import { Story } from '@storybook/react/types-6-0' +import styled from 'styled-components' +import React, { useState } from 'react' +import MultiToggle from './MultiToggle' + +const wrapperCss = styled.main` + font-size: 2em; + margin: 3em; + max-width: 300px; +` + +export default { + title: 'Toggles', + argTypes: { + width: { control: { type: 'string' } }, + }, + decorators: [ + (Component: Story) => ( +
    + +
    + ), + ], +} + +export const MultiToggleExample = () => { + const [active, setActive] = useState(0) + + function doSomethingWithIndex(index: number) { + // here's where youd update state based on index choice + // switch(index){} ... + setActive(index) + } + return +} diff --git a/src/components/Toggle/MultiToggle.tsx b/src/components/Toggle/MultiToggle.tsx new file mode 100644 index 00000000..6cc11f93 --- /dev/null +++ b/src/components/Toggle/MultiToggle.tsx @@ -0,0 +1,52 @@ +import React from 'react' +import styled from 'styled-components' + +export const ToggleWrapper = styled.button<{ width?: string }>` + display: flex; + align-items: center; + width: ${({ width }) => width ?? '100%'} + padding: 1px; + background: ${({ theme }) => theme.bg0}; + border-radius: 8px; + border: ${({ theme }) => '2px solid ' + theme.bg2}; + cursor: pointer; + outline: none; +` + +export const ToggleElement = styled.span<{ isActive?: boolean; fontSize?: string }>` + display: flex; + align-items: center; + width: 100%; + padding: 4px 0.5rem; + border-radius: 6px; + justify-content: center; + height: 100%; + background: ${({ theme, isActive }) => (isActive ? theme.bg2 : 'none')}; + color: ${({ theme, isActive }) => (isActive ? theme.text1 : theme.text3)}; + font-size: ${({ fontSize }) => fontSize ?? '1rem'}; + font-weight: 500; + :hover { + user-select: initial; + color: ${({ theme, isActive }) => (isActive ? theme.text2 : theme.text3)}; + } +` + +export interface ToggleProps { + options: string[] + activeIndex: number + toggle: (index: number) => void + id?: string + width?: string +} + +export default function MultiToggle({ id, options, activeIndex, toggle, width }: ToggleProps) { + return ( + + {options.map((option, index) => ( + toggle(index)}> + {option} + + ))} + + ) +} diff --git a/src/components/Toggle/index.tsx b/src/components/Toggle/index.tsx new file mode 100644 index 00000000..b503c674 --- /dev/null +++ b/src/components/Toggle/index.tsx @@ -0,0 +1,54 @@ +import React from 'react' +import styled from 'styled-components' + +const ToggleElement = styled.span<{ isActive?: boolean; isOnSwitch?: boolean }>` + padding: 0.25rem 0.5rem; + border-radius: 14px; + background: ${({ theme, isActive, isOnSwitch }) => (isActive ? (isOnSwitch ? theme.primary1 : theme.text4) : 'none')}; + color: ${({ theme, isActive, isOnSwitch }) => (isActive ? (isOnSwitch ? theme.white : theme.text2) : theme.text3)}; + font-size: 1rem; + font-weight: 400; + + padding: 0.35rem 0.6rem; + border-radius: 12px; + background: ${({ theme, isActive, isOnSwitch }) => (isActive ? (isOnSwitch ? theme.primary1 : theme.text4) : 'none')}; + color: ${({ theme, isActive, isOnSwitch }) => (isActive ? (isOnSwitch ? theme.white : theme.text2) : theme.text2)}; + font-size: 1rem; + font-weight: ${({ isOnSwitch }) => (isOnSwitch ? '500' : '400')}; + :hover { + user-select: ${({ isOnSwitch }) => (isOnSwitch ? 'none' : 'initial')}; + background: ${({ theme, isActive, isOnSwitch }) => + isActive ? (isOnSwitch ? theme.primary1 : theme.text3) : 'none'}; + color: ${({ theme, isActive, isOnSwitch }) => (isActive ? (isOnSwitch ? theme.white : theme.text2) : theme.text3)}; + } +` + +const StyledToggle = styled.button<{ isActive?: boolean; activeElement?: boolean }>` + border-radius: 12px; + border: none; + background: ${({ theme }) => theme.bg3}; + display: flex; + width: fit-content; + cursor: pointer; + outline: none; + padding: 0; +` + +export interface ToggleProps { + id?: string + isActive: boolean + toggle: () => void +} + +export default function Toggle({ id, isActive, toggle }: ToggleProps) { + return ( + + + On + + + Off + + + ) +} diff --git a/src/components/TokenWarningModal/index.tsx b/src/components/TokenWarningModal/index.tsx new file mode 100644 index 00000000..d2277a32 --- /dev/null +++ b/src/components/TokenWarningModal/index.tsx @@ -0,0 +1,22 @@ +import { Token } from '@uniswap/sdk' +import React, { useCallback } from 'react' +import Modal from '../Modal' +import { ImportToken } from 'components/SearchModal/ImportToken' + +export default function TokenWarningModal({ + isOpen, + tokens, + onConfirm, +}: { + isOpen: boolean + tokens: Token[] + onConfirm: () => void +}) { + const handleDismiss = useCallback(() => null, []) + + return ( + + + + ) +} diff --git a/src/components/Tooltip/index.tsx b/src/components/Tooltip/index.tsx new file mode 100644 index 00000000..5814445d --- /dev/null +++ b/src/components/Tooltip/index.tsx @@ -0,0 +1,31 @@ +import React, { useCallback, useState } from 'react' +import styled from 'styled-components' +import Popover, { PopoverProps } from '../Popover' + +const TooltipContainer = styled.div` + width: 228px; + padding: 0.6rem 1rem; + line-height: 150%; + font-weight: 400; +` + +interface TooltipProps extends Omit { + text: string +} + +export default function Tooltip({ text, ...rest }: TooltipProps) { + return {text}} {...rest} /> +} + +export function MouseoverTooltip({ children, ...rest }: Omit) { + const [show, setShow] = useState(false) + const open = useCallback(() => setShow(true), [setShow]) + const close = useCallback(() => setShow(false), [setShow]) + return ( + +
    + {children} +
    +
    + ) +} diff --git a/src/components/TransactionConfirmationModal/index.tsx b/src/components/TransactionConfirmationModal/index.tsx new file mode 100644 index 00000000..a75379ce --- /dev/null +++ b/src/components/TransactionConfirmationModal/index.tsx @@ -0,0 +1,225 @@ +import { ChainId, Currency } from '@uniswap/sdk' +import React, { useContext } from 'react' +import styled, { ThemeContext } from 'styled-components' +import Modal from '../Modal' +import { ExternalLink } from '../../theme' +import { Text } from 'rebass' +import { CloseIcon, CustomLightSpinner } from '../../theme/components' +import { RowBetween, RowFixed } from '../Row' +import { AlertTriangle, ArrowUpCircle, CheckCircle } from 'react-feather' +import { ButtonPrimary, ButtonLight } from '../Button' +import { AutoColumn, ColumnCenter } from '../Column' +import Circle from '../../assets/images/blue-loader.svg' +import MetaMaskLogo from '../../assets/images/metamask.png' +import { getEtherscanLink } from '../../utils' +import { useActiveWeb3React } from '../../hooks' +import useAddTokenToMetamask from 'hooks/useAddTokenToMetamask' + +const Wrapper = styled.div` + width: 100%; +` +const Section = styled(AutoColumn)` + padding: 24px; +` + +const BottomSection = styled(Section)` + // background-color: ${({ theme }) => theme.bg2}; + border-bottom-left-radius: 20px; + border-bottom-right-radius: 20px; +` + +const ConfirmedIcon = styled(ColumnCenter)` + padding: 60px 0; +` + +const StyledLogo = styled.img` + height: 16px; + width: 16px; + margin-left: 6px; +` + +function ConfirmationPendingContent({ onDismiss, pendingText }: { onDismiss: () => void; pendingText: string }) { + return ( + +
    + +
    + + + + + + + + Waiting For Confirmation + + + + {pendingText} + + + + Confirm this transaction in your wallet + + +
    +
    + ) +} + +function TransactionSubmittedContent({ + onDismiss, + chainId, + hash, + currencyToAdd, +}: { + onDismiss: () => void + hash: string | undefined + chainId: ChainId + currencyToAdd?: Currency | undefined +}) { + const theme = useContext(ThemeContext) + + const { library } = useActiveWeb3React() + + const { addToken, success } = useAddTokenToMetamask(currencyToAdd) + + return ( + +
    + +
    + + + + + + + + Transaction Submitted + + {chainId && hash && ( + + + View on Etherscan + + + )} + {currencyToAdd && library?.provider?.isMetaMask && ( + + {!success ? ( + + Add {currencyToAdd.symbol} to Metamask + + ) : ( + + Added {currencyToAdd.symbol}{' '} + + + )} + + )} + + + Close + + + +
    +
    + ) +} + +export function ConfirmationModalContent({ + title, + bottomContent, + onDismiss, + topContent, +}: { + title: string + onDismiss: () => void + topContent: () => React.ReactNode + bottomContent?: () => React.ReactNode | undefined +}) { + return ( + +
    + + + {title} + + + + {topContent()} +
    + {bottomContent && {bottomContent()}} +
    + ) +} + +export function TransactionErrorContent({ message, onDismiss }: { message: string; onDismiss: () => void }) { + const theme = useContext(ThemeContext) + return ( + +
    + + + Error + + + + + + + {message} + + +
    + + Dismiss + +
    + ) +} + +interface ConfirmationModalProps { + isOpen: boolean + onDismiss: () => void + hash: string | undefined + content: () => React.ReactNode + attemptingTxn: boolean + pendingText: string + currencyToAdd?: Currency | undefined +} + +export default function TransactionConfirmationModal({ + isOpen, + onDismiss, + attemptingTxn, + hash, + pendingText, + content, + currencyToAdd, +}: ConfirmationModalProps) { + const { chainId } = useActiveWeb3React() + + if (!chainId) return null + + // confirmation screen + return ( + + {attemptingTxn ? ( + + ) : hash ? ( + + ) : ( + content() + )} + + ) +} diff --git a/src/components/TransactionSettings/index.tsx b/src/components/TransactionSettings/index.tsx new file mode 100644 index 00000000..918ce4f3 --- /dev/null +++ b/src/components/TransactionSettings/index.tsx @@ -0,0 +1,252 @@ +import React, { useState, useRef, useContext } from 'react' +import styled, { ThemeContext } from 'styled-components' + +import QuestionHelper from '../QuestionHelper' +import { TYPE } from '../../theme' +import { AutoColumn } from '../Column' +import { RowBetween, RowFixed } from '../Row' + +import { darken } from 'polished' + +enum SlippageError { + InvalidInput = 'InvalidInput', + RiskyLow = 'RiskyLow', + RiskyHigh = 'RiskyHigh', +} + +enum DeadlineError { + InvalidInput = 'InvalidInput', +} + +const FancyButton = styled.button` + color: ${({ theme }) => theme.text1}; + align-items: center; + height: 2rem; + border-radius: 36px; + font-size: 1rem; + width: auto; + min-width: 3.5rem; + border: 1px solid ${({ theme }) => theme.bg3}; + outline: none; + background: ${({ theme }) => theme.bg1}; + :hover { + border: 1px solid ${({ theme }) => theme.bg4}; + } + :focus { + border: 1px solid ${({ theme }) => theme.primary1}; + } +` + +const Option = styled(FancyButton)<{ active: boolean }>` + margin-right: 8px; + :hover { + cursor: pointer; + } + background-color: ${({ active, theme }) => active && theme.primary1}; + color: ${({ active, theme }) => (active ? theme.white : theme.text1)}; +` + +const Input = styled.input` + background: ${({ theme }) => theme.bg1}; + font-size: 16px; + width: auto; + outline: none; + &::-webkit-outer-spin-button, + &::-webkit-inner-spin-button { + -webkit-appearance: none; + } + color: ${({ theme, color }) => (color === 'red' ? theme.red1 : theme.text1)}; + text-align: right; +` + +const OptionCustom = styled(FancyButton)<{ active?: boolean; warning?: boolean }>` + height: 2rem; + position: relative; + padding: 0 0.75rem; + flex: 1; + border: ${({ theme, active, warning }) => active && `1px solid ${warning ? theme.red1 : theme.primary1}`}; + :hover { + border: ${({ theme, active, warning }) => + active && `1px solid ${warning ? darken(0.1, theme.red1) : darken(0.1, theme.primary1)}`}; + } + + input { + width: 100%; + height: 100%; + border: 0px; + border-radius: 2rem; + } +` + +const SlippageEmojiContainer = styled.span` + color: #f3841e; + ${({ theme }) => theme.mediaWidth.upToSmall` + display: none; + `} +` + +export interface SlippageTabsProps { + rawSlippage: number + setRawSlippage: (rawSlippage: number) => void + deadline: number + setDeadline: (deadline: number) => void +} + +export default function SlippageTabs({ rawSlippage, setRawSlippage, deadline, setDeadline }: SlippageTabsProps) { + const theme = useContext(ThemeContext) + + const inputRef = useRef() + + const [slippageInput, setSlippageInput] = useState('') + const [deadlineInput, setDeadlineInput] = useState('') + + const slippageInputIsValid = + slippageInput === '' || (rawSlippage / 100).toFixed(2) === Number.parseFloat(slippageInput).toFixed(2) + const deadlineInputIsValid = deadlineInput === '' || (deadline / 60).toString() === deadlineInput + + let slippageError: SlippageError | undefined + if (slippageInput !== '' && !slippageInputIsValid) { + slippageError = SlippageError.InvalidInput + } else if (slippageInputIsValid && rawSlippage < 50) { + slippageError = SlippageError.RiskyLow + } else if (slippageInputIsValid && rawSlippage > 500) { + slippageError = SlippageError.RiskyHigh + } else { + slippageError = undefined + } + + let deadlineError: DeadlineError | undefined + if (deadlineInput !== '' && !deadlineInputIsValid) { + deadlineError = DeadlineError.InvalidInput + } else { + deadlineError = undefined + } + + function parseCustomSlippage(value: string) { + setSlippageInput(value) + + try { + const valueAsIntFromRoundedFloat = Number.parseInt((Number.parseFloat(value) * 100).toString()) + if (!Number.isNaN(valueAsIntFromRoundedFloat) && valueAsIntFromRoundedFloat < 5000) { + setRawSlippage(valueAsIntFromRoundedFloat) + } + } catch {} + } + + function parseCustomDeadline(value: string) { + setDeadlineInput(value) + + try { + const valueAsInt: number = Number.parseInt(value) * 60 + if (!Number.isNaN(valueAsInt) && valueAsInt > 0) { + setDeadline(valueAsInt) + } + } catch {} + } + + return ( + + + + + Slippage tolerance + + + + + + + + + + {!!slippageInput && + (slippageError === SlippageError.RiskyLow || slippageError === SlippageError.RiskyHigh) ? ( + + + ⚠️ + + + ) : null} + {/* https://github.com/DefinitelyTyped/DefinitelyTyped/issues/30451 */} + { + parseCustomSlippage((rawSlippage / 100).toFixed(2)) + }} + onChange={(e) => parseCustomSlippage(e.target.value)} + color={!slippageInputIsValid ? 'red' : ''} + /> + % + + + + {!!slippageError && ( + + {slippageError === SlippageError.InvalidInput + ? 'Enter a valid slippage percentage' + : slippageError === SlippageError.RiskyLow + ? 'Your transaction may fail' + : 'Your transaction may be frontrun'} + + )} + + + + + + Transaction deadline + + + + + + { + parseCustomDeadline((deadline / 60).toString()) + }} + placeholder={(deadline / 60).toString()} + value={deadlineInput} + onChange={(e) => parseCustomDeadline(e.target.value)} + /> + + + minutes + + + + + ) +} diff --git a/src/components/WalletModal/Option.tsx b/src/components/WalletModal/Option.tsx new file mode 100644 index 00000000..d9a46a3d --- /dev/null +++ b/src/components/WalletModal/Option.tsx @@ -0,0 +1,140 @@ +import React from 'react' +import styled from 'styled-components' +import { ExternalLink } from '../../theme' + +const InfoCard = styled.button<{ active?: boolean }>` + background-color: ${({ theme, active }) => (active ? theme.bg3 : theme.bg2)}; + padding: 1rem; + outline: none; + border: 1px solid; + border-radius: 12px; + width: 100% !important; + &:focus { + box-shadow: 0 0 0 1px ${({ theme }) => theme.primary1}; + } + border-color: ${({ theme, active }) => (active ? 'transparent' : theme.bg3)}; +` + +const OptionCard = styled(InfoCard as any)` + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + margin-top: 2rem; + padding: 1rem; +` + +const OptionCardLeft = styled.div` + ${({ theme }) => theme.flexColumnNoWrap}; + justify-content: center; + height: 100%; +` + +const OptionCardClickable = styled(OptionCard as any)<{ clickable?: boolean }>` + margin-top: 0; + &:hover { + cursor: ${({ clickable }) => (clickable ? 'pointer' : '')}; + border: ${({ clickable, theme }) => (clickable ? `1px solid ${theme.primary1}` : ``)}; + } + opacity: ${({ disabled }) => (disabled ? '0.5' : '1')}; +` + +const GreenCircle = styled.div` + ${({ theme }) => theme.flexRowNoWrap} + justify-content: center; + align-items: center; + + &:first-child { + height: 8px; + width: 8px; + margin-right: 8px; + background-color: ${({ theme }) => theme.green1}; + border-radius: 50%; + } +` + +const CircleWrapper = styled.div` + color: ${({ theme }) => theme.green1}; + display: flex; + justify-content: center; + align-items: center; +` + +const HeaderText = styled.div` + ${({ theme }) => theme.flexRowNoWrap}; + color: ${(props) => (props.color === 'blue' ? ({ theme }) => theme.primary1 : ({ theme }) => theme.text1)}; + font-size: 1rem; + font-weight: 500; +` + +const SubHeader = styled.div` + color: ${({ theme }) => theme.text1}; + margin-top: 10px; + font-size: 12px; +` + +const IconWrapper = styled.div<{ size?: number | null }>` + ${({ theme }) => theme.flexColumnNoWrap}; + align-items: center; + justify-content: center; + & > img, + span { + height: ${({ size }) => (size ? size + 'px' : '24px')}; + width: ${({ size }) => (size ? size + 'px' : '24px')}; + } + ${({ theme }) => theme.mediaWidth.upToMedium` + align-items: flex-end; + `}; +` + +export default function Option({ + link = null, + clickable = true, + size, + onClick = null, + color, + header, + subheader = null, + icon, + active = false, + id, +}: { + link?: string | null + clickable?: boolean + size?: number | null + onClick?: null | (() => void) + color: string + header: React.ReactNode + subheader: React.ReactNode | null + icon: string + active?: boolean + id: string +}) { + const content = ( + + + + {active ? ( + + +
    + + + ) : ( + '' + )} + {header} + + {subheader && {subheader}} + + + {'Icon'} + + + ) + if (link) { + return {content} + } + + return content +} diff --git a/src/components/WalletModal/PendingView.tsx b/src/components/WalletModal/PendingView.tsx new file mode 100644 index 00000000..d228ceb6 --- /dev/null +++ b/src/components/WalletModal/PendingView.tsx @@ -0,0 +1,130 @@ +import { AbstractConnector } from '@web3-react/abstract-connector' +import React from 'react' +import styled from 'styled-components' +import Option from './Option' +import { SUPPORTED_WALLETS } from '../../constants' +import { injected } from '../../connectors' +import { darken } from 'polished' +import Loader from '../Loader' + +const PendingSection = styled.div` + ${({ theme }) => theme.flexColumnNoWrap}; + align-items: center; + justify-content: center; + width: 100%; + & > * { + width: 100%; + } +` + +const StyledLoader = styled(Loader)` + margin-right: 1rem; +` + +const LoadingMessage = styled.div<{ error?: boolean }>` + ${({ theme }) => theme.flexRowNoWrap}; + align-items: center; + justify-content: flex-start; + border-radius: 12px; + margin-bottom: 20px; + color: ${({ theme, error }) => (error ? theme.red1 : 'inherit')}; + border: 1px solid ${({ theme, error }) => (error ? theme.red1 : theme.text4)}; + + & > * { + padding: 1rem; + } +` + +const ErrorGroup = styled.div` + ${({ theme }) => theme.flexRowNoWrap}; + align-items: center; + justify-content: flex-start; +` + +const ErrorButton = styled.div` + border-radius: 8px; + font-size: 12px; + color: ${({ theme }) => theme.text1}; + background-color: ${({ theme }) => theme.bg4}; + margin-left: 1rem; + padding: 0.5rem; + font-weight: 600; + user-select: none; + + &:hover { + cursor: pointer; + background-color: ${({ theme }) => darken(0.1, theme.text4)}; + } +` + +const LoadingWrapper = styled.div` + ${({ theme }) => theme.flexRowNoWrap}; + align-items: center; + justify-content: center; +` + +export default function PendingView({ + connector, + error = false, + setPendingError, + tryActivation, +}: { + connector?: AbstractConnector + error?: boolean + setPendingError: (error: boolean) => void + tryActivation: (connector: AbstractConnector) => void +}) { + const isMetamask = window?.ethereum?.isMetaMask + + return ( + + + + {error ? ( + +
    Error connecting.
    + { + setPendingError(false) + connector && tryActivation(connector) + }} + > + Try Again + +
    + ) : ( + <> + + Initializing... + + )} +
    +
    + {Object.keys(SUPPORTED_WALLETS).map((key) => { + const option = SUPPORTED_WALLETS[key] + if (option.connector === connector) { + if (option.connector === injected) { + if (isMetamask && option.name !== 'MetaMask') { + return null + } + if (!isMetamask && option.name === 'MetaMask') { + return null + } + } + return ( +
    + ) +} diff --git a/src/components/WalletModal/index.tsx b/src/components/WalletModal/index.tsx new file mode 100644 index 00000000..b916780f --- /dev/null +++ b/src/components/WalletModal/index.tsx @@ -0,0 +1,368 @@ +import { AbstractConnector } from '@web3-react/abstract-connector' +import { UnsupportedChainIdError, useWeb3React } from '@web3-react/core' +import { WalletConnectConnector } from '@web3-react/walletconnect-connector' +import React, { useEffect, useState } from 'react' +import { isMobile } from 'react-device-detect' +import ReactGA from 'react-ga' +import styled from 'styled-components' +import MetamaskIcon from '../../assets/images/metamask.png' +import { ReactComponent as Close } from '../../assets/images/x.svg' +import { fortmatic, injected, portis } from '../../connectors' +import { OVERLAY_READY } from '../../connectors/Fortmatic' +import { SUPPORTED_WALLETS } from '../../constants' +import usePrevious from '../../hooks/usePrevious' +import { ApplicationModal } from '../../state/application/actions' +import { useModalOpen, useWalletModalToggle } from '../../state/application/hooks' +import { ExternalLink } from '../../theme' +import AccountDetails from '../AccountDetails' + +import Modal from '../Modal' +import Option from './Option' +import PendingView from './PendingView' + +const CloseIcon = styled.div` + position: absolute; + right: 1rem; + top: 14px; + &:hover { + cursor: pointer; + opacity: 0.6; + } +` + +const CloseColor = styled(Close)` + path { + stroke: ${({ theme }) => theme.text4}; + } +` + +const Wrapper = styled.div` + ${({ theme }) => theme.flexColumnNoWrap} + margin: 0; + padding: 0; + width: 100%; +` + +const HeaderRow = styled.div` + ${({ theme }) => theme.flexRowNoWrap}; + padding: 1rem 1rem; + font-weight: 500; + color: ${(props) => (props.color === 'blue' ? ({ theme }) => theme.primary1 : 'inherit')}; + ${({ theme }) => theme.mediaWidth.upToMedium` + padding: 1rem; + `}; +` + +const ContentWrapper = styled.div` + background-color: ${({ theme }) => theme.bg2}; + padding: 2rem; + border-bottom-left-radius: 20px; + border-bottom-right-radius: 20px; + + ${({ theme }) => theme.mediaWidth.upToMedium`padding: 1rem`}; +` + +const UpperSection = styled.div` + position: relative; + + h5 { + margin: 0; + margin-bottom: 0.5rem; + font-size: 1rem; + font-weight: 400; + } + + h5:last-child { + margin-bottom: 0px; + } + + h4 { + margin-top: 0; + font-weight: 500; + } +` + +const Blurb = styled.div` + ${({ theme }) => theme.flexRowNoWrap} + align-items: center; + justify-content: center; + flex-wrap: wrap; + margin-top: 2rem; + ${({ theme }) => theme.mediaWidth.upToMedium` + margin: 1rem; + font-size: 12px; + `}; +` + +const OptionGrid = styled.div` + display: grid; + grid-gap: 10px; + ${({ theme }) => theme.mediaWidth.upToMedium` + grid-template-columns: 1fr; + grid-gap: 10px; + `}; +` + +const HoverText = styled.div` + :hover { + cursor: pointer; + } +` + +const WALLET_VIEWS = { + OPTIONS: 'options', + OPTIONS_SECONDARY: 'options_secondary', + ACCOUNT: 'account', + PENDING: 'pending', +} + +export default function WalletModal({ + pendingTransactions, + confirmedTransactions, + ENSName, +}: { + pendingTransactions: string[] // hashes of pending + confirmedTransactions: string[] // hashes of confirmed + ENSName?: string +}) { + // important that these are destructed from the account-specific web3-react context + const { active, account, connector, activate, error } = useWeb3React() + + const [walletView, setWalletView] = useState(WALLET_VIEWS.ACCOUNT) + + const [pendingWallet, setPendingWallet] = useState() + + const [pendingError, setPendingError] = useState() + + const walletModalOpen = useModalOpen(ApplicationModal.WALLET) + const toggleWalletModal = useWalletModalToggle() + + const previousAccount = usePrevious(account) + + // close on connection, when logged out before + useEffect(() => { + if (account && !previousAccount && walletModalOpen) { + toggleWalletModal() + } + }, [account, previousAccount, toggleWalletModal, walletModalOpen]) + + // always reset to account view + useEffect(() => { + if (walletModalOpen) { + setPendingError(false) + setWalletView(WALLET_VIEWS.ACCOUNT) + } + }, [walletModalOpen]) + + // close modal when a connection is successful + const activePrevious = usePrevious(active) + const connectorPrevious = usePrevious(connector) + useEffect(() => { + if (walletModalOpen && ((active && !activePrevious) || (connector && connector !== connectorPrevious && !error))) { + setWalletView(WALLET_VIEWS.ACCOUNT) + } + }, [setWalletView, active, error, connector, walletModalOpen, activePrevious, connectorPrevious]) + + const tryActivation = async (connector: AbstractConnector | undefined) => { + let name = '' + Object.keys(SUPPORTED_WALLETS).map((key) => { + if (connector === SUPPORTED_WALLETS[key].connector) { + return (name = SUPPORTED_WALLETS[key].name) + } + return true + }) + // log selected wallet + ReactGA.event({ + category: 'Wallet', + action: 'Change Wallet', + label: name, + }) + setPendingWallet(connector) // set wallet for pending view + setWalletView(WALLET_VIEWS.PENDING) + + // if the connector is walletconnect and the user has already tried to connect, manually reset the connector + if (connector instanceof WalletConnectConnector && connector.walletConnectProvider?.wc?.uri) { + connector.walletConnectProvider = undefined + } + + connector && + activate(connector, undefined, true).catch((error) => { + if (error instanceof UnsupportedChainIdError) { + activate(connector) // a little janky...can't use setError because the connector isn't set + } else { + setPendingError(true) + } + }) + } + + // close wallet modal if fortmatic modal is active + useEffect(() => { + fortmatic.on(OVERLAY_READY, () => { + toggleWalletModal() + }) + }, [toggleWalletModal]) + + // get wallets user can switch too, depending on device/browser + function getOptions() { + const isMetamask = window.ethereum && window.ethereum.isMetaMask + return Object.keys(SUPPORTED_WALLETS).map((key) => { + const option = SUPPORTED_WALLETS[key] + // check for mobile options + if (isMobile) { + //disable portis on mobile for now + if (option.connector === portis) { + return null + } + + if (!window.web3 && !window.ethereum && option.mobile) { + return ( +